diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/ChangeLog vdr-plugin-softhddevice-0.6.1rc1.git20150130/ChangeLog --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/ChangeLog 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/ChangeLog 2015-01-31 04:08:45.000000000 +0000 @@ -1,5 +1,22 @@ +User Antti Seppälä +Date: Thu Oct 16 14:15:15 CEST 2014 + + Corrected black surface for va-api. + +User johns +Date: Thu Oct 16 14:05:17 CEST 2014 + + Newer va-api intel drivers support PutImage. + Use more portable fork for vfork. + Fix crash with VA-API vdpau backend. + +User mini73 +Date: Sat Oct 11 16:53:18 CEST 2014 + + Fix bug: random rubbish at the end of letter. + User johns -Date: +Date: Tue Sep 23 12:36:39 CEST 2014 Fix audio thread close race condition. Support ffmpeg new AVFrame API in the audio codec. diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/changelog vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/changelog --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/changelog 2014-11-18 11:11:55.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/changelog 2015-01-31 05:49:38.000000000 +0000 @@ -1,78 +1,176 @@ -vdr-plugin-softhddevice (2:0.6.1rc1.git20140923-0easyVDR3~trusty) trusty; urgency=high +vdr-plugin-softhddevice (2:0.6.1rc1.git20150130-0easyVDR0~trusty) trusty; urgency=high - * rules + * new upstream snapshot - -- easyVDR-Developer Tue, 18 Nov 2014 12:11:31 +0100 + -- easyVDR-Developer Sat, 31 Jan 2015 06:47:16 +0100 -vdr-plugin-softhddevice (2:0.6.1rc1.git20140923-0easyVDR2~trusty) trusty; urgency=high +vdr-plugin-softhddevice (1:0.6.1rc1.git20140604-0easyVDR1~trusty) trusty; urgency=high - * rebuild + * automatic rebuild - -- easyVDR-Developer Sat, 15 Nov 2014 23:22:36 +0100 + -- easyVDR-Developer Tue, 26 Aug 2014 23:00:10 +0200 -vdr-plugin-softhddevice (0.6.1rc1+git20140923.1236-0fnu0~trusty) trusty; urgency=high +vdr-plugin-softhddevice (1:0.6.1rc1.git20140604-0easyVDR0~trusty) trusty; urgency=high * new upstream snapshot - * enable VA-API support - * add libva-dev as dependency - * add basic VPP support v9 - -- Frank Neumann Fri, 03 Oct 2014 12:14:03 +0200 + -- easyVDR-Developer Fri, 20 Jun 2014 00:45:30 +0200 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-7easyVDR3~trusty) trusty; urgency=high + + * disable vaapi & opengl + + -- easyVDR-Developer Sun, 23 Feb 2014 23:07:31 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-7easyVDR2~trusty) trusty; urgency=high + + * add support vaapi & opengl + + -- easyVDR-Developer Wed, 19 Feb 2014 22:52:04 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-6easyVDR2~trusty) trusty; urgency=high + + * rm patch libavutils + + -- easyVDR-Developer Thu, 02 Jan 2014 16:40:21 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-6easyVDR1~trusty) trusty; urgency=high + + * add depends + + -- easyVDR-Developer Thu, 02 Jan 2014 02:05:43 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-6easyVDR~trusty) trusty; urgency=high -vdr-plugin-softhddevice (0.6.1rc1+git20140218.1126-0fnu5~trusty) trusty; urgency=high + * rebuild for easyVDR - * Rebuild + -- easyVDR-Developer Wed, 01 Jan 2014 14:20:05 +0100 - -- Frank Neumann Thu, 27 Mar 2014 00:26:37 +0100 +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-6yavdr0~trusty) trusty; urgency=medium -vdr-plugin-softhddevice (0.6.1rc1+git20140218.1126-0fnu2~trusty) trusty; urgency=high + * unify patches for libav 9.10 - * add dependency libswresample to fix sound issues with newer ffmpeg versions + -- Alexander Grothe Wed, 01 Jan 2014 13:21:23 +0100 - -- Frank Neumann Wed, 26 Feb 2014 15:30:04 +0100 +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-5yavdr0~trusty) trusty; urgency=medium -vdr-plugin-softhddevice (0.6.1rc1+git20140218.1126-0fnu0~trusty) trusty; urgency=high + * add it to codec.c, too + + -- Alexander Grothe Wed, 01 Jan 2014 13:08:51 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-4yavdr0~trusty) precise; urgency=medium + + * fix include for libavutils/mem.h + + -- Alexander Grothe Wed, 01 Jan 2014 13:05:15 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-3yavdr0~trusty) trusty; urgency=medium + + * fox include for string.h in softhddev.c + + -- Alexander Grothe Wed, 01 Jan 2014 12:57:18 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-2yavdr0~trusty) trusty; urgency=medium + + * fix include for libavutil/channel_layout.h + + -- Alexander Grothe Wed, 01 Jan 2014 11:22:18 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-1yavdr0~trusty) trusty; urgency=medium + + * add alternative dependency for libxcb-ewmh-dev + + -- Alexander Grothe Wed, 01 Jan 2014 09:55:42 +0100 + +vdr-plugin-softhddevice (1:0.6.1rc1.git20131220.2124-0yavdr0~precise) precise; urgency=medium + + * new upstream snapshot + + -- Reiner Paulus Fri, 20 Dec 2013 22:24:54 +0100 + +vdr-plugin-softhddevice (1:0.6.0.git.20131008-1yavdr1~precise) precise; urgency=medium + + * automatic rebuild + + -- Alexander Grothe Tue, 12 Nov 2013 11:02:50 +0100 + +vdr-plugin-softhddevice (1:0.6.0.git.20131008-1yavdr0~precise) precise; urgency=medium + + * disable -DH264_EOS_TRICKSPEED build option + + -- Alexander Grothe Sat, 09 Nov 2013 16:29:40 +0100 + +vdr-plugin-softhddevice (1:0.6.0.git.20131008-0yavdr1~precise) precise; urgency=medium + + * automatic rebuild + + -- yavdr package builder Sun, 27 Oct 2013 09:13:36 +0100 + +vdr-plugin-softhddevice (1:0.6.0.git.20131008-0yavdr1~precise) precise; urgency=medium + + * automatic rebuild + + -- yavdr package builder Sat, 26 Oct 2013 19:06:12 +0200 + +vdr-plugin-softhddevice (1:0.6.0.git.20131008-0yavdr0~precise) precise; urgency=medium + + * new upstream snapshot, uses monotonic clock + + -- Alexander Grothe Tue, 08 Oct 2013 10:31:32 +0200 + +vdr-plugin-softhddevice (1:0.6.0.git.20130806-0yavdr1~precise) precise; urgency=medium + + * rebuild + + -- Lars Hanisch Thu, 12 Sep 2013 13:14:01 +0200 + +vdr-plugin-softhddevice (1:0.6.0.git.20130806-0yavdr0~precise) precise; urgency=medium * new upstream snapshot - -- Frank Neumann Mon, 24 Feb 2014 21:36:12 +0100 + -- Alexander Grothe Tue, 06 Aug 2013 10:20:20 +0200 -vdr-plugin-softhddevice (0.6.0.git.20131008.0818-0fnu0~precise) precise; urgency=high +vdr-plugin-softhddevice (1:0.6.0.git.20130721-0yavdr0~precise) precise; urgency=medium - * rebuild for vdr_2.1.2 in testing-vdr-fnu + * new upstram snapshot - -- Frank Neumann Sun, 20 Oct 2013 22:04:58 +0200 + -- Alexander Grothe Mon, 22 Jul 2013 11:47:15 +0200 -vdr-plugin-softhddevice (0.6.0.git.20131008.0818-0fnu0~precise) precise; urgency=high +vdr-plugin-softhddevice (1:0.6.0.git.20130718-0yavdr0~precise) precise; urgency=medium * new upstream snapshot - -- Frank Neumann Sat, 12 Oct 2013 19:56:04 +0200 + -- Alexander Grothe Thu, 18 Jul 2013 10:10:29 +0200 -vdr-plugin-softhddevice (0.6.0.git.20130807.0829-0fnu1~precise) precise; urgency=high +vdr-plugin-softhddevice (1:0.6.0.git.20130516-0yavdr2~precise) precise; urgency=medium - * rebuild + * rebuild + + -- Lars Hanisch Fri, 12 Jul 2013 01:08:04 +0200 - -- Frank Neumann Thu, 12 Sep 2013 02:56:39 +0200 +vdr-plugin-softhddevice (1:0.6.0.git.20130516-0yavdr1~precise) precise; urgency=medium + + * rebuild -vdr-plugin-softhddevice (0.6.0.git.20130807.0829-0fnu0~precise) precise; urgency=high + -- Lars Hanisch Sun, 23 Jun 2013 10:32:15 +0200 + +vdr-plugin-softhddevice (1:0.6.0.git.20130516-0yavdr0~precise) precise; urgency=medium * new upstream snapshot - -- Frank Neumann Tue, 27 Aug 2013 21:03:30 +0200 + -- Alexander Grothe Tue, 04 Jun 2013 23:43:43 +0200 -vdr-plugin-softhddevice (0.6.0.git.20130423.1846-0fnu0~precise) precise; urgency=high +vdr-plugin-softhddevice (1:0.6.0.git.20130429.2052-0yavdr0~precise) precise; urgency=medium - * New upstream snapshot - * drop everything about va-api + * new upstream snapshot - -- Frank Neumann Thu, 25 Apr 2013 20:57:34 +0200 + -- Alexander Grothe Mon, 29 Apr 2013 20:54:18 +0200 -vdr-plugin-softhddevice (0.6.0.git.20130317.1945-0fnu2~precise) precise; urgency=high +vdr-plugin-softhddevice (1:0.6.0.git.20130412.1226-0yavdr0~precise) precise; urgency=medium - * rebuild for fnu ppa + * new upstream snapshot - -- Frank Neumann Thu, 11 Apr 2013 19:50:26 +0200 + -- Lars Hanisch Fri, 12 Apr 2013 12:26:28 +0200 vdr-plugin-softhddevice (1:0.6.0.git.20130317.1945-0yavdr1~precise) precise; urgency=medium diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/compat vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/compat --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/compat 2014-10-03 10:10:01.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/compat 2014-06-19 21:25:30.000000000 +0000 @@ -1 +1 @@ -9 +7 diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/control vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/control --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/control 2014-11-17 14:57:35.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/control 2015-01-31 05:39:51.000000000 +0000 @@ -1,8 +1,9 @@ Source: vdr-plugin-softhddevice Section: video Priority: extra -Maintainer: xxx -Build-Depends: debhelper (>= 9), vdr-dev (>= 2.0.0), gettext, pkg-config, libx11-xcb-dev, libxcb-dpms0-dev, libxcb-xv0-dev, libxcb-glx0-dev, libxcb-randr0-dev, libxcb-screensaver0-dev, libxcb-image0-dev, libxcb-util0-dev | libxcb-event1-dev, libxcb-atom1-dev | libxcb-util0-dev, libxcb-icccm4-dev | libxcb-icccm1-dev, libxcb-keysyms1-dev, libasound2-dev, libgl1-mesa-dev, libglu1-mesa-dev, libvdpau-dev, libxcb-ewmh-dev, libswresample-ffmpeg-dev, libva-dev, libavcodec-ffmpeg-dev, libavformat-ffmpeg-dev +Maintainer: yaVDR Team +Uploaders: Wolfgang Mangold +Build-Depends: debhelper (>= 8.0.0), vdr-dev (>= 2.0.0), gettext, pkg-config, libva-dev, libva-x11-1, libva-glx1, libx11-xcb-dev, libxcb-dpms0-dev, libxcb-xv0-dev, libxcb-glx0-dev, libxcb-randr0-dev, libxcb-screensaver0-dev, libxcb-image0-dev, libxcb-util0-dev | libxcb-event1-dev, libxcb-atom1-dev | libxcb-util0-dev, libxcb-icccm4-dev | libxcb-icccm1-dev, libxcb-keysyms1-dev, libavcodec-ffmpeg-dev, libavformat-ffmpeg-dev, i965-va-driver, vdpau-va-driver, libasound2-dev, libgl1-mesa-dev, libglu1-mesa-dev, libvdpau-dev, libxcb-ewmh1-dev | libxcb-ewmh-dev, libswresample-ffmpeg-dev, libavutil-ffmpeg-dev Standards-Version: 3.9.4 Homepage: http://projects.vdr-developer.org/projects/plg-softhddevice diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/patches/makefile.patch vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/patches/makefile.patch --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/patches/makefile.patch 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/patches/makefile.patch 2015-01-31 05:55:19.000000000 +0000 @@ -0,0 +1,15 @@ +--- a/Makefile ++++ b/Makefile +@@ -35,10 +35,10 @@ + + CONFIG += -DAV_INFO -DAV_INFO_TIME=3000 # info/debug a/v sync + CONFIG += -DUSE_PIP # PIP support +-#CONFIG += -DHAVE_PTHREAD_NAME # supports new pthread_setname_np ++CONFIG += -DHAVE_PTHREAD_NAME # supports new pthread_setname_np + #CONFIG += -DNO_TS_AUDIO # disable ts audio parser + #CONFIG += -DUSE_TS_VIDEO # build new ts video parser +-#CONFIG += -DUSE_MPEG_COMPLETE # support only complete mpeg packets ++CONFIG += -DUSE_MPEG_COMPLETE # support only complete mpeg packets + #CONFIG += -DH264_EOS_TRICKSPEED # insert seq end packets for trickspeed + #CONDIF += -DDUMP_TRICKSPEED # dump trickspeed packets + #CONFIG += -DUSE_BITMAP # VDPAU, use bitmap surface for OSD diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/patches/series vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/patches/series --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/patches/series 2015-01-31 05:50:23.000000000 +0000 @@ -0,0 +1 @@ +makefile.patch diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/rules vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/rules --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/debian/rules 2014-11-18 11:12:57.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/debian/rules 2014-06-19 21:25:30.000000000 +0000 @@ -9,10 +9,10 @@ override_dh_auto_install: dh_auto_install --destdir=debian/vdr-plugin-softhddevice - + override_dh_gencontrol: sh /usr/share/vdr-dev/dependencies.sh - dh_gencontrol + dh_gencontrol %: dh $@ diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/config vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/config --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/config 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/config 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -[core] - repositoryformatversion = 0 - filemode = true - bare = false - logallrefupdates = true -[remote "origin"] - url = git://projects.vdr-developer.org/vdr-plugin-softhddevice.git - fetch = +refs/heads/*:refs/remotes/origin/* -[branch "master"] - remote = origin - merge = refs/heads/master diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/description vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/description --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/description 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/description 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -Unnamed repository; edit this file 'description' to name the repository. diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/HEAD vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/HEAD --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/HEAD 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/HEAD 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ref: refs/heads/master diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/applypatch-msg.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/applypatch-msg.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/applypatch-msg.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/applypatch-msg.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -#!/bin/sh -# -# An example hook script to check the commit log message taken by -# applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. The hook is -# allowed to edit the commit message file. -# -# To enable this hook, rename this file to "applypatch-msg". - -. git-sh-setup -test -x "$GIT_DIR/hooks/commit-msg" && - exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"} -: diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/commit-msg.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/commit-msg.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/commit-msg.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/commit-msg.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An example hook script to check the commit log message. -# Called by "git commit" with one argument, the name of the file -# that has the commit message. The hook should exit with non-zero -# status after issuing an appropriate message if it wants to stop the -# commit. The hook is allowed to edit the commit message file. -# -# To enable this hook, rename this file to "commit-msg". - -# Uncomment the below to add a Signed-off-by line to the message. -# Doing this in a hook is a bad idea in general, but the prepare-commit-msg -# hook is more suited to it. -# -# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" - -# This example catches duplicate Signed-off-by lines. - -test "" = "$(grep '^Signed-off-by: ' "$1" | - sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { - echo >&2 Duplicate Signed-off-by lines. - exit 1 -} diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/post-update.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/post-update.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/post-update.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/post-update.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare a packed repository for use over -# dumb transports. -# -# To enable this hook, rename this file to "post-update". - -exec git update-server-info diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-applypatch.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-applypatch.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-applypatch.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-applypatch.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed -# by applypatch from an e-mail message. -# -# The hook should exit with non-zero status after issuing an -# appropriate message if it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-applypatch". - -. git-sh-setup -test -x "$GIT_DIR/hooks/pre-commit" && - exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"} -: diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-commit.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-commit.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-commit.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-commit.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git commit" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message if -# it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-commit". - -if git rev-parse --verify HEAD >/dev/null 2>&1 -then - against=HEAD -else - # Initial commit: diff against an empty tree object - against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 -fi - -# If you want to allow non-ASCII filenames set this variable to true. -allownonascii=$(git config --bool hooks.allownonascii) - -# Redirect output to stderr. -exec 1>&2 - -# Cross platform projects tend to avoid non-ASCII filenames; prevent -# them from being added to the repository. We exploit the fact that the -# printable range starts at the space character and ends with tilde. -if [ "$allownonascii" != "true" ] && - # Note that the use of brackets around a tr range is ok here, (it's - # even required, for portability to Solaris 10's /usr/bin/tr), since - # the square bracket bytes happen to fall in the designated range. - test $(git diff --cached --name-only --diff-filter=A -z $against | - LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 -then - cat <<\EOF -Error: Attempt to add a non-ASCII file name. - -This can cause problems if you want to work with people on other platforms. - -To be portable it is advisable to rename the file. - -If you know what you are doing you can disable this check using: - - git config hooks.allownonascii true -EOF - exit 1 -fi - -# If there are whitespace errors, print the offending file names and fail. -exec git diff-index --check --cached $against -- diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/prepare-commit-msg.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/prepare-commit-msg.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/prepare-commit-msg.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/prepare-commit-msg.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -#!/bin/sh -# -# An example hook script to prepare the commit log message. -# Called by "git commit" with the name of the file that has the -# commit message, followed by the description of the commit -# message's source. The hook's purpose is to edit the commit -# message file. If the hook fails with a non-zero status, -# the commit is aborted. -# -# To enable this hook, rename this file to "prepare-commit-msg". - -# This hook includes three examples. The first comments out the -# "Conflicts:" part of a merge commit. -# -# The second includes the output of "git diff --name-status -r" -# into the message, just before the "git status" output. It is -# commented because it doesn't cope with --amend or with squashed -# commits. -# -# The third example adds a Signed-off-by line to the message, that can -# still be edited. This is rarely a good idea. - -case "$2,$3" in - merge,) - /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; - -# ,|template,) -# /usr/bin/perl -i.bak -pe ' -# print "\n" . `git diff --cached --name-status -r` -# if /^#/ && $first++ == 0' "$1" ;; - - *) ;; -esac - -# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') -# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-push.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-push.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-push.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-push.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -#!/bin/sh - -# An example hook script to verify what is about to be pushed. Called by "git -# push" after it has checked the remote status, but before anything has been -# pushed. If this script exits with a non-zero status nothing will be pushed. -# -# This hook is called with the following parameters: -# -# $1 -- Name of the remote to which the push is being done -# $2 -- URL to which the push is being done -# -# If pushing without using a named remote those arguments will be equal. -# -# Information about the commits which are being pushed is supplied as lines to -# the standard input in the form: -# -# -# -# This sample shows how to prevent push of commits where the log message starts -# with "WIP" (work in progress). - -remote="$1" -url="$2" - -z40=0000000000000000000000000000000000000000 - -IFS=' ' -while read local_ref local_sha remote_ref remote_sha -do - if [ "$local_sha" = $z40 ] - then - # Handle delete - : - else - if [ "$remote_sha" = $z40 ] - then - # New branch, examine all commits - range="$local_sha" - else - # Update to existing branch, examine new commits - range="$remote_sha..$local_sha" - fi - - # Check for WIP commit - commit=`git rev-list -n 1 --grep '^WIP' "$range"` - if [ -n "$commit" ] - then - echo "Found WIP commit in $local_ref, not pushing" - exit 1 - fi - fi -done - -exit 0 diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-rebase.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-rebase.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/pre-rebase.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/pre-rebase.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,169 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2006, 2008 Junio C Hamano -# -# The "pre-rebase" hook is run just before "git rebase" starts doing -# its job, and can prevent the command from running by exiting with -# non-zero status. -# -# The hook is called with the following parameters: -# -# $1 -- the upstream the series was forked from. -# $2 -- the branch being rebased (or empty when rebasing the current branch). -# -# This sample shows how to prevent topic branches that are already -# merged to 'next' branch from getting rebased, because allowing it -# would result in rebasing already published history. - -publish=next -basebranch="$1" -if test "$#" = 2 -then - topic="refs/heads/$2" -else - topic=`git symbolic-ref HEAD` || - exit 0 ;# we do not interrupt rebasing detached HEAD -fi - -case "$topic" in -refs/heads/??/*) - ;; -*) - exit 0 ;# we do not interrupt others. - ;; -esac - -# Now we are dealing with a topic branch being rebased -# on top of master. Is it OK to rebase it? - -# Does the topic really exist? -git show-ref -q "$topic" || { - echo >&2 "No such branch $topic" - exit 1 -} - -# Is topic fully merged to master? -not_in_master=`git rev-list --pretty=oneline ^master "$topic"` -if test -z "$not_in_master" -then - echo >&2 "$topic is fully merged to master; better remove it." - exit 1 ;# we could allow it, but there is no point. -fi - -# Is topic ever merged to next? If so you should not be rebasing it. -only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` -only_next_2=`git rev-list ^master ${publish} | sort` -if test "$only_next_1" = "$only_next_2" -then - not_in_topic=`git rev-list "^$topic" master` - if test -z "$not_in_topic" - then - echo >&2 "$topic is already up-to-date with master" - exit 1 ;# we could allow it, but there is no point. - else - exit 0 - fi -else - not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` - /usr/bin/perl -e ' - my $topic = $ARGV[0]; - my $msg = "* $topic has commits already merged to public branch:\n"; - my (%not_in_next) = map { - /^([0-9a-f]+) /; - ($1 => 1); - } split(/\n/, $ARGV[1]); - for my $elem (map { - /^([0-9a-f]+) (.*)$/; - [$1 => $2]; - } split(/\n/, $ARGV[2])) { - if (!exists $not_in_next{$elem->[0]}) { - if ($msg) { - print STDERR $msg; - undef $msg; - } - print STDERR " $elem->[1]\n"; - } - } - ' "$topic" "$not_in_next" "$not_in_master" - exit 1 -fi - -<<\DOC_END - -This sample hook safeguards topic branches that have been -published from being rewound. - -The workflow assumed here is: - - * Once a topic branch forks from "master", "master" is never - merged into it again (either directly or indirectly). - - * Once a topic branch is fully cooked and merged into "master", - it is deleted. If you need to build on top of it to correct - earlier mistakes, a new topic branch is created by forking at - the tip of the "master". This is not strictly necessary, but - it makes it easier to keep your history simple. - - * Whenever you need to test or publish your changes to topic - branches, merge them into "next" branch. - -The script, being an example, hardcodes the publish branch name -to be "next", but it is trivial to make it configurable via -$GIT_DIR/config mechanism. - -With this workflow, you would want to know: - -(1) ... if a topic branch has ever been merged to "next". Young - topic branches can have stupid mistakes you would rather - clean up before publishing, and things that have not been - merged into other branches can be easily rebased without - affecting other people. But once it is published, you would - not want to rewind it. - -(2) ... if a topic branch has been fully merged to "master". - Then you can delete it. More importantly, you should not - build on top of it -- other people may already want to - change things related to the topic as patches against your - "master", so if you need further changes, it is better to - fork the topic (perhaps with the same name) afresh from the - tip of "master". - -Let's look at this example: - - o---o---o---o---o---o---o---o---o---o "next" - / / / / - / a---a---b A / / - / / / / - / / c---c---c---c B / - / / / \ / - / / / b---b C \ / - / / / / \ / - ---o---o---o---o---o---o---o---o---o---o---o "master" - - -A, B and C are topic branches. - - * A has one fix since it was merged up to "next". - - * B has finished. It has been fully merged up to "master" and "next", - and is ready to be deleted. - - * C has not merged to "next" at all. - -We would want to allow C to be rebased, refuse A, and encourage -B to be deleted. - -To compute (1): - - git rev-list ^master ^topic next - git rev-list ^master next - - if these match, topic has not merged in next at all. - -To compute (2): - - git rev-list master..topic - - if this is empty, it is fully merged to "master". - -DOC_END diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/update.sample vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/update.sample --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/hooks/update.sample 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/hooks/update.sample 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ -#!/bin/sh -# -# An example hook script to blocks unannotated tags from entering. -# Called by "git receive-pack" with arguments: refname sha1-old sha1-new -# -# To enable this hook, rename this file to "update". -# -# Config -# ------ -# hooks.allowunannotated -# This boolean sets whether unannotated tags will be allowed into the -# repository. By default they won't be. -# hooks.allowdeletetag -# This boolean sets whether deleting tags will be allowed in the -# repository. By default they won't be. -# hooks.allowmodifytag -# This boolean sets whether a tag may be modified after creation. By default -# it won't be. -# hooks.allowdeletebranch -# This boolean sets whether deleting branches will be allowed in the -# repository. By default they won't be. -# hooks.denycreatebranch -# This boolean sets whether remotely creating branches will be denied -# in the repository. By default this is allowed. -# - -# --- Command line -refname="$1" -oldrev="$2" -newrev="$3" - -# --- Safety check -if [ -z "$GIT_DIR" ]; then - echo "Don't run this script from the command line." >&2 - echo " (if you want, you could supply GIT_DIR then run" >&2 - echo " $0 )" >&2 - exit 1 -fi - -if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then - echo "usage: $0 " >&2 - exit 1 -fi - -# --- Config -allowunannotated=$(git config --bool hooks.allowunannotated) -allowdeletebranch=$(git config --bool hooks.allowdeletebranch) -denycreatebranch=$(git config --bool hooks.denycreatebranch) -allowdeletetag=$(git config --bool hooks.allowdeletetag) -allowmodifytag=$(git config --bool hooks.allowmodifytag) - -# check for no description -projectdesc=$(sed -e '1q' "$GIT_DIR/description") -case "$projectdesc" in -"Unnamed repository"* | "") - echo "*** Project description file hasn't been set" >&2 - exit 1 - ;; -esac - -# --- Check types -# if $newrev is 0000...0000, it's a commit to delete a ref. -zero="0000000000000000000000000000000000000000" -if [ "$newrev" = "$zero" ]; then - newrev_type=delete -else - newrev_type=$(git cat-file -t $newrev) -fi - -case "$refname","$newrev_type" in - refs/tags/*,commit) - # un-annotated tag - short_refname=${refname##refs/tags/} - if [ "$allowunannotated" != "true" ]; then - echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 - echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 - exit 1 - fi - ;; - refs/tags/*,delete) - # delete tag - if [ "$allowdeletetag" != "true" ]; then - echo "*** Deleting a tag is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/tags/*,tag) - # annotated tag - if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 - then - echo "*** Tag '$refname' already exists." >&2 - echo "*** Modifying a tag is not allowed in this repository." >&2 - exit 1 - fi - ;; - refs/heads/*,commit) - # branch - if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then - echo "*** Creating a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/heads/*,delete) - # delete branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - refs/remotes/*,commit) - # tracking branch - ;; - refs/remotes/*,delete) - # delete tracking branch - if [ "$allowdeletebranch" != "true" ]; then - echo "*** Deleting a tracking branch is not allowed in this repository" >&2 - exit 1 - fi - ;; - *) - # Anything else (is there anything else?) - echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 - exit 1 - ;; -esac - -# --- Finished -exit 0 Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/index and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/index differ diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/info/exclude vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/info/exclude --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/info/exclude 2014-10-03 10:05:47.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/info/exclude 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/logs/HEAD vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/logs/HEAD --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/logs/HEAD 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/logs/HEAD 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -0000000000000000000000000000000000000000 a3c0052c4b87b44679d8264c89d085fcda721a2e Frank Neumann 1412330767 +0200 clone: from git://projects.vdr-developer.org/vdr-plugin-softhddevice.git -a3c0052c4b87b44679d8264c89d085fcda721a2e 5e5ac995b6232b868639c9366dc54dad2a50798e Frank Neumann 1412330811 +0200 am: Rudimentary VA-API VPP support to softhddevice v9 diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/logs/refs/heads/master vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/logs/refs/heads/master --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/logs/refs/heads/master 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/logs/refs/heads/master 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -0000000000000000000000000000000000000000 a3c0052c4b87b44679d8264c89d085fcda721a2e Frank Neumann 1412330767 +0200 clone: from git://projects.vdr-developer.org/vdr-plugin-softhddevice.git -a3c0052c4b87b44679d8264c89d085fcda721a2e 5e5ac995b6232b868639c9366dc54dad2a50798e Frank Neumann 1412330811 +0200 am: Rudimentary VA-API VPP support to softhddevice v9 diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/logs/refs/remotes/origin/HEAD vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/logs/refs/remotes/origin/HEAD --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/logs/refs/remotes/origin/HEAD 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/logs/refs/remotes/origin/HEAD 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 a3c0052c4b87b44679d8264c89d085fcda721a2e Frank Neumann 1412330767 +0200 clone: from git://projects.vdr-developer.org/vdr-plugin-softhddevice.git Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/15/c1f0303ec955478f4983070b38571cbfbe2ce0 and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/15/c1f0303ec955478f4983070b38571cbfbe2ce0 differ Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/5e/5ac995b6232b868639c9366dc54dad2a50798e and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/5e/5ac995b6232b868639c9366dc54dad2a50798e differ Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/66/d30973ab64aa5969de710d14899ea9e1b7ee7a and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/66/d30973ab64aa5969de710d14899ea9e1b7ee7a differ Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/87/44d1f1fbd9b29c7098c8cee99109ccaaae6119 and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/87/44d1f1fbd9b29c7098c8cee99109ccaaae6119 differ Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/ea/824b8efc0a5011e68aee96800ec144e2c1edc7 and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/ea/824b8efc0a5011e68aee96800ec144e2c1edc7 differ Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/ed/204df63261a53e127558fba5f19fbb013d2f8b and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/ed/204df63261a53e127558fba5f19fbb013d2f8b differ Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/pack/pack-e659b24cd57fffcc5a70abd2d9470072dfd929cc.idx and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/pack/pack-e659b24cd57fffcc5a70abd2d9470072dfd929cc.idx differ Binary files /tmp/6W0rPbAuzV/vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/objects/pack/pack-e659b24cd57fffcc5a70abd2d9470072dfd929cc.pack and /tmp/MYXjLQkvYv/vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/objects/pack/pack-e659b24cd57fffcc5a70abd2d9470072dfd929cc.pack differ diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/ORIG_HEAD vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/ORIG_HEAD --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/ORIG_HEAD 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/ORIG_HEAD 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -a3c0052c4b87b44679d8264c89d085fcda721a2e diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/packed-refs vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/packed-refs --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/packed-refs 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/packed-refs 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -# pack-refs with: peeled fully-peeled -a3c0052c4b87b44679d8264c89d085fcda721a2e refs/remotes/origin/master -8b57af53b6d356cffc91542a0ce9712d1eb032fc refs/tags/0.1.2 -23300b0383286bf4628f679cbf7fccc65d713d9a refs/tags/0.1.3 -aba14813c008c4d5a7577e4191be686ab8bf4cc4 refs/tags/0.1.5 -cac1e5ce17ab3178981effe7d5608a677d6a5531 refs/tags/0.2.0 -8d624224e932caaf6964680b1f9d4d33400e0caf refs/tags/0.3.0 -e619f5c836741868ce01630892d435f793dd960a refs/tags/0.3.1 -87f7aa63cc40bb5101117f6c1fb1e4afca8f88d8 refs/tags/0.3.5 -fa27a1c73a1070b7af127695362ad0e5c424b079 refs/tags/0.4.0 -eed708b9ea6fa3f8647590a58867f4f798ab728c refs/tags/0.4.5 -00cafd18edd2b5624c8ba8f7f2924b1fb1e1644c refs/tags/0.4.6 -807b4df38106a7682bf9372cfb635cfa6f4ae815 refs/tags/0.4.7 -a7f0cf6d6f2d18c982a08695ca4363aa2a55693e refs/tags/0.4.8 -74a62e3649153a5633dbd502e435c77037cd4db3 refs/tags/0.4.9 -e10e62dcf72932641a05124304344607bed832ff refs/tags/0.5.0 -583b6f246eb030723f1010fde620c385020aa4b4 refs/tags/0.5.1 -9a2b6f860a3e10d97b8995abdda69d564ecf8661 refs/tags/0.5.2 -eab051f5e6d2585089e0b332f3a92bf09e6a6b1f refs/tags/0.6.0 -58a76439ee252df3cc34e66071286b13ed90e4f4 refs/tags/0.6.1rc1 diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/refs/heads/master vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/refs/heads/master --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/refs/heads/master 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/refs/heads/master 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -5e5ac995b6232b868639c9366dc54dad2a50798e diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/refs/remotes/origin/HEAD vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/refs/remotes/origin/HEAD --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.git/refs/remotes/origin/HEAD 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.git/refs/remotes/origin/HEAD 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -ref: refs/remotes/origin/master diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.gitattributes vdr-plugin-softhddevice-0.6.1rc1.git20150130/.gitattributes --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.gitattributes 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.gitattributes 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -# gitattributes(5) file -*.[15] ident -*.[ch] ident -*.cpp ident -*.txt ident -Makefile ident diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.gitignore vdr-plugin-softhddevice-0.6.1rc1.git20150130/.gitignore --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.gitignore 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.gitignore 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -# gitignore(5) file -*.[oa] -*~ -.*.swp -.gdb_history -# work directory -.chaos -# generated files -.dependencies -libvdr-softhddevice.so* diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/.indent.pro vdr-plugin-softhddevice-0.6.1rc1.git20150130/.indent.pro --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/.indent.pro 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/.indent.pro 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ ---blank-lines-before-block-comments ---blank-lines-after-declarations ---blank-lines-after-procedures ---no-blank-lines-after-commas ---braces-on-if-line ---no-blank-before-sizeof ---comment-indentation41 ---declaration-comment-column41 ---no-comment-delimiters-on-blank-lines ---swallow-optional-blank-lines ---dont-format-comments ---parameter-indentation4 ---indent-level4 ---line-comments-indentation0 ---cuddle-else ---cuddle-do-while ---brace-indent0 ---case-brace-indentation0 -//--start-left-side-of-comments ---leave-preprocessor-space -//--continuation-indentation8 ---case-indentation4 ---else-endif-column0 ---no-space-after-casts ---declaration-indentation1 ---dont-line-up-parentheses ---no-space-after-function-call-names ---space-special-semicolon ---tab-size8 ---use-tabs ---line-length79 ---comment-line-length79 ---honour-newlines ---dont-break-procedure-type ---break-before-boolean-operator ---continuation-indentation4 ---ignore-newlines diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/Makefile vdr-plugin-softhddevice-0.6.1rc1.git20150130/Makefile --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/Makefile 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/Makefile 2015-01-31 04:08:45.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: ea824b8efc0a5011e68aee96800ec144e2c1edc7 $ +# $Id: 187a9170996aed0b5a1783e229edddd9f4d628c7 $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. @@ -18,7 +18,7 @@ # support VDPAU video output module VDPAU ?= $(shell pkg-config --exists vdpau && echo 1) # support VA-API video output module (deprecated) -VAAPI ?= $(shell pkg-config --exists libva && echo 1) +#VAAPI ?= $(shell pkg-config --exists libva && echo 1) # support glx output #OPENGL ?= $(shell pkg-config --exists gl glu && echo 1) # screensaver disable/enable @@ -30,7 +30,7 @@ AVRESAMPLE ?= $(shell pkg-config --exists libavresample && echo 1) endif -CONFIG := -DDEBUG #-DOSD_DEBUG # enable debug output+functions +CONFIG := # -DDEBUG #-DOSD_DEBUG # enable debug output+functions #CONFIG += -DSTILL_DEBUG=2 # still picture debug verbose level CONFIG += -DAV_INFO -DAV_INFO_TIME=3000 # info/debug a/v sync diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/softhddev.c vdr-plugin-softhddevice-0.6.1rc1.git20150130/softhddev.c --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/softhddev.c 2014-10-03 10:06:07.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/softhddev.c 2015-01-31 04:08:45.000000000 +0000 @@ -17,7 +17,7 @@ /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Affero General Public License for more details. /// -/// $Id: 175910934e6830fd90469d804f3d24119625caec $ +/// $Id: d0e32ee54ca04f915e8299eaa04d970825678087 $ ////////////////////////////////////////////////////////////////////////////// #define noUSE_SOFTLIMIT ///< add soft buffer limits to Play.. @@ -3092,7 +3092,7 @@ Debug(3, "x-setup: Starting X server '%s' '%s'\n", args[0], X11ServerArguments); // fork - if ((pid = vfork())) { // parent + if ((pid = fork())) { // parent X11ServerPid = pid; Debug(3, "x-setup: Started x-server pid=%d\n", X11ServerPid); diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/softhddevice.cpp vdr-plugin-softhddevice-0.6.1rc1.git20150130/softhddevice.cpp --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/softhddevice.cpp 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/softhddevice.cpp 2015-01-31 04:08:45.000000000 +0000 @@ -17,7 +17,7 @@ /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Affero General Public License for more details. /// -/// $Id: 66d30973ab64aa5969de710d14899ea9e1b7ee7a $ +/// $Id: b3467a5df140e4d47495b998f17f897e3229fd06 $ ////////////////////////////////////////////////////////////////////////////// #define __STDC_CONSTANT_MACROS ///< needed for ffmpeg UINT64_C @@ -123,10 +123,6 @@ /// config cut left and right pixels static int ConfigVideoCutLeftRight[RESOLUTIONS]; - /// config vaapi field ordering for first & second field -static int ConfigVideoFirstField[RESOLUTIONS]; -static int ConfigVideoSecondField[RESOLUTIONS]; - static int ConfigAutoCropEnabled; ///< auto crop detection enabled static int ConfigAutoCropInterval; ///< auto crop detection interval static int ConfigAutoCropDelay; ///< auto crop detection delay @@ -635,8 +631,6 @@ int Sharpen[RESOLUTIONS]; int CutTopBottom[RESOLUTIONS]; int CutLeftRight[RESOLUTIONS]; - int FirstField[RESOLUTIONS]; - int SecondField[RESOLUTIONS]; int AutoCropInterval; int AutoCropDelay; @@ -738,15 +732,6 @@ static const char *const video_display_formats_16_9[] = { "pan&scan", "pillarbox", "center cut-out", }; -#ifdef USE_VAAPI - static const char *const deinterlace[] = { - "Bob", "Weave/None", "MotionAdaptive", "MotionCompensated", "Software Bob", - "Software Spatial", - }; - static const char *const deinterlace_short[] = { - "B", "W", "MADI", "MCDI", "S+B", "S+S", - }; -#else static const char *const deinterlace[] = { "Bob", "Weave/None", "Temporal", "TemporalSpatial", "Software Bob", "Software Spatial", @@ -754,7 +739,6 @@ static const char *const deinterlace_short[] = { "B", "W", "T", "T+S", "S+B", "S+S", }; -#endif static const char *const scaling[] = { "Normal", "Fast", "HQ", "Anamorphic" }; @@ -851,18 +835,13 @@ if (ResolutionShown[i]) { Add(new cMenuEditStraItem(tr("Scaling"), &Scaling[i], 4, scaling)); -#ifdef USE_VAAPI - Add(new cMenuEditStraItem(tr("Deinterlace"), &Deinterlace[i], - 4, deinterlace)); -#else Add(new cMenuEditStraItem(tr("Deinterlace"), &Deinterlace[i], 6, deinterlace)); -#endif Add(new cMenuEditBoolItem(tr("SkipChromaDeinterlace (vdpau)"), &SkipChromaDeinterlace[i], trVDR("no"), trVDR("yes"))); Add(new cMenuEditBoolItem(tr("Inverse Telecine (vdpau)"), &InverseTelecine[i], trVDR("no"), trVDR("yes"))); - Add(new cMenuEditIntItem(tr("Denoise (0..1000)"), + Add(new cMenuEditIntItem(tr("Denoise (0..1000) (vdpau)"), &Denoise[i], 0, 1000, tr("off"), tr("max"))); Add(new cMenuEditIntItem(tr("Sharpen (-1000..1000) (vdpau)"), &Sharpen[i], -1000, 1000, tr("blur max"), @@ -872,11 +851,6 @@ &CutTopBottom[i], 0, 250)); Add(new cMenuEditIntItem(tr("Cut left and right (pixel)"), &CutLeftRight[i], 0, 250)); - - Add(new cMenuEditIntItem(tr("First field order (0-2) (vaapi)"), - &FirstField[i], 0, 2)); - Add(new cMenuEditIntItem(tr("Second field order (0-2) (vaapi)"), - &SecondField[i], 0, 2)); } } // @@ -1083,10 +1057,6 @@ CutTopBottom[i] = ConfigVideoCutTopBottom[i]; CutLeftRight[i] = ConfigVideoCutLeftRight[i]; - - FirstField[i] = ConfigVideoFirstField[i]; - SecondField[i] = ConfigVideoSecondField[i]; - } // // auto-crop @@ -1229,12 +1199,6 @@ SetupStore(buf, ConfigVideoCutTopBottom[i] = CutTopBottom[i]); snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "CutLeftRight"); SetupStore(buf, ConfigVideoCutLeftRight[i] = CutLeftRight[i]); - - snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "FirstField"); - SetupStore(buf, ConfigVideoFirstField[i] = FirstField[i]); - snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "SecondField"); - SetupStore(buf, ConfigVideoSecondField[i] = SecondField[i]); - } VideoSetScaling(ConfigVideoScaling); VideoSetDeinterlace(ConfigVideoDeinterlace); @@ -1244,8 +1208,6 @@ VideoSetSharpen(ConfigVideoSharpen); VideoSetCutTopBottom(ConfigVideoCutTopBottom); VideoSetCutLeftRight(ConfigVideoCutLeftRight); - VideoSetFirstField(ConfigVideoFirstField); - VideoSetSecondField(ConfigVideoSecondField); SetupStore("AutoCrop.Interval", ConfigAutoCropInterval = AutoCropInterval); SetupStore("AutoCrop.Delay", ConfigAutoCropDelay = AutoCropDelay); @@ -3029,18 +2991,6 @@ VideoSetCutLeftRight(ConfigVideoCutLeftRight); return true; } - snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "FirstField"); - if (!strcasecmp(name, buf)) { - ConfigVideoFirstField[i] = atoi(value); - VideoSetFirstField(ConfigVideoFirstField); - return true; - } - snprintf(buf, sizeof(buf), "%s.%s", Resolution[i], "SecondField"); - if (!strcasecmp(name, buf)) { - ConfigVideoSecondField[i] = atoi(value); - VideoSetSecondField(ConfigVideoSecondField); - return true; - } } if (!strcasecmp(name, "AutoCrop.Interval")) { diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/video.c vdr-plugin-softhddevice-0.6.1rc1.git20150130/video.c --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/video.c 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/video.c 2015-01-31 04:08:45.000000000 +0000 @@ -17,7 +17,7 @@ /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Affero General Public License for more details. /// -/// $Id: ed204df63261a53e127558fba5f19fbb013d2f8b $ +/// $Id: 7f47f5e23362c3f42d360157d5e3b22d8da03561 $ ////////////////////////////////////////////////////////////////////////////// /// @@ -304,8 +304,6 @@ #define CODEC_SURFACES_VC1 3 ///< 1 decode, up to 2 references #define VIDEO_SURFACES_MAX 4 ///< video output surfaces for queue -#define POSTPROC_SURFACES_MAX 6 ///< video postprocessing surfaces for queue -#define FIELD_SURFACES_MAX POSTPROC_SURFACES_MAX / 2 ///< video postprocessing surfaces for queue #define OUTPUT_SURFACES_MAX 4 ///< output surfaces for flip page //---------------------------------------------------------------------------- @@ -368,12 +366,6 @@ /// Default cut left and right in pixels static int VideoCutLeftRight[VideoResolutionMax]; - /// Default field ordering for first field -static int VideoFirstField[VideoResolutionMax]; - - /// Default field ordering for second field -static int VideoSecondField[VideoResolutionMax]; - /// Color space ITU-R BT.601, ITU-R BT.709, ... static const VideoColorSpace VideoColorSpaces[VideoResolutionMax] = { VideoColorSpaceBt601, VideoColorSpaceBt709, VideoColorSpaceBt709, @@ -1454,7 +1446,6 @@ static char VaapiBuggyXvBA; ///< fix xvba-video bugs static char VaapiBuggyVdpau; ///< fix libva-driver-vdpau bugs static char VaapiBuggyIntel; ///< fix libva-driver-intel bugs -static char VaapiNewIntel; ///< new libva-driver-intel driver static VADisplay *VaDisplay; ///< VA-API display @@ -1493,12 +1484,10 @@ /// flags for put surface for different resolutions groups unsigned SurfaceFlagsTable[VideoResolutionMax]; - unsigned SurfaceDeintTable[VideoResolutionMax]; enum PixelFormat PixFmt; ///< ffmpeg frame pixfmt int WrongInterlacedWarned; ///< warning about interlace flag issued int Interlaced; ///< ffmpeg interlaced flag - int Deinterlaced; ///< vpp deinterlace was run / not run int TopFieldFirst; ///< ffmpeg top field displayed first VAImage DeintImages[5]; ///< deinterlace image buffers @@ -1508,12 +1497,8 @@ VAProfile Profile; ///< VA-API profile VAEntrypoint Entrypoint; ///< VA-API entrypoint - VAEntrypoint VppEntrypoint; ///< VA-API postprocessing entrypoint struct vaapi_context VaapiContext[1]; ///< ffmpeg VA-API context - VAConfigID VppConfig; ///< VPP Config - VAContextID vpp_ctx; ///< VPP Context - int SurfacesNeeded; ///< number of surface to request int SurfaceUsedN; ///< number of used surfaces /// used surface ids @@ -1542,18 +1527,6 @@ /// video surface ring buffer VASurfaceID SurfacesRb[VIDEO_SURFACES_MAX]; - VASurfaceID PostProcSurfacesRb[POSTPROC_SURFACES_MAX]; ///< Posprocessing result surfaces - VASurfaceID FirstFieldHistory[FIELD_SURFACES_MAX]; ///< Postproc history result surfaces - VASurfaceID SecondFieldHistory[FIELD_SURFACES_MAX]; ///< Postproc history result surfaces - - VASurfaceID * ForwardRefSurfaces; ///< Forward referencing surfaces for post processing - VASurfaceID * BackwardRefSurfaces; ///< Backward referencing surfaces for post processing - - unsigned int ForwardRefCount; ///< Current number of forward references - unsigned int BackwardRefCount; ///< Current number of backward references - - VASurfaceID PlaybackSurface; ///< Currently playing surface - #ifdef VA_EXP VASurfaceID LastSurface; ///< last surface #endif @@ -1561,8 +1534,6 @@ int SurfaceRead; ///< read pointer atomic_t SurfacesFilled; ///< how many of the buffer is used - int PostProcSurfaceWrite; ///< postprocessing write pointer - int SurfaceField; ///< current displayed field int TrickSpeed; ///< current trick speed int TrickCounter; ///< current trick speed counter @@ -1580,15 +1551,6 @@ int FramesDropped; ///< number of frames dropped int FrameCounter; ///< number of frames decoded int FramesDisplayed; ///< number of frames displayed - VABufferID filters[VAProcFilterCount]; ///< video postprocessing filters - unsigned filter_n; ///< number of postprocessing filters - unsigned MaxSupportedDeinterlacer; ///< greatest supported deinterlacing method - VABufferID* vpp_deinterlace_buf; ///< video postprocessing deinterlace buffer - VABufferID* vpp_denoise_buf; ///< video postprocessing denoise buffer - VABufferID* vpp_brightness_buf; ///< video postprocessing brightness buffer - VABufferID* vpp_contrast_buf; ///< video postprocessing contrast buffer - VABufferID* vpp_hue_buf; ///< video postprocessing hue buffer - VABufferID* vpp_saturation_buf; ///< video postprocessing saturation buffer }; static VaapiDecoder *VaapiDecoders[1]; ///< open decoder streams @@ -1662,7 +1624,6 @@ int y; int w; int h; - VAStatus va_status; if (VaOsdSubpicture == VA_INVALID_ID) { Warning(_("video/vaapi: no osd subpicture yet\n")); @@ -1710,13 +1671,6 @@ Error(_("video/vaapi: can't associate subpicture\n")); } } - - va_status = vaAssociateSubpicture(VaDisplay, VaOsdSubpicture, - decoder->PostProcSurfacesRb, POSTPROC_SURFACES_MAX, x, y, w, h, 0, 0, - VideoWindowWidth, VideoWindowHeight, - VA_SUBPICTURE_DESTINATION_IS_SCREEN_COORD); - if (va_status != VA_STATUS_SUCCESS) - Error(_("video/vaapi: can't associate subpicture\n")); } /// @@ -1742,9 +1696,6 @@ Error(_("video/vaapi: can't deassociate %d surfaces\n"), decoder->SurfaceUsedN); } - - vaDeassociateSubpicture(VaDisplay, VaOsdSubpicture, - decoder->PostProcSurfacesRb, POSTPROC_SURFACES_MAX); } } @@ -1775,14 +1726,6 @@ decoder->SurfaceFreeN); // FIXME: write error handler / fallback } - - if (vaCreateSurfaces(decoder->VaDisplay, VA_RT_FORMAT_YUV420, width, - height, decoder->PostProcSurfacesRb, POSTPROC_SURFACES_MAX, NULL, - 0) != VA_STATUS_SUCCESS) { - Fatal(_("video/vaapi: can't create %d posproc surfaces\n"), - VIDEO_SURFACES_MAX); - } - } /// @@ -1908,21 +1851,6 @@ } /// -/// Scale value from one range to another -/// -/// @param valueIn value to scale -/// @param baseMin original range min value -/// @param baseMax original range max value -/// @param limitMin new range min value -/// @param limitMax new range max value -/// @return scaled value -/// -static inline float VaapiScale(float valueIn, float baseMin, float baseMax, float limitMin, float limitMax) -{ - return ((limitMax - limitMin) * (valueIn - baseMin) / (baseMax - baseMin)) + limitMin; -} - -/// /// Initialize surface flags. /// /// @param decoder video hardware decoder @@ -1973,35 +1901,21 @@ // deinterlace flags (not yet supported by libva) switch (VideoDeinterlace[i]) { case VideoDeinterlaceBob: - decoder->SurfaceDeintTable[i] = VAProcDeinterlacingBob; break; case VideoDeinterlaceWeave: - decoder->SurfaceDeintTable[i] = VAProcDeinterlacingWeave; break; case VideoDeinterlaceTemporal: - decoder->SurfaceDeintTable[i] = VAProcDeinterlacingMotionAdaptive; + //FIXME: private hack + //decoder->SurfaceFlagsTable[i] |= 0x00002000; break; case VideoDeinterlaceTemporalSpatial: - decoder->SurfaceDeintTable[i] = VAProcDeinterlacingMotionCompensated; + //FIXME: private hack + //decoder->SurfaceFlagsTable[i] |= 0x00006000; break; default: break; } - if (decoder->SurfaceDeintTable[i] > decoder->MaxSupportedDeinterlacer) - Error("Selected deinterlacer for resolution %d is not supported by HW\n", i); - } - if (decoder->vpp_denoise_buf) { - VAProcFilterParameterBuffer *denoise_param; - VAStatus va_status = vaMapBuffer(VaDisplay, *decoder->vpp_denoise_buf, (void**)&denoise_param); - if (va_status == VA_STATUS_SUCCESS) { - - /* Assuming here that the type is set before and does not need to be modified */ - denoise_param->value = VaapiScale(VideoDenoise[decoder->Resolution], 0.0, 1000.0, 0.0, 1.0); - vaUnmapBuffer(VaDisplay, *decoder->vpp_denoise_buf); - } - } - } /// @@ -2049,43 +1963,6 @@ for (i = 0; i < VIDEO_SURFACES_MAX; ++i) { decoder->SurfacesRb[i] = VA_INVALID_ID; } - for (i = 0; i < POSTPROC_SURFACES_MAX; ++i) { - decoder->PostProcSurfacesRb[i] = VA_INVALID_ID; - } - for (i = 0; i < FIELD_SURFACES_MAX; ++i) { - decoder->FirstFieldHistory[i] = VA_INVALID_ID; - decoder->SecondFieldHistory[i] = VA_INVALID_ID; - } - - // Initialize postprocessing surfaces to 0 - // They are allocated on-demand - if (decoder->ForwardRefSurfaces) - free(decoder->ForwardRefSurfaces); - decoder->ForwardRefSurfaces = NULL; - decoder->ForwardRefCount = 0; - - decoder->PlaybackSurface = VA_INVALID_ID; - - if (decoder->BackwardRefSurfaces) - free(decoder->BackwardRefSurfaces); - decoder->BackwardRefSurfaces = NULL; - decoder->BackwardRefCount = 0; - - // Initialize vpp filter chain - for (i = 0; i < VAProcFilterCount; ++i) { - decoder->filters[i] = VA_INVALID_ID; - } - decoder->filter_n = 0; - - decoder->MaxSupportedDeinterlacer = 0; - - decoder->vpp_deinterlace_buf = NULL; - decoder->vpp_denoise_buf = NULL; - decoder->vpp_brightness_buf = NULL; - decoder->vpp_contrast_buf = NULL; - decoder->vpp_saturation_buf = NULL; - decoder->vpp_hue_buf = NULL; - #ifdef VA_EXP decoder->LastSurface = VA_INVALID_ID; #endif @@ -2097,9 +1974,6 @@ // decoder->Profile = VA_INVALID_ID; decoder->Entrypoint = VA_INVALID_ID; - decoder->VppEntrypoint = VA_INVALID_ID; - decoder->VppConfig = VA_INVALID_ID; - decoder->vpp_ctx = VA_INVALID_ID; decoder->VaapiContext->display = VaDisplay; decoder->VaapiContext->config_id = VA_INVALID_ID; decoder->VaapiContext->context_id = VA_INVALID_ID; @@ -2125,9 +1999,13 @@ decoder->PTS = AV_NOPTS_VALUE; - // get/put still not working - //decoder->GetPutImage = !VaapiBuggyIntel || VaapiNewIntel; + // old va-api intel driver didn't supported get/put-image. +#if VA_CHECK_VERSION(0,33,99) + // FIXME: not the exact version with support + decoder->GetPutImage = 1; +#else decoder->GetPutImage = !VaapiBuggyIntel; +#endif VaapiDecoders[VaapiDecoderN++] = decoder; @@ -2143,9 +2021,7 @@ { int filled; VASurfaceID surface; - unsigned int i; - - pthread_mutex_lock(&VideoMutex); + int i; // flush output queue, only 1-2 frames buffered, no big loss while ((filled = atomic_read(&decoder->SurfacesFilled))) { @@ -2166,8 +2042,7 @@ #ifdef DEBUG if (decoder->SurfaceRead != decoder->SurfaceWrite) { - Error("Surface queue mismatch. SurfaceRead = %d, SurfaceWrite = %d, SurfacesFilled = %d\n", - decoder->SurfaceRead, decoder->SurfaceWrite, atomic_read(&decoder->SurfacesFilled)); + abort(); } #endif @@ -2175,35 +2050,6 @@ for (i = 0; i < VIDEO_SURFACES_MAX; ++i) { decoder->SurfacesRb[i] = VA_INVALID_ID; } - vaDestroySurfaces(VaDisplay, decoder->PostProcSurfacesRb, POSTPROC_SURFACES_MAX); - for (i = 0; i < POSTPROC_SURFACES_MAX; ++i) { - decoder->PostProcSurfacesRb[i] = VA_INVALID_ID; - } - for (i = 0; i < FIELD_SURFACES_MAX; ++i) { - decoder->FirstFieldHistory[i] = VA_INVALID_ID; - decoder->SecondFieldHistory[i] = VA_INVALID_ID; - } - - // clear forward/backward references for vpp - if (decoder->ForwardRefSurfaces) - free(decoder->ForwardRefSurfaces); - decoder->ForwardRefSurfaces = NULL; - decoder->ForwardRefCount = 0; - - decoder->PlaybackSurface = VA_INVALID_ID; - - if (decoder->BackwardRefSurfaces) - free(decoder->BackwardRefSurfaces); - decoder->BackwardRefSurfaces = NULL; - decoder->BackwardRefCount = 0; - - // Free & clear vpp filter chain - for (i = 0; i < decoder->filter_n; ++i) { - vaDestroyBuffer(VaDisplay, decoder->filters[i]); - decoder->filters[i] = VA_INVALID_ID; - } - decoder->filter_n = 0; - #ifdef VA_EXP decoder->LastSurface = VA_INVALID_ID; #endif @@ -2237,17 +2083,6 @@ decoder->VaapiContext->config_id = VA_INVALID_ID; } } - - if (vaDestroyContext(VaDisplay, decoder->vpp_ctx) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't destroy postproc context!\n")); - } - decoder->vpp_ctx = VA_INVALID_ID; - - if (vaDestroyConfig(VaDisplay, decoder->VppConfig) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't destroy config!\n")); - } - decoder->VppConfig = VA_INVALID_ID; - // cleanup surfaces if (decoder->SurfaceFreeN || decoder->SurfaceUsedN) { VaapiDestroySurfaces(decoder); @@ -2260,8 +2095,6 @@ decoder->SurfaceWrite = 0; decoder->SurfaceField = 0; - decoder->PostProcSurfaceWrite = 0; - decoder->SyncCounter = 0; decoder->FrameCounter = 0; decoder->FramesDisplayed = 0; @@ -2269,7 +2102,6 @@ decoder->Closing = 0; decoder->PTS = AV_NOPTS_VALUE; VideoDeltaPTS = 0; - pthread_mutex_unlock(&VideoMutex); } /// @@ -2517,9 +2349,6 @@ if (strstr(s, "Intel i965")) { VaapiBuggyIntel = 1; } - if (strstr(s, "Intel i965 driver - 1.0.16.")) { - VaapiNewIntel = 1; - } // // check which attributes are supported // @@ -2551,15 +2380,17 @@ int entrypoint_n; int i; - vaQueryConfigEntrypoints(VaDisplay, VAProfileNone, entrypoints, - &entrypoint_n); - VaapiVideoProcessing = 0; - for (i = 0; i < entrypoint_n; i++) { - if (entrypoints[i] == VAEntrypointVideoProc) { - Info("video/vaapi: supports video processing\n"); - VaapiVideoProcessing = 1; - break; + if (!vaQueryConfigEntrypoints(VaDisplay, VAProfileNone, entrypoints, + &entrypoint_n)) { + + for (i = 0; i < entrypoint_n; i++) { + fprintf(stderr, "oops %d\n", i); + if (entrypoints[i] == VAEntrypointVideoProc) { + Info("video/vaapi: supports video processing\n"); + VaapiVideoProcessing = 1; + break; + } } } } @@ -2786,54 +2617,6 @@ VaapiAssociate(decoder); } -#define ARRAY_ELEMS(array) (sizeof(array)/sizeof(array[0])) - -/// -/// Generic helper to set-up ParameterBuffer filters -/// (like NoiseReduction, SkinToneEnhancement, Sharpening...). -/// -/// @param decoder VA-API decoder -/// @param type Type of filter to set-up -/// @param value Value of the filter to set-up to -/// @return Buffer ID for the filter or VA_INVALID_ID if unsuccessful -/// -static VABufferID VaapiSetupParameterBufferProcessing(VaapiDecoder * decoder, VAProcFilterType type, float value) -{ - VAProcFilterParameterBuffer param_buf; - VABufferID filter_buf_id; - unsigned int cap_n = 1; - VAProcFilterCap caps[cap_n]; - - VAStatus va_status = vaQueryVideoProcFilterCaps(VaDisplay, decoder->vpp_ctx, - type, caps, &cap_n); - if (va_status != VA_STATUS_SUCCESS) { - Error("Failed to query filter #%02x capabilities: %s\n", type, vaErrorStr(va_status)); - return VA_INVALID_ID; - } - if (cap_n != 1) { - Error("Wrong number of capabilities (%d) for filter %#010x\n", cap_n, type); - return VA_INVALID_ID; - } - - Info("video/vaapi: %.2f - %.2f ++ %.2f = %.2f\n", - caps->range.min_value, - caps->range.max_value, - caps->range.step, - caps->range.default_value); - - param_buf.type = type; - param_buf.value = value; - va_status = vaCreateBuffer(VaDisplay, decoder->vpp_ctx, - VAProcFilterParameterBufferType, sizeof(param_buf), 1, - ¶m_buf, &filter_buf_id); - - if (va_status != VA_STATUS_SUCCESS) { - Error("Could not create buffer for filter #%02x: %s\n", type, vaErrorStr(va_status)); - return VA_INVALID_ID; - } - return filter_buf_id; -} - /// /// Configure VA-API for new video format. /// @@ -2842,43 +2625,45 @@ static void VaapiSetupVideoProcessing(VaapiDecoder * decoder) { #if VA_CHECK_VERSION(0,33,99) - VAStatus va_status; VAProcFilterType filtertypes[VAProcFilterCount]; unsigned filtertype_n; unsigned u; unsigned v; + VAProcFilterCap denoise_caps[1]; + unsigned denoise_cap_n; VAProcFilterCapDeinterlacing deinterlacing_caps[VAProcDeinterlacingCount]; - VAProcFilterParameterBufferDeinterlacing deinterlace; unsigned deinterlacing_cap_n; - VAProcFilterCapColorBalance colorbalance_caps[VAProcColorBalanceCount]; - unsigned colorbalance_cap_n; - - VABufferID filter_buf_id; - - VAProcPipelineCaps pipeline_caps; - VAProcColorStandardType in_color_standards[VAProcColorStandardCount]; - VAProcColorStandardType out_color_standards[VAProcColorStandardCount]; + VABufferID denoise_filter; + VABufferID deint_filter; + VABufferID sharpen_filter; + VABufferID color_filter; + VABufferID filters[VAProcFilterCount]; + unsigned filter_n; if (!VaapiVideoProcessing) { return; } - // // display and filter infos. // filtertype_n = VAProcFilterCount; // API break this must be done - vaQueryVideoProcFilters(VaDisplay, decoder->vpp_ctx, + vaQueryVideoProcFilters(VaDisplay, decoder->VaapiContext->context_id, filtertypes, &filtertype_n); - for (u = 0; u < filtertype_n; ++u) { switch (filtertypes[u]) { case VAProcFilterNoiseReduction: Info("video/vaapi: noise reduction supported\n"); - filter_buf_id = VaapiSetupParameterBufferProcessing(decoder, filtertypes[u], 0.00); - if (filter_buf_id != VA_INVALID_ID) { - Info("Enabling denoise filter (pos = %d)\n", decoder->filter_n); - decoder->vpp_denoise_buf = &decoder->filters[decoder->filter_n]; - decoder->filters[decoder->filter_n++] = filter_buf_id; + + denoise_cap_n = 1; + vaQueryVideoProcFilterCaps(VaDisplay, + decoder->VaapiContext->context_id, + VAProcFilterNoiseReduction, denoise_caps, &denoise_cap_n); + if (denoise_cap_n) { + Info("video/vaapi: %.2f - %.2f ++ %.2f = %.2f\n", + denoise_caps->range.min_value, + denoise_caps->range.max_value, + denoise_caps->range.step, + denoise_caps->range.default_value); } break; case VAProcFilterDeinterlacing: @@ -2886,189 +2671,68 @@ deinterlacing_cap_n = VAProcDeinterlacingCount; vaQueryVideoProcFilterCaps(VaDisplay, - decoder->vpp_ctx, + decoder->VaapiContext->context_id, VAProcFilterDeinterlacing, deinterlacing_caps, &deinterlacing_cap_n); for (v = 0; v < deinterlacing_cap_n; ++v) { - - /* Deinterlacing parameters */ - deinterlace.type = VAProcFilterDeinterlacing; - deinterlace.flags = 0; - switch (deinterlacing_caps[v].type) { - case VAProcDeinterlacingNone: - Info("video/vaapi: none deinterlace supported\n"); - deinterlace.algorithm = VAProcDeinterlacingNone; - break; case VAProcDeinterlacingBob: Info("video/vaapi: bob deinterlace supported\n"); - deinterlace.algorithm = VAProcDeinterlacingBob; break; case VAProcDeinterlacingWeave: Info("video/vaapi: weave deinterlace supported\n"); - deinterlace.algorithm = VAProcDeinterlacingWeave; break; case VAProcDeinterlacingMotionAdaptive: Info("video/vaapi: motion adaptive deinterlace supported\n"); - deinterlace.algorithm = VAProcDeinterlacingMotionAdaptive; break; case VAProcDeinterlacingMotionCompensated: Info("video/vaapi: motion compensated deinterlace supported\n"); - deinterlace.algorithm = VAProcDeinterlacingMotionCompensated; break; default: Info("video/vaapi: unsupported deinterlace #%02x\n", deinterlacing_caps[v].type); break; } } - /* Enabling the deint algorithm that was seen last */ - Info("Enabling Deint (pos = %d)\n", decoder->filter_n); - decoder->MaxSupportedDeinterlacer = deinterlace.algorithm; - va_status = vaCreateBuffer(VaDisplay, decoder->vpp_ctx, - VAProcFilterParameterBufferType, sizeof(deinterlace), 1, - &deinterlace, &filter_buf_id); - decoder->vpp_deinterlace_buf = &decoder->filters[decoder->filter_n]; - decoder->filters[decoder->filter_n++] = filter_buf_id; break; case VAProcFilterSharpening: Info("video/vaapi: sharpening supported\n"); -#if 0 // Sharpening is advertised by driver but not really supported - filter_buf_id = VaapiSetupParameterBufferProcessing(decoder, filtertypes[u], 0.3); - if (filter_buf_id != VA_INVALID_ID) { - Info("Enabling sharpening filter (pos = %d)\n", decoder->filter_n); - decoder->filters[decoder->filter_n++] = filter_buf_id; - } -#endif break; case VAProcFilterColorBalance: - Info("video/vaapi: enabling color balance filters\n"); - colorbalance_cap_n = VAProcColorBalanceCount; - vaQueryVideoProcFilterCaps(VaDisplay, decoder->vpp_ctx, - VAProcFilterColorBalance, colorbalance_caps, - &colorbalance_cap_n); - - Info("video/vaapi: Supported color balance filter count: %d\n", colorbalance_cap_n); - - if (!colorbalance_cap_n) - break; - - /* Set each color balance filter individually */ - for (v = 0; v < colorbalance_cap_n; ++v) { - - /* Color balance buffer */ - VAProcFilterParameterBufferColorBalance cbal_param; - - switch(colorbalance_caps[v].type) { - case VAProcColorBalanceNone: - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "None", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - continue; // "None" is not an interesting filter - break; - case VAProcColorBalanceHue: - continue; // Not enabling to conserve filters (there seems to be a max limit) - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "Hue", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - - decoder->vpp_hue_buf = &decoder->filters[decoder->filter_n]; - break; - case VAProcColorBalanceSaturation: - continue; // Not enabling to conserve filters (there seems to be a max limit) - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "Saturation", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - - decoder->vpp_saturation_buf = &decoder->filters[decoder->filter_n]; - break; - case VAProcColorBalanceBrightness: - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "Brightness", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - - decoder->vpp_brightness_buf = &decoder->filters[decoder->filter_n]; - break; - case VAProcColorBalanceContrast: - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "Contrast", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - - decoder->vpp_contrast_buf = &decoder->filters[decoder->filter_n]; - - break; - case VAProcColorBalanceAutoSaturation: - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "AutoSaturation", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - continue; - break; - case VAProcColorBalanceAutoBrightness: - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "AutoBrightness", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - continue; - break; - case VAProcColorBalanceAutoContrast: - Info("%s (%.2f - %.2f ++ %.2f = %.2f) (pos = %d)\n", "AutoContrast", - colorbalance_caps[v].range.min_value, colorbalance_caps[v].range.max_value, - colorbalance_caps[v].range.step, colorbalance_caps[v].range.default_value, decoder->filter_n); - continue; - break; - - default: - Info("video/vaapi: unsupported color balance filter #%02x\n", colorbalance_caps[v].type); - break; - } - - cbal_param.type = VAProcFilterColorBalance; - cbal_param.attrib = colorbalance_caps[v].type; - cbal_param.value = colorbalance_caps[v].range.default_value; - - va_status = vaCreateBuffer(VaDisplay, decoder->vpp_ctx, - VAProcFilterParameterBufferType, - sizeof(VAProcFilterParameterBufferColorBalance), colorbalance_cap_n, - &cbal_param, &filter_buf_id); + Info("video/vaapi: color balance supported\n"); + break; + default: + Info("video/vaapi: unsupported filter #%02x\n", + filtertypes[u]); + break; + } + } - decoder->filters[decoder->filter_n++] = filter_buf_id; - } + // + // create pipeline filters + // + filter_n = 0; + filtertype_n = VAProcFilterCount; + vaQueryVideoProcFilters(VaDisplay, decoder->VaapiContext->context_id, + filtertypes, &filtertype_n); + for (u = 0; u < filtertype_n; ++u) { + switch (filtertypes[u]) { + case VAProcFilterNoiseReduction: break; - case VAProcFilterSkinToneEnhancement: - Info("video/vaapi: skin tone enhancement supported\n"); - filter_buf_id = VaapiSetupParameterBufferProcessing(decoder, filtertypes[u], 0.3); - if (filter_buf_id != VA_INVALID_ID) { - Info("Enabling skin tone filter (pos = %d)\n", decoder->filter_n); - decoder->filters[decoder->filter_n++] = filter_buf_id; - } + case VAProcFilterDeinterlacing: + break; + case VAProcFilterSharpening: + break; + case VAProcFilterColorBalance: break; default: - Info("video/vaapi: unsupported filter #%02x\n", filtertypes[u]); break; } } + // // query pipeline caps // - pipeline_caps.input_color_standards = in_color_standards; - pipeline_caps.num_input_color_standards = ARRAY_ELEMS(in_color_standards); - pipeline_caps.output_color_standards = out_color_standards; - pipeline_caps.num_output_color_standards = ARRAY_ELEMS(out_color_standards); - - va_status = vaQueryVideoProcPipelineCaps(VaDisplay, decoder->vpp_ctx, - decoder->filters, decoder->filter_n, &pipeline_caps); - if (va_status != VA_STATUS_SUCCESS) { - Fatal("Failed to query proc pipeline caps, error = %s\n", vaErrorStr(va_status)); - } - - Info("Allocating %d forward reference surfaces for postprocessing\n", pipeline_caps.num_forward_references); - decoder->ForwardRefSurfaces = realloc(decoder->ForwardRefSurfaces, pipeline_caps.num_forward_references * sizeof(VASurfaceID)); - decoder->ForwardRefCount = pipeline_caps.num_forward_references; - - Info("Allocating %d backward reference surfaces for postprocessing\n", pipeline_caps.num_backward_references); - decoder->BackwardRefSurfaces = realloc(decoder->BackwardRefSurfaces, pipeline_caps.num_backward_references * sizeof(VASurfaceID)); - decoder->BackwardRefCount = pipeline_caps.num_backward_references; - - //TODO: Verify that rest of the capabilities are set properly #endif } @@ -3113,23 +2777,6 @@ Error(_("video/vaapi: can't create context '%s'\n"), vaErrorStr(status)); } - - status = vaCreateConfig(decoder->VaDisplay, VAProfileNone, - decoder->VppEntrypoint, NULL, 0, - &decoder->VppConfig); - if (status != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't create config '%s'\n"), - vaErrorStr(status)); - } - status = vaCreateContext(decoder->VaDisplay, decoder->VppConfig, - video_ctx->width, video_ctx->height, - VA_PROGRESSIVE, decoder->PostProcSurfacesRb, POSTPROC_SURFACES_MAX, - &decoder->vpp_ctx); - if (status != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't create context '%s'\n"), - vaErrorStr(status)); - } - // FIXME: too late to switch to software rending on failures VaapiSetupVideoProcessing(decoder); } @@ -3206,7 +2853,6 @@ int entrypoint_n; int p; int e; - int i; VAConfigAttrib attrib; if (!VideoHardwareDecoder || (video_ctx->codec_id == AV_CODEC_ID_MPEG2VIDEO @@ -3331,21 +2977,6 @@ goto slow_path; } - vaQueryConfigEntrypoints(VaDisplay, VAProfileNone, entrypoints, - &entrypoint_n); - - for (i = 0; i < entrypoint_n; i++) { - if (entrypoints[i] == VAEntrypointVideoProc) { - decoder->VppEntrypoint = entrypoints[i]; - break; - } - } - - if (decoder->VppEntrypoint == VA_INVALID_ID) - Error("Could not locate Vpp EntryPoint!!\n"); - else - Info("Using entrypoint for vpp: %d\n", decoder->VppEntrypoint); - decoder->Profile = p; decoder->Entrypoint = e; decoder->PixFmt = *fmt_idx; @@ -3391,8 +3022,6 @@ // no accelerated format found decoder->Profile = VA_INVALID_ID; decoder->Entrypoint = VA_INVALID_ID; - decoder->VppEntrypoint = VA_INVALID_ID; - decoder->VppConfig = VA_INVALID_ID; decoder->VaapiContext->config_id = VA_INVALID_ID; decoder->SurfacesNeeded = VIDEO_SURFACES_MAX + 2; decoder->PixFmt = PIX_FMT_NONE; @@ -3412,12 +3041,11 @@ /// @param decoder VA-API decoder /// @param surface VA-API surface id /// @param interlaced flag interlaced source -/// @param deinterlaced flag source was deinterlaced /// @param top_field_first flag top_field_first for interlaced source /// @param field interlaced draw: 0 first field, 1 second field /// static void VaapiPutSurfaceX11(VaapiDecoder * decoder, VASurfaceID surface, - int interlaced, int deinterlaced, int top_field_first, int field) + int interlaced, int top_field_first, int field) { unsigned type; VAStatus status; @@ -3425,7 +3053,7 @@ uint32_t e; // deinterlace - if (interlaced && !deinterlaced + if (interlaced && VideoDeinterlace[decoder->Resolution] < VideoDeinterlaceSoftBob && VideoDeinterlace[decoder->Resolution] != VideoDeinterlaceWeave) { if (top_field_first) { @@ -3515,12 +3143,11 @@ /// @param decoder VA-API decoder /// @param surface VA-API surface id /// @param interlaced flag interlaced source -/// @param deinterlaced flag source was deinterlaced /// @param top_field_first flag top_field_first for interlaced source /// @param field interlaced draw: 0 first field, 1 second field /// static void VaapiPutSurfaceGLX(VaapiDecoder * decoder, VASurfaceID surface, - int interlaced, int deinterlaced, int top_field_first, int field) + int interlaced, int top_field_first, int field) { unsigned type; @@ -3529,7 +3156,7 @@ //uint32_t end; // deinterlace - if (interlaced && !deinterlaced + if (interlaced && VideoDeinterlace[decoder->Resolution] < VideoDeinterlaceSoftBob && VideoDeinterlace[decoder->Resolution] != VideoDeinterlaceWeave) { if (top_field_first) { @@ -3794,242 +3421,11 @@ #endif /// -/// Run deinterlacers on surface queue (should be called after queuing new surface) -/// -/// @param decoder VA-API decoder -/// @param top_field top field is first -/// @return Pointer to postprocessed surface or NULL if postprocessing failed -/// -/// @note we can't mix software and hardware decoder surfaces -/// -static VASurfaceID* VaapiDeinterlaceSurface(VaapiDecoder * decoder, int top_field) -{ - unsigned int i; - unsigned int filter_count = 0; - VAStatus va_status; - VASurfaceStatus va_surf_status; - VABufferID pipeline_buf = VA_INVALID_ID; - VABufferID filters_to_run[VAProcFilterCount]; - VAProcPipelineCaps pipeline_caps; - VAProcPipelineParameterBuffer *pipeline_param = NULL; - VAProcFilterParameterBufferDeinterlacing *deinterlace = NULL; - VASurfaceID *surface = NULL; - - /* No postprocessing filters enabled */ - if (!decoder->filter_n) - return NULL; - - /* Get next postproc surface to write from ring buffer */ - decoder->PostProcSurfaceWrite = (decoder->PostProcSurfaceWrite + 1) % POSTPROC_SURFACES_MAX; - surface = &decoder->PostProcSurfacesRb[decoder->PostProcSurfaceWrite]; - - memcpy(filters_to_run, decoder->filters, VAProcFilterCount * sizeof(VABufferID)); - filter_count = decoder->filter_n; - - /* Map deinterlace buffer and handle field ordering */ - if (decoder->vpp_deinterlace_buf) { - va_status = vaMapBuffer(VaDisplay, *decoder->vpp_deinterlace_buf, (void**)&deinterlace); - if (va_status != VA_STATUS_SUCCESS) { - Error("deint map buffer va_status = 0x%X\n", va_status); - return NULL; - } - /* Change deint algorithm as set in plugin menu */ - deinterlace->algorithm = decoder->SurfaceDeintTable[decoder->Resolution]; - - if (top_field) - deinterlace->flags = 0; - else - deinterlace->flags = VA_DEINTERLACING_BOTTOM_FIELD; - - if (!decoder->TopFieldFirst) - deinterlace->flags |= VA_DEINTERLACING_BOTTOM_FIELD_FIRST; - /* If non-interlaced then override flags with one field setup */ - if (!decoder->Interlaced) - deinterlace->flags = VA_DEINTERLACING_ONE_FIELD; - - /* This block of code skips various filters in-flight if source/settings - disallow running the filter in question */ - filter_count = 0; - for (i = 0; i < decoder->filter_n; ++i) { - - /* Skip deinterlacer if disabled or source is not interlaced */ - if (decoder->filters[i] == *decoder->vpp_deinterlace_buf) { - if (!decoder->Interlaced) - continue; - if (deinterlace->algorithm == VAProcDeinterlacingNone || - deinterlace->algorithm == VAProcDeinterlacingWeave) - continue; - if (deinterlace->algorithm > decoder->MaxSupportedDeinterlacer) - continue; - } - - /* Skip denoise if value is set to 0 ("off") */ - if (decoder->vpp_denoise_buf && - decoder->filters[i] == *decoder->vpp_denoise_buf) { - if (!VideoDenoise[decoder->Resolution]) - continue; - } - - filters_to_run[filter_count++] = decoder->filters[i]; - } - - vaUnmapBuffer(VaDisplay, *decoder->vpp_deinterlace_buf); - } - - va_status = vaQueryVideoProcPipelineCaps(VaDisplay, decoder->vpp_ctx, - filters_to_run, filter_count, - &pipeline_caps); - if (va_status != VA_STATUS_SUCCESS) { - Error("query pipeline caps va_status = 0x%X, reason = %s\n", va_status, vaErrorStr(va_status)); - return NULL; - } - - if (pipeline_caps.num_forward_references != decoder->ForwardRefCount) { - Info("Changing to %d forward reference surfaces for postprocessing\n", pipeline_caps.num_forward_references); - decoder->ForwardRefSurfaces = realloc(decoder->ForwardRefSurfaces, pipeline_caps.num_forward_references * sizeof(VASurfaceID)); - decoder->ForwardRefCount = pipeline_caps.num_forward_references; - } - - if (pipeline_caps.num_backward_references != decoder->BackwardRefCount) { - Info("Changing to %d backward reference surfaces for postprocessing\n", pipeline_caps.num_backward_references); - decoder->BackwardRefSurfaces = realloc(decoder->ForwardRefSurfaces, pipeline_caps.num_backward_references * sizeof(VASurfaceID)); - decoder->BackwardRefCount = pipeline_caps.num_backward_references; - } - - /* Make sure rendering is finished in earliest forward reference surface */ - if (decoder->ForwardRefCount) - vaSyncSurface(VaDisplay, decoder->ForwardRefSurfaces[decoder->ForwardRefCount - 1]); - - /* Skip postprocessing if queue is not deinterlaceable */ - for (i = 0; i < decoder->BackwardRefCount; ++i) { - va_status = vaQuerySurfaceStatus(VaDisplay, decoder->BackwardRefSurfaces[i], &va_surf_status); - if (va_status != VA_STATUS_SUCCESS) { - Error("Surface %d query status = 0x%X: %s\n", i, va_status, vaErrorStr(va_status)); - return NULL; - } - if (va_surf_status != VASurfaceReady) { - Info("Backward reference surface %d is not ready, surf_status = %d\n", i, va_surf_status); - return NULL; - } - } - - for (i = 0; i < decoder->ForwardRefCount; ++i) { - va_status = vaQuerySurfaceStatus(VaDisplay, decoder->ForwardRefSurfaces[i], &va_surf_status); - if (va_status != VA_STATUS_SUCCESS) { - Error("Surface %d query status = 0x%X: %s\n", i, va_status, vaErrorStr(va_status)); - return NULL; - } - if (va_surf_status != VASurfaceReady) { - Info("Forward reference surface %d is not ready, surf_status = %d\n", i, va_surf_status); - return NULL; - } - } - - va_status = vaBeginPicture(VaDisplay, decoder->vpp_ctx, *surface); - if (va_status != VA_STATUS_SUCCESS) { - Error("begin picture va_status = 0x%X\n", va_status); - return NULL; - } - - va_status = vaCreateBuffer(VaDisplay, decoder->vpp_ctx, - VAProcPipelineParameterBufferType, sizeof(VAProcPipelineParameterBuffer), 1, - NULL, &pipeline_buf); - if (va_status != VA_STATUS_SUCCESS) { - Error("createbuffer va_status = 0x%X\n", va_status); - return NULL; - } - - va_status = vaMapBuffer(VaDisplay, pipeline_buf, (void **)&pipeline_param); - if (va_status != VA_STATUS_SUCCESS) { - Error("map buffer va_status = 0x%X\n", va_status); - return NULL; - } - - pipeline_param->surface = decoder->PlaybackSurface; - pipeline_param->surface_region = NULL; - pipeline_param->surface_color_standard = VAProcColorStandardBT601; - pipeline_param->output_region = NULL; - pipeline_param->output_background_color = 0xff000000; - pipeline_param->output_color_standard = VAProcColorStandardBT601; - pipeline_param->pipeline_flags = 0; - pipeline_param->filter_flags = decoder->SurfaceFlagsTable[decoder->Resolution]; - if (decoder->Deinterlaced || !decoder->Interlaced) - pipeline_param->filter_flags |= VA_FRAME_PICTURE; - else if (decoder->Interlaced) - pipeline_param->filter_flags |= top_field ? VA_TOP_FIELD : VA_BOTTOM_FIELD; - pipeline_param->filters = filters_to_run; - pipeline_param->num_filters = filter_count; - - pipeline_param->forward_references = decoder->ForwardRefSurfaces; - pipeline_param->num_forward_references = decoder->ForwardRefCount; - pipeline_param->backward_references = decoder->BackwardRefSurfaces; - pipeline_param->num_backward_references = decoder->BackwardRefCount; - - vaUnmapBuffer(VaDisplay, pipeline_buf); - - va_status = vaRenderPicture(VaDisplay, decoder->vpp_ctx, &pipeline_buf, 1); - if (va_status != VA_STATUS_SUCCESS) { - Error("Postprocessing failed, status = 0x%X, reason = %s\n", va_status, vaErrorStr(va_status)); - surface = NULL; - } - vaEndPicture(VaDisplay, decoder->vpp_ctx); - vaSyncSurface(VaDisplay, *surface); - - return surface; -} - -/// /// Queue output surface. /// /// @param decoder VA-API decoder /// @param surface output surface -/// -/// @note we can't mix software and hardware decoder surfaces -/// -static void VaapiQueueSurfaceNew(VaapiDecoder * decoder, VASurfaceID surface) -{ - unsigned int i; - - /* Advance surfaces in queue: - * new surface -> last surface in forward reference queue - * Nearest surface to playback -> playback position - * playback position -> first backward reference - */ - if (decoder->BackwardRefCount) { - for (i = 0; i < decoder->BackwardRefCount - 1; ++i) { - decoder->BackwardRefSurfaces[i] = decoder->BackwardRefSurfaces[i + 1]; - } - decoder->BackwardRefSurfaces[decoder->BackwardRefCount - 1] = decoder->PlaybackSurface; - } - - if (decoder->ForwardRefCount) { - decoder->PlaybackSurface = decoder->ForwardRefSurfaces[0]; - for (i = decoder->ForwardRefCount - 1; i > 0; --i) { - decoder->ForwardRefSurfaces[i - 1] = decoder->ForwardRefSurfaces[i]; - } - decoder->ForwardRefSurfaces[decoder->ForwardRefCount - 1] = surface; - } else { - /* No forward references needed so put new surface to playback position */ - decoder->PlaybackSurface = surface; - } -} - -static void VaapiAddToHistoryQueue(VASurfaceID* queue, VASurfaceID surface) -{ - unsigned int i; - - for (i = FIELD_SURFACES_MAX - 1; i > 0; --i) { - queue[i] = queue[i - 1]; - } - queue[0] = surface; -} - -/// -/// Queue output surface. -/// -/// @param decoder VA-API decoder -/// @param surface output surface -/// @param softdec software decoder +/// @param softdec software decoder /// /// @note we can't mix software and hardware decoder surfaces /// @@ -4037,8 +3433,7 @@ int softdec) { VASurfaceID old; - VASurfaceID * firstfield = NULL; - VASurfaceID * secondfield = NULL; + ++decoder->FrameCounter; if (1) { // can't wait for output queue empty @@ -4124,50 +3519,11 @@ } #endif - /* No point in adding new surface if cleanup is in progress */ - if (pthread_mutex_trylock(&VideoMutex)) - return; - /* Queue new surface and run postprocessing filters */ - VaapiQueueSurfaceNew(decoder, surface); - firstfield = VaapiDeinterlaceSurface(decoder, decoder->TopFieldFirst ? 1 : 0); - if (!firstfield) { - /* Use unprocessed surface if postprocessing fails */ - decoder->Deinterlaced = 0; - VaapiAddToHistoryQueue(decoder->FirstFieldHistory, surface); - } else { - decoder->Deinterlaced = 1; - VaapiAddToHistoryQueue(decoder->FirstFieldHistory, *firstfield); - } - - /* Intel driver seems to order fields so that second deint field is - deinterlaced against previous second field surface. - That's why we don't queue the first field here */ - - /* Run postprocessing twice for top & bottom fields */ - if (decoder->Interlaced) { - secondfield = VaapiDeinterlaceSurface(decoder, decoder->TopFieldFirst ? 0 : 1); - if (!secondfield) { - /* Use unprocessed surface if postprocessing fails */ - decoder->Deinterlaced = 0; - VaapiAddToHistoryQueue(decoder->SecondFieldHistory, surface); - } else { - decoder->Deinterlaced = 1; - VaapiAddToHistoryQueue(decoder->SecondFieldHistory, *secondfield); - } - decoder->SurfacesRb[decoder->SurfaceWrite] = decoder->SecondFieldHistory[VideoSecondField[decoder->Resolution]]; - decoder->SurfaceWrite = (decoder->SurfaceWrite + 1) % VIDEO_SURFACES_MAX; - decoder->SurfaceField = decoder->TopFieldFirst ? 1 : 0; - atomic_inc(&decoder->SurfacesFilled); - } - - /* Now queue the first field once the possible second field exists */ - decoder->SurfacesRb[decoder->SurfaceWrite] = decoder->FirstFieldHistory[VideoFirstField[decoder->Resolution]]; - decoder->SurfaceWrite = (decoder->SurfaceWrite + 1) % VIDEO_SURFACES_MAX; - decoder->SurfaceField = decoder->TopFieldFirst ? 0 : 1; + decoder->SurfacesRb[decoder->SurfaceWrite] = surface; + decoder->SurfaceWrite = (decoder->SurfaceWrite + 1) + % VIDEO_SURFACES_MAX; atomic_inc(&decoder->SurfacesFilled); - pthread_mutex_unlock(&VideoMutex); - Debug(4, "video/vaapi: yy video surface %#010x ready\n", surface); } @@ -4199,66 +3555,85 @@ } if (decoder->BlackSurface == VA_INVALID_ID) { - if (vaCreateSurfaces(decoder->VaDisplay, VA_RT_FORMAT_YUV420, - VideoWindowWidth, VideoWindowHeight, &decoder->BlackSurface, 1, - NULL, 0) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't create a surface\n")); + uint8_t *va_image_data; + unsigned u; + + status = + vaCreateSurfaces(decoder->VaDisplay, VA_RT_FORMAT_YUV420, + VideoWindowWidth, VideoWindowHeight, &decoder->BlackSurface, 1, + NULL, 0); + if (status != VA_STATUS_SUCCESS) { + Error(_("video/vaapi: can't create a surface: %s\n"), + vaErrorStr(status)); return; } // full sized surface, no difference unscaled/scaled osd - if (vaAssociateSubpicture(decoder->VaDisplay, VaOsdSubpicture, - &decoder->BlackSurface, 1, 0, 0, VaOsdImage.width, - VaOsdImage.height, 0, 0, VideoWindowWidth, VideoWindowHeight, - 0) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't associate subpicture\n")); + status = + vaAssociateSubpicture(decoder->VaDisplay, VaOsdSubpicture, + &decoder->BlackSurface, 1, 0, 0, VaOsdImage.width, + VaOsdImage.height, 0, 0, VideoWindowWidth, VideoWindowHeight, 0); + if (status != VA_STATUS_SUCCESS) { + Error(_("video/vaapi: can't associate subpicture: %s\n"), + vaErrorStr(status)); } Debug(3, "video/vaapi: associate %08x\n", decoder->BlackSurface); - // FIXME: check if intel forgets this also - if (0 && decoder->Image->image_id == VA_INVALID_ID) { + if (decoder->Image->image_id == VA_INVALID_ID) { VAImageFormat format[1]; - void *va_image_data; - int i; - printf("No image\n"); VaapiFindImageFormat(decoder, PIX_FMT_NV12, format); - if ((status = - vaDeriveImage(decoder->VaDisplay, decoder->BlackSurface, - decoder->Image)) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: vaDeriveImage failed %d\n"), status); - if (vaCreateImage(VaDisplay, format, VideoWindowWidth, - VideoWindowHeight, - decoder->Image) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't create image!\n")); - } - } - if (vaMapBuffer(VaDisplay, decoder->Image->buf, &va_image_data) - != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't map the image!\n")); + status = + vaCreateImage(VaDisplay, format, VideoWindowWidth, + VideoWindowHeight, decoder->Image); + if (status != VA_STATUS_SUCCESS) { + Error(_("video/vaapi: can't create image: %s\n"), + vaErrorStr(status)); + return; } + } - for (i = 0; (unsigned)i < decoder->Image->data_size; i += 2) { - ((uint8_t *) va_image_data)[i + 0] = 0xFF; - ((uint8_t *) va_image_data)[i + 1] = 0xFF; - } + status = + vaMapBuffer(VaDisplay, decoder->Image->buf, + (void **)&va_image_data); + if (status != VA_STATUS_SUCCESS) { + Error(_("video/vaapi: can't map the image: %s\n"), + vaErrorStr(status)); + return; + } - if (vaUnmapBuffer(VaDisplay, - decoder->Image->buf) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't unmap the image!\n")); - } - if (vaDestroyImage(VaDisplay, - decoder->Image->image_id) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't destroy image!\n")); + for (u = 0; u < decoder->Image->data_size; ++u) { + if (u < decoder->Image->offsets[1]) { + va_image_data[u] = 0x00; // Y + } else if (u % 2 == 0) { + va_image_data[u] = 0x80; // U + } else { +#ifdef DEBUG + // make black surface visible + va_image_data[u] = 0xFF; // V +#else + va_image_data[u] = 0x80; // V +#endif } } - // FIXME: intel didn't support put image. - if (0 - && vaPutImage(VaDisplay, decoder->BlackSurface, + + if (vaUnmapBuffer(VaDisplay, decoder->Image->buf) != VA_STATUS_SUCCESS) { + Error(_("video/vaapi: can't unmap the image!\n")); + } + + if (decoder->GetPutImage) { + status = + vaPutImage(VaDisplay, decoder->BlackSurface, decoder->Image->image_id, 0, 0, VideoWindowWidth, - VideoWindowHeight, 0, 0, VideoWindowWidth, VideoWindowHeight) - != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: can't put image!\n")); + VideoWindowHeight, 0, 0, VideoWindowWidth, VideoWindowHeight); + if (status != VA_STATUS_SUCCESS) { + Error(_("video/vaapi: can't put image!\n")); + } + } else { + // FIXME: PutImage isn't always supported + Debug(3, + "video/vaapi: put image not supported, alternative path not written\n"); } + #ifdef DEBUG start = GetMsTicks(); #endif @@ -5394,29 +4769,39 @@ /// static void VaapiAdvanceDecoderFrame(VaapiDecoder * decoder) { - VASurfaceID surface; - int filled; + // next surface, if complete frame is displayed (1 -> 0) + if (decoder->SurfaceField) { + VASurfaceID surface; + int filled; - filled = atomic_read(&decoder->SurfacesFilled); - // FIXME: this should check the caller - // check decoder, if new surface is available - if (filled <= 1) { - // keep use of last surface - ++decoder->FramesDuped; - // FIXME: don't warn after stream start, don't warn during pause - Error(_("video: display buffer empty, duping frame (%d/%d) %d\n"), + filled = atomic_read(&decoder->SurfacesFilled); + // FIXME: this should check the caller + // check decoder, if new surface is available + if (filled <= 1) { + // keep use of last surface + ++decoder->FramesDuped; + // FIXME: don't warn after stream start, don't warn during pause + Error(_("video: display buffer empty, duping frame (%d/%d) %d\n"), decoder->FramesDuped, decoder->FrameCounter, VideoGetBuffers(decoder->Stream)); - return; - } - // wait for rendering finished - surface = decoder->SurfacesRb[decoder->SurfaceRead]; - if (vaSyncSurface(decoder->VaDisplay, surface) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: vaSyncSurface failed\n")); - } + return; + } + // wait for rendering finished + surface = decoder->SurfacesRb[decoder->SurfaceRead]; + if (vaSyncSurface(decoder->VaDisplay, surface) != VA_STATUS_SUCCESS) { + Error(_("video/vaapi: vaSyncSurface failed\n")); + } + + decoder->SurfaceRead = (decoder->SurfaceRead + 1) % VIDEO_SURFACES_MAX; + atomic_dec(&decoder->SurfacesFilled); - decoder->SurfaceRead = (decoder->SurfaceRead + 1) % VIDEO_SURFACES_MAX; - atomic_dec(&decoder->SurfacesFilled); + // progressiv oder software deinterlacer + decoder->SurfaceField = !decoder->Interlaced + || VideoDeinterlace[decoder->Resolution] + >= VideoDeinterlaceSoftBob; + return; + } + decoder->SurfaceField = 1; } /// @@ -5492,13 +4877,13 @@ && decoder->InputHeight == 1080)) && VideoDeinterlace[decoder->Resolution] != VideoDeinterlaceWeave) { VaapiPutSurfaceX11(decoder, surface, decoder->Interlaced, - decoder->Deinterlaced, decoder->TopFieldFirst, 0); + decoder->TopFieldFirst, 0); #ifdef DEBUG put1 = GetMsTicks(); #endif VaapiPutSurfaceX11(decoder, surface, decoder->Interlaced, - decoder->Deinterlaced, decoder->TopFieldFirst, 1); + decoder->TopFieldFirst, 1); #ifdef DEBUG put2 = GetMsTicks(); #endif @@ -5506,12 +4891,12 @@ #ifdef USE_GLX if (GlxEnabled) { VaapiPutSurfaceGLX(decoder, surface, decoder->Interlaced, - decoder->Deinterlaced, decoder->TopFieldFirst, decoder->SurfaceField); + decoder->TopFieldFirst, decoder->SurfaceField); } else #endif { VaapiPutSurfaceX11(decoder, surface, decoder->Interlaced, - decoder->Deinterlaced, decoder->TopFieldFirst, decoder->SurfaceField); + decoder->TopFieldFirst, decoder->SurfaceField); } #ifdef DEBUG put1 = GetMsTicks(); @@ -5988,17 +5373,6 @@ Debug(3, "video/vaapi: clear image\n"); - if (VaOsdImage.width < OsdDirtyWidth + OsdDirtyX || VaOsdImage.height < OsdDirtyHeight + OsdDirtyY) { - Debug(3, "video/vaapi: OSD dirty area will not fit\n"); - } - if (VaOsdImage.width < OsdDirtyX || VaOsdImage.height < OsdDirtyY) - return; - - if (VaOsdImage.width < OsdDirtyWidth + OsdDirtyX) - OsdDirtyWidth = VaOsdImage.width - OsdDirtyX; - if (VaOsdImage.height < OsdDirtyHeight + OsdDirtyY) - OsdDirtyHeight = VaOsdImage.height - OsdDirtyY; - // map osd surface/image into memory. if (vaMapBuffer(VaDisplay, VaOsdImage.buf, &image_buffer) != VA_STATUS_SUCCESS) { @@ -6049,19 +5423,6 @@ if (VaOsdImage.image_id == VA_INVALID_ID) { return; } - - if (VaOsdImage.width < width + x || VaOsdImage.height < height + y) { - Error("video/vaapi: OSD will not fit (w: %d+%d, w-avail: %d, h: %d+%d, h-avail: %d\n", - width, x, VaOsdImage.width, height, y, VaOsdImage.height); - } - if (VaOsdImage.width < x || VaOsdImage.height < y) - return; - - if (VaOsdImage.width < width + x) - width = VaOsdImage.width - x; - if (VaOsdImage.height < height + y) - height = VaOsdImage.height - y; - #ifdef DEBUG start = GetMsTicks(); #endif @@ -10396,6 +9757,7 @@ const char *keynam; char buf[64]; char letter[64]; + int letter_len; uint32_t values[1]; VideoThreadLock(); @@ -10435,8 +9797,14 @@ break; case KeyPress: VideoThreadLock(); - XLookupString(&event.xkey, letter, sizeof(letter), &keysym, NULL); + letter_len = + XLookupString(&event.xkey, letter, sizeof(letter) - 1, &keysym, + NULL); VideoThreadUnlock(); + if (letter_len < 0) { + letter_len = 0; + } + letter[letter_len] = '\0'; if (keysym == NoSymbol) { Warning(_("video/event: No symbol for %d\n"), event.xkey.keycode); @@ -11445,30 +10813,6 @@ VideoShowBlackPicture = onoff; } -#ifdef USE_VAAPI -/// -/// Vaapi helper to set various video params (brightness, contrast etc.) -/// -/// @param buf Pointer to value to set -/// @param value new value to set -/// @return status whether successful -/// -static VAStatus VaapiVideoSetColorbalance(VABufferID * buf, float value) -{ - VAProcFilterParameterBufferColorBalance *cbal_param; - VAStatus va_status = vaMapBuffer(VaDisplay, *buf, (void**)&cbal_param); - if (va_status != VA_STATUS_SUCCESS) - return va_status; - - /* Assuming here that the type is set before and does not need to be modified */ - cbal_param->value = value; - - vaUnmapBuffer(VaDisplay, *buf); - - return va_status; -} -#endif - /// /// Set brightness adjustment. /// @@ -11483,14 +10827,7 @@ VdpauDecoders[0]->Procamp.brightness = brightness / 1000; } #endif - -#ifdef USE_VAAPI - if (VideoUsedModule == &VaapiModule && VaapiDecoders[0]->vpp_brightness_buf) { - // Scale to match - float vaapivalue = VaapiScale(brightness, -1000.0, 1000.0, -100.0, 100.0); - VaapiVideoSetColorbalance(VaapiDecoders[0]->vpp_brightness_buf, vaapivalue); - } -#endif + // FIXME: VA-API support (void)brightness; } @@ -11508,13 +10845,7 @@ VdpauDecoders[0]->Procamp.contrast = contrast / 1000; } #endif -#ifdef USE_VAAPI - if (VideoUsedModule == &VaapiModule && VaapiDecoders[0]->vpp_contrast_buf) { - // Scale to match - float vaapivalue = VaapiScale(contrast, 0.0, 10000.0, 0.0, 10.0); - VaapiVideoSetColorbalance(VaapiDecoders[0]->vpp_contrast_buf, vaapivalue); - } -#endif + // FIXME: VA-API support (void)contrast; } @@ -11532,13 +10863,7 @@ VdpauDecoders[0]->Procamp.saturation = saturation / 1000; } #endif -#ifdef USE_VAAPI - if (VideoUsedModule == &VaapiModule && VaapiDecoders[0]->vpp_saturation_buf) { - // Scale to match - float vaapivalue = VaapiScale(saturation, 0.0, 10000.0, 0.0, 10.0); - VaapiVideoSetColorbalance(VaapiDecoders[0]->vpp_saturation_buf, vaapivalue); - } -#endif + // FIXME: VA-API support (void)saturation; } @@ -11556,13 +10881,7 @@ VdpauDecoders[0]->Procamp.hue = hue / 1000; } #endif -#ifdef USE_VAAPI - if (VideoUsedModule == &VaapiModule && VaapiDecoders[0]->vpp_hue_buf) { - // Scale to match - float vaapivalue = VaapiScale(hue, -M_PI * 1000.0, M_PI * 1000.0, -180.0, 180.0); - VaapiVideoSetColorbalance(VaapiDecoders[0]->vpp_hue_buf, vaapivalue); - } -#endif + // FIXME: VA-API support (void)hue; } @@ -11864,31 +11183,6 @@ } /// -/// Set first field ordering. -/// -/// @param first table with VideoResolutionMax values -/// -void VideoSetFirstField(int first[VideoResolutionMax]) -{ - VideoFirstField[0] = first[0]; - VideoFirstField[1] = first[1]; - VideoFirstField[2] = first[2]; - VideoFirstField[3] = first[3]; -} -/// -/// Set second field ordering. -/// -/// @param second table with VideoResolutionMax values -/// -void VideoSetSecondField(int second[VideoResolutionMax]) -{ - VideoSecondField[0] = second[0]; - VideoSecondField[1] = second[1]; - VideoSecondField[2] = second[2]; - VideoSecondField[3] = second[3]; -} - -/// /// Set studio levels. /// /// @param onoff flag on/off diff -Nru vdr-plugin-softhddevice-0.6.1rc1.git20140923/video.h vdr-plugin-softhddevice-0.6.1rc1.git20150130/video.h --- vdr-plugin-softhddevice-0.6.1rc1.git20140923/video.h 2014-10-03 10:06:51.000000000 +0000 +++ vdr-plugin-softhddevice-0.6.1rc1.git20150130/video.h 2015-01-31 04:08:45.000000000 +0000 @@ -17,7 +17,7 @@ /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU Affero General Public License for more details. /// -/// $Id: 15c1f0303ec955478f4983070b38571cbfbe2ce0 $ +/// $Id: fa3e44f3620c4cdae2b0512b13c298fc71ffff0b $ ////////////////////////////////////////////////////////////////////////////// /// @addtogroup Video @@ -152,10 +152,6 @@ /// Set cut left and right. extern void VideoSetCutLeftRight(int[]); - /// Set first & second field ordering. -extern void VideoSetFirstField(int[]); -extern void VideoSetSecondField(int[]); - /// Set studio levels. extern void VideoSetStudioLevels(int);