[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:       2008-02-29 15:18:10
Message-ID: 9fc6fdc5c7959b3a2df0.1204297165 () hg ! debian ! org
[Download RAW message or body]

# HG changeset patch
# User Darren Salt <linux@youmustbejoking.demon.co.uk>
# Date 1204297165 0
# Node ID 9fc6fdc5c7959b3a2df03c0740377b4424e28c44
# Parent  23c7b905daf0344dd6c8bbced36637159d831880
# Parent  abc0bc21389f61035e26b8ca961a90b07fb8f68d
Merge from 1.1.

diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 ChangeLog
--- a/ChangeLog	Fri Feb 29 14:59:25 2008 +0000
+++ b/ChangeLog	Thu Feb 28 13:47:59 2008 +0000
@@ -70,6 +70,8 @@ xine-lib (1.1.11) unreleased
   * Made the version parsing much more reliable; it wasn't properly coping
     with four-part version numbers. This affects any program whose build
     scripts use xine-lib's automake macros.
+  * Fixed an off-by-one in the FLAC security fix patch. This breakage was
+    causing failure to play some files.
 
 xine-lib (1.1.10.1) 2008-02-07
   * Security fixes:
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 Makefile.am
--- a/Makefile.am	Fri Feb 29 14:59:25 2008 +0000
+++ b/Makefile.am	Thu Feb 28 13:47:59 2008 +0000
@@ -13,23 +13,19 @@ DEBFILES = debian/README.Debian debian/c
 	debian/shlibdeps.sh debian/libxine-dev.install debian/libxine1.install
 
 EXTRA_DIST = config.rpath autogen.sh \
-	     ChangeLog \
 	     configure \
 	     config.guess \
 	     config.sub \
-	     COPYING \
 	     INSTALL \
 	     install-sh \
 	     libtool \
 	     ltmain.sh \
 	     missing \
-	     NEWS \
-	     README \
-	     TODO \
-	     depcomp \
-	     CREDITS
+	     depcomp
 
 CONFIG_CLEAN_FILES = libtool
+
+dist_doc_DATA = COPYING NEWS README TODO CREDITS ChangeLog
 
 docs:
 	@cd doc && $(MAKE) $@
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 doc/Makefile.am
--- a/doc/Makefile.am	Fri Feb 29 14:59:25 2008 +0000
+++ b/doc/Makefile.am	Thu Feb 28 13:47:59 2008 +0000
@@ -2,13 +2,11 @@ include $(top_srcdir)/misc/Makefile.comm
 
 SUBDIRS = man hackersguide faq
 
-doc_DATA = README README.dvb README.dxr3 \
+dist_doc_DATA = README README.dvb README.dxr3 \
 	    README.freebsd README.irix README.network_dvd README.opengl \
 	    README.solaris README_xxmc.html README.MINGWCROSS \
 	    README.WIN32 README.macosx
 
-EXTRA_DIST = $(doc_DATA)
-
 docs clean-docs:
 	@cd faq && $(MAKE) $@
 	@cd hackersguide && $(MAKE) $@
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 doc/man/en/xine.5
--- a/doc/man/en/xine.5	Fri Feb 29 14:59:25 2008 +0000
+++ b/doc/man/en/xine.5	Thu Feb 28 13:47:59 2008 +0000
@@ -264,7 +264,12 @@ Text subtitle files may be appended to t
 .TP
 .BI <mrl>#subtitle:<subtitlefile>
 This is the normal way to define the subtitle file to use. The frontend will
-not take any notice of the subtitle file.
+not take any notice of the subtitle file. For example:
+.br
+.I file://home/user/wibble.mpg#subtitles:/home/user/wibble.sub
+.br
+(Note that some front ends can detect subtitles files where the name differs
+as shown in the example.)
 .br
 .SH STREAM OPTIONS
 .br
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 \
                src/audio_out/audio_pulse_out.c
--- a/src/audio_out/audio_pulse_out.c	Fri Feb 29 14:59:25 2008 +0000
+++ b/src/audio_out/audio_pulse_out.c	Thu Feb 28 13:47:59 2008 +0000
@@ -246,7 +246,7 @@ static int ao_pulse_open(ao_driver_t *th
     pa_threaded_mainloop_lock(this->pa_class->mainloop);
     ret = pa_context_connect(this->pa_class->context, this->host, 1, NULL);
     if ( ret < 0 )
-      goto fail;
+      goto fail_unlock;
 
     pa_context_set_state_callback(this->pa_class->context, \
__xine_pa_context_status_callback, this);  
@@ -289,8 +289,9 @@ static int ao_pulse_open(ao_driver_t *th
 
   return this->sample_rate;
 
-fail:
+ fail_unlock:
   pa_threaded_mainloop_unlock(this->pa_class->mainloop);
+ fail:
   this_gen->close(this_gen);
   return 0;
 }
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 \
                src/combined/wavpack_demuxer.c
--- a/src/combined/wavpack_demuxer.c	Fri Feb 29 14:59:25 2008 +0000
+++ b/src/combined/wavpack_demuxer.c	Thu Feb 28 13:47:59 2008 +0000
@@ -368,7 +368,7 @@ void *demux_wv_init_plugin (xine_t *cons
   this->demux_class.open_plugin     = open_plugin;
   this->demux_class.description     = N_("Wavpack demux plugin");
   this->demux_class.identifier      = "Wavpack";
-  this->demux_class.mimetypes       = NULL;
+  this->demux_class.mimetypes       = "audio/x-wavpack";
   this->demux_class.extensions      = "wv";
   this->demux_class.dispose         = default_demux_class_dispose;
 
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 src/demuxers/demux_flac.c
--- a/src/demuxers/demux_flac.c	Fri Feb 29 14:59:25 2008 +0000
+++ b/src/demuxers/demux_flac.c	Thu Feb 28 13:47:59 2008 +0000
@@ -201,7 +201,7 @@ static int open_flac_file(demux_flac_t *
 
           length = _X_LE_32(ptr);
           ptr += 4 + length;
-          if (length >= block_length - 8)
+          if (length > block_length - 8)
             return 0; /* bad length or too little left in the buffer */
 
           user_comment_list_length = _X_LE_32(ptr);
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 \
                src/demuxers/demux_matroska.c
--- a/src/demuxers/demux_matroska.c	Fri Feb 29 14:59:25 2008 +0000
+++ b/src/demuxers/demux_matroska.c	Thu Feb 28 13:47:59 2008 +0000
@@ -1833,6 +1833,15 @@ static int read_block_data (demux_matros
   return 1;
 }
 
+static int parse_int16(uint8_t *data) {
+  int value = (int)_X_BE_16(data);
+  if (value & 1<<15)
+  {
+    value -= 1<<16;
+  }
+  return value;
+}
+
 static int parse_block (demux_matroska_t *this, uint64_t block_size,
                         uint64_t cluster_timecode, uint64_t block_duration,
                         int normpos, int is_key) {
@@ -1849,8 +1858,9 @@ static int parse_block (demux_matroska_t
   if (!(num_len = parse_ebml_uint(this, data, &track_num)))
     return 0;
   data += num_len;
-    
-  timecode_diff = (int)_X_BE_16(data);
+
+  /* timecode_diff is signed */
+  timecode_diff = parse_int16(data);
   data += 2;
 
   flags = *data;
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 src/demuxers/id3.c
--- a/src/demuxers/id3.c	Fri Feb 29 14:59:25 2008 +0000
+++ b/src/demuxers/id3.c	Thu Feb 28 13:47:59 2008 +0000
@@ -543,6 +543,7 @@ int id3v23_parse_tag(input_plugin_t *inp
       if (!id3v23_parse_frame_ext_header(input, &tag_frame_ext_header)) {
         return 0;
       }
+      pos += tag_frame_ext_header.size;
     }
     /* frame parsing */
     while ((pos + ID3V23_FRAME_HEADER_SIZE) <= tag_header.size) {
@@ -563,7 +564,8 @@ int id3v23_parse_tag(input_plugin_t *inp
           pos += tag_frame_header.size;
         } else {
           /* end of frames, the rest is padding */
-          input->seek (input, tag_header.size - pos, SEEK_CUR);
+	  lprintf("skipping padding %d bytes\n", tag_header.size - pos);
+	  input->seek (input, tag_header.size - pos, SEEK_CUR);
           return 1;
         }
       } else {
@@ -785,6 +787,7 @@ int id3v24_parse_tag(input_plugin_t *inp
       if (!id3v24_parse_ext_header(input, &tag_frame_ext_header)) {
         return 0;
       }
+      pos += tag_frame_ext_header.size;
     }
     /* frame parsing */
     while ((pos + ID3V24_FRAME_HEADER_SIZE) <= tag_header.size) {
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 \
                src/video_out/video_out_xcbxv.c
--- a/src/video_out/video_out_xcbxv.c	Fri Feb 29 14:59:25 2008 +0000
+++ b/src/video_out/video_out_xcbxv.c	Thu Feb 28 13:47:59 2008 +0000
@@ -1085,6 +1085,27 @@ static void xv_update_XV_DOUBLE_BUFFER(v
   xprintf(this->xine, XINE_VERBOSITY_DEBUG,
 	  LOG_MODULE ": double buffering mode = %d\n", xv_double_buffer);
 }
+
+static void xv_update_XV_SYNC_TO_VBLANK(void *this_gen, xine_cfg_entry_t *entry) {
+  xv_driver_t *this = (xv_driver_t *) this_gen;
+  int          xv_sync_to_vblank;
+
+  xcb_intern_atom_cookie_t atom_cookie;
+  xcb_intern_atom_reply_t *atom_reply;
+
+  xv_sync_to_vblank = entry->num_value;
+
+  pthread_mutex_lock(&this->main_mutex);
+  atom_cookie = xcb_intern_atom(this->connection, 0, sizeof("XV_SYNC_TO_VBLANK"), \
"XV_SYNC_TO_VBLANK"); +  atom_reply = xcb_intern_atom_reply(this->connection, \
atom_cookie, NULL); +  xcb_xv_set_port_attribute(this->connection, this->xv_port, \
atom_reply->atom, xv_sync_to_vblank); +  free(atom_reply);
+  pthread_mutex_unlock(&this->main_mutex);
+
+  xprintf(this->xine, XINE_VERBOSITY_DEBUG,
+	  "video_out_xcbxv: sync to vblank = %d\n", xv_sync_to_vblank);
+}
+
 
 static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry) {
   xv_driver_t *this = (xv_driver_t *) this_gen;
@@ -1342,6 +1363,18 @@ static vo_driver_t *open_plugin(video_dr
 				   VIDEO_DEVICE_XV_DOUBLE_BUFFER_HELP,
 				   20, xv_update_XV_DOUBLE_BUFFER, this);
 	  config->update_num(config,"video.device.xv_double_buffer",xv_double_buffer);
+	} else if(!strcmp(xcb_xv_attribute_info_name(attribute_it.data), \
"XV_SYNC_TO_VBLANK")) { +	  int xv_sync_to_vblank;
+	  xv_sync_to_vblank = 
+	    config->register_bool (config, "video.device.xv_sync_to_vblank", 1,
+	      _("enable vblank sync"),
+	      _("This option will synchronize the update of the video image to the "
+		"repainting of the entire screen (\"vertical retrace\"). This eliminates "
+		"flickering and tearing artifacts. On nvidia cards one may also "
+		"need to run \"nvidia-settings\" and choose which display device to "
+		"sync to under the XVideo Settings tab"),
+	      20, xv_update_XV_SYNC_TO_VBLANK, this);
+	  config->update_num(config,"video.device.xv_sync_to_vblank",xv_sync_to_vblank);
 	}
       }
     }
diff -r 9fc6fdc5c7959b3a2df03c0740377b4424e28c44 -r \
                23c7b905daf0344dd6c8bbced36637159d831880 src/video_out/video_out_xv.c
--- a/src/video_out/video_out_xv.c	Fri Feb 29 14:59:25 2008 +0000
+++ b/src/video_out/video_out_xv.c	Thu Feb 28 13:47:59 2008 +0000
@@ -1128,6 +1128,22 @@ static void xv_update_XV_DOUBLE_BUFFER(v
 
   xprintf(this->xine, XINE_VERBOSITY_DEBUG,
 	  LOG_MODULE ": double buffering mode = %d\n", xv_double_buffer);
+}
+
+static void xv_update_XV_SYNC_TO_VBLANK(void *this_gen, xine_cfg_entry_t *entry) {
+  xv_driver_t *this = (xv_driver_t *) this_gen;
+  Atom         atom;
+  int          xv_sync_to_vblank;
+
+  xv_sync_to_vblank = entry->num_value;
+
+  LOCK_DISPLAY(this);
+  atom = XInternAtom (this->display, "XV_SYNC_TO_VBLANK", False);
+  XvSetPortAttribute (this->display, this->xv_port, atom, xv_sync_to_vblank);
+  UNLOCK_DISPLAY(this);
+
+  xprintf(this->xine, XINE_VERBOSITY_DEBUG,
+	  "video_out_xv: sync to vblank = %d\n", xv_sync_to_vblank);
 }
 
 static void xv_update_xv_pitch_alignment(void *this_gen, xine_cfg_entry_t *entry) {
@@ -1390,6 +1406,18 @@ static vo_driver_t *open_plugin_2 (video
 				   VIDEO_DEVICE_XV_DOUBLE_BUFFER_HELP,
 				   20, xv_update_XV_DOUBLE_BUFFER, this);
 	  config->update_num(config,"video.device.xv_double_buffer",xv_double_buffer);
+	} else if(!strcmp(attr[k].name, "XV_SYNC_TO_VBLANK")) {
+	  int xv_sync_to_vblank;
+	  xv_sync_to_vblank = 
+	    config->register_bool (config, "video.device.xv_sync_to_vblank", 1,
+	      _("enable vblank sync"),
+	      _("This option will synchronize the update of the video image to the "
+		"repainting of the entire screen (\"vertical retrace\"). This eliminates "
+		"flickering and tearing artifacts. On nvidia cards one may also "
+		"need to run \"nvidia-settings\" and choose which display device to "
+		"sync to under the XVideo Settings tab"),
+	      20, xv_update_XV_SYNC_TO_VBLANK, this);
+	  config->update_num(config,"video.device.xv_sync_to_vblank",xv_sync_to_vblank);
 	}
       }
     }

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
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