diff options
-rw-r--r-- | ChangeLog | 26 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | debian/changelog | 4 | ||||
-rw-r--r-- | m4/decoders.m4 | 8 | ||||
-rw-r--r-- | src/demuxers/Makefile.am | 2 | ||||
-rw-r--r-- | src/demuxers/demux_mod.c | 2 | ||||
-rw-r--r-- | src/input/Makefile.am | 1 | ||||
-rw-r--r-- | src/video_out/video_out_vaapi.c | 25 | ||||
-rw-r--r-- | src/xine-utils/memcpy.c | 1 | ||||
-rwxr-xr-x | version.sh | 4 |
10 files changed, 56 insertions, 19 deletions
@@ -1,5 +1,27 @@ -xine-lib (1.2.3.1) 2013-??-?? - * Distribute one missing header file. No VAAPI plugin without this. +xine-lib (1.2.4) 2013-??-?? + * Some VAAPI plugin fixes (build, image size changes). + * ffmpeg multi-channel playback fixes: + - Handle channel configuration changes sooner. + - Generic layout if none provided; follow user changes. + - Defer opening output if nothing to play. + - Don't re-open with identical settings. + - Don't use the bits-per-sample value (may not match decoder output). + * ffmpeg video fixes: + - Default to square pixels, avoiding black bars & unnecessary scaling. + - Avoid CODEC_FLAG_EMU_EDGE (and some possible segfaults). + - Use MPEG2VIDEO. + * OpenGL2 output: don't render into invalid drawable. + * Fix a possible xine_play() hang related to display locking. + * FLV demuxer rewrite: + - Improved metadata parsing. + - PTS/DTS fixes. + - Large file support on 32-bit. + - Much improved seeking. + - Much optimisation. + - More codecs supported. + * audio_out speed control fixes. + * Optimised RGB→YUY2 conversion. + * Avoid a possible performance penalty where AVX-optimised memcpy is used. xine-lib (1.2.3) 2013-05-29 * Add VAAPI HW decoding support diff --git a/Makefile.am b/Makefile.am index 02c819dc5..0ebd8a6ad 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,7 +8,7 @@ AUTOMAKE_OPTIONS = 1.9 no-dist-gzip dist-bzip2 ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = doc m4 po misc include lib src win32 contrib +SUBDIRS = doc m4 po include lib src win32 contrib misc DEBFILES = debian/README.Debian debian/changelog debian/control \ debian/copyright debian/rules debian/compat \ diff --git a/debian/changelog b/debian/changelog index 6e1bc3a59..f4dd6dc0c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -xine-lib-1.2 (1.2.3+hg-0) experimental; urgency=low +xine-lib-1.2 (1.2.4+hg-0) experimental; urgency=low * Hg snapshot. * Adjust for libxine2. * libxine-dev → libxine2-dev. - -- Darren Salt <linux@youmustbejoking.demon.co.uk> Sun, 30 Jun 2013 17:30:14 +0100 + -- Darren Salt <linux@youmustbejoking.demon.co.uk> Wed, 18 Sep 2013 12:54:48 +0100 xine-lib (1.1.21~hg-0) unstable; urgency=low diff --git a/m4/decoders.m4 b/m4/decoders.m4 index b5c977022..fbea178c3 100644 --- a/m4/decoders.m4 +++ b/m4/decoders.m4 @@ -138,16 +138,16 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [ [AS_HELP_STRING([--with-imagemagick], [Enable ImageMagick image decoder support (default: enabled)])], [test x"$withval" != x"no" && with_imagemagick="yes"]) if test x"$with_imagemagick" != x"no"; then - PKG_CHECK_MODULES([WAND], [Wand], [have_imagemagick=yes], [AC_MSG_RESULT([no]); have_imagemagick=no]) + PKG_CHECK_MODULES([WAND], [Wand], [have_imagemagick=yes], [have_imagemagick=no]) if test "x$have_imagemagick" = 'xno'; then - PKG_CHECK_MODULES([MAGICKWAND], [MagickWand], [have_imagemagick=yes], [AC_MSG_RESULT([no]); have_imagemagick=no]) + PKG_CHECK_MODULES([MAGICKWAND], [MagickWand], [have_imagemagick=yes], [have_imagemagick=no]) dnl Avoid $(WAND_FLAGS) $(MAGICKWAND_FLAGS) ... WAND_CFLAGS="$MAGICKWAND_CFLAGS" WAND_LIBS="$MAGICKWAND_LIBS" fi if test "x$have_imagemagick" = 'xno'; then - PKG_CHECK_MODULES([GRAPHICSMAGICK], [ImageMagick], [have_imagemagick=yes], [AC_MSG_RESULT([no]); have_imagemagick=no]) - PKG_CHECK_MODULES([GRAPHICSMAGICKWAND], [GraphicsMagickWand], [have_imagemagick=yes], [AC_MSG_RESULT([no]); have_imagemagick=no]) + PKG_CHECK_MODULES([GRAPHICSMAGICK], [ImageMagick], [have_imagemagick=yes], [have_imagemagick=no]) + PKG_CHECK_MODULES([GRAPHICSMAGICKWAND], [GraphicsMagickWand], [have_imagemagick=yes], [have_imagemagick=no]) dnl The following assignments are safe, since they include dnl the flags for plain GraphicsMagick WAND_CFLAGS="$GRAPHICSMAGICKWAND_CFLAGS" diff --git a/src/demuxers/Makefile.am b/src/demuxers/Makefile.am index 32b5616f7..1f7948fdb 100644 --- a/src/demuxers/Makefile.am +++ b/src/demuxers/Makefile.am @@ -84,6 +84,8 @@ xineplug_dmx_qt_la_SOURCES = demux_qt.c xineplug_dmx_qt_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) $(ZLIB_LIBS) xineplug_dmx_qt_la_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_CPPFLAGS) +# note: asfheader.c also used from ../input +# is safe given same compiler options xineplug_dmx_asf_la_SOURCES = demux_asf.c asfheader.c xineplug_dmx_asf_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) $(LTLIBICONV) xineplug_dmx_asf_la_CFLAGS = $(AM_CFLAGS) -fno-strict-aliasing diff --git a/src/demuxers/demux_mod.c b/src/demuxers/demux_mod.c index 39becbac3..08ca877d0 100644 --- a/src/demuxers/demux_mod.c +++ b/src/demuxers/demux_mod.c @@ -46,7 +46,7 @@ #include <xine/xineutils.h> #include <xine/compat.h> #include <xine/demux.h> -#include "modplug.h" +#include <libmodplug/modplug.h> #include "bswap.h" #define MOD_SAMPLERATE 44100 diff --git a/src/input/Makefile.am b/src/input/Makefile.am index 804b36352..3752d4c9b 100644 --- a/src/input/Makefile.am +++ b/src/input/Makefile.am @@ -103,6 +103,7 @@ xineplug_inp_dvd_la_CFLAGS = $(AM_CFLAGS) $(DVD_CFLAGS) xineplug_inp_net_la_SOURCES = input_net.c net_buf_ctrl.c xineplug_inp_net_la_LIBADD = $(XINE_LIB) $(NET_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL) +# note: compiling ../demuxers/asfheader.c here is safe given same compiler options xineplug_inp_mms_la_SOURCES = input_mms.c net_buf_ctrl.c mms.c mmsh.c http_helper.c ../demuxers/asfheader.c xineplug_inp_mms_la_LIBADD = $(XINE_LIB) $(LTLIBICONV) $(PTHREAD_LIBS) $(LTLIBINTL) diff --git a/src/video_out/video_out_vaapi.c b/src/video_out/video_out_vaapi.c index ade498d3a..6f0b5c1b8 100644 --- a/src/video_out/video_out_vaapi.c +++ b/src/video_out/video_out_vaapi.c @@ -72,6 +72,12 @@ #include "accel_vaapi.h" +#ifdef HAVE_FFMPEG_AVUTIL_H +# include <mem.h> +#else +# include <libavutil/mem.h> +#endif + #ifndef VA_SURFACE_ATTRIB_SETTABLE #define vaCreateSurfaces(d, f, w, h, s, ns, a, na) \ vaCreateSurfaces(d, w, h, f, ns, s) @@ -1637,7 +1643,7 @@ static void vaapi_property_callback (void *property_gen, xine_cfg_entry_t *entry lprintf("vaapi_property_callback property=%d, value=%d\n", property->type, entry->num_value ); - VAStatus vaStatus = vaSetDisplayAttributes(va_context->va_display, &attr, 1); + /*VAStatus vaStatus = */ vaSetDisplayAttributes(va_context->va_display, &attr, 1); //vaapi_check_status((vo_driver_t *)this, vaStatus, "vaSetDisplayAttributes()"); vaapi_show_display_props((vo_driver_t*)this); @@ -1769,7 +1775,7 @@ static void vaapi_display_attribs(vo_driver_t *this_gen) { static void vaapi_set_background_color(vo_driver_t *this_gen) { vaapi_driver_t *this = (vaapi_driver_t *)this_gen; ff_vaapi_context_t *va_context = this->va_context; - VAStatus vaStatus; + //VAStatus vaStatus; if(!va_context->valid_context) return; @@ -1780,7 +1786,7 @@ static void vaapi_set_background_color(vo_driver_t *this_gen) { attr.type = VADisplayAttribBackgroundColor; attr.value = 0x000000; - vaStatus = vaSetDisplayAttributes(va_context->va_display, &attr, 1); + /*vaStatus =*/ vaSetDisplayAttributes(va_context->va_display, &attr, 1); //vaapi_check_status(this_gen, vaStatus, "vaSetDisplayAttributes()"); } @@ -3677,13 +3683,12 @@ static int vaapi_gui_data_exchange (vo_driver_t *this_gen, return 0; } -static void vaapi_dispose (vo_driver_t *this_gen) { +static void vaapi_dispose_locked (vo_driver_t *this_gen) { vaapi_driver_t *this = (vaapi_driver_t *) this_gen; ff_vaapi_context_t *va_context = this->va_context; - lprintf("vaapi_dispose\n"); + // vaapi_lock is locked at this point, either from vaapi_dispose or vaapi_open_plugin - pthread_mutex_lock(&this->vaapi_lock); DO_LOCKDISPLAY; this->ovl_yuv2rgb->dispose(this->ovl_yuv2rgb); @@ -3713,6 +3718,12 @@ static void vaapi_dispose (vo_driver_t *this_gen) { free (this); } +static void vaapi_dispose (vo_driver_t *this_gen) { + lprintf("vaapi_dispose\n"); + pthread_mutex_lock(&((vaapi_driver_t *)this_gen)->vaapi_lock); + vaapi_dispose_locked(this_gen); +} + static void vaapi_vdr_osd_width_flag( void *this_gen, xine_cfg_entry_t *entry ) { vaapi_driver_t *this = (vaapi_driver_t *) this_gen; @@ -3971,7 +3982,7 @@ static vo_driver_t *vaapi_open_plugin (video_driver_class_t *class_gen, const vo this->va_context->last_sub_image_fmt = 0; if(vaapi_init_internal((vo_driver_t *)this, SW_CONTEXT_INIT_FORMAT, SW_WIDTH, SW_HEIGHT, 0) != VA_STATUS_SUCCESS) { - vaapi_dispose((vo_driver_t *)this); + vaapi_dispose_locked((vo_driver_t *)this); return NULL; } vaapi_close((vo_driver_t *)this); diff --git a/src/xine-utils/memcpy.c b/src/xine-utils/memcpy.c index 6eda220ed..e00171e33 100644 --- a/src/xine-utils/memcpy.c +++ b/src/xine-utils/memcpy.c @@ -342,6 +342,7 @@ static void * avx_memcpy(void * to, const void * from, size_t len) /* since movntq is weakly-ordered, a "sfence" * is needed to become ordered again. */ __asm__ __volatile__ ("sfence":::"memory"); + __asm__ __volatile__ ("vzeroupper"); } /* * Now do the tail of the block diff --git a/version.sh b/version.sh index e8d5f2ffb..bcf1c068d 100755 --- a/version.sh +++ b/version.sh @@ -30,13 +30,13 @@ XINE_VERSION_MAJOR=1 XINE_VERSION_MINOR=2 -XINE_VERSION_SUB=3 +XINE_VERSION_SUB=4 XINE_VERSION_PATCH= # Release series number (usually $XINE_MAJOR.$XINE_MINOR) XINE_VERSION_SERIES=1.2 XINE_LT_CURRENT=5 -XINE_LT_REVISION=0 +XINE_LT_REVISION=1 XINE_LT_AGE=3 test -f "`dirname $0`/.cvsversion" && XINE_VERSION_SUFFIX="hg" |