[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xine-cvslog
Subject:    [xine-cvs] HG: xine-lib-1.2: Merge from 1.1.
From:       Darren Salt <linux () youmustbejoking ! demon ! co ! uk>
Date:       2009-03-16 15:05:44
Message-ID: 7b86879d0c0aec69512a.1237215919 () hg ! debian ! org
[Download RAW message or body]

# HG changeset patch
# User Darren Salt <linux@youmustbejoking.demon.co.uk>
# Date 1237215919 0
# Node ID 7b86879d0c0aec69512ae6c090b17c076eae5c78
# Parent  cf522080f1534b7ce33c499d4fc5ed81eae33343
# Parent  4ea76bc870e0a6a2104c5c727fe50c243d8d0fea
Merge from 1.1.

diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
                cf522080f1534b7ce33c499d4fc5ed81eae33343 ChangeLog
--- a/ChangeLog	Mon Mar 16 15:05:19 2009 +0000
+++ b/ChangeLog	Fri Mar 06 14:00:57 2009 +0000
@@ -69,12 +69,14 @@ xine-lib (1.1.90) (Unreleased)
     colour controls, zooming, colour keying.
 
 xine-lib (1.1.17) 2009-??-??
-  * Enable libmpeg2new. This is not yet production code; the old mpeg2
-    decoder remains the default.
+  * Enable libmpeg2new (if configured with --enable-libmpeg2new).
+    This is not yet production code; the old mpeg2 decoder remains the default.
   * Add support for OpenBSD.
   * Fix a build failure on *BSD due to some rather useful GNUisms.
   * Protect audio loop so it cannot write to a paused device (fix
     pause/resume freeze with pulseaudio).
+  * Fix build with libavutil >= 50.0.0.
+  * Fix segfaults when playing VCDs.
 
 xine-lib (1.1.16.2) 2009-02-10
   * Build fixes related to ImageMagick 6.4 & later.
diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
                cf522080f1534b7ce33c499d4fc5ed81eae33343 autogen.sh
--- a/autogen.sh	Mon Mar 16 15:05:19 2009 +0000
+++ b/autogen.sh	Fri Mar 06 14:00:57 2009 +0000
@@ -290,15 +290,15 @@ case "$1" in
     run_libtoolize
     ;;
   noconfig)
-    run_aclocal
     run_libtoolize
+    run_aclocal
     run_autoheader
     run_automake
     run_autoconf
     ;;
   *)
-    run_aclocal
     run_libtoolize
+    run_aclocal
     run_autoheader
     run_automake
     run_autoconf
diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
                cf522080f1534b7ce33c499d4fc5ed81eae33343 m4/decoders.m4
--- a/m4/decoders.m4	Mon Mar 16 15:05:19 2009 +0000
+++ b/m4/decoders.m4	Fri Mar 06 14:00:57 2009 +0000
@@ -93,7 +93,11 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
 	dnl Check presence of ffmpeg/avutil.h to see if it's old or new
 	dnl style for headers. The new style would be preferred actually...
 	AC_CHECK_HEADERS([ffmpeg/avutil.h])
