From adb0fd820a9209d54ff764b9b6ff6a61f4d19d61 Mon Sep 17 00:00:00 2001 From: Danny Rawlins Date: Wed, 5 Sep 2012 23:52:49 +1000 Subject: [PATCH] libvdpau: 20120521 -> 0.5 --- libvdpau/.md5sum | 3 +- libvdpau/Pkgfile | 10 +- libvdpau/flash_hack.patch | 224 -------------------------------------- 3 files changed, 4 insertions(+), 233 deletions(-) delete mode 100644 libvdpau/flash_hack.patch diff --git a/libvdpau/.md5sum b/libvdpau/.md5sum index 79ab70ef7..e04003243 100644 --- a/libvdpau/.md5sum +++ b/libvdpau/.md5sum @@ -1,2 +1 @@ -6a31df19368b530ffbaed040b9648ea8 flash_hack.patch -e7d5673870ab594a9454a961bcd4a763 libvdpau-20120521-libvdpau-0.4.1-1-g4262513.tar.xz +94c6d0ef2b1c0407c5cf89ca6f9ade88 libvdpau-0.5.tar.gz diff --git a/libvdpau/Pkgfile b/libvdpau/Pkgfile index f00015cea..ade5d5a02 100644 --- a/libvdpau/Pkgfile +++ b/libvdpau/Pkgfile @@ -5,16 +5,12 @@ # Depends on: xorg-libxext name=libvdpau -version=20120521 +version=0.5 release=1 -source=(http://www.hvlinux.net/crux/distfiles/$name/$name-$version-$name-0.4.1-1-g4262513.tar.xz - flash_hack.patch) +source=(http://people.freedesktop.org/~aplattner/vdpau/$name-$version.tar.gz) build() { - cd $name - - patch -p 1 -i $SRC/flash_hack.patch - autoreconf -v --install + cd $name-$version ./configure \ --prefix=/usr \ diff --git a/libvdpau/flash_hack.patch b/libvdpau/flash_hack.patch deleted file mode 100644 index 283f00411..000000000 --- a/libvdpau/flash_hack.patch +++ /dev/null @@ -1,224 +0,0 @@ -diff --git a/src/Makefile.am b/src/Makefile.am -index 48e69a7..9162ffb 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -1,6 +1,7 @@ - AM_CFLAGS = \ - -I$(top_srcdir)/include \ - -DVDPAU_MODULEDIR="\"$(moduledir)\"" \ -+ -DVDPAU_SYSCONFDIR="\"$(sysconfdir)\"" \ - $(X11_CFLAGS) \ - $(XEXT_CFLAGS) - -@@ -26,3 +27,6 @@ libvdpauincludedir = $(includedir)/vdpau - libvdpauinclude_HEADERS = \ - $(top_srcdir)/include/vdpau/vdpau.h \ - $(top_srcdir)/include/vdpau/vdpau_x11.h -+ -+libvdpausysconfdir=$(sysconfdir) -+libvdpausysconf_DATA = vdpau_wrapper.cfg -diff --git a/src/vdpau_wrapper.c b/src/vdpau_wrapper.c -index 23de3d4..c955745 100644 ---- a/src/vdpau_wrapper.c -+++ b/src/vdpau_wrapper.c -@@ -210,6 +210,163 @@ static void _vdp_close_driver(void) - _vdp_imp_device_create_x11_proc = NULL; - } - -+static VdpGetProcAddress * _imp_get_proc_address; -+static VdpVideoSurfacePutBitsYCbCr * _imp_vid_put_bits_y_cb_cr; -+static VdpPresentationQueueSetBackgroundColor * _imp_pq_set_bg_color; -+static int _inited_fixes; -+static int _running_under_flash; -+static int _enable_flash_uv_swap = 1; -+static int _disable_flash_pq_bg_color = 1; -+ -+static VdpStatus vid_put_bits_y_cb_cr_swapped( -+ VdpVideoSurface surface, -+ VdpYCbCrFormat source_ycbcr_format, -+ void const * const * source_data, -+ uint32_t const * source_pitches -+) -+{ -+ void const * data_reordered[3]; -+ void const * const * data; -+ -+ if (source_ycbcr_format == VDP_YCBCR_FORMAT_YV12) { -+ data_reordered[0] = source_data[0]; -+ data_reordered[1] = source_data[2]; -+ data_reordered[2] = source_data[1]; -+ /* -+ * source_pitches[1] and source_pitches[2] should be equal, -+ * so no need to re-order. -+ */ -+ data = data_reordered; -+ } -+ else { -+ data = source_data; -+ } -+ -+ return _imp_vid_put_bits_y_cb_cr( -+ surface, -+ source_ycbcr_format, -+ data, -+ source_pitches -+ ); -+} -+ -+static VdpStatus pq_set_bg_color_noop( -+ VdpPresentationQueue presentation_queue, -+ VdpColor * const background_color -+) -+{ -+ return VDP_STATUS_OK; -+} -+ -+static VdpStatus vdp_wrapper_get_proc_address( -+ VdpDevice device, -+ VdpFuncId function_id, -+ /* output parameters follow */ -+ void * * function_pointer -+) -+{ -+ VdpStatus status; -+ -+ status = _imp_get_proc_address(device, function_id, function_pointer); -+ if (status != VDP_STATUS_OK) { -+ return status; -+ } -+ -+ if (_running_under_flash) { -+ switch (function_id) { -+ case VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR: -+ if (_enable_flash_uv_swap) { -+ _imp_vid_put_bits_y_cb_cr = *function_pointer; -+ *function_pointer = vid_put_bits_y_cb_cr_swapped; -+ } -+ break; -+ case VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR: -+ if (_disable_flash_pq_bg_color) { -+ _imp_pq_set_bg_color = *function_pointer; -+ *function_pointer = pq_set_bg_color_noop; -+ } -+ break; -+ default: -+ break; -+ } -+ } -+ -+ return VDP_STATUS_OK; -+} -+ -+static void init_running_under_flash(void) -+{ -+ FILE *fp; -+ char buffer[1024]; -+ int ret, i; -+ -+ fp = fopen("/proc/self/cmdline", "r"); -+ if (!fp) { -+ return; -+ } -+ ret = fread(buffer, 1, sizeof(buffer) - 1, fp); -+ fclose(fp); -+ if (ret < 0) { -+ return; -+ } -+ /* -+ * Sometimes the file contains null between arguments. Wipe these out so -+ * strstr doesn't stop early. -+ */ -+ for (i = 0; i < ret; i++) { -+ if (buffer[i] == '\0') { -+ buffer[i] = 'x'; -+ } -+ } -+ buffer[ret] = '\0'; -+ -+ if (strstr(buffer, "libflashplayer") != NULL) { -+ _running_under_flash = 1; -+ } -+} -+ -+void init_config(void) -+{ -+ FILE *fp; -+ char buffer[1024]; -+ int ret; -+ -+ fp = fopen(VDPAU_SYSCONFDIR "/vdpau_wrapper.cfg", "r"); -+ if (!fp) { -+ return; -+ } -+ -+ while (fgets(buffer, sizeof(buffer), fp) != NULL) { -+ char * equals = strchr(buffer, '='); -+ char * param; -+ -+ if (equals == NULL) { -+ continue; -+ } -+ -+ *equals = '\0'; -+ param = equals + 1; -+ -+ if (!strcmp(buffer, "enable_flash_uv_swap")) { -+ _enable_flash_uv_swap = atoi(param); -+ } -+ else if (!strcmp(buffer, "disable_flash_pq_bg_color")) { -+ _disable_flash_pq_bg_color = atoi(param); -+ } -+ } -+} -+ -+void init_fixes(void) -+{ -+ if (_inited_fixes) { -+ return; -+ } -+ _inited_fixes = 1; -+ -+ init_running_under_flash(); -+ init_config(); -+} -+ - VdpStatus vdp_device_create_x11( - Display * display, - int screen, -@@ -220,6 +377,8 @@ VdpStatus vdp_device_create_x11( - { - VdpStatus status; - -+ init_fixes(); -+ - if (!_vdp_imp_device_create_x11_proc) { - status = _vdp_open_driver(display, screen); - if (status != VDP_STATUS_OK) { -@@ -228,10 +387,17 @@ VdpStatus vdp_device_create_x11( - } - } - -- return _vdp_imp_device_create_x11_proc( -+ status = _vdp_imp_device_create_x11_proc( - display, - screen, - device, -- get_proc_address -+ &_imp_get_proc_address - ); -+ if (status != VDP_STATUS_OK) { -+ return status; -+ } -+ -+ *get_proc_address = vdp_wrapper_get_proc_address; -+ -+ return VDP_STATUS_OK; - } -diff --git a/src/vdpau_wrapper.cfg b/src/vdpau_wrapper.cfg -new file mode 100644 -index 0000000..21d5b8c ---- /dev/null -+++ b/src/vdpau_wrapper.cfg -@@ -0,0 +1,2 @@ -+enable_flash_uv_swap=1 -+disable_flash_pq_bg_color=1