Hello community,
here is the log from the commit of package vdr-plugins
checked in at Fri Apr 25 16:47:14 CEST 2008.
--------
--- vdr-plugins/vdr-plugins.changes 2008-03-31 11:08:23.000000000 +0200
+++ /mounts/work_src_done/STABLE/vdr-plugins/vdr-plugins.changes 2008-04-17 10:28:30.000000000 +0200
@@ -1,0 +2,6 @@
+Thu Apr 17 10:28:19 CEST 2008 - lnussel@suse.de
+
+- update vdr-xine to 0.8.2
+ * bugfix release
+
+-------------------------------------------------------------------
Old:
----
vdr-xine-0.8.1.diff
vdr-xine-0.8.1-nodebug.diff
vdr-xine-0.8.1.tar.bz2
New:
----
vdr-xine-0.8.2.diff
vdr-xine-0.8.2-nodebug.diff
vdr-xine-0.8.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vdr-plugins.spec ++++++
--- /var/tmp/diff_new_pack.z23295/_old 2008-04-25 16:47:05.000000000 +0200
+++ /var/tmp/diff_new_pack.z23295/_new 2008-04-25 16:47:05.000000000 +0200
@@ -56,7 +56,7 @@
Group: Productivity/Multimedia/Other
AutoReqProv: on
Version: 0.5
-Release: 307
+Release: 316
Summary: Plugins for the Video Disc Recorder VDR
#
Source0: vdr-cutalot-0.0.2a.tgz
@@ -64,7 +64,7 @@
# from http://home.vr-web.de/~rnissl/
# the patch in the xine-lib package has to be updated before
# updating this package.
-Source2: vdr-xine-0.8.1.tar.bz2
+Source2: vdr-xine-0.8.2.tar.bz2
Source3: http://people.freenet.de/cwieninger/vdr-epgsearch-0.9.23.tgz
%define streamdev_version 20070921
Source4: http://streamdev.vdr-developer.org/snapshots/vdr-streamdev-%{streamdev_version}.tgz
@@ -76,8 +76,8 @@
#
Source50: sysconfig.vdr-plugins
#
-Patch0: vdr-xine-0.8.1.diff
-Patch1: vdr-xine-0.8.1-nodebug.diff
+Patch0: vdr-xine-0.8.2.diff
+Patch1: vdr-xine-0.8.2-nodebug.diff
Patch2: vdr-xine-CAN-2005-0071.diff
#Patch3:
#Patch4:
@@ -120,7 +120,7 @@
%prep
%setup -q -c -n vdr-plugins -b1 -b2 -b3 -b4
%patch0
-#%patch1
+%patch1
%patch2
#%patch3
#%patch4
@@ -133,7 +133,7 @@
#
plugins="cutalot-0.0.2a remote-0.3.4 epgsearch-0.9.23 streamdev-%{streamdev_version}"
%if %with_xine
-plugins="xine-0.8.1 $plugins"
+plugins="xine-0.8.2 $plugins"
%endif
echo "SUBDIRS =" > Makefile
echo "SUBDIRS15 =" >> Makefile
@@ -203,7 +203,7 @@
installdoc remote COPYING FAQ HISTORY README
popd
%if %with_xine
-pushd xine-0.8.1
+pushd xine-0.8.2
installib xine
installdoc xine COPYING HISTORY INSTALL MANUAL README
install -d -m 755 %{buildroot}/var/lib/vdr-xine
@@ -288,6 +288,9 @@
%endif
%changelog
+* Thu Apr 17 2008 lnussel@suse.de
+- update vdr-xine to 0.8.2
+ * bugfix release
* Mon Mar 31 2008 lnussel@suse.de
- fix build for vdr 1.6
* Mon Feb 18 2008 lnussel@suse.de
++++++ vdr-xine-0.8.1.diff -> vdr-xine-0.8.2.diff ++++++
--- vdr-plugins/vdr-xine-0.8.1.diff 2008-01-10 11:20:22.000000000 +0100
+++ /mounts/work_src_done/STABLE/vdr-plugins/vdr-xine-0.8.2.diff 2008-04-17 10:27:27.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xine-0.8.1/Makefile
+Index: xine-0.8.2/Makefile
===================================================================
---- xine-0.8.1.orig/Makefile
-+++ xine-0.8.1/Makefile
+--- xine-0.8.2.orig/Makefile
++++ xine-0.8.2/Makefile
@@ -25,18 +25,19 @@ CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloa
### The directory environment:
@@ -25,11 +25,11 @@
# can be used to detect inefficient OSD drawing
# 0 - do not verify whether the dirty area of a bitmap is really dirty
-Index: xine-0.8.1/xineLib.c
+Index: xine-0.8.2/xineLib.c
===================================================================
---- xine-0.8.1.orig/xineLib.c
-+++ xine-0.8.1/xineLib.c
-@@ -2217,7 +2217,7 @@ namespace PluginXine
+--- xine-0.8.2.orig/xineLib.c
++++ xine-0.8.2/xineLib.c
+@@ -2230,7 +2230,7 @@ namespace PluginXine
return false; \
} } while (0)
@@ -38,10 +38,10 @@
{
string msg = "vdr-xine: error: couldn't create directory '" + m_fifoDir + "'";
perror(msg.c_str());
-Index: xine-0.8.1/xineLib.h
+Index: xine-0.8.2/xineLib.h
===================================================================
---- xine-0.8.1.orig/xineLib.h
-+++ xine-0.8.1/xineLib.h
+--- xine-0.8.2.orig/xineLib.h
++++ xine-0.8.2/xineLib.h
@@ -24,6 +24,7 @@
#include "xineExternal.h"
#include "xineSettings.h"
++++++ vdr-xine-0.8.1-nodebug.diff -> vdr-xine-0.8.2-nodebug.diff ++++++
--- vdr-plugins/vdr-xine-0.8.1-nodebug.diff 2008-01-10 11:20:19.000000000 +0100
+++ /mounts/work_src_done/STABLE/vdr-plugins/vdr-xine-0.8.2-nodebug.diff 2008-04-17 10:27:27.000000000 +0200
@@ -1,7 +1,7 @@
-Index: xine-0.8.1/xineDevice.c
+Index: xine-0.8.2/xineDevice.c
===================================================================
---- xine-0.8.1.orig/xineDevice.c
-+++ xine-0.8.1/xineDevice.c
+--- xine-0.8.2.orig/xineDevice.c
++++ xine-0.8.2/xineDevice.c
@@ -1154,7 +1154,12 @@ int ScanVideoPacket(const uchar *Data, i
|| 0x00 != Data[ 1 ]
|| 0x01 != Data[ 2 ])
++++++ vdr-xine-0.8.1.tar.bz2 -> vdr-xine-0.8.2.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xine-0.8.1/HISTORY new/xine-0.8.2/HISTORY
--- old/xine-0.8.1/HISTORY 2008-01-01 19:00:28.000000000 +0100
+++ new/xine-0.8.2/HISTORY 2008-03-10 21:23:56.000000000 +0100
@@ -1,6 +1,29 @@
VDR Plugin 'xine' Revision History
----------------------------------
+2008-03-10: Version 0.8.2
+
+- Fixed optional parameter processing for parameter -p. As
+ getopt() requires that optional arguments must follow the
+ option switch without any delimiters, I've updated MANUAL
+ accordingly, i. e. all options are documented without
+ delimiters. Furthermore you'll get an error message when
+ specifying the argument for -p incorrectly.
+- Fixed compilation of patched xine-lib-1.1 (thanks to Darren
+ Salt and Fabian Foerg for contributing fixes for this issue).
+- Provided xine_get_current_frame_alloc() to xine-lib which
+ allows retrieving the current frame image without the need
+ to pause the stream for a second call to the function after
+ allocating sufficient memory.
+- Fixed retrieving only valid PTS from xine. xine's metronom is
+ now intercepted to monitor PTS changes after which PTS are
+ considered to be valid.
+- Fixed handling VDR's clear command. Adding sync points to the
+ stream makes sure that all data on the way to xine up to sync
+ point gets properly dropped.
+- Added Russian translation (thanks to Oleg Roitburd for
+ providing ru_RU.po).
+
2008-01-01: Version 0.8.1
- Updated documentation mentioning binary and devel packages
@@ -12,7 +35,7 @@
a recent FFmpeg and to add --with-external-ffmpeg when
configuring xine-lib.
- Contributed some xine-lib options for H.264 decoding.
-- Adopted name and files changes of vdr Plugin in xine.
+- Adopted name and files changes of vdr plugin in xine.
- Updated it_IT.po and xineI18n.h (thanks to VDR Italian for
providing the translations).
- Implemented makefile switch VDR_XINE_VERIFY_BITMAP_DIRTY to
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xine-0.8.1/MANUAL new/xine-0.8.2/MANUAL
--- old/xine-0.8.1/MANUAL 2007-10-23 20:48:09.000000000 +0200
+++ new/xine-0.8.2/MANUAL 2008-03-09 13:25:24.000000000 +0100
@@ -198,11 +198,11 @@
pressing buttons in xine. It will also allow control from any other suitably
patched front end.
- -i N Instance number for FIFO directory
+ -iN Instance number for FIFO directory
If you want to run two instances of vdr-xine (in different VDR processes) on
the same computer then you have to use a unique FIFO dir for each instance.
-For example "-i 3" will append "3" to the FIFO_DIR given in Makefile. The MRL
+For example "-i3" will append "3" to the FIFO_DIR given in Makefile. The MRL
will then have to be like that: "vdr://tmp/vdr-xine3/stream#demux:mpeg_pes".
-q Suppress debug messages on console
@@ -215,14 +215,14 @@
Use this switch if it is useful to control VDR via it's controlling terminal
while xine is not connected to vdr-xine. Requires VDR >= 1.3.20.
- -X N default 'SizeX' for GRAB command (720, 1..4096)
- -Y N default 'SizeY' for GRAB command (576, 1..4096)
+ -XN default 'SizeX' for GRAB command (720, 1..4096)
+ -YN default 'SizeY' for GRAB command (576, 1..4096)
With these switches you may change the default image size for the grabbing
the current video frame (see VDR's SVDRP command GRAB for details).
- -p [N] use socket connections on port N (18701)
- -b IP ip address to bind for socket connections (see -p)
+ -p[N] use socket connections on port N (18701)
+ -bIP ip address to bind for socket connections (see -p)
These options control whether vdr-xine shall use sockets instead of fifos,
which allows you to run xine on a different computer than vdr-xine. To enable
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xine-0.8.1/patches/xine-lib.patch new/xine-0.8.2/patches/xine-lib.patch
--- old/xine-0.8.1/patches/xine-lib.patch 2008-01-01 17:43:32.000000000 +0100
+++ new/xine-0.8.2/patches/xine-lib.patch 2008-03-10 21:11:48.000000000 +0100
@@ -1,7 +1,7 @@
-diff -x .hg -Nurp ../cvs/xine-lib/configure.ac xine-lib/configure.ac
---- ../cvs/xine-lib/configure.ac 2008-01-01 11:10:55.000000000 +0100
-+++ xine-lib/configure.ac 2008-01-01 11:11:21.000000000 +0100
-@@ -2720,6 +2720,7 @@ src/video_out/vidix/Makefile
+diff -Nurp ../xine-cvs/xine-lib/configure.ac xine-lib/configure.ac
+--- ../xine-cvs/xine-lib/configure.ac 2008-03-06 20:06:29.000000000 +0100
++++ xine-lib/configure.ac 2008-03-10 21:05:50.000000000 +0100
+@@ -2749,6 +2749,7 @@ src/video_out/vidix/Makefile
src/video_out/vidix/drivers/Makefile
src/xine-utils/Makefile
src/xine-engine/Makefile
@@ -9,7 +9,7 @@
win32/Makefile
win32/include/Makefile])
AC_CONFIG_COMMANDS([default],[[chmod +x ./misc/SlackBuild ./misc/build_rpms.sh ./misc/relchk.sh]],[[]])
-@@ -2755,7 +2756,7 @@ echo " - file - net"
+@@ -2791,7 +2792,7 @@ echo " - file - net"
echo " - stdin_fifo - rtp"
echo " - http - mms"
echo " - pnm - rtsp"
@@ -18,7 +18,7 @@
if test "x$external_dvdnav" = "xyes"; then
echo " - dvd (external libs)"
else
-@@ -2960,6 +2961,7 @@ echo " - invert - expand"
+@@ -2996,6 +2997,7 @@ echo " - invert - expand"
echo " - eq - eq2"
echo " - boxblur - denoise3d"
echo " - unsharp - tvtime"
@@ -26,9 +26,9 @@
echo " * SFX:"
echo " - goom - oscope"
echo " - fftscope - mosaico"
-diff -x .hg -Nurp ../cvs/xine-lib/src/Makefile.am xine-lib/src/Makefile.am
---- ../cvs/xine-lib/src/Makefile.am 2008-01-01 11:10:56.000000000 +0100
-+++ xine-lib/src/Makefile.am 2008-01-01 11:11:22.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/Makefile.am xine-lib/src/Makefile.am
+--- ../xine-cvs/xine-lib/src/Makefile.am 2007-08-29 21:56:31.000000000 +0200
++++ xine-lib/src/Makefile.am 2008-03-10 21:05:50.000000000 +0100
@@ -26,4 +26,5 @@ SUBDIRS = \
libfaad \
libmusepack \
@@ -36,19 +36,15 @@
- combined
+ combined \
+ vdr
-diff -x .hg -Nurp ../cvs/xine-lib/src/vdr/Makefile.am xine-lib/src/vdr/Makefile.am
---- ../cvs/xine-lib/src/vdr/Makefile.am 1970-01-01 01:00:00.000000000 +0100
-+++ xine-lib/src/vdr/Makefile.am 2008-01-01 11:11:29.000000000 +0100
-@@ -0,0 +1,17 @@
+diff -Nurp ../xine-cvs/xine-lib/src/vdr/Makefile.am xine-lib/src/vdr/Makefile.am
+--- ../xine-cvs/xine-lib/src/vdr/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ xine-lib/src/vdr/Makefile.am 2008-03-02 22:15:41.000000000 +0100
+@@ -0,0 +1,13 @@
+include $(top_srcdir)/misc/Makefile.common
+
-+
-+
-+libdir = $(XINE_PLUGINDIR)
-+
+AM_CFLAGS = -D_LARGEFILE64_SOURCE
+
-+lib_LTLIBRARIES = \
++xineplug_LTLIBRARIES = \
+ xineplug_vdr.la
+
+xineplug_vdr_la_SOURCES = combined_vdr.c input_vdr.c post_vdr_video.c post_vdr_audio.c
@@ -57,9 +53,9 @@
+
+xineinclude_HEADERS = vdr.h
+noinst_HEADERS = combined_vdr.h
-diff -x .hg -Nurp ../cvs/xine-lib/src/vdr/combined_vdr.c xine-lib/src/vdr/combined_vdr.c
---- ../cvs/xine-lib/src/vdr/combined_vdr.c 1970-01-01 01:00:00.000000000 +0100
-+++ xine-lib/src/vdr/combined_vdr.c 2008-01-01 11:11:29.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/vdr/combined_vdr.c xine-lib/src/vdr/combined_vdr.c
+--- ../xine-cvs/xine-lib/src/vdr/combined_vdr.c 1970-01-01 01:00:00.000000000 +0100
++++ xine-lib/src/vdr/combined_vdr.c 2007-12-31 23:09:16.000000000 +0100
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2000-2004 the xine project
@@ -105,9 +101,9 @@
+ { PLUGIN_NONE , 0, "" , 0 , NULL , NULL }
+};
+
-diff -x .hg -Nurp ../cvs/xine-lib/src/vdr/combined_vdr.h xine-lib/src/vdr/combined_vdr.h
---- ../cvs/xine-lib/src/vdr/combined_vdr.h 1970-01-01 01:00:00.000000000 +0100
-+++ xine-lib/src/vdr/combined_vdr.h 2008-01-01 11:11:29.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/vdr/combined_vdr.h xine-lib/src/vdr/combined_vdr.h
+--- ../xine-cvs/xine-lib/src/vdr/combined_vdr.h 1970-01-01 01:00:00.000000000 +0100
++++ xine-lib/src/vdr/combined_vdr.h 2007-12-29 23:49:15.000000000 +0100
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2000-2004 the xine project
@@ -201,10 +197,10 @@
+
+#endif /* __COMBINED_VDR_H */
+
-diff -x .hg -Nurp ../cvs/xine-lib/src/vdr/input_vdr.c xine-lib/src/vdr/input_vdr.c
---- ../cvs/xine-lib/src/vdr/input_vdr.c 1970-01-01 01:00:00.000000000 +0100
-+++ xine-lib/src/vdr/input_vdr.c 2008-01-01 11:11:29.000000000 +0100
-@@ -0,0 +1,2084 @@
+diff -Nurp ../xine-cvs/xine-lib/src/vdr/input_vdr.c xine-lib/src/vdr/input_vdr.c
+--- ../xine-cvs/xine-lib/src/vdr/input_vdr.c 1970-01-01 01:00:00.000000000 +0100
++++ xine-lib/src/vdr/input_vdr.c 2008-03-06 20:36:46.000000000 +0100
+@@ -0,0 +1,2214 @@
+/*
+ * Copyright (C) 2003-2004 the xine project
+ *
@@ -268,8 +264,19 @@
+*/
+
+
++typedef struct vdr_input_plugin_s vdr_input_plugin_t;
++
+typedef struct
+{
++ metronom_t metronom;
++ metronom_t *stream_metronom;
++ vdr_input_plugin_t *input;
++}
++vdr_metronom_t;
++
++
++struct vdr_input_plugin_s
++{
+ input_plugin_t input_plugin;
+
+ xine_stream_t *stream;
@@ -318,16 +325,19 @@
+ uint16_t image16_9_zoom_x;
+ uint16_t image16_9_zoom_y;
+
-+}
-+vdr_input_plugin_t;
++ uint8_t find_sync_point;
++ pthread_mutex_t find_sync_point_lock;
+
++ vdr_metronom_t metronom;
++ int last_disc_type;
++};
+
+
+typedef struct
+{
+ input_class_t input_class;
+ xine_t *xine;
-+ char *mrls[ 2 ];
++ const char *mrls[ 2 ];
+}
+vdr_input_class_t;
+
@@ -788,7 +798,13 @@
+ int orig_speed = xine_get_param(this->stream, XINE_PARAM_FINE_SPEED);
+ if (orig_speed <= 0)
+ xine_set_param(this->stream, XINE_PARAM_FINE_SPEED, XINE_FINE_SPEED_NORMAL);
-+fprintf(stderr, "+++ CLEAR(%d%c)\n", data->n, data->s ? 'b' : 'a');
++fprintf(stderr, "+++ CLEAR(%d%c): sync point: %02x\n", data->n, data->s ? 'b' : 'a', data->i);
++ if (!data->s)
++ {
++ pthread_mutex_lock(&this->find_sync_point_lock);
++ this->find_sync_point = data->i;
++ pthread_mutex_unlock(&this->find_sync_point_lock);
++ }
+/*
+ if (!this->dont_change_xine_volume)
+ xine_set_param(this->stream, XINE_PARAM_AUDIO_VOLUME, 0);
@@ -1159,33 +1175,9 @@
+ int height = 0;
+ int ratio_code = 0;
+ int format = 0;
-+
-+ int orig_speed = xine_get_param(this->stream, XINE_PARAM_FINE_SPEED);
-+ if (XINE_SPEED_PAUSE != orig_speed)
-+ xine_set_param(this->stream, XINE_PARAM_FINE_SPEED, XINE_SPEED_PAUSE);
-+
-+ if (xine_get_current_frame(this->stream, &width, &height, &ratio_code, &format, 0))
++
++ if (xine_get_current_frame_alloc(this->stream, &width, &height, &ratio_code, &format, &img, &frame_size))
+ {
-+ switch (format)
-+ {
-+ case XINE_IMGFMT_YV12:
-+ frame_size = width * height
-+ + ((width + 1) / 2) * ((height + 1) / 2)
-+ + ((width + 1) / 2) * ((height + 1) / 2);
-+ break;
-+
-+ case XINE_IMGFMT_YUY2:
-+ frame_size = width * height
-+ + ((width + 1) / 2) * height
-+ + ((width + 1) / 2) * height;
-+ break;
-+ }
-+
-+ img = xine_xmalloc(frame_size);
-+
-+ if (!xine_get_current_frame(this->stream, &width, &height, &ratio_code, &format, img))
-+ frame_size = 0;
-+
+ if (ratio_code == XINE_VO_ASPECT_SQUARE)
+ ratio_code = 10000;
+ else if (ratio_code == XINE_VO_ASPECT_4_3)
@@ -1194,17 +1186,15 @@
+ ratio_code = 17778;
+ else if (ratio_code == XINE_VO_ASPECT_DVB)
+ ratio_code = 21100;
-+
-+ if (0 == frame_size)
-+ {
-+ width = 0;
-+ height = 0;
-+ ratio_code = 0;
-+ }
+ }
-+
-+ if (XINE_SPEED_PAUSE != orig_speed)
-+ xine_set_param(this->stream, XINE_PARAM_FINE_SPEED, orig_speed);
++
++ if (!img)
++ {
++ frame_size = 0,
++ width = 0;
++ height = 0;
++ ratio_code = 0;
++ }
+
+ {
+ result_grab_image_t result_grab_image;
@@ -1218,13 +1208,12 @@
+
+ if (sizeof (result_grab_image) == vdr_write(this->fh_result, &result_grab_image, sizeof (result_grab_image)))
+ {
-+ if (frame_size == vdr_write(this->fh_result, img, frame_size))
++ if (!frame_size || (frame_size == vdr_write(this->fh_result, img, frame_size)))
+ ret_val = 0;
+ }
+ }
+
-+ if (img)
-+ free(img);
++ free(img);
+
+ if (ret_val != 0)
+ return ret_val;
@@ -1241,8 +1230,7 @@
+ result_get_pts.header.func = data->header.func;
+ result_get_pts.header.len = sizeof (result_get_pts);
+
-+ result_get_pts.pts = xine_get_current_vpts(this->stream) - this->stream->metronom->get_option(this->stream->metronom, METRONOM_VPTS_OFFSET);
-+
++ result_get_pts.pts = (this->last_disc_type == DISC_STREAMSTART) ? -2 : (xine_get_current_vpts(this->stream) - this->stream->metronom->get_option(this->stream->metronom, METRONOM_VPTS_OFFSET));
+ if (sizeof (result_get_pts) != vdr_write(this->fh_result, &result_get_pts, sizeof (result_get_pts)))
+ return -1;
+ }
@@ -1515,9 +1503,10 @@
+}
+
+static off_t vdr_plugin_read(input_plugin_t *this_gen,
-+ char *buf, off_t len)
++ char *buf_gen, off_t len)
+{
+ vdr_input_plugin_t *this = (vdr_input_plugin_t *) this_gen;
++ uint8_t *buf = (uint8_t *)buf_gen;
+ off_t n, total;
+#ifdef LOG_READ
+ lprintf ("reading %lld bytes...\n", len);
@@ -1542,7 +1531,7 @@
+ int retries = 0;
+ do
+ {
-+ n = vdr_read_abort (this->stream, this->fh, &buf[total], len-total);
++ n = vdr_read_abort (this->stream, this->fh, (char *)&buf[total], len-total);
+ if (0 == n)
+ lprintf("read 0, retries: %d\n", retries);
+ }
@@ -1563,6 +1552,53 @@
+ this->curpos += n;
+ total += n;
+ }
++
++ if (this->find_sync_point
++ && total == 6)
++ {
++ pthread_mutex_lock(&this->find_sync_point_lock);
++
++ while (this->find_sync_point
++ && total == 6
++ && buf[0] == 0x00
++ && buf[1] == 0x00
++ && buf[2] == 0x01)
++ {
++ int l, sp;
++
++ if (buf[3] == 0xbe
++ && buf[4] == 0xff)
++ {
++//fprintf(stderr, "------- seen sync point: %02x, waiting for: %02x\n", buf[5], this->find_sync_point);
++ if (buf[5] == this->find_sync_point)
++ {
++ this->find_sync_point = 0;
++ break;
++ }
++ }
++
++ if ((buf[3] & 0xf0) != 0xe0
++ && (buf[3] & 0xe0) != 0xc0
++ && buf[3] != 0xbd
++ && buf[3] != 0xbe)
++ {
++ break;
++ }
++
++ l = buf[4] * 256 + buf[5];
++ if (l <= 0)
++ break;
++
++ sp = this->find_sync_point;
++ this->find_sync_point = 0;
++ this_gen->seek(this_gen, l, SEEK_CUR);
++ total = this_gen->read(this_gen, buf, 6);
++ this->find_sync_point = sp;
++ }
++
++ pthread_mutex_unlock(&this->find_sync_point_lock);
++ }
++
+ return total;
+}
+
@@ -1718,6 +1754,7 @@
+ pthread_cond_destroy(&this->rpc_thread_shutdown_cond);
+ pthread_mutex_destroy(&this->rpc_thread_shutdown_lock);
+
++ pthread_mutex_destroy(&this->find_sync_point_lock);
+ pthread_mutex_destroy(&this->adjust_zoom_lock);
+
+ if (this->fh_result != -1)
@@ -1745,6 +1782,10 @@
+ close(this->fh);
+
+ free(this->mrl);
++
++ this->stream->metronom = this->metronom.stream_metronom;
++ this->metronom.stream_metronom = 0;
++
+ free(this);
+}
+
@@ -1814,6 +1855,12 @@
+
+ fcntl(this->fh, F_SETFL, ~O_NONBLOCK & fcntl(this->fh, F_GETFL, 0));
+
++ /* eat initial handshake byte */
++ {
++ char b;
++ read(this->fh, &b, 1);
++ }
++
+ {
+ char *filename_control = 0;
+ asprintf(&filename_control, "%s.control", filename);
@@ -2152,6 +2199,69 @@
+ _("%s: input event write: %s.\n"), LOG_MODULE, strerror(errno));
+}
+
++
++static void vdr_metronom_set_audio_rate(metronom_t *self, int64_t pts_per_smpls)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ this->stream_metronom->set_audio_rate(this->stream_metronom, pts_per_smpls);
++}
++
++static void vdr_metronom_got_video_frame(metronom_t *self, vo_frame_t *frame)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ this->stream_metronom->got_video_frame(this->stream_metronom, frame);
++}
++
++static int64_t vdr_metronom_got_audio_samples(metronom_t *self, int64_t pts, int nsamples)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ return this->stream_metronom->got_audio_samples(this->stream_metronom, pts, nsamples);
++}
++
++static int64_t vdr_metronom_got_spu_packet(metronom_t *self, int64_t pts)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ return this->stream_metronom->got_spu_packet(this->stream_metronom, pts);
++}
++
++static void vdr_metronom_handle_audio_discontinuity(metronom_t *self, int type, int64_t disc_off)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ this->stream_metronom->handle_audio_discontinuity(this->stream_metronom, type, disc_off);
++ this->input->last_disc_type = type;
++}
++
++static void vdr_metronom_handle_video_discontinuity(metronom_t *self, int type, int64_t disc_off)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ this->stream_metronom->handle_video_discontinuity(this->stream_metronom, type, disc_off);
++ this->input->last_disc_type = type;
++}
++
++static void vdr_metronom_set_option(metronom_t *self, int option, int64_t value)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ this->stream_metronom->set_option(this->stream_metronom, option, value);
++}
++
++static int64_t vdr_metronom_get_option(metronom_t *self, int option)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ return this->stream_metronom->get_option(this->stream_metronom, option);
++}
++
++static void vdr_metronom_set_master(metronom_t *self, metronom_t *master)
++{
++ vdr_metronom_t *this = (vdr_metronom_t *)self;
++ this->stream_metronom->set_master(this->stream_metronom, master);
++}
++
++static void vdr_metronom_exit(metronom_t *self)
++{
++ _x_abort();
++}
++
++
+static input_plugin_t *vdr_class_get_instance(input_class_t *cls_gen, xine_stream_t *stream,
+ const char *data)
+{
@@ -2223,6 +2333,7 @@
+ pthread_mutex_init(&this->rpc_thread_shutdown_lock, 0);
+ pthread_cond_init(&this->rpc_thread_shutdown_cond, 0);
+
++ pthread_mutex_init(&this->find_sync_point_lock, 0);
+ pthread_mutex_init(&this->adjust_zoom_lock, 0);
+ this->image4_3_zoom_x = 0;
+ this->image4_3_zoom_y = 0;
@@ -2233,6 +2344,21 @@
+ if (this->event_queue)
+ xine_event_create_listener_thread(this->event_queue, event_handler, this);
+
++ this->metronom.input = this;
++ this->metronom.metronom.set_audio_rate = vdr_metronom_set_audio_rate;
++ this->metronom.metronom.got_video_frame = vdr_metronom_got_video_frame;
++ this->metronom.metronom.got_audio_samples = vdr_metronom_got_audio_samples;
++ this->metronom.metronom.got_spu_packet = vdr_metronom_got_spu_packet;
++ this->metronom.metronom.handle_audio_discontinuity = vdr_metronom_handle_audio_discontinuity;
++ this->metronom.metronom.handle_video_discontinuity = vdr_metronom_handle_video_discontinuity;
++ this->metronom.metronom.set_option = vdr_metronom_set_option;
++ this->metronom.metronom.get_option = vdr_metronom_get_option;
++ this->metronom.metronom.set_master = vdr_metronom_set_master;
++ this->metronom.metronom.exit = vdr_metronom_exit;
++
++ this->metronom.stream_metronom = stream->metronom;
++ stream->metronom = &this->metronom.metronom;
++
+ return &this->input_plugin;
+}
+
@@ -2263,7 +2389,7 @@
+ vdr_input_class_t *class = (vdr_input_class_t *)this_gen;
+
+ *num_files = 1;
-+ return class->mrls;
++ return (char **)class->mrls;
+}
+
+void *vdr_input_init_plugin(xine_t *xine, void *data)
@@ -2289,9 +2415,9 @@
+
+ return this;
+}
-diff -x .hg -Nurp ../cvs/xine-lib/src/vdr/post_vdr_audio.c xine-lib/src/vdr/post_vdr_audio.c
---- ../cvs/xine-lib/src/vdr/post_vdr_audio.c 1970-01-01 01:00:00.000000000 +0100
-+++ xine-lib/src/vdr/post_vdr_audio.c 2008-01-01 11:11:29.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/vdr/post_vdr_audio.c xine-lib/src/vdr/post_vdr_audio.c
+--- ../xine-cvs/xine-lib/src/vdr/post_vdr_audio.c 1970-01-01 01:00:00.000000000 +0100
++++ xine-lib/src/vdr/post_vdr_audio.c 2008-03-02 22:15:41.000000000 +0100
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2000-2004 the xine project
@@ -2369,7 +2495,7 @@
+
+void *vdr_audio_init_plugin(xine_t *xine, void *data)
+{
-+ post_class_t *class = (post_class_t *)malloc(sizeof (post_class_t));
++ post_class_t *class = (post_class_t *)xine_xmalloc(sizeof (post_class_t));
+
+ if (!class)
+ return NULL;
@@ -2578,10 +2704,10 @@
+
+ return;
+}
-diff -x .hg -Nurp ../cvs/xine-lib/src/vdr/post_vdr_video.c xine-lib/src/vdr/post_vdr_video.c
---- ../cvs/xine-lib/src/vdr/post_vdr_video.c 1970-01-01 01:00:00.000000000 +0100
-+++ xine-lib/src/vdr/post_vdr_video.c 2008-01-01 11:11:29.000000000 +0100
-@@ -0,0 +1,500 @@
+diff -Nurp ../xine-cvs/xine-lib/src/vdr/post_vdr_video.c xine-lib/src/vdr/post_vdr_video.c
+--- ../xine-cvs/xine-lib/src/vdr/post_vdr_video.c 1970-01-01 01:00:00.000000000 +0100
++++ xine-lib/src/vdr/post_vdr_video.c 2008-03-02 22:15:41.000000000 +0100
+@@ -0,0 +1,502 @@
+/*
+ * Copyright (C) 2000-2004 the xine project
+ *
@@ -2607,9 +2733,9 @@
+ */
+
+#define LOG_MODULE "vdr_video"
-+#define LOG_VERBOSE
+/*
+#define LOG
++#define LOG_VERBOSE
+*/
+
+#include "xine_internal.h"
@@ -2681,7 +2807,7 @@
+
+void *vdr_video_init_plugin(xine_t *xine, void *data)
+{
-+ post_class_t *class = (post_class_t *)malloc(sizeof (post_class_t));
++ post_class_t *class = (post_class_t *)xine_xmalloc(sizeof (post_class_t));
+
+ if (!class)
+ return NULL;
@@ -3040,12 +3166,14 @@
+ frame->next->pts = 0;
+ }
+*/
++#if defined(LOG) && defined(LOG_VERBOSE)
+ {
+ int a = 0, b = 0, c = 0, d = 0;
+ if (stream)
+ _x_query_buffer_usage(stream, &a, &b, &c, &d);
-+ fprintf(stderr, "buffer usage: %3d, %2d, %2d, %2d, %p\n", a, b, c, d, stream);
++ lprintf("buffer usage: %3d, %2d, %2d, %2d, %p\n", a, b, c, d, stream);
+ }
++#endif
+
+ if (!this->enabled
+ || frame->bad_frame
@@ -3082,10 +3210,10 @@
+
+ return skip;
+}
-diff -x .hg -Nurp ../cvs/xine-lib/src/vdr/vdr.h xine-lib/src/vdr/vdr.h
---- ../cvs/xine-lib/src/vdr/vdr.h 1970-01-01 01:00:00.000000000 +0100
-+++ xine-lib/src/vdr/vdr.h 2008-01-01 11:11:29.000000000 +0100
-@@ -0,0 +1,616 @@
+diff -Nurp ../xine-cvs/xine-lib/src/vdr/vdr.h xine-lib/src/vdr/vdr.h
+--- ../xine-cvs/xine-lib/src/vdr/vdr.h 1970-01-01 01:00:00.000000000 +0100
++++ xine-lib/src/vdr/vdr.h 2008-03-02 22:15:41.000000000 +0100
+@@ -0,0 +1,617 @@
+/*
+ * Copyright (C) 2000-2004 the xine project
+ *
@@ -3110,7 +3238,7 @@
+#define __VDR_H
+
+
-+#define XINE_VDR_VERSION 801
++#define XINE_VDR_VERSION 802
+
+
+enum funcs
@@ -3358,6 +3486,7 @@
+
+ int32_t n;
+ int8_t s;
++ uint8_t i;
+}
+data_clear_t;
+
@@ -3702,9 +3831,9 @@
+
+#endif /* __VDR_H */
+
-diff -x .hg -Nurp ../cvs/xine-lib/src/video_out/video_out_xvmc.c xine-lib/src/video_out/video_out_xvmc.c
---- ../cvs/xine-lib/src/video_out/video_out_xvmc.c 2008-01-01 17:00:00.000000000 +0100
-+++ xine-lib/src/video_out/video_out_xvmc.c 2008-01-01 17:08:59.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/video_out/video_out_xvmc.c xine-lib/src/video_out/video_out_xvmc.c
+--- ../xine-cvs/xine-lib/src/video_out/video_out_xvmc.c 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/video_out/video_out_xvmc.c 2008-03-10 21:05:50.000000000 +0100
@@ -487,9 +487,9 @@ static void xvmc_render_macro_blocks(vo_
int second_field,
xvmc_macroblocks_t *macroblocks) {
@@ -3726,9 +3855,9 @@
/* keep track of frames and how many frames alocated. */
this->frames[this->num_frame_buffers++] = frame;
-diff -x .hg -Nurp ../cvs/xine-lib/src/video_out/video_out_xxmc.c xine-lib/src/video_out/video_out_xxmc.c
---- ../cvs/xine-lib/src/video_out/video_out_xxmc.c 2008-01-01 11:11:02.000000000 +0100
-+++ xine-lib/src/video_out/video_out_xxmc.c 2008-01-01 11:11:29.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/video_out/video_out_xxmc.c xine-lib/src/video_out/video_out_xxmc.c
+--- ../xine-cvs/xine-lib/src/video_out/video_out_xxmc.c 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/video_out/video_out_xxmc.c 2008-03-10 21:05:50.000000000 +0100
@@ -368,15 +368,15 @@ static int xxmc_lock_and_validate_surfac
switch(pc_type) {
@@ -3844,9 +3973,9 @@
format, flags);
}
}
-diff -x .hg -Nurp ../cvs/xine-lib/src/video_out/xvmc_mocomp.c xine-lib/src/video_out/xvmc_mocomp.c
---- ../cvs/xine-lib/src/video_out/xvmc_mocomp.c 2008-01-01 11:11:02.000000000 +0100
-+++ xine-lib/src/video_out/xvmc_mocomp.c 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/video_out/xvmc_mocomp.c xine-lib/src/video_out/xvmc_mocomp.c
+--- ../xine-cvs/xine-lib/src/video_out/xvmc_mocomp.c 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/video_out/xvmc_mocomp.c 2008-03-10 21:05:50.000000000 +0100
@@ -70,9 +70,9 @@ static void xvmc_render_macro_blocks(vo_
int second_field,
xvmc_macroblocks_t *macroblocks) {
@@ -3860,9 +3989,9 @@
int flags;
lprintf ("xvmc_render_macro_blocks\n");
-diff -x .hg -Nurp ../cvs/xine-lib/src/video_out/xvmc_vld.c xine-lib/src/video_out/xvmc_vld.c
---- ../cvs/xine-lib/src/video_out/xvmc_vld.c 2008-01-01 11:11:02.000000000 +0100
-+++ xine-lib/src/video_out/xvmc_vld.c 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/video_out/xvmc_vld.c xine-lib/src/video_out/xvmc_vld.c
+--- ../xine-cvs/xine-lib/src/video_out/xvmc_vld.c 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/video_out/xvmc_vld.c 2008-03-10 21:05:50.000000000 +0100
@@ -32,12 +32,12 @@ void xvmc_vld_frame(struct vo_frame_s *t
{
vo_frame_t *this = (vo_frame_t *) this_gen;
@@ -3888,9 +4017,9 @@
xxmc_driver_t
*driver = (xxmc_driver_t *) cf->vo_frame.driver;
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/accel_xvmc.h xine-lib/src/xine-engine/accel_xvmc.h
---- ../cvs/xine-lib/src/xine-engine/accel_xvmc.h 2008-01-01 11:11:02.000000000 +0100
-+++ xine-lib/src/xine-engine/accel_xvmc.h 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/accel_xvmc.h xine-lib/src/xine-engine/accel_xvmc.h
+--- ../xine-cvs/xine-lib/src/xine-engine/accel_xvmc.h 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/xine-engine/accel_xvmc.h 2008-03-10 21:05:50.000000000 +0100
@@ -65,6 +65,7 @@ typedef struct xine_vld_frame_s {
@@ -3919,9 +4048,9 @@
/*
* Register XvMC stream types here.
*/
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/post.c xine-lib/src/xine-engine/post.c
---- ../cvs/xine-lib/src/xine-engine/post.c 2008-01-01 11:11:03.000000000 +0100
-+++ xine-lib/src/xine-engine/post.c 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/post.c xine-lib/src/xine-engine/post.c
+--- ../xine-cvs/xine-lib/src/xine-engine/post.c 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/xine-engine/post.c 2008-03-10 21:05:50.000000000 +0100
@@ -147,6 +147,14 @@ static void post_video_flush(xine_video_
if (port->port_lock) pthread_mutex_unlock(port->port_lock);
}
@@ -3992,9 +4121,9 @@
return 1;
}
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/post.h xine-lib/src/xine-engine/post.h
---- ../cvs/xine-lib/src/xine-engine/post.h 2008-01-01 11:11:03.000000000 +0100
-+++ xine-lib/src/xine-engine/post.h 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/post.h xine-lib/src/xine-engine/post.h
+--- ../xine-cvs/xine-lib/src/xine-engine/post.h 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/xine-engine/post.h 2008-03-10 21:05:50.000000000 +0100
@@ -177,6 +177,13 @@ struct post_video_port_s {
/* the new frame function pointers */
vo_frame_t *new_frame;
@@ -4009,9 +4138,9 @@
/* if you want to decide yourself, whether the overlay manager should
* be intercepted, fill in this function; get_overlay_manager() acts as
* a template method and asks your function; return a boolean;
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/video_out.c xine-lib/src/xine-engine/video_out.c
---- ../cvs/xine-lib/src/xine-engine/video_out.c 2008-01-01 17:00:00.000000000 +0100
-+++ xine-lib/src/xine-engine/video_out.c 2008-01-01 17:08:59.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/video_out.c xine-lib/src/xine-engine/video_out.c
+--- ../xine-cvs/xine-lib/src/xine-engine/video_out.c 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/xine-engine/video_out.c 2008-03-10 21:11:37.000000000 +0100
@@ -132,6 +132,9 @@ typedef struct {
int frame_drop_cpt;
int frame_drop_suggested;
@@ -4120,9 +4249,9 @@
if (grabonly) {
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/video_out.h xine-lib/src/xine-engine/video_out.h
---- ../cvs/xine-lib/src/xine-engine/video_out.h 2008-01-01 11:11:03.000000000 +0100
-+++ xine-lib/src/xine-engine/video_out.h 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/video_out.h xine-lib/src/xine-engine/video_out.h
+--- ../xine-cvs/xine-lib/src/xine-engine/video_out.h 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/xine-engine/video_out.h 2008-03-10 21:05:50.000000000 +0100
@@ -202,6 +202,9 @@ struct xine_video_port_s {
/* flush video_out fifo */
void (*flush) (xine_video_port_t *self);
@@ -4133,9 +4262,9 @@
/* Get/Set video property
*
* See VO_PROP_* bellow
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/video_overlay.h xine-lib/src/xine-engine/video_overlay.h
---- ../cvs/xine-lib/src/xine-engine/video_overlay.h 2008-01-01 11:11:03.000000000 +0100
-+++ xine-lib/src/xine-engine/video_overlay.h 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/video_overlay.h xine-lib/src/xine-engine/video_overlay.h
+--- ../xine-cvs/xine-lib/src/xine-engine/video_overlay.h 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/xine-engine/video_overlay.h 2008-03-10 21:05:50.000000000 +0100
@@ -35,7 +35,7 @@
#define MAX_OBJECTS 50
@@ -4145,10 +4274,10 @@
#define OVERLAY_EVENT_NULL 0
#define OVERLAY_EVENT_SHOW 1
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/xine.c xine-lib/src/xine-engine/xine.c
---- ../cvs/xine-lib/src/xine-engine/xine.c 2008-01-01 17:00:00.000000000 +0100
-+++ xine-lib/src/xine-engine/xine.c 2008-01-01 17:08:59.000000000 +0100
-@@ -293,8 +293,37 @@ static void ticket_revoke(xine_ticket_t
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/xine.c xine-lib/src/xine-engine/xine.c
+--- ../xine-cvs/xine-lib/src/xine-engine/xine.c 2008-03-10 20:06:24.000000000 +0100
++++ xine-lib/src/xine-engine/xine.c 2008-03-10 21:05:50.000000000 +0100
+@@ -294,8 +294,37 @@ static void ticket_revoke(xine_ticket_t
pthread_mutex_unlock(&this->revoke_lock);
}
@@ -4186,7 +4315,7 @@
pthread_mutex_destroy(&this->lock);
pthread_mutex_destroy(&this->revoke_lock);
pthread_cond_destroy(&this->issued);
-@@ -315,12 +344,15 @@ static xine_ticket_t *ticket_init(void)
+@@ -316,12 +345,15 @@ static xine_ticket_t *ticket_init(void)
port_ticket->renew = ticket_renew;
port_ticket->issue = ticket_issue;
port_ticket->revoke = ticket_revoke;
@@ -4202,7 +4331,7 @@
pthread_cond_init(&port_ticket->issued, NULL);
pthread_cond_init(&port_ticket->revoked, NULL);
-@@ -514,6 +546,7 @@ static int stream_rewire_audio(xine_post
+@@ -515,6 +547,7 @@ static int stream_rewire_audio(xine_post
if (!data)
return 0;
@@ -4210,7 +4339,7 @@
stream->xine->port_ticket->revoke(stream->xine->port_ticket, 1);
if (stream->audio_out->status(stream->audio_out, stream, &bits, &rate, &mode)) {
-@@ -524,6 +557,7 @@ static int stream_rewire_audio(xine_post
+@@ -525,6 +558,7 @@ static int stream_rewire_audio(xine_post
stream->audio_out = new_port;
stream->xine->port_ticket->issue(stream->xine->port_ticket, 1);
@@ -4218,7 +4347,7 @@
return 1;
}
-@@ -538,6 +572,7 @@ static int stream_rewire_video(xine_post
+@@ -539,6 +573,7 @@ static int stream_rewire_video(xine_post
if (!data)
return 0;
@@ -4226,7 +4355,7 @@
stream->xine->port_ticket->revoke(stream->xine->port_ticket, 1);
if (stream->video_out->status(stream->video_out, stream, &width, &height, &img_duration)) {
-@@ -548,6 +583,7 @@ static int stream_rewire_video(xine_post
+@@ -549,6 +584,7 @@ static int stream_rewire_video(xine_post
stream->video_out = new_port;
stream->xine->port_ticket->issue(stream->xine->port_ticket, 1);
@@ -4234,7 +4363,7 @@
return 1;
}
-@@ -2160,3 +2196,83 @@ int _x_query_buffer_usage(xine_stream_t
+@@ -2254,3 +2290,83 @@ int _x_query_buffer_usage(xine_stream_t
return ticket_acquired != 0;
}
@@ -4318,9 +4447,9 @@
+{
+ stream->first_frame_flag = 1;
+}
-diff -x .hg -Nurp ../cvs/xine-lib/src/xine-engine/xine_internal.h xine-lib/src/xine-engine/xine_internal.h
---- ../cvs/xine-lib/src/xine-engine/xine_internal.h 2008-01-01 11:11:03.000000000 +0100
-+++ xine-lib/src/xine-engine/xine_internal.h 2008-01-01 11:11:30.000000000 +0100
+diff -Nurp ../xine-cvs/xine-lib/src/xine-engine/xine_internal.h xine-lib/src/xine-engine/xine_internal.h
+--- ../xine-cvs/xine-lib/src/xine-engine/xine_internal.h 2008-03-02 18:48:20.000000000 +0100
++++ xine-lib/src/xine-engine/xine_internal.h 2008-03-10 21:05:50.000000000 +0100
@@ -166,6 +166,9 @@ struct xine_ticket_s {
* be used in combination with acquire_nonblocking() */
void (*release_nonblocking)(xine_ticket_t *self, int irrevocable);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xine-0.8.1/po/ru_RU.po new/xine-0.8.2/po/ru_RU.po
--- old/xine-0.8.1/po/ru_RU.po 2007-10-17 20:42:20.000000000 +0200
+++ new/xine-0.8.2/po/ru_RU.po 2008-03-08 17:32:46.000000000 +0100
@@ -8,119 +8,120 @@
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: Reinhard Nissl