-   
+	AC_CHECK_HEADERS([libavutil/avutil.h])
+	if test "$ac_cv_header_ffmpeg_avutil_h" = "yes" && test \
"$ac_cv_header_libavutil_avutil_h" = "yes"; then +	    AC_MSG_ERROR([old & new ffmpeg \
headers found - you need to clean up!]) +	fi
+
     dnl gdk-pixbuf (optional; enabled by default)
     AC_ARG_ENABLE([gdkpixbuf],
                   [AS_HELP_STRING([--enable-gdkpixbuf], [Enable GdkPixbuf support \
(default: enabled)])], @@ -286,6 +290,12 @@ AC_DEFUN([XINE_DECODER_PLUGINS], [
     AM_CONDITIONAL([ENABLE_MODPLUG], [test x"$have_modplug" = x"yes"])
 
 
+    dnl libmpeg2new (optional; disabled by default)
+    AC_ARG_ENABLE([libmpeg2new],
+	AS_HELP_STRING([--enable-libmpeg2new], [build the newer MPEG2 decoder (buggy)]))
+    AM_CONDITIONAL([ENABLE_MPEG2NEW], [test "x$enable_libmpeg2new" = "xyes"])
+
+
     dnl libmpcdec (optional; enabled by default; external version allowed)
     AC_ARG_ENABLE([musepack],
                   [AS_HELP_STRING([--enable-musepack], [Enable support for Musepack \
                decoding (default: enabled, internal: use external copy)])])
diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
                cf522080f1534b7ce33c499d4fc5ed81eae33343 \
                src/combined/ffmpeg/ff_video_decoder.c
--- a/src/combined/ffmpeg/ff_video_decoder.c	Mon Mar 16 15:05:19 2009 +0000
+++ b/src/combined/ffmpeg/ff_video_decoder.c	Fri Mar 06 14:00:57 2009 +0000
@@ -579,7 +579,7 @@ static void ff_convert_frame(ff_video_de
       img->width,
       this->bih.biHeight);
 
-  } else if (this->context->pix_fmt == PIX_FMT_RGBA32) {
+  } else if (this->context->pix_fmt == PIX_FMT_RGB32) {
           
     int x, plane_ptr = 0;
     uint32_t *argb_pixels;
@@ -1287,7 +1287,7 @@ static void ff_handle_buffer (ff_video_d
 
 	  /* initialize the colorspace converter */
 	  if (!this->cs_convert_init) {
-	    if ((this->context->pix_fmt == PIX_FMT_RGBA32) ||
+	    if ((this->context->pix_fmt == PIX_FMT_RGB32) ||
 	        (this->context->pix_fmt == PIX_FMT_RGB565) ||
 	        (this->context->pix_fmt == PIX_FMT_RGB555) ||
 	        (this->context->pix_fmt == PIX_FMT_BGR24) ||
diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
                cf522080f1534b7ce33c499d4fc5ed81eae33343 \
                src/demuxers/demux_mpeg_block.c
--- a/src/demuxers/demux_mpeg_block.c	Mon Mar 16 15:05:19 2009 +0000
+++ b/src/demuxers/demux_mpeg_block.c	Fri Mar 06 14:00:57 2009 +0000
@@ -1422,7 +1422,8 @@ static demux_plugin_t *open_plugin (demu
       }
 
       input->seek(input, 0, SEEK_SET);
-      if (input->read(input, this->scratch, this->blocksize) == this->blocksize) {
+      memset (this->scratch, 255, 5); /* result of input->read() won't matter */
+      if (input->read(input, this->scratch, this->blocksize)) {
 	lprintf("open_plugin:read worked\n");
 
         if (this->scratch[0] || this->scratch[1]
diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
                cf522080f1534b7ce33c499d4fc5ed81eae33343 \
                src/video_dec/libmpeg2new/Makefile.am
--- a/src/video_dec/libmpeg2new/Makefile.am	Mon Mar 16 15:05:19 2009 +0000
+++ b/src/video_dec/libmpeg2new/Makefile.am	Fri Mar 06 14:00:57 2009 +0000
@@ -6,7 +6,11 @@ AM_LDFLAGS = $(xineplug_ldflags)
 
 SUBDIRS = include libmpeg2
 
-xineplug_LTLIBRARIES = xineplug_decode_mpeg2new.la
+if ENABLE_MPEG2NEW
+mpeg2new_module = xineplug_decode_mpeg2new.la
+endif
+
+xineplug_LTLIBRARIES = $(mpeg2new_module)
 
 xineplug_decode_mpeg2new_la_SOURCES = \
 	xine_mpeg2new_decoder.c
diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
cf522080f1534b7ce33c499d4fc5ed81eae33343 \
                src/video_dec/libmpeg2new/libmpeg2/Makefile.am
--- a/src/video_dec/libmpeg2new/libmpeg2/Makefile.am	Mon Mar 16 15:05:19 2009 +0000
+++ b/src/video_dec/libmpeg2new/libmpeg2/Makefile.am	Fri Mar 06 14:00:57 2009 +0000
@@ -2,7 +2,11 @@ include $(top_srcdir)/misc/Makefile.comm
 
 AM_CFLAGS = $(DEFAULT_OCFLAGS) $(VISIBILITY_FLAG)
 
-noinst_LTLIBRARIES = libmpeg2.la libmpeg2arch.la
+if ENABLE_MPEG2NEW
+mpeg2new_libs = libmpeg2.la libmpeg2arch.la
+endif
+
+noinst_LTLIBRARIES = $(mpeg2new_libs)
 
 libmpeg2_la_SOURCES = alloc.c header.c decode.c slice.c motion_comp.c idct.c
 libmpeg2_la_LIBADD = libmpeg2arch.la
diff -r 7b86879d0c0aec69512ae6c090b17c076eae5c78 -r \
                cf522080f1534b7ce33c499d4fc5ed81eae33343 src/xine-engine/audio_out.c
--- a/src/xine-engine/audio_out.c	Mon Mar 16 15:05:19 2009 +0000
+++ b/src/xine-engine/audio_out.c	Fri Mar 06 14:00:57 2009 +0000
@@ -219,6 +219,7 @@ typedef struct {
   int                  num_driver_actions; /* number of threads, that wish to call
                                             * functions needing driver_lock */
   pthread_mutex_t      driver_action_lock; /* protects num_driver_actions */
+  pthread_cond_t       driver_action_cond; /* informs about num_driver_actions-- */
 
   metronom_clock_t    *clock;
   xine_t              *xine;
@@ -1285,8 +1286,15 @@ static void *ao_loop (void *this_gen) {
     /* Give other threads a chance to use functions which require this->driver_lock \
                to
      * be available. This is needed when using NPTL on Linux (and probably PThreads
      * on Solaris as well). */
-    if (this->num_driver_actions > 0)
-      sched_yield();
+    if (this->num_driver_actions > 0) {
+      /* calling sched_yield() is not sufficient on multicore systems */
+      /* sched_yield(); */
+      /* instead wait for the other thread to acquire this->driver_lock */
+      pthread_mutex_lock(&this->driver_action_lock);
+      if (this->num_driver_actions > 0)
+        pthread_cond_wait(&this->driver_action_cond, &this->driver_action_lock);
+      pthread_mutex_unlock(&this->driver_action_lock);
+    }
   }
 
   if (in_buf) {
@@ -1477,6 +1485,8 @@ static inline void dec_num_driver_action
 
   pthread_mutex_lock(&this->driver_action_lock);
   this->num_driver_actions--;
+  /* indicate the change to ao_loop() */
+  pthread_cond_broadcast(&this->driver_action_cond);
   pthread_mutex_unlock(&this->driver_action_lock);
 }
 
@@ -1679,6 +1689,7 @@ static void ao_exit(xine_audio_port_t *t
   }
 
   pthread_mutex_destroy(&this->driver_lock);
+  pthread_cond_destroy(&this->driver_action_cond);
   pthread_mutex_destroy(&this->driver_action_lock);
   pthread_mutex_destroy(&this->streams_lock);
   xine_list_delete(this->streams);
@@ -2083,6 +2094,7 @@ xine_audio_port_t *_x_ao_new_port (xine_
   pthread_mutex_init( &this->streams_lock, NULL );
   pthread_mutex_init( &this->driver_lock, &attr );
   pthread_mutex_init( &this->driver_action_lock, NULL );
+  pthread_cond_init( &this->driver_action_cond, NULL );
 
   this->ao.open                   = ao_open;
   this->ao.get_buffer             = ao_get_buffer;

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Xine-cvslog mailing list
Xine-cvslog@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xine-cvslog


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic