From: <fla...@gm...> - 2007-04-10 11:57:49
|
# HG changeset patch # User Diego 'Flameeyes' Pettenò <fla...@gm...> # Date 1176155642 -7200 # Node ID c934a6c9d62f881738c15d0542291a64ae248fd1 # Parent 9b8791362419744b705928c39b11beb02d9f8d52 # Parent 6b31c50f2873b0dd6150757a0234b81f54aa7930 Merge from 1.1. diff -r c934a6c9d62f881738c15d0542291a64ae248fd1 -r 9b8791362419744b705928c39b11beb02d9f8d52 m4/attributes.m4 --- a/m4/attributes.m4 Mon Apr 09 23:54:02 2007 +0200 +++ b/m4/attributes.m4 Mon Apr 09 23:42:04 2007 +0200 @@ -119,7 +119,7 @@ AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [ AC_CACHE_CHECK([if compiler supports __attribute__((format_arg(printf)))], [cc_cv_attribute_format_arg], [AC_COMPILE_IFELSE([ - void __attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; } + char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; } ], [cc_cv_attribute_format_arg=yes], [cc_cv_attribute_format_arg=no]) |
From: <li...@yo...> - 2007-04-15 20:24:00
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1176668364 -3600 # Node ID ab2f37e0e4c3b9777ce22e9dcd5fac364607d123 # Parent 395d9cecc81a1447d444468c96cf5ffc0b9135eb # Parent 0bc16104243fee31a874779c192ca51b999d10fb Merge from 1.1. diff -r ab2f37e0e4c3b9777ce22e9dcd5fac364607d123 -r 395d9cecc81a1447d444468c96cf5ffc0b9135eb autogen.sh --- a/autogen.sh Sun Apr 15 21:19:24 2007 +0100 +++ b/autogen.sh Sun Apr 15 16:34:08 2007 +0100 @@ -51,6 +51,17 @@ detect_configure_ac() { } } +parse_version_no() { + # version no. is extended/truncated to three parts; only digits are handled + perl -e 'my $v = <>; + chomp $v; + my @v = split (" ", $v); + $v = $v[$#v]; + $v =~ s/[^0-9.].*$//; + @v = split (/\./, $v); + push @v, 0 while $#v < 2; + print $v[0] * 10000 + $v[1] * 100 + $v[2], "\n"' +} #-------------------- # AUTOCONF @@ -61,12 +72,8 @@ detect_autoconf() { NUM_RESULT=$# RESULT_FILE=$3 if [ $RETVAL -eq 0 -a $NUM_RESULT -eq 3 -a -f "$RESULT_FILE" ]; then - AC="`autoconf --version | sed -n 1p | sed -e 's/[a-zA-Z\ \.\(\)\-]//g'`" - AUTOCONF_MIN="`echo $AUTOCONF_MIN | sed -e 's/[a-zA-Z\ \.\(\)\-]//g'`" - if test $AC -lt 100 ; then - AC=`expr $AC \* 10` - fi - if [ `expr $AC` -ge $AUTOCONF_MIN ]; then + AC="`autoconf --version | parse_version_no`" + if [ `expr $AC` -ge "`echo $AUTOCONF_MIN | parse_version_no`" ]; then autoconf_ok=yes fi else @@ -114,12 +121,8 @@ try_libtool_executable() { NUM_RESULT=$# RESULT_FILE=$3 if [ $RETVAL -eq 0 -a $NUM_RESULT -eq 3 -a -f "$RESULT_FILE" ]; then - LT="`$libtool --version | awk '{ print $4 }' | sed -e 's/[a-zA-Z\ \.\(\)\-\;]//g'`" - LIBTOOL_MIN="`echo $LIBTOOL_MIN | sed -e 's/[a-zA-Z\ \.\(\)\-]//g'`" - if test $LT -lt 100 ; then - LT=`expr $LT \* 10` - fi - if [ `expr $LT` -ge $LIBTOOL_MIN ]; then + LT="`$libtool --version | awk '{ print $4 }' | parse_version_no`" + if [ `expr $LT` -ge "`echo $LIBTOOL_MIN | parse_version_no`" ]; then libtool_ok=yes fi fi @@ -166,12 +169,8 @@ detect_automake() { NUM_RESULT=$# RESULT_FILE=$3 if [ $RETVAL -eq 0 -a $NUM_RESULT -eq 3 -a -f "$RESULT_FILE" ]; then - AM="`automake --version | sed -n 1p | sed -e 's/[a-zA-Z\ \.\(\)\-]//g'`" - AUTOMAKE_MIN="`echo $AUTOMAKE_MIN | sed -e 's/[a-zA-Z\ \.\(\)\-]//g'`" - if test $AM -lt 100 ; then - AM=`expr $AM \* 10` - fi - if [ `expr $AM` -ge $AUTOMAKE_MIN ]; then + AM="`automake --version | parse_version_no`" + if [ `expr $AM` -ge "`echo $AUTOMAKE_MIN | parse_version_no`" ]; then automake_ok=yes fi else @@ -208,17 +207,13 @@ detect_aclocal() { NUM_RESULT=$# RESULT_FILE=$3 if [ $RETVAL -eq 0 -a $NUM_RESULT -eq 3 -a -f "$RESULT_FILE" ]; then - AC="`aclocal --version | sed -n 1p | sed -e 's/[a-zA-Z\ \.\(\)\-]//g'`" - ACLOCAL_MIN="`echo $AUTOMAKE_MIN | sed -e 's/[a-zA-Z\ \.\(\)\-]//g'`" - if test $AC -lt 100 ; then - AC=`expr $AC \* 10` - fi - if [ `expr $AC` -ge $ACLOCAL_MIN ]; then + AC="`aclocal --version | parse_version_no`" + if [ `expr $AC` -ge "`echo $AUTOMAKE_MIN | parse_version_no`" ]; then aclocal_ok=yes fi else echo - echo "**Error**: You must have \`automake' >= $AUTOMAKE_MIN installed to" + echo "**Error**: You must have \`aclocal' >= $AUTOMAKE_MIN installed to" echo " compile $PROG. Download the appropriate package" echo " for your distribution or source from ftp.gnu.org." exit 1 diff -r ab2f37e0e4c3b9777ce22e9dcd5fac364607d123 -r 395d9cecc81a1447d444468c96cf5ffc0b9135eb configure.ac --- a/configure.ac Sun Apr 15 21:19:24 2007 +0100 +++ b/configure.ac Sun Apr 15 16:34:08 2007 +0100 @@ -2047,10 +2047,14 @@ dnl ASM ALIGN is power of two ? dnl ASM ALIGN is power of two ? dnl Used by internal FFmpeg and Planar postprocess dnl --------------------------------------------- -AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ asm (".align 3"); ]])],[ - AC_DEFINE([ASMALIGN(ZEROBITS)], [".align " #ZEROBITS "\n\t"], "asmalign power of two") -],[ - AC_DEFINE([ASMALIGN(ZEROBITS)], [".align 1<<" #ZEROBITS "\n\t"], "asmalign power of two") +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ asm (".align 3"); ]])], + AC_DEFINE([ASMALIGN_1SLN], [1], [define if '.align n' means alignment to (1<<n)-byte boundaries]), + :) +AH_BOTTOM([#ifdef ASMALIGN_1SLN +# define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\n\t" +#else +# define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\n\t" +#endif ]) dnl --------------------------------------------- diff -r ab2f37e0e4c3b9777ce22e9dcd5fac364607d123 -r 395d9cecc81a1447d444468c96cf5ffc0b9135eb doc/faq/faq.sgml --- a/doc/faq/faq.sgml Sun Apr 15 21:19:24 2007 +0100 +++ b/doc/faq/faq.sgml Sun Apr 15 16:34:08 2007 +0100 @@ -128,14 +128,6 @@ <para> Currently, only xine-lib and gxine are present here. </para> - <para> - If you have patches for a module which is maintained using mercurial, - you can make them available as diffs - use <command>hg - export</command> for this - or via HTTP by using <command>hg - serve</command>. In the latter case, you'll need to post a URL from - which a developer can pull the changes. We prefer these methods since - we get proper attribution this way. - </para> </sect3> <sect3> <title>Checking out xine modules from CVS</title> @@ -150,8 +142,44 @@ </para> <para> If you want xine-lib or gxine, you should use Mercurial instead. + The CVS repositories for these are not maintained. </para> </sect3> + </sect2> + + <sect2 id="patch"> + <title>How do I submit patches?</title> + <para> + First, make sure that you're using a current development version + (see above) or at least the current release version. Then, once you're + ready to send the patch... + </para> + <para> + Generate your patch using either <command>cvs diff -u > + my.patch</command> or <command>hg diff > my.patch</command> (as + appropriate). Make sure that your message subject briefly describes the + patch; your message body should contain a longer description of the + patch. Your patch should be applicable using <command>patch -p0 -i + my.patch</command> or, preferably, <command>patch -p1 -i + my.patch</command> from the top-level directory in the source tree + (i.e. where configure.ac is) - this is fairly important for our + Mercurial-based repositories since it makes importing your patch that + much easier (hg import defaults to -p1). + </para> + <para> + Alternatively, if you've been hacking away at a module which is + maintained using mercurial, you can make them available as diffs - use + <command>hg export</command> or, if you have several patches, you could + use <command>hg bundle</command> instead (both require extra + parameters; <command>hg help export</command> and <command>hg help + bundle</command> for more details) - or via HTTP by using <command>hg + serve</command>. In the latter case, you'll need to post a URL from + which a developer can pull the changes. + </para> + <para> + Patches should normally be sent to the xine-devel mailing list, + <email>xin...@li...</email>. + </para> </sect2> <sect2 id="gnome-xine"> |
From: <li...@yo...> - 2007-04-25 17:20:20
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1177521540 -3600 # Node ID 95e07c43bd636029618e4dc2dea9b43c05ce19c6 # Parent 0279586da0ce1f2f084949f638f32e53766cc15c # Parent 83b7b1eb092581a029d7e7bdc5a0cb6f83a1f7d4 Merge from 1.1. diff -r 95e07c43bd636029618e4dc2dea9b43c05ce19c6 -r 0279586da0ce1f2f084949f638f32e53766cc15c ChangeLog --- a/ChangeLog Wed Apr 25 18:19:00 2007 +0100 +++ b/ChangeLog Tue Apr 24 21:48:58 2007 +0100 @@ -22,6 +22,9 @@ xine-lib (1.1.7) (unreleased) xine-lib (1.1.7) (unreleased) * Support libdca (new name for libdts) by shuffling around the dts.h file. * Add support for MDHD version 1 atom in demux_qt. [bug #1679398] + * Handle single-quoted attribute values in XML. + * Fix default paths for RealPlayer libraries (broken in 1.1.5). + [Bug 1707526] xine-lib (1.1.6) * Split the DirectFB plugin into X11 and non-X versions. diff -r 95e07c43bd636029618e4dc2dea9b43c05ce19c6 -r 0279586da0ce1f2f084949f638f32e53766cc15c src/libreal/real_common.c --- a/src/libreal/real_common.c Wed Apr 25 18:19:00 2007 +0100 +++ b/src/libreal/real_common.c Tue Apr 24 21:48:58 2007 +0100 @@ -83,8 +83,8 @@ void _x_real_codecs_init(xine_t *const x default_real_codecs_path = path; #define try_real_subpath(path) \ try_real_path("/usr/" path) \ - else try_real_path("/usr/local" path) \ - else try_real_path("/opt" path) + else try_real_path("/usr/local/" path) \ + else try_real_path("/opt/" path) /* The priority is for the first found */ try_real_subpath("lib/win32") diff -r 95e07c43bd636029618e4dc2dea9b43c05ce19c6 -r 0279586da0ce1f2f084949f638f32e53766cc15c src/xine-engine/alphablend.c --- a/src/xine-engine/alphablend.c Wed Apr 25 18:19:00 2007 +0100 +++ b/src/xine-engine/alphablend.c Tue Apr 24 21:48:58 2007 +0100 @@ -1052,8 +1052,7 @@ static void mem_blend8(uint8_t *mem, uin } } -static void blend_yuv_exact(uint8_t *dst_cr, uint8_t *dst_cb, - int src_width, int x_odd, +static void blend_yuv_exact(uint8_t *dst_cr, uint8_t *dst_cb, int src_width, uint8_t *(*blend_yuv_data)[ 3 ][ 2 ]) { int x; @@ -1062,46 +1061,38 @@ static void blend_yuv_exact(uint8_t *dst /* get opacity of the 4 pixels that share chroma */ int o00 = (*blend_yuv_data)[ 0 ][ 0 ][ x + 0 ]; int o01 = (*blend_yuv_data)[ 0 ][ 0 ][ x + 1 ]; + int o = o00 + o01; int o10 = (*blend_yuv_data)[ 0 ][ 1 ][ x + 0 ]; + o += o10; int o11 = (*blend_yuv_data)[ 0 ][ 1 ][ x + 1 ]; + o += o11; /* are there any pixels a little bit opaque? */ - if (o00 || o01 || o10 || o11) { + if (o) { /* get the chroma components of the 4 pixels */ - int cr00 = -128 + (*blend_yuv_data)[ 1 ][ 0 ][ x + 0 ]; - int cr01 = -128 + (*blend_yuv_data)[ 1 ][ 0 ][ x + 1 ]; - int cr10 = -128 + (*blend_yuv_data)[ 1 ][ 1 ][ x + 0 ]; - int cr11 = -128 + (*blend_yuv_data)[ 1 ][ 1 ][ x + 1 ]; + int cr00 = (*blend_yuv_data)[ 1 ][ 0 ][ x + 0 ]; + int cr01 = (*blend_yuv_data)[ 1 ][ 0 ][ x + 1 ]; + int cr10 = (*blend_yuv_data)[ 1 ][ 1 ][ x + 0 ]; + int cr11 = (*blend_yuv_data)[ 1 ][ 1 ][ x + 1 ]; - int cb00 = -128 + (*blend_yuv_data)[ 2 ][ 0 ][ x + 0 ]; - int cb01 = -128 + (*blend_yuv_data)[ 2 ][ 0 ][ x + 1 ]; - int cb10 = -128 + (*blend_yuv_data)[ 2 ][ 1 ][ x + 0 ]; - int cb11 = -128 + (*blend_yuv_data)[ 2 ][ 1 ][ x + 1 ]; + int cb00 = (*blend_yuv_data)[ 2 ][ 0 ][ x + 0 ]; + int cb01 = (*blend_yuv_data)[ 2 ][ 0 ][ x + 1 ]; + int cb10 = (*blend_yuv_data)[ 2 ][ 1 ][ x + 0 ]; + int cb11 = (*blend_yuv_data)[ 2 ][ 1 ][ x + 1 ]; /* are all pixels completely opaque? */ - if (o00 >= 0xf && o01 >= 0xf && o10 >= 0xf && o11 >= 0xf) { + if (o >= 4*0xf) { /* set the output chroma to the average of the four pixels */ - *dst_cr = 128 + (cr00 + cr01 + cr10 + cr11) / 4; - *dst_cb = 128 + (cb00 + cb01 + cb10 + cb11) / 4; + *dst_cr = (cr00 + cr01 + cr10 + cr11) / 4; + *dst_cb = (cb00 + cb01 + cb10 + cb11) / 4; } else { - int t4, cr, cb; - - /* blending required, so clamp opacity values to allowed range */ - if (o00 > 0xf) o00 = 0xf; - if (o01 > 0xf) o01 = 0xf; - if (o10 > 0xf) o10 = 0xf; - if (o11 > 0xf) o11 = 0xf; - /* calculate transparency of background over the four pixels */ - t4 = (0xf - o00) + (0xf - o01) + (0xf - o10) + (0xf - o11); - - /* get background chroma */ - cr = -128 + *dst_cr; - cb = -128 + *dst_cb; + int t4 = 4*0xf - o; /* blend the output chroma to the average of the four pixels */ - *dst_cr = 128 + (cr * t4 + cr00 * o00 + cr01 * o01 + cr10 * o10 + cr11 * o11) / (4 * 0xf); - *dst_cb = 128 + (cb * t4 + cb00 * o00 + cb01 * o01 + cb10 * o10 + cb11 * o11) / (4 * 0xf); + /* for explanation of the used equation, see blend_yuy2_exact() */ + *dst_cr = ((*dst_cr * t4 + cr00 * o00 + cr01 * o01 + cr10 * o10 + cr11 * o11) * (0x1111+1)) >> 18; + *dst_cb = ((*dst_cb * t4 + cb00 * o00 + cb01 * o01 + cb10 * o10 + cb11 * o11) * (0x1111+1)) >> 18; } } @@ -1440,7 +1431,7 @@ void _x_blend_yuv (uint8_t *dst_base[3], memset(&(*blend_yuv_data)[ 0 ][ 1 ][ 0 ], 0, exact_blend_width_m2); } - blend_yuv_exact(dst_cr, dst_cb, exact_blend_width, x_odd, blend_yuv_data); + blend_yuv_exact(dst_cr, dst_cb, exact_blend_width, blend_yuv_data); any_line_buffered = 0; } @@ -1461,7 +1452,7 @@ void _x_blend_yuv (uint8_t *dst_base[3], memset(&(*blend_yuv_data)[ 0 ][ 1 ][ 0 ], 0, exact_blend_width_m2); } - blend_yuv_exact(dst_cr, dst_cb, exact_blend_width, x_odd, blend_yuv_data); + blend_yuv_exact(dst_cr, dst_cb, exact_blend_width, blend_yuv_data); } } @@ -1470,8 +1461,7 @@ void _x_blend_yuv (uint8_t *dst_base[3], #endif } -static void blend_yuy2_exact(uint8_t *dst_cr, uint8_t *dst_cb, - int src_width, int x_odd, +static void blend_yuy2_exact(uint8_t *dst_cr, uint8_t *dst_cb, int src_width, uint8_t *(*blend_yuy2_data)[ 3 ]) { int x; @@ -1480,38 +1470,71 @@ static void blend_yuy2_exact(uint8_t *ds /* get opacity of the 2 pixels that share chroma */ int o0 = (*blend_yuy2_data)[ 0 ][ x + 0 ]; int o1 = (*blend_yuy2_data)[ 0 ][ x + 1 ]; + int o = o0 + o1; /* are there any pixels a little bit opaque? */ - if (o0 || o1) { + if (o) { /* get the chroma components of the 2 pixels */ - int cr0 = -128 + (*blend_yuy2_data)[ 1 ][ x + 0 ]; - int cr1 = -128 + (*blend_yuy2_data)[ 1 ][ x + 1 ]; + int cr0 = (*blend_yuy2_data)[ 1 ][ x + 0 ]; + int cr1 = (*blend_yuy2_data)[ 1 ][ x + 1 ]; - int cb0 = -128 + (*blend_yuy2_data)[ 2 ][ x + 0 ]; - int cb1 = -128 + (*blend_yuy2_data)[ 2 ][ x + 1 ]; + int cb0 = (*blend_yuy2_data)[ 2 ][ x + 0 ]; + int cb1 = (*blend_yuy2_data)[ 2 ][ x + 1 ]; /* are all pixels completely opaque? */ - if (o0 >= 0xf && o1 >= 0xf) { + if (o >= 2*0xf) { /* set the output chroma to the average of the two pixels */ - *dst_cr = 128 + (cr0 + cr1) / 2; - *dst_cb = 128 + (cb0 + cb1) / 2; + *dst_cr = (cr0 + cr1) / 2; + *dst_cb = (cb0 + cb1) / 2; } else { - int t2, cr, cb; - - /* blending required, so clamp opacity values to allowed range */ - if (o0 > 0xf) o0 = 0xf; - if (o1 > 0xf) o1 = 0xf; - /* calculate transparency of background over the two pixels */ - t2 = (0xf - o0) + (0xf - o1); - - /* get background chroma */ - cr = -128 + *dst_cr; - cb = -128 + *dst_cb; + int t2 = 2*0xf - o; + + /* + * No need to adjust chroma values with +/- 128: + * *dst_cb + * = 128 + ((*dst_cb-128) * t2 + (cb0-128) * o0 + (cb1-128) * o1) / (2 * 0xf); + * = 128 + (*dst_cb * t2 + cb0 * o0 + cb1 * o1 + (t2*(-128) - 128*o0 - 128*o1)) / (2 * 0xf); + * = 128 + (*dst_cb * t2 + cb0 * o0 + cb1 * o1 + ((2*0xf-o0-o1)*(-128) - 128*o0 - 128*o1)) / (2 * 0xf); + * = 128 + (*dst_cb * t2 + cb0 * o0 + cb1 * o1 + (2*0xf*(-128))) / (2 * 0xf); + * = 128 + (*dst_cb * t2 + cb0 * o0 + cb1 * o1) / (2 * 0xf) - 128; + * = (*dst_cb * t2 + cb0 * o0 + cb1 * o1) / (2 * 0xf); + * + * Convert slow divisions to multiplication and shift: + * X/0xf + * = X * (1/0xf) + * = X * (0x1111/0x1111) * (1/0xf) + * = X * 0x1111/0xffff + * =(almost) X * 0x1112/0x10000 + * = (X * 0x1112) >> 16 + * + * The tricky point is 0x1111/0xffff --> 0x1112/0x10000. + * All calculations are done using integers and X is in + * range of [0 ... 0xff*0xf*4]. This results in error of + * X*0x1112/0x10000 - X/0xf + * = X*(0x1112/0x10000 - 1/0xf) + * = X*(0x0.1112 - 0x0.111111...) + * = X*0.0000eeeeee.... + * = [0 ... 0.37c803fc...] when X in [0...3bc4] + * As the error is less than 1 and always positive, whole error + * "disappears" during truncation (>>16). Rounding to exact results is + * guaranteed by selecting 0x1112 instead of more accurate 0x1111 + * (with 0x1111 error=X*(-0.00001111...)). With 0x1112 error is + * always positive, but still less than one. + * So, one can forget the "=(almost)" as it is really "=" when source + * operands are within 0...0xff (U,V) and 0...0xf (A). + * + * 1/0x10000 (= >>16) was originally selected because of MMX pmullhw + * instruction; it makes possible to do whole calculation in MMX using + * uint16's (pmullhw is (X*Y)>>16). + * + * Here X/(2*0xf) = X/0xf/2 = ((X*0x1112)>>16)>>1 = (X*0x1112)>>17 + */ /* blend the output chroma to the average of the two pixels */ - *dst_cr = 128 + (cr * t2 + cr0 * o0 + cr1 * o1) / (2 * 0xf); - *dst_cb = 128 + (cb * t2 + cb0 * o0 + cb1 * o1) / (2 * 0xf); + /* *dst_cr = 128 + ((*dst_cr-128) * t2 + (cr0-128) * o0 + (cr1-128) * o1) / (2 * 0xf); */ + *dst_cr = ((*dst_cr * t2 + cr0 * o0 + cr1 * o1) * (0x1111+1)) >> 17; + *dst_cb = ((*dst_cb * t2 + cb0 * o0 + cb1 * o1) * (0x1111+1)) >> 17; } } @@ -1855,7 +1878,7 @@ void _x_blend_yuy2 (uint8_t * dst_img, v if (enable_exact_blending) { /* blend buffered line */ if (any_line_buffered) { - blend_yuy2_exact(dst_y - x_odd * 2 + 3, dst_y - x_odd * 2 + 1, exact_blend_width, x_odd, blend_yuy2_data); + blend_yuy2_exact(dst_y - x_odd * 2 + 3, dst_y - x_odd * 2 + 1, exact_blend_width, blend_yuy2_data); any_line_buffered = 0; } diff -r 95e07c43bd636029618e4dc2dea9b43c05ce19c6 -r 0279586da0ce1f2f084949f638f32e53766cc15c src/xine-engine/video_out.h --- a/src/xine-engine/video_out.h Wed Apr 25 18:19:00 2007 +0100 +++ b/src/xine-engine/video_out.h Tue Apr 24 21:48:58 2007 +0100 @@ -256,6 +256,8 @@ struct xine_video_port_s { the palette. This should probably be classified as a bug. */ #define OVL_PALETTE_SIZE 256 +#define OVL_MAX_OPACITY 0x0f + /* number of recent frames to keep in memory these frames are needed by some deinterlace algorithms FIXME: we need a method to flush the recent frames (new stream) diff -r 95e07c43bd636029618e4dc2dea9b43c05ce19c6 -r 0279586da0ce1f2f084949f638f32e53766cc15c src/xine-engine/video_overlay.c --- a/src/xine-engine/video_overlay.c Wed Apr 25 18:19:00 2007 +0100 +++ b/src/xine-engine/video_overlay.c Tue Apr 24 21:48:58 2007 +0100 @@ -288,10 +288,18 @@ static int32_t video_overlay_add_event(v } if( event->object.overlay ) { + int i; + for(i = 0; i < OVL_PALETTE_SIZE; i++) { + if(event->object.overlay->trans[i] >= OVL_MAX_OPACITY) + event->object.overlay->trans[i] = OVL_MAX_OPACITY; + if(event->object.overlay->hili_trans[i] >= OVL_MAX_OPACITY) + event->object.overlay->hili_trans[i] = OVL_MAX_OPACITY; + } + this->events[new_event].event->object.overlay = xine_xmalloc (sizeof(vo_overlay_t)); xine_fast_memcpy(this->events[new_event].event->object.overlay, event->object.overlay, sizeof(vo_overlay_t)); - + /* We took the callers rle and data, therefore it will be our job to free it */ /* clear callers overlay so it will not be freed twice */ memset(event->object.overlay,0,sizeof(vo_overlay_t)); diff -r 95e07c43bd636029618e4dc2dea9b43c05ce19c6 -r 0279586da0ce1f2f084949f638f32e53766cc15c src/xine-utils/xmllexer.c --- a/src/xine-utils/xmllexer.c Wed Apr 25 18:19:00 2007 +0100 +++ b/src/xine-utils/xmllexer.c Tue Apr 24 21:48:58 2007 +0100 @@ -120,6 +120,10 @@ int lexer_get_token(char * tok, int tok_ state = 7; break; + case '\'': /* " */ + state = 12; + break; + case '-': state = 10; tok[tok_pos] = c; @@ -320,6 +324,17 @@ int lexer_get_token(char * tok, int tok_ lexbuf_pos++; state = 100; } + break; + + /* T_STRING (single quotes) */ + case 12: + tok[tok_pos] = c; + lexbuf_pos++; + if (c == '\'') { /* " */ + tok[tok_pos] = '\0'; /* FIXME */ + return T_STRING; + } + tok_pos++; break; /* IDENT */ diff -r 95e07c43bd636029618e4dc2dea9b43c05ce19c6 -r 0279586da0ce1f2f084949f638f32e53766cc15c src/xine-utils/xmlparser.c --- a/src/xine-utils/xmlparser.c Wed Apr 25 18:19:00 2007 +0100 +++ b/src/xine-utils/xmlparser.c Tue Apr 24 21:48:58 2007 +0100 @@ -413,7 +413,7 @@ static int xml_parser_get_node (xml_node } break; - /* > expected */ + /* ?> expected */ case 8: switch (res) { case (T_TI_STOP): @@ -425,7 +425,7 @@ static int xml_parser_get_node (xml_node } break; - /* ?> expected */ + /* > expected */ case 9: switch (res) { case (T_M_STOP_1): |
From: <li...@yo...> - 2007-05-08 16:52:43
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1178640687 -3600 # Node ID 7c3070a778ef1b9f14f9533a8b161109c3af3fce # Parent de4dd0fe9af57f43229da6c1de70863773efe310 # Parent ac90e9db362def74d99609bd2d86ed8e47e48f8a Merge from 1.1. diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 ChangeLog --- a/ChangeLog Tue May 08 17:11:27 2007 +0100 +++ b/ChangeLog Tue May 08 14:27:35 2007 +0100 @@ -27,6 +27,12 @@ xine-lib (1.1.7) (unreleased) [Bug 1707526] * Fix proxy usage when the hostnames cannot be resolved. Thanks to Jeff Mitchell for reporting and testing the fix. + * Avoid zero-sized frames when demuxing MPEG PES. + * Improved MPEG2 detection and optimised processing. + * Extract AFD information (commonly used in UK DVB-T) from the MPEG stream. + * Ensure that the ffmpeg video image size is properly initialised. + * Allow XxMC to switch back to software decoding; don't deinterlace if it's + not needed for any given frame. xine-lib (1.1.6) * Split the DirectFB plugin into X11 and non-X versions. diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/demuxers/demux_mpeg_pes.c --- a/src/demuxers/demux_mpeg_pes.c Tue May 08 17:11:27 2007 +0100 +++ b/src/demuxers/demux_mpeg_pes.c Tue May 08 14:27:35 2007 +0100 @@ -1135,17 +1135,20 @@ static int32_t parse_video_stream(demux_ */ if (this->mpeg12_h264_detected & 1) { buf_type = BUF_VIDEO_H264; - int nal_type_code = -1; - if (payload_size >= 4 && p[2] == 0x01 && p[1] == 0x00 && p[0] == 0x00) - nal_type_code = p[3] & 0x1f; - if (nal_type_code == 9) { /* access unit delimiter */ - buf_element_t *b = this->video_fifo->buffer_pool_alloc (this->video_fifo); - b->content = b->mem; - b->size = 0; - b->pts = 0; - b->type = buf_type; - b->decoder_flags = BUF_FLAG_FRAME_END; - this->video_fifo->put (this->video_fifo, b); + /* omit sending BUF_FLAG_FRAME_END for the first AUD occurence */ + if (this->mpeg12_h264_detected > 2) { + int nal_type_code = -1; + if (payload_size >= 4 && p[2] == 0x01 && p[1] == 0x00 && p[0] == 0x00) + nal_type_code = p[3] & 0x1f; + if (nal_type_code == 9) { /* access unit delimiter */ + buf_element_t *b = this->video_fifo->buffer_pool_alloc (this->video_fifo); + b->content = b->mem; + b->size = 0; + b->pts = 0; + b->type = buf_type; + b->decoder_flags = BUF_FLAG_FRAME_END; + this->video_fifo->put (this->video_fifo, b); + } } } diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/libffmpeg/ff_video_decoder.c --- a/src/libffmpeg/ff_video_decoder.c Tue May 08 17:11:27 2007 +0100 +++ b/src/libffmpeg/ff_video_decoder.c Tue May 08 14:27:35 2007 +0100 @@ -1184,6 +1184,11 @@ static void ff_handle_buffer (ff_video_d if ((this->aspect_ratio_prio < 2) && av_cmp_q(this->context->sample_aspect_ratio, avr00)) { + if (!this->bih.biWidth || !this->bih.biHeight) { + this->bih.biWidth = this->context->width; + this->bih.biHeight = this->context->height; + } + this->aspect_ratio = av_q2d(this->context->sample_aspect_ratio) * (double)this->bih.biWidth / (double)this->bih.biHeight; this->aspect_ratio_prio = 2; diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/libmpeg2/decode.c --- a/src/libmpeg2/decode.c Tue May 08 17:11:27 2007 +0100 +++ b/src/libmpeg2/decode.c Tue May 08 14:27:35 2007 +0100 @@ -86,6 +86,10 @@ void mpeg2_init (mpeg2dec_t * mpeg2dec, mpeg2dec->chunk_ptr = mpeg2dec->chunk_buffer; mpeg2dec->code = 0xb4; mpeg2dec->seek_mode = 0; + + /* initialize AFD storage */ + mpeg2dec->afd_value_seen = XINE_VIDEO_AFD_NOT_PRESENT; + mpeg2dec->afd_value_reported = (XINE_VIDEO_AFD_NOT_PRESENT - 1); memset (mpeg2dec->picture, 0, sizeof (picture_t)); @@ -236,7 +240,7 @@ static void remember_metainfo (mpeg2dec_ } static inline int parse_chunk (mpeg2dec_t * mpeg2dec, int code, - uint8_t * buffer) + uint8_t * buffer, int next_code) { picture_t * picture; int is_frame_done; @@ -393,6 +397,14 @@ static inline int parse_chunk (mpeg2dec_ /* abort(); */ break; } + + /* reset AFD value to detect absence */ + mpeg2dec->afd_value_seen = XINE_VIDEO_AFD_NOT_PRESENT; + + /* according to ISO/IEC 13818-2, an extension start code will follow. + * Otherwise the stream follows ISO/IEC 11172-2 which means MPEG1 */ + picture->mpeg1 = (next_code != 0xb5); + if (mpeg2dec->force_aspect) picture->aspect_ratio_information = mpeg2dec->force_aspect; if (mpeg2dec->is_sequence_needed ) { @@ -463,6 +475,18 @@ static inline int parse_chunk (mpeg2dec_ } if (code >= 0xb0) break; + + /* check for AFD change once per picture */ + if (mpeg2dec->afd_value_reported != mpeg2dec->afd_value_seen) { + /* AFD data should better be stored in current_frame to have it */ + /* ready and synchronous with other data like width or height. */ + /* An AFD change should then be detected when a new frame is emitted */ + /* from the decoder to report the AFD change in display order and not */ + /* in decoding order like it happens below for now. */ + _x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_AFD, mpeg2dec->afd_value_seen); +fprintf(stderr, "AFD changed from %d to %d\n", mpeg2dec->afd_value_reported, mpeg2dec->afd_value_seen); + mpeg2dec->afd_value_reported = mpeg2dec->afd_value_seen; + } if (!(mpeg2dec->in_slice)) { mpeg2dec->in_slice = 1; @@ -574,45 +598,102 @@ static inline int parse_chunk (mpeg2dec_ return is_frame_done; } +static inline int find_start_code (mpeg2dec_t * mpeg2dec, + uint8_t ** current, uint8_t * limit) +{ + uint8_t * p; + + if (*current >= limit) + return 0; + if (mpeg2dec->shift == 0x00000100) + return 1; + + mpeg2dec->shift = (mpeg2dec->shift | *(*current)++) << 8; + + if (*current >= limit) + return 0; + if (mpeg2dec->shift == 0x00000100) + return 1; + + mpeg2dec->shift = (mpeg2dec->shift | *(*current)++) << 8; + + if (*current >= limit) + return 0; + if (mpeg2dec->shift == 0x00000100) + return 1; + + limit--; + + if (*current >= limit) { + mpeg2dec->shift = (mpeg2dec->shift | *(*current)++) << 8; + return 0; + } + + p = *current; + + while (p < limit && (p = (uint8_t *)memchr(p, 0x01, limit - p))) { + if (p[-2] || p[-1]) + p += 3; + else { + *current = ++p; + return 1; + } + } + + *current = ++limit; + p = limit - 3; + mpeg2dec->shift = (mpeg2dec->shift | *p++) << 8; + mpeg2dec->shift = (mpeg2dec->shift | *p++) << 8; + mpeg2dec->shift = (mpeg2dec->shift | *p++) << 8; + + return 0; +} + static inline uint8_t * copy_chunk (mpeg2dec_t * mpeg2dec, uint8_t * current, uint8_t * end) { - uint32_t shift; - uint8_t * chunk_ptr; uint8_t * limit; - uint8_t byte; - - shift = mpeg2dec->shift; - chunk_ptr = mpeg2dec->chunk_ptr; - limit = current + (mpeg2dec->chunk_buffer + BUFFER_SIZE - chunk_ptr); + uint8_t * data = current; + int found, bite; + + /* sequence end code 0xb7 doesn't have any data and there might be the case + * that no start code will follow this code for quite some time (e. g. in case + * of a still image. + * Therefore, return immediately with a chunk_size of 0. Setting code to 0xb4 + * will eat up any trailing garbage next time. + */ + if (mpeg2dec->code == 0xb7) { + mpeg2dec->code = 0xb4; + mpeg2dec->chunk_size = 0; + return current; + } + + limit = current + (mpeg2dec->chunk_buffer + BUFFER_SIZE - mpeg2dec->chunk_ptr); if (limit > end) limit = end; - while (1) { - - byte = *current++; - if (shift != 0x00000100) { - shift = (shift | byte) << 8; - *chunk_ptr++ = byte; - if (current < limit) - continue; - if (current == end) { - mpeg2dec->chunk_ptr = chunk_ptr; - mpeg2dec->shift = shift; - return NULL; - } else { - /* we filled the chunk buffer without finding a start code */ - mpeg2dec->code = 0xb4; /* sequence_error_code */ - mpeg2dec->chunk_ptr = mpeg2dec->chunk_buffer; - return current; - } - } - mpeg2dec->code = byte; - mpeg2dec->chunk_size = chunk_ptr - mpeg2dec->chunk_buffer - 3; + found = find_start_code(mpeg2dec, ¤t, limit); + bite = current - data; + if (bite) { + xine_fast_memcpy(mpeg2dec->chunk_ptr, data, bite); + mpeg2dec->chunk_ptr += bite; + } + + if (found) { + mpeg2dec->code = *current++; + mpeg2dec->chunk_size = mpeg2dec->chunk_ptr - mpeg2dec->chunk_buffer - 3; mpeg2dec->chunk_ptr = mpeg2dec->chunk_buffer; mpeg2dec->shift = 0xffffff00; return current; } + + if (current == end) + return NULL; + + /* we filled the chunk buffer without finding a start code */ + mpeg2dec->code = 0xb4; /* sequence_error_code */ + mpeg2dec->chunk_ptr = mpeg2dec->chunk_buffer; + return current; } int mpeg2_decode_data (mpeg2dec_t * mpeg2dec, uint8_t * current, uint8_t * end, @@ -633,12 +714,12 @@ int mpeg2_decode_data (mpeg2dec_t * mpeg if (pts) mpeg2dec->pts = pts; - while (current != end) { + while (current != end || mpeg2dec->code == 0xb7) { code = mpeg2dec->code; current = copy_chunk (mpeg2dec, current, end); if (current == NULL) break; - ret += parse_chunk (mpeg2dec, code, mpeg2dec->chunk_buffer); + ret += parse_chunk (mpeg2dec, code, mpeg2dec->chunk_buffer, mpeg2dec->code); } libmpeg2_accel_frame_completion(&mpeg2dec->accel, mpeg2dec->frame_format, @@ -805,7 +886,7 @@ void mpeg2_find_sequence_header (mpeg2de void mpeg2_find_sequence_header (mpeg2dec_t * mpeg2dec, uint8_t * current, uint8_t * end){ - uint8_t code; + uint8_t code, next_code; picture_t *picture = mpeg2dec->picture; mpeg2dec->seek_mode = 1; @@ -815,6 +896,7 @@ void mpeg2_find_sequence_header (mpeg2de current = copy_chunk (mpeg2dec, current, end); if (current == NULL) return ; + next_code = mpeg2dec->code; /* printf ("looking for sequence header... %02x\n", code); */ @@ -825,6 +907,11 @@ void mpeg2_find_sequence_header (mpeg2de printf ("libmpeg2: bad sequence header\n"); continue; } + + /* according to ISO/IEC 13818-2, an extension start code will follow. + * Otherwise the stream follows ISO/IEC 11172-2 which means MPEG1 */ + picture->mpeg1 = (next_code != 0xb5); + if (mpeg2dec->force_aspect) picture->aspect_ratio_information = mpeg2dec->force_aspect; if (mpeg2dec->is_sequence_needed) { @@ -918,9 +1005,5 @@ static void process_userdata(mpeg2dec_t } /* check Active Format Description ETSI TS 101 154 V1.5.1 */ else if (buffer[0] == 0x44 && buffer[1] == 0x54 && buffer[2] == 0x47 && buffer[3] == 0x31) - { - int afd = (buffer[4] & 0x40) ? (buffer[5] & 0x0f) : -1; - _x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_AFD, afd); - - } -} + mpeg2dec->afd_value_seen = (buffer[4] & 0x40) ? (buffer[5] & 0x0f) : XINE_VIDEO_AFD_NOT_PRESENT; +} diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/libmpeg2/mpeg2.h --- a/src/libmpeg2/mpeg2.h Tue May 08 17:11:27 2007 +0100 +++ b/src/libmpeg2/mpeg2.h Tue May 08 14:27:35 2007 +0100 @@ -57,6 +57,12 @@ typedef struct mpeg2dec_s { int force_aspect; int force_pan_scan; + /* AFD data can be found after a sequence, group or picture start code */ + /* and will be stored in afd_value_seen. Later it will be transfered to */ + /* a stream property and stored into afd_value_reported to detect changes */ + int afd_value_seen; + int afd_value_reported; + xine_stream_t *stream; /* a spu decoder for possible closed captions */ diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/video_out/video_out_xv.c --- a/src/video_out/video_out_xv.c Tue May 08 17:11:27 2007 +0100 +++ b/src/video_out/video_out_xv.c Tue May 08 14:27:35 2007 +0100 @@ -516,17 +516,17 @@ static void xv_deinterlace_frame (xv_dri else recent_bitmaps[i] = NULL; - deinterlace_yuv( this->deinterlace_frame.image->data+frame->width*frame->height, - recent_bitmaps, frame->width/2, frame->height/2, this->deinterlace_method ); + deinterlace_yuv( this->deinterlace_frame.image->data+this->deinterlace_frame.image->width*frame->height, + recent_bitmaps, this->deinterlace_frame.image->width/2, frame->height/2, this->deinterlace_method ); for( i = 0; i < VO_NUM_RECENT_FRAMES; i++ ) if( this->recent_frames[i] && this->recent_frames[i]->width == frame->width && this->recent_frames[i]->height == frame->height ) - recent_bitmaps[i] = this->recent_frames[i]->image->data + frame->width*frame->height*5/4; + recent_bitmaps[i] = this->recent_frames[i]->image->data + this->deinterlace_frame.image->width*frame->height*5/4; else recent_bitmaps[i] = NULL; - deinterlace_yuv( this->deinterlace_frame.image->data+frame->width*frame->height*5/4, - recent_bitmaps, frame->width/2, frame->height/2, this->deinterlace_method ); + deinterlace_yuv( this->deinterlace_frame.image->data+this->deinterlace_frame.image->width*frame->height*5/4, + recent_bitmaps, this->deinterlace_frame.image->width/2, frame->height/2, this->deinterlace_method ); #else @@ -545,7 +545,7 @@ static void xv_deinterlace_frame (xv_dri recent_bitmaps[i] = NULL; deinterlace_yuv( this->deinterlace_frame.image->data, recent_bitmaps, - frame->width, frame->height, this->deinterlace_method ); + this->deinterlace_frame.image->width, frame->height, this->deinterlace_method ); } else { /* diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/video_out/video_out_xxmc.c --- a/src/video_out/video_out_xxmc.c Tue May 08 17:11:27 2007 +0100 +++ b/src/video_out/video_out_xxmc.c Tue May 08 14:27:35 2007 +0100 @@ -31,8 +31,8 @@ * * overlay support by James Courtier-Dutton <Ja...@su...> - July 2001 * X11 unscaled overlay support by Miguel Freitas - Nov 2003 - * XvMC VLD implementation by Thomas Hellstr 2004, 2005. - * XvMC merge by Thomas Hellstr Sep 2004 + * XvMC VLD implementation by Thomas Hellström - 2004, 2005. + * XvMC merge by Thomas Hellström - Sep 2004 * */ @@ -977,7 +977,7 @@ static void xvmc_check_colorkey_properti static int xxmc_xvmc_update_context(xxmc_driver_t *driver, xxmc_frame_t *frame, - uint32_t width, uint32_t height) + uint32_t width, uint32_t height, int frame_format_xxmc) { xine_xxmc_t *xxmc = &frame->xxmc_data; @@ -991,8 +991,12 @@ static int xxmc_xvmc_update_context(xxmc xprintf(driver->xine, XINE_VERBOSITY_LOG, LOG_MODULE ": New format. Need to change XvMC Context.\n" - LOG_MODULE ": width: %d height: %d mpeg: %d acceleration: %d\n", width, height, - xxmc->mpeg, xxmc->acceleration); + LOG_MODULE ": width: %d height: %d", width, height); + if (frame_format_xxmc) { + xprintf(driver->xine, XINE_VERBOSITY_LOG, + " mpeg: %d acceleration: %d", xxmc->mpeg, xxmc->acceleration); + } + xprintf(driver->xine, XINE_VERBOSITY_LOG, "\n"); if (frame->xvmc_surf) xxmc_xvmc_free_surface( driver , frame->xvmc_surf); @@ -1000,7 +1004,7 @@ static int xxmc_xvmc_update_context(xxmc xxmc_dispose_context( driver ); - if (xxmc_find_context( driver, xxmc, width, height )) { + if (frame_format_xxmc && xxmc_find_context( driver, xxmc, width, height )) { xxmc_create_context( driver, width, height); xvmc_check_colorkey_properties( driver ); xxmc_setup_subpictures(driver, width, height); @@ -1231,7 +1235,7 @@ static void xxmc_do_update_frame(vo_driv (this->xvmc_width != width) || (this->xvmc_height != height)) { this->last_accel_request = xxmc->acceleration; - xxmc_xvmc_update_context(this, frame, width, height); + xxmc_xvmc_update_context(this, frame, width, height, 1); } else { this->last_accel_request = xxmc->acceleration; } @@ -1254,6 +1258,11 @@ static void xxmc_do_update_frame(vo_driv xvmc_context_writer_unlock( &this->xvmc_lock); } else { + /* switch back to an unaccelerated context */ + if (this->last_accel_request != 0xFFFFFFFF) { + this->last_accel_request = 0xFFFFFFFF; + xxmc_xvmc_update_context(this, frame, width, height, 0); + } frame->vo_frame.proc_duplicate_frame_data = NULL; xxmc_do_update_frame_xv(this_gen, frame_gen, width, height, ratio, format, flags); @@ -1579,6 +1588,28 @@ static void xxmc_display_frame (vo_drive xxmc_frame_t *frame = (xxmc_frame_t *) frame_gen; xine_xxmc_t *xxmc = &frame->xxmc_data; int first_field; + int disable_deinterlace = 0; + struct timeval tv_top; + + /* + * take time to calculate the time to sleep for the bottom field + */ + gettimeofday(&tv_top, 0); + + /* + * bob deinterlacing doesn't make much sense for still images or at replay speeds + * other than 100 %, so let's disable deinterlacing at all for this frame + */ + if (this->deinterlace_enabled && this->bob) { + disable_deinterlace = frame->vo_frame.progressive_frame + || !frame->vo_frame.stream + || xine_get_param(frame->vo_frame.stream, XINE_PARAM_FINE_SPEED) != XINE_FINE_SPEED_NORMAL; + if (!disable_deinterlace) { + int vo_bufs_in_fifo = 0; + _x_query_buffer_usage(frame->vo_frame.stream, NULL, NULL, &vo_bufs_in_fifo, NULL); + disable_deinterlace = (vo_bufs_in_fifo <= 0); + } + } /* * queue frames (deinterlacing) @@ -1588,6 +1619,20 @@ static void xxmc_display_frame (vo_drive xvmc_context_reader_lock( &this->xvmc_lock ); xxmc_add_recent_frame (this, frame); /* deinterlacing */ + + /* + * the current implementation doesn't need recent frames for deinterlacing, + * but as most of the time we only have a little number of frames available + * per device, we only hold references to the most recent frame by filling + * the whole buffer with the same frame + */ + { + int i; + for (i = 1; i < VO_NUM_RECENT_FRAMES; i++) { + frame->vo_frame.lock(&frame->vo_frame); + xxmc_add_recent_frame (this, frame); /* deinterlacing */ + } + } if ((frame->format == XINE_IMGFMT_XXMC) && (!xxmc->decoded || !xxmc_xvmc_surface_valid(this, frame->xvmc_surf))) { @@ -1616,7 +1661,7 @@ static void xxmc_display_frame (vo_drive first_field = (frame->vo_frame.top_field_first) ? XVMC_TOP_FIELD : XVMC_BOTTOM_FIELD; first_field = (this->bob) ? first_field : XVMC_TOP_FIELD; - this->cur_field = (this->deinterlace_enabled) ? first_field : XVMC_FRAME_PICTURE; + this->cur_field = (this->deinterlace_enabled && !disable_deinterlace) ? first_field : XVMC_FRAME_PICTURE; xxmc_redraw_needed (this_gen); if (frame->format == XINE_IMGFMT_XXMC) { @@ -1629,21 +1674,42 @@ static void xxmc_display_frame (vo_drive this->sc.output_width, this->sc.output_height, this->cur_field); XVMCUNLOCKDISPLAY( this->display ); - if (this->deinterlace_enabled && this->bob) { - unsigned - ms_per_field = 500 * frame->vo_frame.duration / 90000 - 2; - - usleep(ms_per_field*1000); - this->cur_field = (frame->vo_frame.top_field_first) ? XVMC_BOTTOM_FIELD : XVMC_TOP_FIELD; - - XVMCLOCKDISPLAY( this->display ); - XvMCPutSurface( this->display, frame->xvmc_surf , this->drawable, - this->sc.displayed_xoffset, this->sc.displayed_yoffset, - this->sc.displayed_width, this->sc.displayed_height, - this->sc.output_xoffset, this->sc.output_yoffset, - this->sc.output_width, this->sc.output_height, - this->cur_field); - XVMCUNLOCKDISPLAY( this->display ); + if (this->deinterlace_enabled && !disable_deinterlace && this->bob) { + struct timeval tv_middle; + long us_spent_so_far, us_per_field = frame->vo_frame.duration * 50 / 9; + + gettimeofday(&tv_middle, 0); + us_spent_so_far = (tv_middle.tv_sec - tv_top.tv_sec) * 1000000 + (tv_middle.tv_usec - tv_top.tv_usec); + if (us_spent_so_far < 0) + us_spent_so_far = 0; + + /* + * typically, the operations above take just a few milliseconds, but when the + * driver actively waits to sync on the next field, we better skip showing the + * other field as it would lead to further busy waiting + * so display the other field only if we've spent less than 75 % of the per + * field time so far + */ + if (4 * us_spent_so_far < 3 * us_per_field) { + long us_delay = (us_per_field - 2000) - us_spent_so_far; + if (us_delay > 0) { + xvmc_context_reader_unlock( &this->xvmc_lock ); + xine_usec_sleep(us_delay); + LOCK_AND_SURFACE_VALID( this, frame->xvmc_surf ); + } + + this->cur_field = (frame->vo_frame.top_field_first) ? XVMC_BOTTOM_FIELD : XVMC_TOP_FIELD; + + XVMCLOCKDISPLAY( this->display ); + XvMCPutSurface( this->display, frame->xvmc_surf , this->drawable, + this->sc.displayed_xoffset, this->sc.displayed_yoffset, + this->sc.displayed_width, this->sc.displayed_height, + this->sc.output_xoffset, this->sc.output_yoffset, + this->sc.output_width, this->sc.output_height, + this->cur_field); + + XVMCUNLOCKDISPLAY( this->display ); + } } } else { XLockDisplay (this->display); @@ -1934,7 +2000,7 @@ static void xxmc_dispose (vo_driver_t *t for( i=0; i < VO_NUM_RECENT_FRAMES; i++ ) { if( this->recent_frames[i] ) - this->recent_frames[i]->vo_frame.dispose + this->recent_frames[i]->vo_frame.free (&this->recent_frames[i]->vo_frame); this->recent_frames[i] = NULL; } diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/xine-engine/io_helper.c --- a/src/xine-engine/io_helper.c Tue May 08 17:11:27 2007 +0100 +++ b/src/xine-engine/io_helper.c Tue May 08 14:27:35 2007 +0100 @@ -276,7 +276,7 @@ int _x_io_select (xine_stream_t *stream, wset = (state & XIO_WRITE_READY) ? &fdset : NULL; ret = select (fd + 1, rset, wset, NULL, &select_timeout); - if (ret == -1) { + if (ret == -1 && errno != EINTR) { /* select error */ return XIO_ERROR; } else if (ret == 1) { diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/xine-engine/xine.c --- a/src/xine-engine/xine.c Tue May 08 17:11:27 2007 +0100 +++ b/src/xine-engine/xine.c Tue May 08 14:27:35 2007 +0100 @@ -129,23 +129,42 @@ void _x_extra_info_merge( extra_info_t * } } -static void ticket_acquire(xine_ticket_t *this, int irrevocable) { +static int ticket_acquire_internal(xine_ticket_t *this, int irrevocable, int nonblocking) { + int must_wait = 0; pthread_mutex_lock(&this->lock); if (this->ticket_revoked && !this->irrevocable_tickets) + must_wait = !nonblocking; + else if (this->atomic_revoke && !pthread_equal(this->atomic_revoker_thread, pthread_self())) + must_wait = 1; + + if (must_wait) { + if (nonblocking) { + pthread_mutex_unlock(&this->lock); + return 0; + } + pthread_cond_wait(&this->issued, &this->lock); - else if (this->atomic_revoke && !pthread_equal(this->atomic_revoker_thread, pthread_self())) - pthread_cond_wait(&this->issued, &this->lock); + } this->tickets_granted++; if (irrevocable) this->irrevocable_tickets++; pthread_mutex_unlock(&this->lock); -} - -static void ticket_release(xine_ticket_t *this, int irrevocable) { + return 1; +} + +static int ticket_acquire_nonblocking(xine_ticket_t *this, int irrevocable) { + return ticket_acquire_internal(this, irrevocable, 1); +} + +static void ticket_acquire(xine_ticket_t *this, int irrevocable) { + ticket_acquire_internal(this, irrevocable, 0); +} + +static void ticket_release_internal(xine_ticket_t *this, int irrevocable, int nonblocking) { pthread_mutex_lock(&this->lock); @@ -155,10 +174,18 @@ static void ticket_release(xine_ticket_t if (this->ticket_revoked && !this->tickets_granted) pthread_cond_broadcast(&this->revoked); - if (this->ticket_revoked && !this->irrevocable_tickets) + if (this->ticket_revoked && !this->irrevocable_tickets && !nonblocking) pthread_cond_wait(&this->issued, &this->lock); pthread_mutex_unlock(&this->lock); +} + +static void ticket_release_nonblocking(xine_ticket_t *this, int irrevocable) { + ticket_release_internal(this, irrevocable, 1); +} + +static void ticket_release(xine_ticket_t *this, int irrevocable) { + ticket_release_internal(this, irrevocable, 0); } static void ticket_renew(xine_ticket_t *this, int irrevocable) { @@ -229,12 +256,14 @@ static xine_ticket_t *ticket_init(void) port_ticket = (xine_ticket_t *) xine_xmalloc(sizeof(xine_ticket_t)); - port_ticket->acquire = ticket_acquire; - port_ticket->release = ticket_release; - port_ticket->renew = ticket_renew; - port_ticket->issue = ticket_issue; - port_ticket->revoke = ticket_revoke; - port_ticket->dispose = ticket_dispose; + port_ticket->acquire_nonblocking = ticket_acquire_nonblocking; + port_ticket->acquire = ticket_acquire; + port_ticket->release_nonblocking = ticket_release_nonblocking; + port_ticket->release = ticket_release; + port_ticket->renew = ticket_renew; + port_ticket->issue = ticket_issue; + port_ticket->revoke = ticket_revoke; + port_ticket->dispose = ticket_dispose; pthread_mutex_init(&port_ticket->lock, NULL); pthread_mutex_init(&port_ticket->revoke_lock, NULL); @@ -2047,3 +2076,31 @@ int xine_stream_master_slave(xine_stream slave->master = master->master; return 1; } + +int _x_query_buffer_usage(xine_stream_t *stream, int *num_video_buffers, int *num_audio_buffers, int *num_video_frames, int *num_audio_frames) +{ + int ticket_acquired = -1; + + if (num_video_buffers) + *num_video_buffers = (stream->video_fifo ? stream->video_fifo->size(stream->video_fifo) : 0); + + if (num_audio_buffers) + *num_audio_buffers = (stream->audio_fifo ? stream->audio_fifo->size(stream->audio_fifo) : 0); + + if ((num_video_frames && stream->video_out) + || (num_audio_frames && stream->audio_out)) { + + ticket_acquired = stream->xine->port_ticket->acquire_nonblocking(stream->xine->port_ticket, 1); + } + + if (num_video_frames) + *num_video_frames = ((ticket_acquired && stream->video_out) ? stream->video_out->get_property(stream->video_out, VO_PROP_BUFS_IN_FIFO) : 0); + + if (num_audio_frames) + *num_audio_frames = ((ticket_acquired && stream->audio_out) ? stream->audio_out->get_property(stream->audio_out, AO_PROP_BUFS_IN_FIFO) : 0); + + if (ticket_acquired > 0) + stream->xine->port_ticket->release_nonblocking(stream->xine->port_ticket, 1); + + return ticket_acquired != 0; +} diff -r 7c3070a778ef1b9f14f9533a8b161109c3af3fce -r de4dd0fe9af57f43229da6c1de70863773efe310 src/xine-engine/xine_internal.h --- a/src/xine-engine/xine_internal.h Tue May 08 17:11:27 2007 +0100 +++ b/src/xine-engine/xine_internal.h Tue May 08 14:27:35 2007 +0100 @@ -161,6 +161,15 @@ struct xine_ticket_s { * revocation or by other threads acquiring tickets */ void (*revoke)(xine_ticket_t *self, int atomic); + /* behaves like acquire() but doesn't block the calling thread; when + * the thread would have been blocked, 0 is returned otherwise 1 + * this function acquires a ticket even if ticket revocation is active */ + int (*acquire_nonblocking)(xine_ticket_t *self, int irrevocable); + + /* behaves like release() but doesn't block the calling thread; should + * be used in combination with acquire_nonblocking() */ + void (*release_nonblocking)(xine_ticket_t *self, int irrevocable); + void (*dispose)(xine_ticket_t *self); pthread_mutex_t lock; @@ -360,6 +369,8 @@ struct xine_stream_s { * private function prototypes: */ +int _x_query_buffer_usage(xine_stream_t *stream, int *num_video_buffers, int *num_audio_buffers, int *num_video_frames, int *num_audio_frames) XINE_PROTECTED; + void _x_handle_stream_end (xine_stream_t *stream, int non_user) XINE_PROTECTED; /* report message to UI. usually these are async errors */ |
From: <li...@yo...> - 2007-05-17 00:11:09
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1179360641 -3600 # Node ID b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 # Parent d042d174d6fb32a4314a6bb1a531d2ddd807312e # Parent a59b9eb5c073afef692f8fbb25919181fdd0d736 Merge from 1.1. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e AUTHORS --- a/AUTHORS Thu May 17 01:10:41 2007 +0100 +++ b/AUTHORS Tue May 08 21:25:00 2007 +0100 @@ -76,7 +76,7 @@ James Stembridge <jst...@us...ur VIDIX driver, real media and ffmpeg interface fixes and improvements mpeg-4 postprocessing, initial software DTS decoding -Frantisek Dvorak <va...@at...> +František Dvořák <va...@at...> czech translations and multilanguage support (xine lib/ui), RIP Input Plugin, WIN32 porting, lots of other improvements and bugfixes @@ -185,7 +185,7 @@ Philip Stadermann <pst...@gm...> Philip Stadermann <pst...@gm...> arts audio server support, kde frontend -Jme Villette <vil...@ch...> +Jérôme Villette <vil...@ch...> 'xinetic', 'CelomaGold', 'CelomaMdk', 'CelomaChrome', 'Centori' and 'Keramic' skins. @@ -364,7 +364,7 @@ Anders D. Wiehe <an...@wi...> Anders D. Wiehe <an...@wi...> OSD stream informations patch. -ZoltBrmi <zb...@fr...> +Zoltán Böszörményi <zb...@fr...> tremendous help in porting sputext to 1.0 API Micael Beronius <mic...@te...> @@ -380,10 +380,10 @@ Fredrik Noring <no...@no...> Fredrik Noring <no...@no...> linux fb frontend. improved fb driver with zero copy -Marco Z<an...@us...> +Marco Zühlke <an...@us...> visualization improvements, demuxer cleanups -Julio Shez <j.s...@te...> +Julio Sánchez <j.s...@te...> patch for drawing OSD bitmaps Stuart Caie <ky...@4u...> @@ -422,7 +422,7 @@ Darren Vincent Hart <dv...@by...> Darren Vincent Hart <dv...@by...> libstk video out plugin -Philip Jnstedt <ph...@te...> +Philip Jägenstedt <ph...@te...> rework of aspect ratio to support float values Laurent Aimar <fe...@vi...> @@ -437,7 +437,7 @@ Jeroen Asselman <je...@as...> Jeroen Asselman <je...@as...> v4l improvements, audio support -NjT. Borch <Nja...@nj...> +Njål T. Borch <Nja...@nj...> Ipv6 patch Ramon van der Aar <rv...@it...> @@ -501,7 +501,7 @@ Daniel Mack <xi...@zo...> Daniel Mack <xi...@zo...> native Mac OS X video and audio output plugins -Andrang <oz...@al...> +André Pang <oz...@al...> Mac OS X fixes and framework/frontend work Annodex and CMML support @@ -514,7 +514,7 @@ Casper Boemann <cb...@bo...> Casper Boemann <cb...@bo...> reuse stubs for unresolved exports of win32 dlls -Thomas Hel...@sh...> +Thomas Hellström <uni...@sh...> XxMC driver with reworked XvMC support, including VIA CLE266 vld extensions. @@ -527,12 +527,12 @@ Barry Scott <bar...@on...> Barry Scott <bar...@on...> fix V4l source selection code by MRL -Reinhard Nissl <rn...@gm...> +Reinhard Nißl <rn...@gm...> contributions for VDR interoperability, bugfixes, overlay blending quality improvements, audio post plugin support for xine-ui, upmix_mono post plugin -Pekka Jkelen <pja...@cs...> +Pekka Jääskeläinen <pja...@cs...> DVB mouse-control and EPG enhancements Assaf Gillat <gi...@gm...> @@ -547,10 +547,10 @@ Keenan Pepper <kee...@gm...> Keenan Pepper <kee...@gm...> gcc4 patches -Dams Nad...@li...> +Dams Nadé <an...@li...> gcc4 patches -Diego 'Flameeyes' Pet...@ge...> +Diego 'Flameeyes' Pettenò <fla...@ge...> build system improvements, LE_64/BE_64 macro fixes Jason Tackaberry <ta...@sa...> diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e ChangeLog --- a/ChangeLog Thu May 17 01:10:41 2007 +0100 +++ b/ChangeLog Tue May 08 21:25:00 2007 +0100 @@ -33,6 +33,7 @@ xine-lib (1.1.7) (unreleased) * Ensure that the ffmpeg video image size is properly initialised. * Allow XxMC to switch back to software decoding; don't deinterlace if it's not needed for any given frame. + * Document dvba: MRLs (ATSC with full tuning info). xine-lib (1.1.6) * Split the DirectFB plugin into X11 and non-X versions. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e doc/man/en/xine.5 --- a/doc/man/en/xine.5 Thu May 17 01:10:41 2007 +0100 +++ b/doc/man/en/xine.5 Tue May 08 21:25:00 2007 +0100 @@ -54,6 +54,8 @@ to read from. Valid MRLs may be plain fi .br .BI dvbt://<channel_name>:<tuning_parameters> .br +.BI dvba://<channel_name>:<tuning_parameters> +.br .BR pvr:/<tmp_files_path>!<saved_files_path>!<max_page_age> " (for WinTV PVR 250 and 350)" .LP .TP @@ -199,13 +201,16 @@ of the following forms: of the following forms: .TP .B DVB-S -<frequency>:<polarisation>:<sat_no>:<sym_rate>:<vpid>:<apid> +<frequency>:<polarisation>:<sat-no>:<sym-rate>:<vpid>:<apid>:<service-id> .TP .B DVB-C -<frequency>:<inversion>:<sym_rate>:<fec>:<qam>:<vpid>:<apid> +<frequency>:<inversion>:<sym-rate>:<fec>:<qam>:<vpid>:<apid>:<service-id> .TP .B DVB-T -<frequency>:<inversion>:<bw>:<fec_hp>:<fec_lp>:<qam>:<transmission_mode>:<guardlist>:<hierarchy_info>:<vpid>:<apid> +<frequency>:<inversion>:<bw>:<fec-hp>:<fec-lp>:<qam>:<transmission-mode>:<guardlist>:<hierarchy-info>:<vpid>:<apid>:<service-id> +.TP +.B DVB-A +<frequency>:<qam>:<vpid>:<apid>:<service-id> .PP The individual parameters are: .TP 20 @@ -215,16 +220,16 @@ number, usually in kHz .B polarisation `v' or `h' .TP 20 -.B sat_no +.B sat-no unsigned long, usually 0 .TP 20 -.B sym_rate +.B sym-rate symbol rate in MSyms/sec .TP 20 .B inversion INVERSION_ON, INVERSION_OFF, INVERSION_AUTO .TP 20 -.B fec, fec_hp, fec_lp +.B fec, fec-hp, fec-lp FEC_1_2, FEC_2_3, FEC_3_4 ... FEC_8_9, FEC_AUTO, FEC_NONE .TP 20 .B qam @@ -233,13 +238,13 @@ QPSK, QAM_128, QAM_16 ... .B bw BANDWIDTH_6_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_8_MHZ .TP 20 -.B transmission_mode +.B transmission-mode TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K .TP 20 .B guardlist GUARD_INTERVAL_1_4, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_32, .TP 20 -.B hierarchy_info +.B hierarchy-info HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_NONE .TP 20 .B vpid @@ -247,6 +252,9 @@ video program ID .TP 20 .B apid audio program ID +.TP 20 +.B service-id +service ID (needed for now/next information etc.) .SH SUBTITLE .B external subtitle files (any mrl) .br diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/demuxers/demux_ts.c --- a/src/demuxers/demux_ts.c Thu May 17 01:10:41 2007 +0100 +++ b/src/demuxers/demux_ts.c Tue May 08 21:25:00 2007 +0100 @@ -337,7 +337,6 @@ typedef struct { int32_t packet_number; /* NEW: var to keep track of number of last read packets */ int32_t npkt_read; - int32_t read_zero; uint8_t buf[BUF_SIZE]; /* == PKT_SIZE * NPKT_PER_READ */ @@ -683,7 +682,11 @@ static int demux_ts_parse_pes_header (xi stream_id = p[3]; if (packet_len==0) + { + xprintf (xine, XINE_VERBOSITY_DEBUG, + "demux_ts: error pes length 0\n"); return 0; + } #ifdef TS_LOG printf ("demux_ts: packet stream id: %.2x len: %d (%x)\n", @@ -1244,7 +1247,7 @@ printf("Program Number is %i, looking fo case ISO_14496_PART10_VIDEO: if (this->videoPid == INVALID_PID) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT video pid 0x%.4x\n", pid); + printf ("demux_ts: PMT video pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif demux_ts_pes_new(this, this->media_num, pid, this->video_fifo,stream[0]); this->videoMedia = this->media_num; @@ -1266,7 +1269,7 @@ printf("Program Number is %i, looking fo } if(!found) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT audio pid 0x%.4x\n", pid); + printf ("demux_ts: PMT audio pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif demux_ts_pes_new(this, this->media_num, pid, this->audio_fifo,stream[0]); this->audio_tracks[this->audio_tracks_count].pid = pid; @@ -1280,7 +1283,7 @@ printf("Program Number is %i, looking fo break; case ISO_13818_PRIVATE: #ifdef TS_PMT_LOG - printf ("demux_ts: PMT streamtype 13818_PRIVATE, pid: 0x%.4x\n", pid); + printf ("demux_ts: PMT streamtype 13818_PRIVATE, pid: 0x%.4x type %2.2x\n", pid, stream[0]); for (i = 5; i < coded_length; i++) printf ("%.2x ", stream[i]); @@ -1289,7 +1292,7 @@ printf("Program Number is %i, looking fo break; case ISO_13818_TYPE_C: /* data carousel */ #ifdef TS_PMT_LOG - printf ("demux_ts: PMT streamtype 13818_TYPE_C, pid: 0x%.4x\n", pid); + printf ("demux_ts: PMT streamtype 13818_TYPE_C, pid: 0x%.4x type %2.2x\n", pid, stream[0]); #endif break; case ISO_13818_PES_PRIVATE: @@ -1305,7 +1308,7 @@ printf("Program Number is %i, looking fo } if(!found) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT AC3 audio pid 0x%.4x\n", pid); + printf ("demux_ts: PMT AC3 audio pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif demux_ts_pes_new(this, this->media_num, pid, this->audio_fifo, 0x81); @@ -1323,7 +1326,7 @@ printf("Program Number is %i, looking fo else if (stream[i] == 0x56) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT Teletext, pid: 0x%.4x\n", pid); + printf ("demux_ts: PMT Teletext, pid: 0x%.4x type %2.2x\n", pid, stream[0]); for (i = 5; i < coded_length; i++) printf ("%.2x ", stream[i]); @@ -1358,10 +1361,11 @@ printf("Program Number is %i, looking fo pid, this->video_fifo, stream[0]); #ifdef TS_LOG - printf("demux_ts: DVBSUB: pid 0x%.4x: %s page %ld %ld\n", + printf("demux_ts: DVBSUB: pid 0x%.4x: %s page %ld %ld type %2.2x\n", pid, lang->desc.lang, lang->desc.comp_page_id, - lang->desc.aux_page_id); + lang->desc.aux_page_id, + stream[0]); #endif } } @@ -1531,12 +1535,7 @@ static unsigned char * demux_synchronise */ if (this->npkt_read == 0) { - /* printf ("demux_ts: read 0 packets! (%d)\n", this->read_zero); */ - this->read_zero++; - } else this->read_zero = 0; - - if (this->read_zero > 200) { - xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: read 0 packets too many times!\n"); + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: read 0 packets\n"); this->status = DEMUX_FINISHED; return NULL; } diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/input_dvb.c --- a/src/input/input_dvb.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/input_dvb.c Tue May 08 21:25:00 2007 +0100 @@ -27,7 +27,7 @@ * Date Author * ---- ------ * - * 01-Feb-2005 Pekka Jkelen <po...@ik...> + * 01-Feb-2005 Pekka Jääskeläinen <po...@ik...> * * - This history log started. * - Disabled the automatic EPG updater thread until EPG demuxer @@ -111,6 +111,7 @@ #define LOG_VERBOSE /* #define LOG +#define LOG_READS */ #include "xine_internal.h" @@ -589,7 +590,8 @@ static tuner_t *tuner_init(xine_t * xine this = (tuner_t *) xine_xmalloc(sizeof(tuner_t)); _x_assert(this != NULL); - + + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "tuner_init adapter=%d\n", adapter); this->fd_frontend = -1; for (x = 0; x < MAX_FILTERS; x++) this->fd_pidfilter[x] = 0; @@ -634,7 +636,7 @@ static tuner_t *tuner_init(xine_t * xine xprintf(this->xine,XINE_VERBOSITY_DEBUG,"input_dvb: couldn't set EIT to nonblock: %s\n",strerror(errno)); /* and the internal filter used for PAT & PMT */ if(fcntl(this->fd_pidfilter[INTERNAL_FILTER], F_SETFL, O_NONBLOCK)<0) - xprintf(this->xine,XINE_VERBOSITY_DEBUG,"input_dvb: couldn't set EIT to nonblock: %s\n",strerror(errno)); + xprintf(this->xine,XINE_VERBOSITY_DEBUG,"input_dvb: couldn't set INTERNAL to nonblock: %s\n",strerror(errno)); /* and the frontend */ fcntl(this->fd_frontend, F_SETFL, O_NONBLOCK); @@ -1010,7 +1012,7 @@ static int tuner_tune_it (tuner_t *this, while (ioctl(this->fd_frontend, FE_GET_EVENT, &event) != -1); if (ioctl(this->fd_frontend, FE_SET_FRONTEND, front_param) <0) { - xprintf(this->xine, XINE_VERBOSITY_DEBUG, "setfront front: %s\n", strerror(errno)); + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "input_dvb: setfront front: %s\n", strerror(errno)); return 0; } @@ -1036,7 +1038,7 @@ static int tuner_tune_it (tuner_t *this, do { status = 0; if (ioctl(this->fd_frontend, FE_READ_STATUS, &status) < 0) { - xprintf(this->xine, XINE_VERBOSITY_DEBUG, "fe get event: %s\n", strerror(errno)); + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "input_dvb: fe get event: %s\n", strerror(errno)); return 0; } @@ -2476,8 +2478,10 @@ static off_t dvb_plugin_read (input_plug if (!this->tuned_in) return 0; dvb_event_handler (this); +#ifdef LOG_READS xprintf(this->class->xine,XINE_VERBOSITY_DEBUG, "input_dvb: reading %" PRIdMAX " bytes...\n", (intmax_t)len); +#endif #ifndef DVB_NO_BUFFERING nbc_check_buffers (this->nbc); @@ -2529,9 +2533,11 @@ static off_t dvb_plugin_read (input_plug break; } +#ifdef LOG_READS xprintf(this->class->xine,XINE_VERBOSITY_DEBUG, "input_dvb: got %" PRIdMAX " bytes (%" PRIdMAX "/%" PRIdMAX " bytes read)\n", (intmax_t)n, (intmax_t)total, (intmax_t)len); +#endif if (n > 0){ this->curpos += n; @@ -2905,13 +2911,13 @@ static int dvb_plugin_open(input_plugin_ { fprintf(stderr,"input_dvb: 2a %x\n",tuner->feinfo.type); /* - * This is dvbc://<channel name>:<qam tuning parameters> + * This is dvba://<channel name>:<atsc tuning parameters> */ if (tuner->feinfo.type != FE_ATSC) { fprintf(stderr,"input_dvb: FAILED 1\n"); xprintf(this->class->xine, XINE_VERBOSITY_LOG, - _("input_dvb: dvbc mrl specified but the tuner doesn't appear to be QAM (DVB-C)\n")); + _("input_dvb: dvba mrl specified but the tuner doesn't appear to be ATSC (DVB-A)\n")); tuner_dispose(tuner); return 0; } diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/input_http.c --- a/src/input/input_http.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/input_http.c Tue May 08 21:25:00 2007 +0100 @@ -829,7 +829,7 @@ static int http_plugin_open (input_plugi _("input_http: http status not 2xx: >%d %s<\n"), httpcode, httpstatus); return -7; - } else if (httpcode == 403) { + } else if (httpcode == 403 || httpcode == 401) { _x_message(this->stream, XINE_MSG_PERMISSION_ERROR, this->mrl, NULL); xine_log (this->stream->xine, XINE_LOG_MSG, _("input_http: http status not 2xx: >%d %s<\n"), diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/input_plugin.h --- a/src/input/input_plugin.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/input_plugin.h Tue May 08 21:25:00 2007 +0100 @@ -115,6 +115,8 @@ struct input_plugin_s { /* * read nlen bytes, return number of bytes read + * Should block until some bytes available for read; + * a return value of 0 indicates no data available */ off_t (*read) (input_plugin_t *this, char *buf, off_t nlen); diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/input_v4l.c --- a/src/input/input_v4l.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/input_v4l.c Tue May 08 21:25:00 2007 +0100 @@ -517,11 +517,9 @@ static int extract_mrl(v4l_input_plugin_ /* Get frequency, if available */ sscanf(locator, "/%d", &frequency); - lprintf("Tuner name: '%s' freq: %d\n", tuner_name, frequency); - } else { - xprintf(this->stream->xine, XINE_VERBOSITY_LOG, - "input_v4l: No tuner name given. Expected syntax: v4l:/tuner/frequency\n" - "input_v4l: Using currently tuned settings\n"); + + /* cannot use xprintf to log in this routine */ + lprintf("input_v4l: Tuner name: %s frequency %d\n", tuner_name, frequency ); } this->frequency = frequency; diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/bswap.h --- a/src/input/libdvdnav/bswap.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/bswap.h Tue May 08 21:25:00 2007 +0100 @@ -3,7 +3,7 @@ /* * Copyright (C) 2000, 2001 Billy Biggs <ve...@du...>, - * Hn Hjort <d95...@dt...> + * Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/decoder.c --- a/src/input/libdvdnav/decoder.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/decoder.c Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Martin Norb, Hn Hjort + * Copyright (C) 2000, 2001 Martin Norbäck, Håkan Hjort * 2002-2004 the dvdnav project * * This file is part of libdvdnav, a DVD navigation library. It is modified diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/decoder.h --- a/src/input/libdvdnav/decoder.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/decoder.h Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Martin Norb, Hn Hjort + * Copyright (C) 2000, 2001 Martin Norbäck, Håkan Hjort * * This file is part of libdvdnav, a DVD navigation library. It is modified * from a file originally part of the Ogle DVD player. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/dvd_input.c --- a/src/input/libdvdnav/dvd_input.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/dvd_input.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* * Copyright (C) 2002 Samuel Hocevar <sa...@zo...>, - * Hn Hjort <d95...@dt...> + * Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/dvd_input.h --- a/src/input/libdvdnav/dvd_input.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/dvd_input.h Tue May 08 21:25:00 2007 +0100 @@ -3,7 +3,7 @@ /* * Copyright (C) 2001, 2002 Samuel Hocevar <sa...@zo...>, - * Hn Hjort <d95...@dt...> + * Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/dvd_reader.c --- a/src/input/libdvdnav/dvd_reader.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/dvd_reader.c Tue May 08 21:25:00 2007 +0100 @@ -1,7 +1,7 @@ /* * Copyright (C) 2001-2004 Billy Biggs <ve...@du...>, - * Hn Hjort <d95...@dt...>, - * BjEnglund <d4...@dt...> + * Håkan Hjort <d95...@dt...>, + * Björn Englund <d4...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/dvd_reader.h --- a/src/input/libdvdnav/dvd_reader.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/dvd_reader.h Tue May 08 21:25:00 2007 +0100 @@ -3,8 +3,8 @@ /* * Copyright (C) 2001, 2002 Billy Biggs <ve...@du...>, - * Hn Hjort <d95...@dt...>, - * BjEnglund <d4...@dt...> + * Håkan Hjort <d95...@dt...>, + * Björn Englund <d4...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/dvd_types.h --- a/src/input/libdvdnav/dvd_types.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/dvd_types.h Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 BjEnglund, Hn Hjort + * Copyright (C) 2000, 2001 Björn Englund, Håkan Hjort * * This file is part of libdvdnav, a DVD navigation library. It is a modified * file originally part of the Ogle DVD player project. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/dvd_udf.c --- a/src/input/libdvdnav/dvd_udf.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/dvd_udf.c Tue May 08 21:25:00 2007 +0100 @@ -4,7 +4,7 @@ * * Modifications by: * Billy Biggs <ve...@du...>. - * BjEnglund <d4...@dt...>. + * Björn Englund <d4...@dt...>. * * dvdudf: parse and read the UDF volume information of a DVD Video * Copyright (C) 1999 Christian Wolff for convergence integrated media diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/dvd_udf.h --- a/src/input/libdvdnav/dvd_udf.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/dvd_udf.h Tue May 08 21:25:00 2007 +0100 @@ -7,7 +7,7 @@ * * Modifications by: * Billy Biggs <ve...@du...>. - * BjEnglund <d4...@dt...>. + * Björn Englund <d4...@dt...>. * * dvdudf: parse and read the UDF volume information of a DVD Video * Copyright (C) 1999 Christian Wolff for convergence integrated media diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/ifo_read.c --- a/src/input/libdvdnav/ifo_read.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/ifo_read.c Tue May 08 21:25:00 2007 +0100 @@ -1,7 +1,7 @@ /* * Copyright (C) 2000, 2001, 2002, 2003 - * BjEnglund <d4...@dt...>, - * Hn Hjort <d95...@dt...> + * Björn Englund <d4...@dt...>, + * Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/ifo_read.h --- a/src/input/libdvdnav/ifo_read.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/ifo_read.h Tue May 08 21:25:00 2007 +0100 @@ -2,8 +2,8 @@ #define IFO_READ_H_INCLUDED /* - * Copyright (C) 2000, 2001, 2002 BjEnglund <d4...@dt...>, - * Hn Hjort <d95...@dt...> + * Copyright (C) 2000, 2001, 2002 Björn Englund <d4...@dt...>, + * Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/ifo_types.h --- a/src/input/libdvdnav/ifo_types.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/ifo_types.h Tue May 08 21:25:00 2007 +0100 @@ -2,8 +2,8 @@ #define IFO_TYPES_H_INCLUDED /* - * Copyright (C) 2000, 2001 BjEnglund <d4...@dt...>, - * Hn Hjort <d95...@dt...> + * Copyright (C) 2000, 2001 Björn Englund <d4...@dt...>, + * Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/nav_print.c --- a/src/input/libdvdnav/nav_print.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/nav_print.c Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001, 2002, 2003 Hn Hjort <d95...@dt...> + * Copyright (C) 2000, 2001, 2002, 2003 Håkan Hjort <d95...@dt...> * * Much of the contents in this file is based on VOBDUMP. * diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/nav_print.h --- a/src/input/libdvdnav/nav_print.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/nav_print.h Tue May 08 21:25:00 2007 +0100 @@ -3,7 +3,7 @@ /* * Copyright (C) 2001, 2002 Billy Biggs <ve...@du...>, - * Hn Hjort <d95...@dt...> + * Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/nav_read.c --- a/src/input/libdvdnav/nav_read.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/nav_read.c Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001, 2002, 2003 Hn Hjort <d95...@dt...> + * Copyright (C) 2000, 2001, 2002, 2003 Håkan Hjort <d95...@dt...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/nav_read.h --- a/src/input/libdvdnav/nav_read.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/nav_read.h Tue May 08 21:25:00 2007 +0100 @@ -2,7 +2,7 @@ #define NAV_READ_H_INCLUDED /* - * Copyright (C) 2000, 2001, 2002 Hn Hjort <d95...@dt...>. + * Copyright (C) 2000, 2001, 2002 Håkan Hjort <d95...@dt...>. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/nav_types.h --- a/src/input/libdvdnav/nav_types.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/nav_types.h Tue May 08 21:25:00 2007 +0100 @@ -2,7 +2,7 @@ #define NAV_TYPES_H_INCLUDED /* - * Copyright (C) 2000, 2001, 2002 Hn Hjort <d95...@dt...> + * Copyright (C) 2000, 2001, 2002 Håkan Hjort <d95...@dt...> * * The data structures in this file should represent the layout of the * pci and dsi packets as they are stored in the stream. Information diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/vm.c --- a/src/input/libdvdnav/vm.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/vm.c Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Hn Hjort + * Copyright (C) 2000, 2001 Håkan Hjort * Copyright (C) 2001 Rich Wareham <ric...@us...> * 2002-2004 the dvdnav project * diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/vm.h --- a/src/input/libdvdnav/vm.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/vm.h Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Hn Hjort + * Copyright (C) 2000, 2001 Håkan Hjort * Copyright (C) 2001 Rich Wareham <ric...@us...> * * This file is part of libdvdnav, a DVD navigation library. It is modified diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/vmcmd.c --- a/src/input/libdvdnav/vmcmd.c Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/vmcmd.c Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Martin Norb, Hn Hjort + * Copyright (C) 2000, 2001 Martin Norbäck, Håkan Hjort * 2002-2004 the dvdnav project * * This file is part of libdvdnav, a DVD navigation library. It is modified diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/libdvdnav/vmcmd.h --- a/src/input/libdvdnav/vmcmd.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/libdvdnav/vmcmd.h Tue May 08 21:25:00 2007 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Martin Norb, Hn Hjort + * Copyright (C) 2000, 2001 Martin Norbäck, Håkan Hjort * * This file is part of libdvdnav, a DVD navigation library. It is modified * from a file originally part of the Ogle DVD player. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/input/vcd/libcdio/cdio/cd_types.h --- a/src/input/vcd/libcdio/cdio/cd_types.h Thu May 17 01:10:41 2007 +0100 +++ b/src/input/vcd/libcdio/cdio/cd_types.h Tue May 08 21:25:00 2007 +0100 @@ -3,7 +3,7 @@ Copyright (C) 2003 Rocky Bernstein <ro...@pa...> Copyright (C) 1996,1997,1998 Gerd Knorr <kr...@by...> - and Heiko Eieldt <he...@he...> + and Heiko Eißfeldt <he...@he...> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libfaad/mdct.c --- a/src/libfaad/mdct.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libfaad/mdct.c Tue May 08 21:25:00 2007 +0100 @@ -33,7 +33,7 @@ * As described in: * P. Duhamel, Y. Mahieux, and J.P. Petit, "A Fast Algorithm for the * Implementation of Filter Banks Based on 'Time Domain Aliasing - * Cancellation," IEEE Proc. on ICASSP91, 1991, pp. 2209-2212. + * Cancellation'," IEEE Proc. on ICASSP'91, 1991, pp. 2209-2212. * * * As of April 6th 2002 completely rewritten. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libfaad/syntax.c --- a/src/libfaad/syntax.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libfaad/syntax.c Tue May 08 21:25:00 2007 +0100 @@ -2048,11 +2048,11 @@ static uint16_t extension_payload(bitfil return n; case EXT_FILL_DATA: /* fill_nibble = */ faad_getbits(ld, 4 - DEBUGVAR(1,136,"extension_payload(): fill_nibble")); /* must be 0000 */ + DEBUGVAR(1,136,"extension_payload(): fill_nibble")); /* must be '0000' */ for (i = 0; i < count-1; i++) { /* fill_byte[i] = */ faad_getbits(ld, 8 - DEBUGVAR(1,88,"extension_payload(): fill_byte")); /* must be 10100101 */ + DEBUGVAR(1,88,"extension_payload(): fill_byte")); /* must be '10100101' */ } return count; case EXT_DATA_ELEMENT: diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libmpeg2/idct_mlib.c --- a/src/libmpeg2/idct_mlib.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libmpeg2/idct_mlib.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* * idct_mlib.c - * Copyright (C) 1999-2002 Hn Hjort <d95...@dt...> + * Copyright (C) 1999-2002 Håkan Hjort <d95...@dt...> * * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. * See http://libmpeg2.sourceforge.net/ for updates. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libmpeg2/idct_mlib.h --- a/src/libmpeg2/idct_mlib.h Thu May 17 01:10:41 2007 +0100 +++ b/src/libmpeg2/idct_mlib.h Tue May 08 21:25:00 2007 +0100 @@ -1,7 +1,7 @@ /* * idct_mlib.h * - * Copyright (C) 1999, Hn Hjort <d95...@dt...> + * Copyright (C) 1999, Håkan Hjort <d95...@dt...> * * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. * diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libmpeg2/motion_comp_mlib.c --- a/src/libmpeg2/motion_comp_mlib.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libmpeg2/motion_comp_mlib.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* * motion_comp_mlib.c - * Copyright (C) 2000-2002 Hn Hjort <d95...@dt...> + * Copyright (C) 2000-2002 Håkan Hjort <d95...@dt...> * * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. * See http://libmpeg2.sourceforge.net/ for updates. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libmpeg2new/libmpeg2/idct_mlib.c --- a/src/libmpeg2new/libmpeg2/idct_mlib.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libmpeg2new/libmpeg2/idct_mlib.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* * idct_mlib.c - * Copyright (C) 1999-2003 Hn Hjort <d95...@dt...> + * Copyright (C) 1999-2003 Håkan Hjort <d95...@dt...> * * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. * See http://libmpeg2.sourceforge.net/ for updates. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libmpeg2new/libmpeg2/motion_comp_mlib.c --- a/src/libmpeg2new/libmpeg2/motion_comp_mlib.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libmpeg2new/libmpeg2/motion_comp_mlib.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* * motion_comp_mlib.c - * Copyright (C) 2000-2003 Hn Hjort <d95...@dt...> + * Copyright (C) 2000-2003 Håkan Hjort <d95...@dt...> * * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. * See http://libmpeg2.sourceforge.net/ for updates. diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libspucc/cc_decoder.c --- a/src/libspucc/cc_decoder.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libspucc/cc_decoder.c Tue May 08 21:25:00 2007 +0100 @@ -223,10 +223,14 @@ static const uint8_t *const cc_alpha_pal /* mapping from PAC row code to actual CC row */ static const int rowdata[] = {10, -1, 0, 1, 2, 3, 11, 12, 13, 14, 4, 5, 6, 7, 8, 9}; -/* FIXME: do real TM */ -/* must be mapped as a music note in the captioning font */ -static const char specialchar[] = {'','','','','T','','','',' - TRANSP_SPACE,'''''+/* FIXME: do real ™ (U+2122) */ +/* Code 182 must be mapped as a musical note ('♪', U+266A) in the caption font */ +static const char specialchar[] = { + 174 /* ® */, 176 /* ° */, 189 /* ½ */, 191 /* ¿ */, + 'T' /* ™ */, 162 /* ¢ */, 163 /* £ */, 182 /* ¶ => ♪ */, + 224 /* à */, TRANSP_SPACE,232 /* è */, 226 /* â */, + 234 /* ê */, 238 /* î */, 244 /* ô */, 251 /* û */ +}; /* character translation table - EIA 608 codes are not all the same as ASCII */ static char chartbl[128]; @@ -427,16 +431,16 @@ static void build_char_table(void) for (i = 0; i < 128; i++) chartbl[i] = (char) i; /* now the special codes */ - chartbl[0x2a] = ' - chartbl[0x5c] = ' - chartbl[0x5e] = ' - chartbl[0x5f] = '- chartbl[0x60] = ' chartbl[0x7b] = ' - chartbl[0x7c] = '- chartbl[0x7d] = '; - chartbl[0x7e] = '- chartbl[0x7f] = ''; /* FIXME: this should be a solid block */ + chartbl[0x2a] = 225; /* á */ + chartbl[0x5c] = 233; /* é */ + chartbl[0x5e] = 237; /* í */ + chartbl[0x5f] = 243; /* ó */ + chartbl[0x60] = 250; /* ú */ + chartbl[0x7b] = 231; /* ç */ + chartbl[0x7c] = 247; /* ÷ */ + chartbl[0x7d] = 209; /* Ñ */ + chartbl[0x7e] = 241; /* ñ */ + chartbl[0x7f] = 164; /* ¤ FIXME: should be a solid block ('█'; U+2588) */ } diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/libw32dll/wine/pe_image.c --- a/src/libw32dll/wine/pe_image.c Thu May 17 01:10:41 2007 +0100 +++ b/src/libw32dll/wine/pe_image.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* * Copyright 1994 Eric Youndale & Erik Bos - * Copyright 1995 Martin von L + * Copyright 1995 Martin von Löwis * Copyright 1996-98 Marcus Meissner * * based on Eric Youndale's pe-test and: diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/post/goom/goom_core.c --- a/src/post/goom/goom_core.c Thu May 17 01:10:41 2007 +0100 +++ b/src/post/goom/goom_core.c Tue May 08 21:25:00 2007 +0100 @@ -151,7 +151,7 @@ guint32 *goom_update (PluginInfo *goomIn guint32 pointWidth; guint32 pointHeight; int i; - float largfactor; /* elargissement de l'intervalle d'lution des points */ + float largfactor; /* elargissement de l'intervalle d'évolution des points */ Pixel *tmp; ZoomFilterData *pzfd; @@ -215,7 +215,7 @@ guint32 *goom_update (PluginInfo *goomIn } } - /* par dut pas de changement de zoom */ + /* par défaut pas de changement de zoom */ pzfd = NULL; /* @@ -532,7 +532,7 @@ guint32 *goom_update (PluginInfo *goomIn } /* - * arreter de decrnter au bout d'un certain temps + * arreter de decrémenter au bout d'un certain temps */ if ((goomInfo->cycle % 101 == 0) && (goomInfo->update.zoomFilterData.pertedec == 7)) { pzfd = &goomInfo->update.zoomFilterData; diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/post/goom/goom_filters.h --- a/src/post/goom/goom_filters.h Thu May 17 01:10:41 2007 +0100 +++ b/src/post/goom/goom_filters.h Tue May 08 21:25:00 2007 +0100 @@ -16,7 +16,7 @@ struct _ZOOM_FILTER_DATA unsigned char sqrtperte; int middleX, middleY; /* milieu de l'effet */ char reverse; /* inverse la vitesse */ - char mode; /* type d'effet ppliquer (cf les #define) */ + char mode; /* type d'effet à appliquer (cf les #define) */ /** @since June 2001 */ int hPlaneEffect; /* deviation horitontale */ int vPlaneEffect; /* deviation verticale */ diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/post/goom/mmx.c --- a/src/post/goom/mmx.c Thu May 17 01:10:41 2007 +0100 +++ b/src/post/goom/mmx.c Tue May 08 21:25:00 2007 +0100 @@ -109,7 +109,7 @@ void zoom_filter_mmx (int prevX, int pre "pmullw %%mm4, %%mm1 \n\t" "pmullw %%mm5, %%mm2 \n\t" - /* ajout des valeurs obtenues a valeur finale */ + /* ajout des valeurs obtenues à la valeur finale */ "paddw %%mm1, %%mm0 \n\t" "paddw %%mm2, %%mm0 \n\t" diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/post/goom/sound_tester.c --- a/src/post/goom/sound_tester.c Thu May 17 01:10:41 2007 +0100 +++ b/src/post/goom/sound_tester.c Tue May 08 21:25:00 2007 +0100 @@ -90,7 +90,7 @@ void evaluate_sound(gint16 data[2][512], if (info->goom_limit>1) info->goom_limit=1; - /* toute les 2 secondes : vfier si le taux de goom est correct + /* toute les 2 secondes : vérifier si le taux de goom est correct * et le modifier sinon.. */ if (info->cycle % 64 == 0) { if (info->speedvar<0.01f) diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/post/goom/xmmx.c --- a/src/post/goom/xmmx.c Thu May 17 01:10:41 2007 +0100 +++ b/src/post/goom/xmmx.c Tue May 08 21:25:00 2007 +0100 @@ -234,7 +234,7 @@ void zoom_filter_xmmx (int prevX, int pr pmullw_r2r (mm4, mm1); pmullw_r2r (mm5, mm2); - /* ajout des valeurs obtenues a valeur finale */ + /* ajout des valeurs obtenues à la valeur finale */ paddw_r2r (mm1, mm0); paddw_r2r (mm2, mm0); diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/libdha/kernelhelper/dhahelper.c --- a/src/video_out/libdha/kernelhelper/dhahelper.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/libdha/kernelhelper/dhahelper.c Tue May 08 21:25:00 2007 +0100 @@ -3,7 +3,7 @@ (C) 2002 Alex Beregszaszi <al...@na...> (C) 2002-2003 Nick Kurshev <nic...@ma...> - (C) 2002-2004 M Rullg <mr...@us...> + (C) 2002-2004 Måns Rullgård <mr...@us...> Accessing hardware from userspace as USER (no root needed!) @@ -109,7 +109,7 @@ #define irqreturn(n) return #endif -MODULE_AUTHOR("Alex Beregszaszi <al...@na...>, Nick Kurshev <nic...@ma...>, M Rullg <mr...@us...>"); +MODULE_AUTHOR("Alex Beregszaszi <al...@na...>, Nick Kurshev <nic...@ma...>, Måns Rullgård <mr...@us...>"); MODULE_DESCRIPTION("Provides userspace access to hardware"); #ifdef MODULE_LICENSE MODULE_LICENSE("GPL"); diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/libdha/libdha.c --- a/src/video_out/libdha/libdha.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/libdha/libdha.c Tue May 08 21:25:00 2007 +0100 @@ -3,7 +3,7 @@ Copyrights: 1996/10/27 - Robin Cutshaw (ro...@xf...) XFree86 3.3.3 implementation - 1999 - vind Aabling. + 1999 - Øyvind Aabling. Modified for GATOS/win/gfxdump. 2002 - library implementation by Nick Kurshev diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/libdha/libdha.h --- a/src/video_out/libdha/libdha.h Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/libdha/libdha.h Tue May 08 21:25:00 2007 +0100 @@ -3,7 +3,7 @@ Copyrights: 1996/10/27 - Robin Cutshaw (ro...@xf...) XFree86 3.3.3 implementation - 1999 - vind Aabling. + 1999 - Øyvind Aabling. Modified for GATOS/win/gfxdump. 2002 - library implementation by Nick Kurshev diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/libdha/pci.c --- a/src/video_out/libdha/pci.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/libdha/pci.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* (C) 2002 - library implementation by Nick Kyrshev - XFree86 3.3.3 scanpci.c, modified for GATOS/win/gfxdump by vind Aabling. + XFree86 3.3.3 scanpci.c, modified for GATOS/win/gfxdump by Øyvind Aabling. */ /* $XConsortium: scanpci.c /main/25 1996/10/27 11:48:40 kaleb $ */ /* diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/libdha/ports.c --- a/src/video_out/libdha/ports.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/libdha/ports.c Tue May 08 21:25:00 2007 +0100 @@ -1,6 +1,6 @@ /* (C) 2002 - library implementation by Nick Kyrshev - XFree86 3.3.3 scanpci.c, modified for GATOS/win/gfxdump by vind Aabling. + XFree86 3.3.3 scanpci.c, modified for GATOS/win/gfxdump by Øyvind Aabling. */ /* $XConsortium: scanpci.c /main/25 1996/10/27 11:48:40 kaleb $ */ /* diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/video_out_xv.c --- a/src/video_out/video_out_xv.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/video_out_xv.c Tue May 08 21:25:00 2007 +0100 @@ -56,6 +56,7 @@ #include <X11/extensions/XShm.h> #include <X11/extensions/Xv.h> #include <X11/extensions/Xvlib.h> +#include <time.h> #define LOG_MODULE "video_out_xv" #define LOG_VERBOSE @@ -262,7 +263,9 @@ static XvImage *create_ximage (xv_driver height = 1; if (this->use_pitch_alignment) { + lprintf ("use_pitch_alignment old width=%d",width); width = (width + 7) & ~0x7; + lprintf ("use_pitch_alignment new width=%d",width); } switch (format) { @@ -286,6 +289,7 @@ static XvImage *create_ximage (xv_driver gX11Fail = 0; x11_InstallXErrorHandler (this); + lprintf( "XvShmCreateImage format=0x%x, width=%d, height=%d\n", xv_format, width, height ); image = XvShmCreateImage(this->display, this->xv_port, xv_format, 0, width, height, shminfo); @@ -296,6 +300,22 @@ static XvImage *create_ximage (xv_driver _("%s: => not using MIT Shared Memory extension.\n"), LOG_MODULE); this->use_shm = 0; goto finishShmTesting; + } + + { + int q; + + lprintf( "XvImage id %d\n", image->id ); + lprintf( "XvImage width %d\n", image->width ); + lprintf( "XvImage height %d\n", image->height ); + lprintf( "XvImage data_size %d\n", image->data_size ); + lprintf( "XvImage num_planes %d\n", image->num_planes ); + + for( q=0; q < image->num_planes; q++) + { + lprintf( "XvImage pitches[%d] %d\n", q, image->pitches[q] ); + lprintf( "XvImage offsets[%d] %d\n", q, image->offsets[q] ); + } } shminfo->shmid = shmget(IPC_PRIVATE, image->data_size, IPC_CREAT | 0777); @@ -754,6 +774,16 @@ static int xv_redraw_needed (vo_driver_t return ret; } +/* Used in xv_display_frame to determine how long XvShmPutImage takes + - if slower than 60fps, print a message +*/ +static double timeOfDay() +{ + struct timeval t; + gettimeofday( &t, NULL ); + return ((double)t.tv_sec) + (((double)t.tv_usec)/1000000.0); +} + static void xv_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen) { xv_driver_t *this = (xv_driver_t *) this_gen; xv_frame_t *frame = (xv_frame_t *) frame_gen; @@ -797,9 +827,14 @@ static void xv_display_frame (vo_driver_ * ask for offset and output size */ xv_redraw_needed (this_gen); + { + double start_time; + double end_time; + double elapse_time; + int factor; LOCK_DISPLAY(this); - + start_time = timeOfDay(); if (this->use_shm) { XvShmPutImage(this->display, this->xv_port, this->drawable, this->gc, this->cur_frame->image, @@ -818,8 +853,19 @@ static void xv_display_frame (vo_driver_ } XSync(this->display, False); + end_time = timeOfDay(); UNLOCK_DISPLAY(this); + + elapse_time = end_time - start_time; + factor = (int)(elapse_time/(1.0/60.0)); + + if( factor > 1 ) + { + lprintf( "%s PutImage %dX interval (%fs)\n", + log_line_prefix(), factor, elapse_time ); + } + } /* printf (LOG_MODULE ": xv_display_frame... done\n"); diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/vidix/drivers/cyberblade_vid.c --- a/src/video_out/vidix/drivers/cyberblade_vid.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/vidix/drivers/cyberblade_vid.c Tue May 08 21:25:00 2007 +0100 @@ -4,7 +4,7 @@ Copyright (C) 2002 by Alastair M. Robinson. Official homepage: http://www.blackfiveservices.co.uk/EPIAVidix.shtml - Based on Permedia 3 driver by M Rullg + Based on Permedia 3 driver by Måns Rullgård Thanks to Gilles Frattini for bugfixes diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/vidix/drivers/pm2_vid.c --- a/src/video_out/vidix/drivers/pm2_vid.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/vidix/drivers/pm2_vid.c Tue May 08 21:25:00 2007 +0100 @@ -1,7 +1,7 @@ /** Driver for 3DLabs Permedia 2. - Copyright (C) 2002 M Rullg + Copyright (C) 2002 Måns Rullgård This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -62,7 +62,7 @@ static vidix_capability_t pm2_cap = static vidix_capability_t pm2_cap = { "3DLabs Permedia2 driver", - "M Rullg <mr...@us...>", + "Måns Rullgård <mr...@us...>", TYPE_OUTPUT, { 0, 0, 0, 0 }, 2048, diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/vidix/drivers/pm3_vid.c --- a/src/video_out/vidix/drivers/pm3_vid.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/vidix/drivers/pm3_vid.c Tue May 08 21:25:00 2007 +0100 @@ -1,7 +1,7 @@ /** Driver for 3DLabs GLINT R3 and Permedia3 chips. - Copyright (C) 2002, 2003 M Rullg + Copyright (C) 2002, 2003 Måns Rullgård This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -63,7 +63,7 @@ static vidix_capability_t pm3_cap = static vidix_capability_t pm3_cap = { "3DLabs GLINT R3/Permedia3 driver", - "M Rullg <mr...@us...>", + "Måns Rullgård <mr...@us...>", TYPE_OUTPUT, { 0, 0, 0, 0 }, 2048, diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/xvmc_vld.c --- a/src/video_out/xvmc_vld.c Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/xvmc_vld.c Tue May 08 21:25:00 2007 +0100 @@ -22,7 +22,7 @@ * * xvmc_vld.c, X11 decoding accelerated video extension interface for xine * - * Author: Thomas Hellstr(2004) + * Author: Thomas Hellström, (2004) */ #include "xxmc.h" diff -r b6333d7b37ba4dd26e7c2b8cd845028a4f3d10f2 -r d042d174d6fb32a4314a6bb1a531d2ddd807312e src/video_out/xxmc.h --- a/src/video_out/xxmc.h Thu May 17 01:10:41 2007 +0100 +++ b/src/video_out/xxmc.h Tue May 08 21:25:00 2007 +0100 @@ -31,7 +31,7 @@ * * overlay support by James Courtier-Dutton <Ja...@su...> - July 2001 * X11 unscaled overlay support by Miguel Freitas - Nov 2003 - * XxMC implementation by Thomas Hellstr August 2004 + * XxMC implementation by Thomas Hellström - August 2004 */ #ifndef _XXMC_H |
From: <li...@yo...> - 2007-05-28 15:51:47
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1180367493 -3600 # Node ID 3dd4e0765483c1deb9b7b957bc43f8df9a11796b # Parent ad06763ba1d488cd666fd3c921f722fa2d6ce32b # Parent 5657853030272531daf0fc7c1d0617ace011cf89 Merge from 1.1. diff -r 3dd4e0765483c1deb9b7b957bc43f8df9a11796b -r ad06763ba1d488cd666fd3c921f722fa2d6ce32b ChangeLog --- a/ChangeLog Mon May 28 16:51:33 2007 +0100 +++ b/ChangeLog Sat May 26 03:37:45 2007 +0100 @@ -38,6 +38,7 @@ xine-lib (1.1.7) (unreleased) * Allow XxMC to switch back to software decoding; don't deinterlace if it's not needed for any given frame. * Document dvba: MRLs (ATSC with full tuning info). + * Fix VCD playback (broken since 1.1.4). xine-lib (1.1.6) * Split the DirectFB plugin into X11 and non-X versions. diff -r 3dd4e0765483c1deb9b7b957bc43f8df9a11796b -r ad06763ba1d488cd666fd3c921f722fa2d6ce32b src/input/vcd/xineplug_inp_vcd.c --- a/src/input/vcd/xineplug_inp_vcd.c Mon May 28 16:51:33 2007 +0100 +++ b/src/input/vcd/xineplug_inp_vcd.c Sat May 26 03:37:45 2007 +0100 @@ -160,6 +160,7 @@ struct vcd_input_plugin_tag { region; false otherwise */ vcdplayer_t player ; + char *player_device; }; vcd_input_plugin_t my_vcd; @@ -348,7 +349,9 @@ vcd_build_mrl_list(vcd_input_class_t *cl */ return false; } - + + free (my_vcd.player_device); + my_vcd.player_device = strdup (vcd_device); p_vcdinfo = vcdplayer->vcd; i_entries = vcdplayer->i_entries; class->mrl_track_offset = -1; @@ -447,9 +450,7 @@ vcd_build_mrl_list(vcd_input_class_t *cl "offsets are track: %d, entry: %d, play: %d seg: %d\n", class->mrl_track_offset, class->mrl_entry_offset, class->mrl_play_offset, class->mrl_segment_offset); - - if (!was_open) - vcdio_close(vcdplayer); + return true; } @@ -688,6 +689,13 @@ vcd_plugin_read_block (input_plugin_t *t /* Should we change this to <= instead of !=? */ if (i_len != M2F2_SECTOR_SIZE) return NULL; + /* If VCD isn't open, we need to open it now. */ + if (!p_vcdplayer->b_opened) { + if (!vcdio_open(p_vcdplayer, my_vcd.player_device)) { + return NULL; + } + } + if (vcd_handle_events()) goto read_block; if (p_vcdplayer->i_still > 0) { @@ -920,7 +928,8 @@ vcd_close(vcd_input_class_t *class) { xine_free_mrls(&(class->num_mrls), class->mrls); FREE_AND_NULL(my_vcd.mrl); - vcdio_close(&my_vcd.player); + if (my_vcd.player.b_opened) + vcdio_close(&my_vcd.player); } @@ -941,7 +950,8 @@ vcd_class_eject_media (input_class_t *th ret = cdio_eject_media(&cdio); if ((ret == 0) || (ret == 2)) { - vcdio_close(&my_vcd.player); + if (my_vcd.player.b_opened) + vcdio_close(&my_vcd.player); return 1; } else return 0; } @@ -1408,12 +1418,8 @@ vcd_plugin_dispose(input_plugin_t *this_ my_vcd.stream = NULL; -#if 0 - vcd_input_plugin_t *t= (vcd_input_plugin_t *) this_gen; - vcdplayer_t *this = t->v; - - if (NULL==this) return; -#endif + if (my_vcd.player.b_opened) + vcdio_close(&my_vcd.player); } /* Pointer to vcdimager default log handler. Set by init_input_plugin @@ -1972,6 +1978,8 @@ _("For tracking down bugs in the VCD plu my_vcd.player.play_item.num = VCDINFO_INVALID_ENTRY; my_vcd.player.play_item.type = VCDINFO_ITEM_TYPE_ENTRY; + my_vcd.player_device = NULL; + return class; } |
From: <li...@yo...> - 2007-05-30 15:16:24
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1180538157 -3600 # Node ID 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 # Parent d1ea9326271cd15789df844e7a1e869bea8b0f11 # Parent ed554276888fe00df5c7f599c7ae6072e9ca212d Merge from 1.1. diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 ChangeLog --- a/ChangeLog Wed May 30 16:15:57 2007 +0100 +++ b/ChangeLog Wed May 30 15:58:10 2007 +0100 @@ -39,6 +39,10 @@ xine-lib (1.1.7) (unreleased) not needed for any given frame. * Document dvba: MRLs (ATSC with full tuning info). * Fix VCD playback (broken since 1.1.4). + * Fix demuxing of FLAC files with ID3v2 tags. + * Use the integer versions of Speex decoding functions, this avoids an + iteration over the decoded frames to transform them to integers, and + also avoids an improper saturation. xine-lib (1.1.6) * Split the DirectFB plugin into X11 and non-X versions. diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 src/demuxers/demux_aac.c --- a/src/demuxers/demux_aac.c Wed May 30 16:15:57 2007 +0100 +++ b/src/demuxers/demux_aac.c Wed May 30 15:58:10 2007 +0100 @@ -84,7 +84,7 @@ static int open_aac_file(demux_aac_t *th /* Check if there's an ID3v2 tag at the start */ if ( id3v2_istag(peak) ) { - id3size = id3v2_tagsize(&peak[6]); + id3size = BE_32_synchsafe(&peak[6]); this->input->seek(this->input, 4, SEEK_SET); diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 src/demuxers/demux_flac.c --- a/src/demuxers/demux_flac.c Wed May 30 16:15:57 2007 +0100 +++ b/src/demuxers/demux_flac.c Wed May 30 15:58:10 2007 +0100 @@ -90,10 +90,12 @@ static int open_flac_file(demux_flac_t * flac->seekpoints = NULL; - /* fetch the file signature, get enough bytes so that id3 can also - be skipped and/or parsed */ - if (_x_demux_read_header(flac->input, preamble, 10) != 10) + /* fetch the file signature, 4 bytes will read both the fLaC + * signature and the */ + if (_x_demux_read_header(flac->input, preamble, 4) != 4) return 0; + + flac->input->seek(flac->input, 4, SEEK_SET); /* Unfortunately some FLAC files have an ID3 flag prefixed on them * before the actual FLAC headers... these are barely legal, but @@ -101,26 +103,11 @@ static int open_flac_file(demux_flac_t * * tag if present. */ if ( id3v2_istag(preamble) ) { - uint32_t id3size; - - /* First 3 bytes are the ID3 signature as above, then comes two bytes - * encoding the major and minor version of ID3 used, that we can ignore - * as long as we don't try to read the metadata; after those there's a - * single byte with flags that depends on the ID3 version used; and now - * after all that stuff, there's the size of the rest of the tag, which - * is encoded as four bytes.. but only 7 out of 8 bits of every byte is - * used... don't ask. - */ - id3size = id3v2_tagsize(&preamble[6]); - id3v2_parse_tag(flac->input, flac->stream, preamble); - - flac->input->seek(flac->input, id3size, SEEK_SET); if ( flac->input->read(flac->input, preamble, 4) != 4 ) return 0; - } else - flac->input->seek(flac->input, 4, SEEK_SET); + } /* validate signature */ if ((preamble[0] != 'f') || (preamble[1] != 'L') || diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 src/demuxers/demux_mpgaudio.c --- a/src/demuxers/demux_mpgaudio.c Wed May 30 16:15:57 2007 +0100 +++ b/src/demuxers/demux_mpgaudio.c Wed May 30 15:58:10 2007 +0100 @@ -697,8 +697,7 @@ static int detect_mpgaudio_file(input_pl * id3v2 are not specific to mp3 files, * flac files can contain id3v2 tags */ - uint8_t *ptr = &buf[6]; - uint32_t tag_size = id3v2_tagsize(ptr); + uint32_t tag_size = BE_32_synchsafe(&buf[6]); lprintf("try to skip id3v2 tag (%d bytes)\n", tag_size); if ((10 + tag_size) >= preview_len) { lprintf("cannot skip id3v2 tag\n"); diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 src/demuxers/id3.c --- a/src/demuxers/id3.c Wed May 30 16:15:57 2007 +0100 +++ b/src/demuxers/id3.c Wed May 30 15:58:10 2007 +0100 @@ -227,38 +227,6 @@ static int id3v2_parse_genre(char* dest, return 1; } -#if 0 -/* parse an unsynchronized 16bits integer */ -static uint16_t BE_16_synchsafe(uint8_t buf[2]) { - return ((uint16_t)(buf[0] & 0x7F) << 7) | - (uint16_t)(buf[1] & 0x7F); -} -#endif - -/* parse an unsynchronized 24bits integer */ -static uint32_t BE_24_synchsafe(uint8_t buf[3]) { - return ((uint32_t)(buf[0] & 0x7F) << 14) | - ((uint32_t)(buf[1] & 0x7F) << 7) | - (uint32_t)(buf[2] & 0x7F); -} - -/* parse an unsynchronized 32bits integer */ -static uint32_t BE_32_synchsafe(uint8_t buf[4]) { - return ((uint32_t)(buf[0] & 0x7F) << 21) | - ((uint32_t)(buf[1] & 0x7F) << 14) | - ((uint32_t)(buf[2] & 0x7F) << 7) | - (uint32_t)(buf[3] & 0x7F); -} - -/* parse an unsynchronized 35bits integer */ -static uint32_t BE_35_synchsafe(uint8_t buf[5]) { - return ((uint32_t)(buf[0] & 0x07) << 28) | - ((uint32_t)(buf[1] & 0x7F) << 21) | - ((uint32_t)(buf[2] & 0x7F) << 14) | - ((uint32_t)(buf[3] & 0x7F) << 7) | - (uint32_t)(buf[4] & 0x7F); -} - static int id3v2_parse_header(input_plugin_t *input, uint8_t *mp3_frame_header, id3v2_header_t *tag_header) { uint8_t buf[6]; @@ -379,7 +347,7 @@ int id3v22_parse_tag(input_plugin_t *inp if (tag_header.flags & ID3V22_ZERO_FLAG) { /* invalid flags */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid header flags\n"); + "id3: invalid header flags (%02x)\n", tag_header.flags); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } @@ -573,7 +541,7 @@ int id3v23_parse_tag(input_plugin_t *inp if (tag_header.flags & ID3V23_ZERO_FLAG) { /* invalid flags */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid header flags\n"); + "id3: invalid header flags (%02x)\n", tag_header.flags); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } @@ -824,7 +792,7 @@ int id3v24_parse_tag(input_plugin_t *inp if (tag_header.flags & ID3V24_ZERO_FLAG) { /* invalid flags */ xprintf(stream->xine, XINE_VERBOSITY_DEBUG, - "id3: invalid header flags\n"); + "id3: invalid header flags (%02x)\n", tag_header.flags); input->seek (input, tag_header.size - pos, SEEK_CUR); return 0; } @@ -898,7 +866,7 @@ int id3v2_parse_tag(input_plugin_t *inpu break; case 4: - xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.3 tag\n"); + xprintf(stream->xine, XINE_VERBOSITY_LOG, "ID3V2.4 tag\n"); result = id3v24_parse_tag(input, stream, mp3_frame_header); break; diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 src/demuxers/id3.h --- a/src/demuxers/id3.h Wed May 30 16:15:57 2007 +0100 +++ b/src/demuxers/id3.h Wed May 30 15:58:10 2007 +0100 @@ -170,6 +170,10 @@ int id3v2_parse_tag(input_plugin_t *inpu xine_stream_t *stream, int8_t *mp3_frame_header); +/** + * @brief Checks if the given buffer is an ID3 tag preamble + * @param ptr Pointer to the first 10 bytes of the ID3 tag + */ static inline int id3v2_istag(uint8_t *ptr) { return (ptr[0] == 'I') && @@ -177,12 +181,36 @@ static inline int id3v2_istag(uint8_t *p (ptr[2] == '3'); } -static inline uint32_t id3v2_tagsize(uint8_t *ptr) { - return - ((uint32_t)ptr[0] << 21) + - ((uint32_t)ptr[1] << 14) + - ((uint32_t)ptr[2] << 7) + - (uint32_t)ptr[3]; +#if 0 +/* parse an unsynchronized 16bits integer */ +static inline uint16_t BE_16_synchsafe(uint8_t buf[2]) { + return ((uint16_t)(buf[0] & 0x7F) << 7) | + (uint16_t)(buf[1] & 0x7F); +} +#endif + +/* parse an unsynchronized 24bits integer */ +static inline uint32_t BE_24_synchsafe(uint8_t buf[3]) { + return ((uint32_t)(buf[0] & 0x7F) << 14) | + ((uint32_t)(buf[1] & 0x7F) << 7) | + (uint32_t)(buf[2] & 0x7F); +} + +/* parse an unsynchronized 32bits integer */ +static inline uint32_t BE_32_synchsafe(uint8_t buf[4]) { + return ((uint32_t)(buf[0] & 0x7F) << 21) | + ((uint32_t)(buf[1] & 0x7F) << 14) | + ((uint32_t)(buf[2] & 0x7F) << 7) | + (uint32_t)(buf[3] & 0x7F); +} + +/* parse an unsynchronized 35bits integer */ +static inline uint32_t BE_35_synchsafe(uint8_t buf[5]) { + return ((uint32_t)(buf[0] & 0x07) << 28) | + ((uint32_t)(buf[1] & 0x7F) << 21) | + ((uint32_t)(buf[2] & 0x7F) << 14) | + ((uint32_t)(buf[3] & 0x7F) << 7) | + (uint32_t)(buf[4] & 0x7F); } #endif /* ID3_H */ diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 src/libxineadec/xine_speex_decoder.c --- a/src/libxineadec/xine_speex_decoder.c Wed May 30 16:15:57 2007 +0100 +++ b/src/libxineadec/xine_speex_decoder.c Wed May 30 15:58:10 2007 +0100 @@ -72,8 +72,6 @@ typedef struct speex_decoder_s { SpeexStereoState stereo; int expect_metadata; - float output[MAX_FRAME_SIZE]; - int header_count; xine_stream_t *stream; @@ -296,9 +294,8 @@ static void speex_decode_data (audio_dec for (j = 0; j < this->nframes; j++) { int ret; int bitrate; - ogg_int16_t * ptr = audio_buffer->mem; - - ret = speex_decode (this->st, &this->bits, this->output); + + ret = speex_decode_int (this->st, &this->bits, audio_buffer->mem); if (ret==-1) break; @@ -312,26 +309,12 @@ static void speex_decode_data (audio_dec } if (this->channels == 2) { - speex_decode_stereo (this->output, this->frame_size, &this->stereo); + speex_decode_stereo_int (audio_buffer->mem, this->frame_size, &this->stereo); } speex_decoder_ctl (this->st, SPEEX_GET_BITRATE, &bitrate); if (bitrate <= 1) bitrate = 16000; /* assume 16 kbit */ _x_stream_info_set(this->stream, XINE_STREAM_INFO_AUDIO_BITRATE, bitrate); - - /*PCM saturation (just in case)*/ - for (i=0; i < this->frame_size * this->channels; i++) - { - if (this->output[i]>32000.0) - this->output[i]=32000.0; - else if (this->output[i]<-32000.0) - this->output[i]=-32000.0; - } - - /*Convert to short and play */ - for (i=0; i< this->frame_size * this->channels; i++) { - *ptr++ = (ogg_int16_t)this->output[i]; - } audio_buffer->vpts = this->pts; this->pts=0; diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 src/xine-utils/monitor.c --- a/src/xine-utils/monitor.c Wed May 30 16:15:57 2007 +0100 +++ b/src/xine-utils/monitor.c Wed May 30 15:58:10 2007 +0100 @@ -61,12 +61,19 @@ int xine_profiler_allocate_slot (const c } -#if defined(ARCH_X86) || defined(ARCH_X86_64) -__inline__ unsigned long long int rdtsc(void) +#if defined(ARCH_X86_32) +static __inline__ unsigned long long int rdtsc(void) { unsigned long long int x; - __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); + __asm__ volatile ("rdtsc\n\t" : "=A" (x)); return x; +} +#elif defined(ARCH_X86_64) +static __inline__ unsigned long long int rdtsc(void) +{ + unsigned long long int a, d; + __asm__ volatile ("rdtsc\n\t" : "=a" (a), "=d" (d)); + return (d << 32) | (a & 0xffffffff); } #endif diff -r 414d7a29c6ffca50137cf4d36c2d5b0f5e3d0770 -r d1ea9326271cd15789df844e7a1e869bea8b0f11 po/eo.po --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/po/eo.po Wed May 30 15:58:10 2007 +0100 @@ -0,0 +1,5151 @@ +# translation of eo.po to ESPERANTO +# +# Libxine - ESPERANTO LANGUAGE SUPPORT. +# Copyright (C) 2000-2007 the xine project +# This file is distributed under the same license as the xine-lib package. +# +# Esperanto special letters: ĉŝĝĥĵŭ +# Antonio C. Codazzi "La Filozofo" <f_s...@li...>, 2007. +# +# +msgid "" +msgstr "" +"Project-Id-Version: eo\n" +"Report-Msgid-Bugs-To: xin...@li...\n" +"POT-Creation-Date: 2007-04-06 15:39+0200\n" +"PO-Revision-Date: 2007-05-24 17:57+0200\n" +"Last-Translator: Antonio C. Codazzi <f_s...@li...>\n" +"Language-Team: <it...@li...>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/hstrerror.c:17 +msgid "No error" +msgstr "Neniu eraro" + +#: lib/hstrerror.c:18 +msgid "Unknown host" +msgstr "Nekonata gastiga komputilo" + +#: lib/hstrerror.c:19 +msgid "No address associated with name" +msgstr "Neniu adreso estas kuna al nomo" + +#: lib/hstrerror.c:20 +msgid "Unknown server error" +msgstr "Nekonata eraro de servilo" + +#: lib/hstrerror.c:21 +msgid "Host name lookup failure" +msgstr "Eraro dun serĉado de gastiga komputilo" + +#: lib/hstrerror.c:22 +msgid "Unknown error" +msgstr "Nekonata eraro" + +#: src/audio_out/audio_alsa_out.c:354 +#, c-format +msgid "audio_alsa_out:Already open...WHY!" +msgstr "audio_alsa_out: jam malfermita... KIAL?" + +#: src/audio_out/audio_alsa_out.c:382 +#, c-format +msgid "audio_alsa_out: snd_pcm_open() of %s failed: %s\n" +msgstr "audio_alsa_out: snd_pcm_open() de %s malsukcesis: %s\n" + +#: src/audio_out/audio_alsa_out.c:384 +msgid "audio_alsa_out: >>> check if another program already uses PCM <<<\n" +msgstr "audio_alsa_out: >>> kontrolu se alia programo estas uzanta PCM <<<\n" + +#: src/audio_out/audio_alsa_out.c:397 +#, c-format +msgid "" +"audio_alsa_out: broken configuration for this PCM: no configurations " +"available: %s\n" +msgstr "" +"audio_alsa_out: difektita agordaĵo de tiu ĉi PCM: neniu disponebla agordaĵo: " +"%s\n" + +#: src/audio_out/audio_alsa_out.c:1289 +msgid "notify changes to the hardware mixer" +msgstr "rimarku ŝanĝojn de hardwara miksilo" + +#: src/audio_out/audio_alsa_out.c:1290 +msgid "" +"When the hardware mixer changes, your application will receive a " +"notification so that it can update its graphical representation of the mixer " +"settings on the fly." +msgstr "" + +#: src/audio_out/audio_alsa_out.c:1355 +#, c-format +msgid "snd_lib_error_set_handler() failed: %d" +msgstr "snd_lib_error_set_handler() malsukcesis: %d" + +#: src/audio_out/audio_alsa_out.c:1362 +msgid "sound card can do mmap" +msgstr "sonkarto ne povas uzi mmap" + +#: src/audio_out/audio_alsa_out.c:1363 +msgid "" +"Enable this, if your sound card and alsa driver support memory mapped IO.\n" +"You can try enabling it and check, if everything works. If it does, this " +"will increase performance." +msgstr "" + +#: src/audio_out/audio_alsa_out.c:1372 +msgid "device used for mono output" +msgstr "aparato uzita por unufonia eligo" + +#: src/audio_out/audio_alsa_out.c:1373 +msgid "" +"xine will use this alsa device to output mono sound.\n" +"See the alsa documentation for information on alsa devices." +msgstr "" + +#: src/audio_out/audio_alsa_out.c:1381 +msgid "device used for stereo output" +msgstr "aparato uzita por stereofonia eligo" + +#: src/audio_out/audio_alsa_out.c:1382 +msgid "" +"xine will use this alsa device to output stereo sound.\n" +"See the alsa documentation for information on alsa devices." +msgstr "" + +#: src/audio_out/audio_alsa_out.c:1390 +msgid "device used for 4-channel output" +msgstr "aparato uzita por kvarfonia eligo" + +#: src/audio_out/audio_alsa_out.c:1391 +msgid "" [... 4899 lines omitted ...] +"\n" +"reverse\n" +"First try to detect by file name extension, then by content.\n" +"\n" +"content\n" +"Detect by content only.\n" +"\n" +"extension\n" +"Detect by file name extension only.\n" +msgstr "" + +#: src/xine-engine/xine.c:1582 +msgid "directory for saving streams" +msgstr "dosierujo por konservi datumstriojn" + +#: src/xine-engine/xine.c:1583 +msgid "" +"When using the stream save feature, files will be written only into this " +"directory.\n" +"This setting is security critical, because when changed to a different " +"directory, xine can be used to fill files in it with arbitrary content. So " +"you should be careful that the directory you specify is robust against any " +"content in any file." +msgstr "" + +#: src/xine-engine/xine.c:1594 +msgid "allow implicit changes to the configuration (e.g. by MRL)" +msgstr "ebligu implicitajn ŝanĝojn en la agordaĵo (ekz. far de MRL)" + +#: src/xine-engine/xine.c:1595 +msgid "" +"If enabled, you allow xine to change your configuration without explicit " +"actions from your side. For example configuration changes demanded by MRLs " +"or embedded into playlist will be executed.\n" +"This setting is security critcal, because xine can receive MRLs or playlists " +"from untrusted remote sources. If you allow them to arbitrarily change your " +"configuration, you might end with a totally messed up xine." +msgstr "" + +#: src/xine-engine/xine.c:1609 +msgid "Timeout for network stream reading (in seconds)" +msgstr "Tempofino por legado de ret-datumstrioj (en sekundoj)" + +#: src/xine-engine/xine.c:1610 +msgid "" +"Specifies the timeout when reading from network streams, in seconds. Too low " +"values might stop streaming when the source is slow or the bandwidth is " +"occupied, too high values will freeze the player if the connection is lost." +msgstr "" + +#: src/xine-engine/xine.c:1962 +msgid "messages" +msgstr "mesaĝoj" + +#: src/xine-engine/xine.c:1963 +msgid "plugin" +msgstr "kromaĵo" + +#: src/xine-engine/xine.c:1964 +msgid "trace" +msgstr "bildigo" + +#: src/xine-engine/xine_interface.c:958 +msgid "Warning:" +msgstr "Atentu:" + +#: src/xine-engine/xine_interface.c:959 +msgid "Unknown host:" +msgstr "Nekonata gastiga komputilo:" + +#: src/xine-engine/xine_interface.c:960 +msgid "Unknown device:" +msgstr "Nekonata aparato:" + +#: src/xine-engine/xine_interface.c:961 +msgid "Network unreachable" +msgstr "Neatingebla reto" + +#: src/xine-engine/xine_interface.c:962 +msgid "Connection refused:" +msgstr "Rifuzita konekto:" + +#: src/xine-engine/xine_interface.c:963 +msgid "File not found:" +msgstr "Netrovita dosiero:" + +#: src/xine-engine/xine_interface.c:964 +msgid "Read error from:" +msgstr "Eraro de lego el:" + +#: src/xine-engine/xine_interface.c:965 +msgid "Error loading library:" +msgstr "Eraro dum ŝargo de biblioteko:" + +#: src/xine-engine/xine_interface.c:966 +msgid "Encrypted media stream detected" +msgstr "Ĉifrita datumstio estis rekonita" + +#: src/xine-engine/xine_interface.c:967 +msgid "Security message:" +msgstr "Mesaĝo de sekureco:" + +#: src/xine-engine/xine_interface.c:968 +msgid "Audio device unavailable" +msgstr "Aŭdaparato estas nedisponebla" + +#: src/xine-engine/xine_interface.c:969 +msgid "Permission error" +msgstr "Eraro de permeso" + +#: src/xine-engine/xine_interface.c:970 +msgid "File is empty:" +msgstr "Dosiero estas vakua:" + +#: src/xine-utils/memcpy.c:479 +msgid "memcopy method used by xine" +msgstr "metodo de memorkopio uzata de xine" + +#: src/xine-utils/memcpy.c:480 +msgid "" +"The copying of large memory blocks is one of the most expensive operations " +"on todays computers. Therefore xine provides various tuned methods to do " +"this copying. Usually, the best method is detected automatically." +msgstr "" + +#: src/xine-utils/memcpy.c:507 +msgid "Benchmarking memcpy methods (smaller is better):\n" +msgstr "Testo de rapideco por medoto de memorkopio (pli eta estas pli bona):\n" |
From: <li...@yo...> - 2007-06-04 19:59:29
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1180987126 -3600 # Node ID 4de3399b181ebb7c4c385f3b2d8b95b3a8bee24c # Parent a5ba1e9646cc88674cef0d41efa9a9c016bc2094 # Parent eaa6f0249cf88687077dedf3fbcecb083e358ef1 Merge from 1.1. diff -r 4de3399b181ebb7c4c385f3b2d8b95b3a8bee24c -r a5ba1e9646cc88674cef0d41efa9a9c016bc2094 ChangeLog --- a/ChangeLog Mon Jun 04 20:58:46 2007 +0100 +++ b/ChangeLog Mon Jun 04 13:19:00 2007 +0200 @@ -51,6 +51,9 @@ xine-lib (1.1.7) (unreleased) also avoids an improper saturation. * Prioritize the musepack demuxer over mpgaudio, as sometimes the latter can misfire and report a good file as unplayable. + * Fix an mmap problem with huge files on 32-bit systems. + * Improved MPEG PES stream handling: specifically, misdetection of data + streams as PES streams. xine-lib (1.1.6) * Split the DirectFB plugin into X11 and non-X versions. diff -r 4de3399b181ebb7c4c385f3b2d8b95b3a8bee24c -r a5ba1e9646cc88674cef0d41efa9a9c016bc2094 po/it.po --- a/po/it.po Mon Jun 04 20:58:46 2007 +0100 +++ b/po/it.po Mon Jun 04 13:19:00 2007 +0200 @@ -5139,10 +5139,10 @@ msgid "load_plugins: plugin %s found\n" msgid "load_plugins: plugin %s found\n" msgstr "load_plugins: trovato plugin %s\n" -#: src/xine-engine/load_plugins.c:502 -#, fuzzy, c-format +#: src/xine-engine/load_plugins.c:499 +#, c-format msgid "load_plugins: static plugin found\n" -msgstr "load_plugins: trovato plugin statico %s\n" +msgstr "load_plugins: trovato plugin statico\n" #: src/xine-engine/load_plugins.c:509 #, c-format diff -r 4de3399b181ebb7c4c385f3b2d8b95b3a8bee24c -r a5ba1e9646cc88674cef0d41efa9a9c016bc2094 src/demuxers/demux_ts.c --- a/src/demuxers/demux_ts.c Mon Jun 04 20:58:46 2007 +0100 +++ b/src/demuxers/demux_ts.c Mon Jun 04 13:19:00 2007 +0200 @@ -179,6 +179,8 @@ #define BUF_SIZE (NPKT_PER_READ * PKT_SIZE) #define MAX_PES_BUF_SIZE 2048 + +#define CORRUPT_PES_THRESHOLD 10 #define NULL_PID 0x1fff #define INVALID_PID ((unsigned int)(-1)) @@ -913,12 +915,17 @@ static void demux_ts_buffer_pes(demux_ts m->buf = m->fifo->buffer_pool_alloc(m->fifo); if (!demux_ts_parse_pes_header(this->stream->xine, m, ts, len, this->stream)) { - m->corrupted_pes = 1; m->buf->free_buffer(m->buf); m->buf = NULL; - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, + + if (m->corrupted_pes > CORRUPT_PES_THRESHOLD) { + if (this->videoPid == m->pid) + this->videoPid = INVALID_PID; + } else { + m->corrupted_pes++; + xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: PID 0x%.4x: corrupted pes encountered\n", m->pid); - + } } else { m->corrupted_pes = 0; @@ -1784,13 +1791,27 @@ static void demux_ts_parse_packet (demux if ( (pes_stream_id >= VIDEO_STREAM_S) && (pes_stream_id <= VIDEO_STREAM_E) ) { if ( this->videoPid == INVALID_PID) { - - xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_ts: auto-detected video pid 0x%.4x\n", pid); - - this->videoPid = pid; - this->videoMedia = this->media_num; - demux_ts_pes_new(this, this->media_num++, pid, this->video_fifo, pes_stream_id); + int i, found = 0; + for(i = 0; i < this->media_num; i++) { + if (this->media[i].pid == pid) { + found = 1; + break; + } + } + + if (found && (this->media[i].corrupted_pes == 0)) { + this->videoPid = pid; + this->videoMedia = i; + } else if (!found) { + this->videoPid = pid; + this->videoMedia = this->media_num; + demux_ts_pes_new(this, this->media_num++, pid, this->video_fifo, pes_stream_id); + } + + if (this->videoPid != INVALID_PID) { + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, + "demux_ts: auto-detected video pid 0x%.4x\n", pid); + } } } else if ( (pes_stream_id >= AUDIO_STREAM_S) && (pes_stream_id <= AUDIO_STREAM_E) ) { if (this->audio_tracks_count < MAX_AUDIO_TRACKS) { diff -r 4de3399b181ebb7c4c385f3b2d8b95b3a8bee24c -r a5ba1e9646cc88674cef0d41efa9a9c016bc2094 src/input/input_file.c --- a/src/input/input_file.c Mon Jun 04 20:58:46 2007 +0100 +++ b/src/input/input_file.c Mon Jun 04 13:19:00 2007 +0200 @@ -359,6 +359,9 @@ static int file_plugin_open (input_plugi file_input_plugin_t *this = (file_input_plugin_t *) this_gen; char *filename; struct stat sbuf; +#ifdef HAVE_MMAP + size_t tmp_size; +#endif lprintf("file_plugin_open\n"); @@ -423,10 +426,14 @@ static int file_plugin_open (input_plugi } #ifdef HAVE_MMAP - if ( (this->mmap_base = mmap(NULL, sbuf.st_size, PROT_READ, MAP_SHARED, this->fh, 0)) != (void*)-1 ) { + tmp_size = sbuf.st_size; /* may cause truncation - if it does, DON'T mmap! */ + if ((tmp_size == sbuf.st_size) && + ( (this->mmap_base = mmap(NULL, tmp_size, PROT_READ, MAP_SHARED, this->fh, 0)) != (void*)-1 )) { this->mmap_on = 1; this->mmap_curr = this->mmap_base; this->mmap_len = sbuf.st_size; + } else { + this->mmap_base = NULL; } #endif |
From: <li...@yo...> - 2007-06-08 00:41:02
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1181263248 -3600 # Node ID 2e64815860e49626396916b1efef022f8ad2a589 # Parent dd59a55edb5b5257879bef0529dcdf4bbc8f4262 # Parent 09ecd1c6d5b83f10ecd9c88b87d96c3240e94d42 Merge from 1.1. diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 .hgignore --- a/.hgignore Fri Jun 08 01:40:48 2007 +0100 +++ b/.hgignore Wed Jun 06 21:52:15 2007 +0200 @@ -24,8 +24,8 @@ config.sub config.sub config.status config.status.lineno -config.h -config.h.in +include/configure.h +include/configure.h.in depcomp install-sh libtool diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 .hgtags --- a/.hgtags Fri Jun 08 01:40:48 2007 +0100 +++ b/.hgtags Wed Jun 06 21:52:15 2007 +0200 @@ -60,3 +60,4 @@ 4a4f4e8bb768b6598c02a59929019866a40b4edc 4a4f4e8bb768b6598c02a59929019866a40b4edc nopadding_no_abi_change 204b8e92463b592e5c220b56f186a6d4d1007cf9 xine-lib-1_1_5-release 7b60f85a95345c41fb074dc5e3f7355d9e72968e xine-lib-1_1_6-release +ab1531337553ad5eac24a69ac665eae33916b423 xine-lib-1_1_7-release diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 ChangeLog --- a/ChangeLog Fri Jun 08 01:40:48 2007 +0100 +++ b/ChangeLog Wed Jun 06 21:52:15 2007 +0200 @@ -33,7 +33,7 @@ xine-lib (1.1.90) (Unreleased) software mixing facility you can consider alternative daemons. Note: aRTs will not be present in KDE 4. -xine-lib (1.1.7) (unreleased) +xine-lib (1.1.7) * Support libdca (new name for libdts) by shuffling around the dts.h file. * Add support for MDHD version 1 atom in demux_qt. [bug #1679398] * Handle single-quoted attribute values in XML. @@ -58,6 +58,11 @@ xine-lib (1.1.7) (unreleased) * Fix an mmap problem with huge files on 32-bit systems. * Improved MPEG PES stream handling: specifically, misdetection of data streams as PES streams. + * Handle unplugged ALSA device (fixes crashes) and if the frontend does not + handle the event continue playback to the none output. + * Disable aRTs output plugin by default, it's deprecated and will be removed + in 1.2 series. + * Fix a colour format conversion crash in the fb video output driver. xine-lib (1.1.6) * Split the DirectFB plugin into X11 and non-X versions. diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 Makefile.am --- a/Makefile.am Fri Jun 08 01:40:48 2007 +0100 +++ b/Makefile.am Wed Jun 06 21:52:15 2007 +0200 @@ -29,8 +29,6 @@ EXTRA_DIST = config.rpath autogen.sh \ depcomp \ CREDITS -noinst_HEADERS = config.h - CONFIG_CLEAN_FILES = libtool docs: @@ -84,7 +82,7 @@ install-data-hook: mostlyclean-generic: -rm -f *~ \#* .*~ .\#* - -rm -f $(PACKAGE)_$(VERSION).tar.gz + -rm -f $(PACKAGE)_$(VERSION).tar.gz $(PACKAGE)_$(VERSION).tar.bz2 -rm -f $(distdir).tar.gz $(PACKAGE).tgz package_descriptions -rm -rf $(distdir) @@ -93,7 +91,7 @@ maintainer-clean-generic: -@echo "This command is intended for maintainers to use;" -@echo "it deletes files that may require special tools to rebuild." -rm -f Makefile.in configure acinclude.m4 aclocal.m4 - -rm -f config.h.in stamp-h.in ltconfig ltmain.sh + -rm -f stamp-h.in ltconfig ltmain.sh -rm -f config.guess config.sub install-sh missing mkinstalldirs -rm -f depcomp config.log diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 configure.ac --- a/configure.ac Fri Jun 08 01:40:48 2007 +0100 +++ b/configure.ac Wed Jun 06 21:52:15 2007 +0200 @@ -12,7 +12,7 @@ AM_INIT_AUTOMAKE AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([src/xine-engine/xine.c]) AC_CONFIG_LIBOBJ_DIR([lib]) -AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_HEADERS([include/configure.h]) AM_MAINTAINER_MODE AH_TOP([#ifndef __XINE_LIB_CONFIG_H__ @@ -23,9 +23,6 @@ AH_BOTTOM([#ifdef ASMALIGN_1SLN #else # define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\n\t" #endif - -/* include internal system specific header */ -#include "os_internal.h" #endif /* __XINE_LIB_CONFIG_H__ */ ]) diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 contrib/libfaad/common.h --- a/contrib/libfaad/common.h Fri Jun 08 01:40:48 2007 +0100 +++ b/contrib/libfaad/common.h Wed Jun 06 21:52:15 2007 +0200 @@ -36,7 +36,7 @@ extern "C" { #define __STRICT_ANSI__ #endif -#include "../config.h" +#include "../include/config.h" #define INLINE __inline #if 0 //defined(_WIN32) && !defined(_WIN32_WCE) diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 debian/rules --- a/debian/rules Fri Jun 08 01:40:48 2007 +0100 +++ b/debian/rules Wed Jun 06 21:52:15 2007 +0200 @@ -103,7 +103,7 @@ clean: -$(MAKE) distclean # remove more cruft leftover by autohell rm -f doc/faq/faq.html doc/faq/faq.txt doc/hackersguide/hackersguide.html m4/caca.m4 - -test -f .noauto || find . -name Makefile.in -print | xargs rm + -test -f .noauto || find . -name Makefile.in -print | xargs -r rm test -f .noauto || rm -rf compile config.guess configure depcomp install-sh ltmain.sh missing aclocal.m4 config.h.in dh_clean diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 include/Makefile.am --- a/include/Makefile.am Fri Jun 08 01:40:48 2007 +0100 +++ b/include/Makefile.am Wed Jun 06 21:52:15 2007 +0200 @@ -5,6 +5,8 @@ endif endif include_HEADERS = xine.h + +noinst_HEADERS = config.h configure.h CONFIG_CLEAN_FILES = xine.h $(inttypes_h) @@ -14,7 +16,7 @@ maintainer-clean-generic: maintainer-clean-generic: -@echo "This command is intended for maintainers to use;" -@echo "it deletes files that may require special tools to rebuild." - -rm -f Makefile.in + -rm -f Makefile.in configure.h.in install-data-local: install-includeHEADERS sed -e '/^\/\*_x_/d' xine.h > $(DESTDIR)$(includedir)/xine.h diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 lib/os_internal.h --- a/lib/os_internal.h Fri Jun 08 01:40:48 2007 +0100 +++ b/lib/os_internal.h Wed Jun 06 21:52:15 2007 +0200 @@ -81,6 +81,8 @@ #include <inttypes.h> #include <pthread.h> +#include "../src/xine-utils/attributes.h" + #if defined(WIN32) || defined(__CYGWIN__) # define XINE_PATH_SEPARATOR_STRING ";" diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 src/libreal/real_common.c --- a/src/libreal/real_common.c Fri Jun 08 01:40:48 2007 +0100 +++ b/src/libreal/real_common.c Wed Jun 06 21:52:15 2007 +0200 @@ -79,7 +79,7 @@ void _x_real_codecs_init(xine_t *const x struct stat s; #define try_real_path(path) \ - if (!stat (path "/dvrc.so", &s)) \ + if (!stat (path "/drvc.so", &s)) \ default_real_codecs_path = path; #define try_real_subpath(path) \ try_real_path("/usr/" path) \ @@ -114,7 +114,7 @@ void _x_real_codecs_init(xine_t *const x "how to install the codecs."), 10, NULL, NULL); - lprintf ("real codecs path : %s\n", real_codec_path); + lprintf ("real codecs path : %s\n", real_codecs_path); } void *_x_real_codec_open(xine_stream_t *const stream, const char *const path, diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 src/video_out/video_out_fb.c --- a/src/video_out/video_out_fb.c Fri Jun 08 01:40:48 2007 +0100 +++ b/src/video_out/video_out_fb.c Wed Jun 06 21:52:15 2007 +0200 @@ -99,7 +99,6 @@ typedef struct fb_frame_s yuv2rgb_t *yuv2rgb; /* yuv2rgb converter for this frame */ uint8_t *rgb_dst; int yuv_stride; - int stripe_height, stripe_inc; int bytes_per_line; @@ -182,7 +181,6 @@ static void fb_frame_proc_slice(vo_frame else frame->yuv2rgb->yuy22rgb_fun(frame->yuv2rgb, frame->rgb_dst, src[0]); - frame->rgb_dst += frame->stripe_inc; } static void fb_frame_field(vo_frame_t *vo_img, int which_field) @@ -193,21 +191,18 @@ static void fb_frame_field(vo_frame_t *v { case VO_TOP_FIELD: frame->rgb_dst = frame->data; - frame->stripe_inc = 2*frame->stripe_height * - frame->bytes_per_line; break; case VO_BOTTOM_FIELD: frame->rgb_dst = frame->data + frame->bytes_per_line ; - frame->stripe_inc = 2*frame->stripe_height * - frame->bytes_per_line; break; case VO_BOTH_FIELDS: frame->rgb_dst = frame->data; break; } + frame->yuv2rgb->next_slice (frame->yuv2rgb, NULL); } static void fb_frame_dispose(vo_frame_t *vo_img) @@ -304,11 +299,11 @@ static void setup_colorspace_converter(f frame->yuv2rgb-> configure(frame->yuv2rgb, frame->sc.delivered_width, - 16, + frame->sc.delivered_height, 2 * frame->vo_frame.pitches[0], 2 * frame->vo_frame.pitches[1], frame->sc.output_width, - frame->stripe_height, + frame->sc.output_height, frame->bytes_per_line * 2); frame->yuv_stride = frame->bytes_per_line * 2; break; @@ -317,38 +312,13 @@ static void setup_colorspace_converter(f frame->yuv2rgb-> configure(frame->yuv2rgb, frame->sc.delivered_width, - 16, + frame->sc.delivered_height, frame->vo_frame.pitches[0], frame->vo_frame.pitches[1], frame->sc.output_width, - frame->stripe_height, + frame->sc.output_height, frame->bytes_per_line); frame->yuv_stride = frame->bytes_per_line; - break; - } -} - -static void reset_dest_pointers(fb_frame_t *frame, int flags) -{ - switch(flags) - { - case VO_TOP_FIELD: - frame->rgb_dst = frame->data; - frame->stripe_inc = 2 * frame->stripe_height * - frame->bytes_per_line; - break; - - case VO_BOTTOM_FIELD: - frame->rgb_dst = frame->data + - frame->bytes_per_line ; - frame->stripe_inc = 2 * frame->stripe_height * - frame->bytes_per_line; - break; - - case VO_BOTH_FIELDS: - frame->rgb_dst = frame->data; - frame->stripe_inc = frame->stripe_height * - frame->bytes_per_line; break; } } @@ -445,8 +415,6 @@ static void fb_update_frame_format(vo_dr frame_reallocate(this, frame, width, height, format); - frame->stripe_height = 16 * frame->sc.output_height / - frame->sc.delivered_height; if(this->use_zero_copy) frame->bytes_per_line = this->fb_bytes_per_line; else @@ -456,7 +424,7 @@ static void fb_update_frame_format(vo_dr setup_colorspace_converter(frame, flags); } - reset_dest_pointers(frame, flags); + fb_frame_field(frame_gen, flags); } static void fb_overlay_clut_yuv2rgb(fb_driver_t *this, diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 src/xine-utils/attributes.h --- a/src/xine-utils/attributes.h Fri Jun 08 01:40:48 2007 +0100 +++ b/src/xine-utils/attributes.h Wed Jun 06 21:52:15 2007 +0200 @@ -33,7 +33,7 @@ #endif #ifdef XINE_COMPILE -# include "config.h" +# include "configure.h" #endif /* Export protected only for libxine functions */ diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 .hgsigs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgsigs Wed Jun 06 21:52:15 2007 +0200 @@ -0,0 +1,1 @@ +5e6d0656ac4efdc1a89ed0fc32f11050f4a22970 0 iD8DBQBGZ207sBKtjPGfWZ8RAhdEAKCrkwiBT6bTof7ro5QQwewRfF/dMACffsvfK42+ahQrjpSfQxEp6k7RpCI= diff -r 2e64815860e49626396916b1efef022f8ad2a589 -r dd59a55edb5b5257879bef0529dcdf4bbc8f4262 include/config.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/config.h Wed Jun 06 21:52:15 2007 +0200 @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2007 the xine project + * + * This file is part of xine, a free video player. + * + * xine is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public Licence as published by the Free + * Software Foundation; either version 2 of the Licence, or (at your option) + * any later version. + * + * xine is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public Licence for more + * details. + * + * You should have received a copy of the GNU General Public Licence along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + */ + +#include "configure.h" +#include "os_internal.h" |
From: <fla...@gm...> - 2007-06-13 13:24:26
|
# HG changeset patch # User Diego 'Flameeyes' Pettenò <fla...@gm...> # Date 1181741082 -7200 # Node ID 9117d842ec39011947c1cb18ac52f4488c5cc144 # Parent 60c6926e626c9152f9951a36c97efaa060f6228d # Parent 01a00843f8f4ea89628c760d0a8dec8d12e2cf8d Merge from 1.1. diff -r 9117d842ec39011947c1cb18ac52f4488c5cc144 -r 60c6926e626c9152f9951a36c97efaa060f6228d lib/os_internal.h --- a/lib/os_internal.h Wed Jun 13 15:24:42 2007 +0200 +++ b/lib/os_internal.h Tue Jun 12 22:32:26 2007 +0100 @@ -344,8 +344,8 @@ void xine_private_rewinddir(DIR #define HAVE_MEMMEM #define memmem(H, HL, N, NL) \ xine_private_memmem((H), (HL), (N), (NL)) -void *xine_internal_memmem (const void *haystack, size_t haystack_len, - const void *needle, size_t needle_len); -#endif - -#endif +void *xine_private_memmem (const void *haystack, size_t haystack_len, + const void *needle, size_t needle_len); +#endif + +#endif diff -r 9117d842ec39011947c1cb18ac52f4488c5cc144 -r 60c6926e626c9152f9951a36c97efaa060f6228d src/combined/xine_vorbis_decoder.c --- a/src/combined/xine_vorbis_decoder.c Wed Jun 13 15:24:42 2007 +0200 +++ b/src/combined/xine_vorbis_decoder.c Tue Jun 12 22:32:26 2007 +0100 @@ -79,8 +79,11 @@ static void vorbis_reset (audio_decoder_ vorbis_decoder_t *this = (vorbis_decoder_t *) this_gen; - if( !this->header_count ) - vorbis_block_init(&this->vd,&this->vb); + if( this->header_count ) return; + + /* clear block first, as it might contain allocated data */ + vorbis_block_clear(&this->vb); + vorbis_block_init(&this->vd,&this->vb); } static void vorbis_discontinuity (audio_decoder_t *this_gen) { |
From: <li...@yo...> - 2007-07-08 14:40:53
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1183905640 -3600 # Node ID 7edb481f78d57cdf3cff51d217cd9fa93f764ac9 # Parent 16a6ed65433b285d56be039165efd07d94f2761f # Parent acc7197f7ccab6532761d537775a1a1452d543bc Merge from 1.1. diff -r 7edb481f78d57cdf3cff51d217cd9fa93f764ac9 -r 16a6ed65433b285d56be039165efd07d94f2761f lib/memmem.c --- a/lib/memmem.c Sun Jul 08 15:40:40 2007 +0100 +++ b/lib/memmem.c Tue Jul 03 23:57:06 2007 +0100 @@ -21,7 +21,7 @@ #include <string.h> /* Return the first occurrence of NEEDLE in HAYSTACK. */ -void *xine_internal_memmem (const void *haystack, size_t haystack_len, +void *xine_private_memmem (const void *haystack, size_t haystack_len, const void *needle, size_t needle_len) { const char *begin; diff -r 7edb481f78d57cdf3cff51d217cd9fa93f764ac9 -r 16a6ed65433b285d56be039165efd07d94f2761f src/demuxers/demux_ts.c --- a/src/demuxers/demux_ts.c Sun Jul 08 15:40:40 2007 +0100 +++ b/src/demuxers/demux_ts.c Tue Jul 03 23:57:06 2007 +0100 @@ -341,6 +341,8 @@ typedef struct { int32_t npkt_read; uint8_t buf[BUF_SIZE]; /* == PKT_SIZE * NPKT_PER_READ */ + + int numPreview; } demux_ts_t; @@ -894,6 +896,16 @@ static void demux_ts_buffer_pes(demux_ts m->buf->decoder_flags |= BUF_FLAG_SPECIAL; m->buf->decoder_info[1] = BUF_SPECIAL_SPU_DVD_SUBTYPE; m->buf->decoder_info[2] = SPU_DVD_SUBTYPE_PACKAGE; + } + else { + if (this->numPreview<5) + ++this->numPreview; + if ( this->numPreview==1 ) + m->buf->decoder_flags=BUF_FLAG_HEADER | BUF_FLAG_FRAME_END; + else if ( this->numPreview<5 ) + m->buf->decoder_flags=BUF_FLAG_PREVIEW; + else + m->buf->decoder_flags=BUF_FLAG_FRAME_END; } m->buf->pts = m->pts; m->buf->decoder_info[0] = 1; @@ -2256,6 +2268,8 @@ static demux_plugin_t *open_plugin (demu /* dvb */ this->event_queue = xine_event_new_queue (this->stream); + this->numPreview=0; + return &this->demux_plugin; } diff -r 7edb481f78d57cdf3cff51d217cd9fa93f764ac9 -r 16a6ed65433b285d56be039165efd07d94f2761f src/input/input_dvd.c --- a/src/input/input_dvd.c Sun Jul 08 15:40:40 2007 +0100 +++ b/src/input/input_dvd.c Tue Jul 03 23:57:06 2007 +0100 @@ -1489,12 +1489,14 @@ static int dvd_plugin_open (input_plugin trace_print("Called\n"); /* we already checked the "dvd:/" MRL before */ - locator = this->mrl + (sizeof("dvd:") - 1); + locator = strdup (this->mrl + (sizeof("dvd:") - 1)); /* FIXME: call a generic xine-lib MRL parser here to pre-parse * the MRL for ?title=<title>&part=<part> stuff and to expand * escaped characters properly */ - + + _x_mrl_unescape (locator); + this->mode = dvd_parse_mrl(this, &locator, &title_part); if (this->mode == MODE_FAIL) { @@ -1503,8 +1505,11 @@ static int dvd_plugin_open (input_plugin _x_message(this->stream, XINE_MSG_READ_ERROR, /* FIXME: see FIXME in dvd_parse_try_open() */ (strlen(locator) && !(locator[0] == '/' && locator[1] == '\0')) ? locator : class->dvd_device, NULL); + free (locator); return 0; } + + free (locator); dvdnav_get_title_string(this->dvdnav, &this->dvd_name); if(this->dvd_name) diff -r 7edb481f78d57cdf3cff51d217cd9fa93f764ac9 -r 16a6ed65433b285d56be039165efd07d94f2761f src/input/input_file.c --- a/src/input/input_file.c Sun Jul 08 15:40:40 2007 +0100 +++ b/src/input/input_file.c Tue Jul 03 23:57:06 2007 +0100 @@ -327,31 +327,8 @@ static void file_plugin_dispose (input_p } static char *decode_uri (char *uri) { - - int len = strlen (uri); - int i; - uri = strdup(uri); - - for (i=0; i<len; i++) { - - if ( (uri[i]=='%') && (i<(len-2)) ) { - - int c; - - if ( sscanf (&uri[i+1], "%02x", &c) == 1) { - - uri[i]= (char) c; - - memmove (uri+i+1, uri+i+3, len-i-3); - - len-=2; - } - } - } - - uri[len] = 0; - + _x_mrl_unescape (uri); return uri; } diff -r 7edb481f78d57cdf3cff51d217cd9fa93f764ac9 -r 16a6ed65433b285d56be039165efd07d94f2761f src/xine-engine/xine.c --- a/src/xine-engine/xine.c Sun Jul 08 15:40:40 2007 +0100 +++ b/src/xine-engine/xine.c Tue Jul 03 23:57:06 2007 +0100 @@ -714,7 +714,7 @@ xine_stream_t *xine_stream_new (xine_t * return stream; } -static void mrl_unescape(char *mrl) { +void _x_mrl_unescape(char *mrl) { int i, len = strlen(mrl); for (i = 0; i < len; i++) { @@ -862,7 +862,7 @@ static int open_internal (xine_stream_t memcpy(demux_name, tmp, strlen(tmp)); demux_name[strlen(tmp)] = '\0'; } - mrl_unescape(demux_name); + _x_mrl_unescape(demux_name); if (!(stream->demux_plugin = _x_find_demux_plugin_by_name(stream, demux_name, stream->input_plugin))) { xine_log(stream->xine, XINE_LOG_MSG, _("xine: specified demuxer %s failed to start\n"), demux_name); stream->err = XINE_ERROR_NO_DEMUX_PLUGIN; @@ -936,7 +936,7 @@ static int open_internal (xine_stream_t memcpy(demux_name, tmp, strlen(tmp)); demux_name[strlen(tmp)] = '\0'; } - mrl_unescape(demux_name); + _x_mrl_unescape(demux_name); if (!(stream->demux_plugin = _x_find_demux_plugin_last_probe(stream, demux_name, stream->input_plugin))) { xine_log(stream->xine, XINE_LOG_MSG, _("xine: last_probed demuxer %s failed to start\n"), demux_name); stream->err = XINE_ERROR_NO_DEMUX_PLUGIN; @@ -1023,7 +1023,7 @@ static int open_internal (xine_stream_t memcpy(volume, tmp, strlen(tmp)); volume[strlen(tmp)] = '\0'; } - mrl_unescape(volume); + _x_mrl_unescape(volume); xine_set_param(stream, XINE_PARAM_AUDIO_VOLUME, atoi(volume)); free(volume); } else { @@ -1048,7 +1048,7 @@ static int open_internal (xine_stream_t memcpy(compression, tmp, strlen(tmp)); compression[strlen(tmp)] = '\0'; } - mrl_unescape(compression); + _x_mrl_unescape(compression); xine_set_param(stream, XINE_PARAM_AUDIO_COMPR_LEVEL, atoi(compression)); free(compression); } else { @@ -1073,7 +1073,7 @@ static int open_internal (xine_stream_t memcpy(subtitle_mrl, tmp, strlen(tmp)); subtitle_mrl[strlen(tmp)] = '\0'; } - mrl_unescape(subtitle_mrl); + _x_mrl_unescape(subtitle_mrl); stream->slave = xine_stream_new (stream->xine, NULL, stream->video_out ); stream->slave_affection = XINE_MASTER_SLAVE_PLAY | XINE_MASTER_SLAVE_STOP; if( xine_open( stream->slave, subtitle_mrl ) ) { @@ -1108,7 +1108,7 @@ static int open_internal (xine_stream_t memcpy(config_entry, tmp, strlen(tmp)); config_entry[strlen(tmp)] = '\0'; } - mrl_unescape(config_entry); + _x_mrl_unescape(config_entry); retval = _x_config_change_opt(stream->xine->config, config_entry); if (retval <= 0) { if (retval == 0) { diff -r 7edb481f78d57cdf3cff51d217cd9fa93f764ac9 -r 16a6ed65433b285d56be039165efd07d94f2761f src/xine-engine/xine_internal.h --- a/src/xine-engine/xine_internal.h Sun Jul 08 15:40:40 2007 +0100 +++ b/src/xine-engine/xine_internal.h Tue Jul 03 23:57:06 2007 +0100 @@ -464,6 +464,10 @@ void _x_demux_send_mrl_reference (xine_s const char *mrl, const char *title, int start_time, int duration) XINE_PROTECTED; +/* + * MRL escaped-character decoding (overwrites the source string) + */ +void _x_mrl_unescape(char *mrl) XINE_PROTECTED; /* * plugin_loader functions |
From: <li...@yo...> - 2007-07-13 21:04:50
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1184359657 -3600 # Node ID 994fb7956facce572757524a7a634cf042c7800c # Parent 706b2efe60b76c0925b01233f2b735afd7f566b2 # Parent 6ea167c4151bbb73c4bec13b5e029304e990f863 Merge from 1.1. diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 debian/control --- a/debian/control Fri Jul 13 21:47:37 2007 +0100 +++ b/debian/control Fri Jul 13 19:10:31 2007 +0100 @@ -5,6 +5,7 @@ Uploaders: Philipp Matthias Hahn <pmhahn Uploaders: Philipp Matthias Hahn <pm...@de...>, Reinhard Tartler <sir...@ta...> Build-Depends: debhelper (>= 5.0.1), binutils (>= 2.12.90.0.9), pkg-config, automake1.9, autoconf, libtool, + libxcb-xinerama0-dev | libxv-dev (<< 1.0.3), libxcb-xv0-dev | libxv-dev (<< 1.0.3), libxcb-xvmc0-dev | libxv-dev (<< 1.0.3), libxcb-shm0-dev | libxv-dev (<< 1.0.3), libxcb-shape0-dev | libxv-dev (<< 1.0.3), libxinerama-dev, libxv-dev, libxvmc-dev, libxt-dev, libdirectfb-dev (>= 0.9.22), libasound2-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 debian/rules --- a/debian/rules Fri Jul 13 21:47:37 2007 +0100 +++ b/debian/rules Fri Jul 13 19:10:31 2007 +0100 @@ -106,7 +106,7 @@ clean: # remove more cruft leftover by autohell rm -f doc/faq/faq.html doc/faq/faq.txt doc/hackersguide/hackersguide.html m4/caca.m4 -test -f .noauto || find . -name Makefile.in -print | xargs -r rm - test -f .noauto || rm -rf compile config.guess configure depcomp install-sh ltmain.sh missing aclocal.m4 config.h.in + test -f .noauto || rm -rf compile config.guess configure depcomp install-sh ltmain.sh missing aclocal.m4 include/configure.h.in dh_clean install: build diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 src/input/input_dvb.c --- a/src/input/input_dvb.c Fri Jul 13 21:47:37 2007 +0100 +++ b/src/input/input_dvb.c Fri Jul 13 19:10:31 2007 +0100 @@ -1006,6 +1006,9 @@ static int tuner_tune_it (tuner_t *this, struct dvb_frontend_event event; unsigned int strength; struct pollfd pfd[1]; + xine_cfg_entry_t config_tuning_timeout; + struct timeval time_now; + struct timeval tuning_timeout; /* discard stale events */ while (ioctl(this->fd_frontend, FE_GET_EVENT, &event) != -1); @@ -1033,6 +1036,19 @@ static int tuner_tune_it (tuner_t *this, return 0; } } + + xine_config_lookup_entry(this->xine, "media.dvb.tuning_timeout", &config_tuning_timeout); + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "input_dvb: media.dvb.tuning_timeout is %d\n", config_tuning_timeout.num_value ); + + if( config_tuning_timeout.num_value != 0 ) { + gettimeofday( &tuning_timeout, NULL ); + if( config_tuning_timeout.num_value < 5 ) + tuning_timeout.tv_sec += 5; + else + tuning_timeout.tv_sec += config_tuning_timeout.num_value; + } + + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "input_dvb: tuner_tune_it - waiting for lock...\n" ); do { status = 0; @@ -1045,8 +1061,20 @@ static int tuner_tune_it (tuner_t *this, if (status & FE_HAS_LOCK) { break; } - usleep(500000); - print_error("Trying to get lock..."); + + /* FE_TIMEDOUT does not happen in a no signal condition. + * Use the tuning_timeout config to prevent a hang in this loop + */ + if( config_tuning_timeout.num_value != 0 ) { + gettimeofday( &time_now, NULL ); + if( time_now.tv_sec > tuning_timeout.tv_sec ) { + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "input_dvb: No FE_HAS_LOCK before timeout\n"); + break; + } + } + + usleep(10000); + xprintf(this->xine, XINE_VERBOSITY_DEBUG, "Trying to get lock..."); } while (!(status & FE_TIMEDOUT)); /* inform the user of frontend status */ @@ -3260,6 +3288,12 @@ static void *init_class (xine_t *xine, v _("If enabled xine will remember and switch to this channel. "), 21, NULL, NULL); + config->register_num(config, "media.dvb.tuning_timeout", + 0, + _("Number of seconds until tuning times out."), + _("Leave at 0 means try forever. " + "Greater than 0 means wait that many seconds to get a lock. Minimum is 5 seconds."), + 0, NULL, (void *) this); config->register_num(config, "media.dvb.adapter", 0, diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 src/input/input_rtp.c --- a/src/input/input_rtp.c Fri Jul 13 21:47:37 2007 +0100 +++ b/src/input/input_rtp.c Fri Jul 13 19:10:31 2007 +0100 @@ -79,6 +79,7 @@ #include <sys/time.h> #include <stdlib.h> #include <net/if.h> +#include <sys/select.h> #if defined (__SVR4) && defined (__sun) # include <sys/sockio.h> @@ -125,11 +126,9 @@ typedef struct { int fh; unsigned char *buffer; /* circular buffer */ - unsigned char *buffer_tail; /* tail pointer used by reader */ - unsigned char *buffer_head; /* head pointer used by writer */ + unsigned char *buffer_get_ptr; /* get pointer used by reader */ + unsigned char *buffer_put_ptr; /* put pointer used by writer */ long buffer_count; /* number of bytes in the buffer */ - pthread_mutex_t buffer_mutex; /* only used for locking the - * the buffer count variable */ unsigned char packet_buffer[65536]; @@ -143,13 +142,12 @@ typedef struct { char preview[MAX_PREVIEW_SIZE]; int preview_size; + int preview_read_done; /* boolean true after attempt to read input stream for preview */ nbc_t *nbc; - pthread_mutex_t writer_mut; + pthread_mutex_t buffer_ring_mut; pthread_cond_t writer_cond; - - pthread_mutex_t reader_mut; pthread_cond_t reader_cond; } rtp_input_plugin_t; @@ -198,7 +196,7 @@ static int host_connect_attempt(struct i /* Try to increase receive buffer to 1MB to avoid dropping packets */ - optval = 1024 * 1024; + optval = BUFFER_SIZE; if ((setsockopt(s, SOL_SOCKET, SO_RCVBUF, &optval, sizeof(optval))) < 0) { LOG_MSG(xine, _("setsockopt(SO_RCVBUF): %s.\n"), strerror(errno)); @@ -298,6 +296,7 @@ static void * input_plugin_read_loop(voi rtp_input_plugin_t *this = (rtp_input_plugin_t *) arg; unsigned char *data; long length; + fd_set read_fds; while (1) { @@ -308,8 +307,28 @@ static void * input_plugin_read_loop(voi */ pthread_testcancel(); - length = recv(this->fh, this->packet_buffer, - sizeof(this->packet_buffer), 0); + { + struct timeval recv_timeout; + int rc; + + recv_timeout.tv_sec = 2; + recv_timeout.tv_usec = 0; + + FD_ZERO( &read_fds ); + FD_SET( this->fh, &read_fds ); + + /* wait for a packet to arrive - but do not hang! */ + rc = select( this->fh+1, &read_fds, NULL, NULL, &recv_timeout ); + if( rc > 0 ) + { + length = recv(this->fh, this->packet_buffer, + sizeof(this->packet_buffer), 0); + } + else if( rc == 0 ) + length = 0; + else + length = -1; + } pthread_testcancel(); if (length < 0) { @@ -362,28 +381,31 @@ static void * input_plugin_read_loop(voi } /* insert data into cyclic buffer */ - while (length > 0) { - - /* work with a copy of buffer count, while the variable can - * be updated by the reader - */ - - long buffer_count = this->buffer_count; - long n; + if (length > 0) { /* * if the buffer is full, wait for the reader * to signal */ - if(buffer_count >= BUFFER_SIZE) { - pthread_mutex_lock(&this->writer_mut); - pthread_cond_wait(&this->writer_cond, &this->writer_mut); - pthread_mutex_unlock(&this->writer_mut); - /* update the buffer count again */ - buffer_count = this->buffer_count; - } - + pthread_mutex_lock(&this->buffer_ring_mut); + /* wait for enough space to write the whole of the recv'ed data */ + while( (BUFFER_SIZE - this->buffer_count) < length ) + { + struct timeval tv; + struct timespec timeout; + + gettimeofday(&tv, NULL); + + timeout.tv_nsec = tv.tv_usec * 1000; + timeout.tv_sec = tv.tv_sec + 2; + [... 93 lines omitted ...] + if(pthread_cond_timedwait(&this->reader_cond, &this->buffer_ring_mut, &timeout) != 0) { /* we timed out, no data available */ - pthread_mutex_unlock(&this->reader_mut); + pthread_mutex_unlock(&this->buffer_ring_mut); return copied; } - pthread_mutex_unlock(&this->reader_mut); - /* update the local buffer count variable again */ - buffer_count = this->buffer_count; } /* Now determine how many bytes can be read. If the buffer @@ -479,43 +485,60 @@ static off_t rtp_plugin_read (input_plug * update the buffer count. Finally read the second piece * from the base to the remaining count */ - if(length > buffer_count) { - n = buffer_count; + if(length > this->buffer_count) { + n = this->buffer_count; } else { n = length; } - if(((this->buffer_tail - this->buffer) + n) > BUFFER_SIZE) { - n = BUFFER_SIZE - (this->buffer_tail - this->buffer); + if(((this->buffer_get_ptr - this->buffer) + n) > BUFFER_SIZE) { + n = BUFFER_SIZE - (this->buffer_get_ptr - this->buffer); } /* the actual read */ - memcpy(buf, this->buffer_tail, n); + memcpy(buf, this->buffer_get_ptr, n); buf += n; copied += n; length -= n; /* update the tail pointer, watch for wrap arounds */ - this->buffer_tail += n; - if(this->buffer_tail - this->buffer >= BUFFER_SIZE) - this->buffer_tail = this->buffer; + this->buffer_get_ptr += n; + if(this->buffer_get_ptr - this->buffer >= BUFFER_SIZE) + this->buffer_get_ptr = this->buffer; - /* lock the buffer, for updating the count */ - pthread_mutex_lock(&this->buffer_mutex); this->buffer_count -= n; - pthread_mutex_unlock(&this->buffer_mutex); /* signal the writer that there's space in the buffer again */ - pthread_mutex_lock(&this->writer_mut); pthread_cond_signal(&this->writer_cond); - pthread_mutex_unlock(&this->writer_mut); + pthread_mutex_unlock(&this->buffer_ring_mut); } this->curpos += copied; return copied; +} + +static buf_element_t *rtp_plugin_read_block (input_plugin_t *this_gen, + fifo_buffer_t *fifo, off_t todo) { + buf_element_t *buf = fifo->buffer_pool_alloc (fifo); + int total_bytes; + + + buf->content = buf->mem; + buf->type = BUF_DEMUX_BLOCK; + + total_bytes = rtp_plugin_read (this_gen, buf->content, todo); + + if (total_bytes != todo) { + buf->free_buffer (buf); + return NULL; + } + + buf->size = total_bytes; + + return buf; } /* @@ -585,9 +608,11 @@ static int rtp_plugin_get_optional_data */ if (data_type == INPUT_OPTIONAL_DATA_PREVIEW) { - if (this->preview_size == 0) { + if (!this->preview_read_done) { this->preview_size = rtp_plugin_read(this_gen, this->preview, MAX_PREVIEW_SIZE); lprintf("Preview data length = %d\n", this->preview_size); + + this->preview_read_done = 1; } memcpy(data, this->preview, this->preview_size); return this->preview_size; @@ -706,23 +731,21 @@ static input_plugin_t *rtp_class_get_ins if (iptr) this->interface = iptr; - pthread_mutex_init(&this->buffer_mutex, NULL); - pthread_mutex_init(&this->reader_mut, NULL); - pthread_mutex_init(&this->writer_mut, NULL); + pthread_mutex_init(&this->buffer_ring_mut, NULL); pthread_cond_init(&this->reader_cond, NULL); pthread_cond_init(&this->writer_cond, NULL); this->buffer = malloc(BUFFER_SIZE); - this->buffer_head = this->buffer; - this->buffer_tail = this->buffer; + this->buffer_put_ptr = this->buffer; + this->buffer_get_ptr = this->buffer; this->buffer_count = 0; this->curpos = 0; this->input_plugin.open = rtp_plugin_open; this->input_plugin.get_capabilities = rtp_plugin_get_capabilities; this->input_plugin.read = rtp_plugin_read; - this->input_plugin.read_block = NULL; + this->input_plugin.read_block = rtp_plugin_read_block; this->input_plugin.seek = rtp_plugin_seek; this->input_plugin.get_current_pos = rtp_plugin_get_current_pos; this->input_plugin.get_length = rtp_plugin_get_length; diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 src/libspudvb/xine_spudvb_decoder.c --- a/src/libspudvb/xine_spudvb_decoder.c Fri Jul 13 21:47:37 2007 +0100 +++ b/src/libspudvb/xine_spudvb_decoder.c Fri Jul 13 19:10:31 2007 +0100 @@ -28,14 +28,10 @@ */ #include "pthread.h" +#include <errno.h> #include "xine_internal.h" #include "osd.h" #define MAX_REGIONS 7 - -/* check every DVBSUB_TIMER_DELAY seconds */ -#define DVBSUB_TIMER_DELAY 1 -/* hide subs after n counts of the delay */ -#define SUB_TIMEOUT 6 typedef struct { int x, y; @@ -90,6 +86,9 @@ typedef struct dvb_spu_decoder_s { spu_dvb_descriptor_t *spu_descriptor; + /* dvbsub_osd_mutex should be locked around all calls to this->osd_renderer->show() + and this->osd_renderer->hide() */ + pthread_mutex_t dvbsub_osd_mutex; osd_object_t *osd; char *bitmap; @@ -101,11 +100,9 @@ typedef struct dvb_spu_decoder_s { uint64_t vpts; uint64_t end_vpts; - pthread_mutex_t dvbsub_timer_mutex; - /* This is set to non-zero if the timer thread is wanted to stop. */ - int dvbsub_timer_stop; pthread_t dvbsub_timer_thread; - unsigned int dvbsub_timer_tcount; + struct timespec dvbsub_hide_timeout; + pthread_cond_t dvbsub_restart_timeout; dvbsub_func_t *dvbsub; int show; } dvb_spu_decoder_t; @@ -544,43 +541,58 @@ void process_object_data_segment (dvb_sp } } - -/* Sleep routine for pthread */ -static void dvbsub_pthread_sleep(int seconds) { - pthread_mutex_t dummy_mutex; - pthread_cond_t dummy_cond; - struct timespec timeout; - - /* Create a dummy mutex which doesn't unlock for sure while waiting. */ - pthread_mutex_init(&dummy_mutex, NULL); - pthread_mutex_lock(&dummy_mutex); - - /* Create a dummy condition variable. */ - pthread_cond_init(&dummy_cond, NULL); - - timeout.tv_sec = time(NULL) + seconds; - timeout.tv_nsec = 0; - - pthread_cond_timedwait(&dummy_cond, &dummy_mutex, &timeout); - - pthread_cond_destroy(&dummy_cond); - pthread_mutex_unlock(&dummy_mutex); - pthread_mutex_destroy(&dummy_mutex); -} - - -/* Thread routine that checks for subtitle timeout periodically. */ -static void* dvbsub_timer_func(void *this_gen) { - dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; - - while (!this->dvbsub_timer_stop) { - pthread_mutex_lock(&this->dvbsub_timer_mutex); - if(this->dvbsub_timer_tcount++ > SUB_TIMEOUT) - this->stream->osd_renderer->hide (this->osd, 0); - pthread_mutex_unlock(&this->dvbsub_timer_mutex); - dvbsub_pthread_sleep(DVBSUB_TIMER_DELAY); - } - return NULL; +static void unlock_mutex_cancellation_func(void *mutex_gen) +{ + pthread_mutex_t *mutex = (pthread_mutex_t*) mutex_gen; + pthread_mutex_unlock(mutex); +} + +/* Thread routine that checks for subtitle timeout periodically. + To avoid unexpected subtitle hiding, calls to this->stream->osd_renderer->show() + should be in blocks like: + + pthread_mutex_lock(&this->dvbsub_osd_mutex); + this->stream->osd_renderer->show(...); + this->dvbsub_hide_timeout.tv_sec = time(NULL) + timeout value; + pthread_cond_signal(&this->dvbsub_restart_timeout); + pthread_mutex_unlock(&this->dvbsub_osd_mutex); + + This ensures that the timeout is changed with the lock held, and + that the thread is signalled to pick up the new timeout. +*/ +static void* dvbsub_timer_func(void *this_gen) +{ + dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; + pthread_mutex_lock(&this->dvbsub_osd_mutex); + + /* If we're cancelled via pthread_cancel, unlock the mutex */ + pthread_cleanup_push(unlock_mutex_cancellation_func, &this->dvbsub_osd_mutex); + + while(1) + { + /* Record the current timeout, and wait - note that pthread_cond_timedwait + will unlock the mutex on entry, and lock it on exit */ + struct timespec timeout = this->dvbsub_hide_timeout; + int result = pthread_cond_timedwait(&this->dvbsub_restart_timeout, + &this->dvbsub_osd_mutex, + &this->dvbsub_hide_timeout); + if(result == ETIMEDOUT && + timeout.tv_sec == this->dvbsub_hide_timeout.tv_sec && + timeout.tv_nsec == this->dvbsub_hide_timeout.tv_nsec) + { + /* We timed out, and no-one changed the timeout underneath us. + Hide the OSD, then wait until we're signalled. */ + if(this && this->stream && this->stream->osd_renderer && this->osd) + { + lprintf("Hiding OSD in emergency thread\n"); + this->stream->osd_renderer->hide(this->osd, 0); + } + pthread_cond_wait(&this->dvbsub_restart_timeout, &this->dvbsub_osd_mutex); + } + } + + pthread_cleanup_pop(1); + return NULL; } void draw_subtitles (dvb_spu_decoder_t * this) @@ -614,23 +626,17 @@ void draw_subtitles (dvb_spu_decoder_t * if(display){ - /* start timer thread if stopped */ - if(this->dvbsub_timer_stop){ - this->dvbsub_timer_stop=0; - if (pthread_create(&this->dvbsub_timer_thread, NULL, dvbsub_timer_func, this) != 0) { - xprintf(this->class->xine, XINE_VERBOSITY_DEBUG, _("dvbsub: cannot create timer thread\n")); - } - } - /* display immediately at requested PTS*/ this->stream->osd_renderer->set_palette(this->osd,(uint32_t *)this->dvbsub->colours,this->dvbsub->trans); this->stream->osd_renderer->draw_bitmap (this->osd,this->bitmap, 1,1,720,576,NULL); - pthread_mutex_lock(&this->dvbsub_timer_mutex); + pthread_mutex_lock(&this->dvbsub_osd_mutex); this->stream->osd_renderer->show (this->osd, this->vpts); - /* reset the timer thread */ - this->dvbsub_timer_tcount=0; - pthread_mutex_unlock(&this->dvbsub_timer_mutex); + this->dvbsub_hide_timeout.tv_nsec = 0; + this->dvbsub_hide_timeout.tv_sec = time(NULL) + this->dvbsub->page.page_time_out; + lprintf("page_time_out %d\n",this->dvbsub->page.page_time_out); + pthread_cond_signal(&this->dvbsub_restart_timeout); + pthread_mutex_unlock(&this->dvbsub_osd_mutex); } } @@ -651,8 +657,10 @@ static void spudec_decode_data (spu_deco if (buf->decoder_flags & BUF_FLAG_SPECIAL) { if (buf->decoder_info[1] == BUF_SPECIAL_SPU_DVB_DESCRIPTOR) { if (buf->decoder_info[2] == 0) { - this->dvbsub_timer_stop=1; - this->stream->osd_renderer->hide (this->osd, 0); + /* Hide the osd - note that if the timeout thread times out, it'll rehide, which is harmless */ + pthread_mutex_lock(&this->dvbsub_osd_mutex); + this->stream->osd_renderer->hide(this->osd, 0); + pthread_mutex_unlock(&this->dvbsub_osd_mutex); } else { xine_fast_memcpy (this->spu_descriptor, buf->decoder_info_ptr[2], buf->decoder_info[2]); @@ -746,8 +754,10 @@ static void spudec_reset (spu_decoder_t { dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; - if (this->osd) - this->stream->osd_renderer->hide (this->osd, 0); + /* Hide the osd - if the timeout thread times out, it'll rehide harmlessly */ + pthread_mutex_lock(&this->dvbsub_osd_mutex); + this->stream->osd_renderer->hide(this->osd, 0); + pthread_mutex_unlock(&this->dvbsub_osd_mutex); } @@ -760,9 +770,10 @@ static void spudec_dispose (spu_decoder_ { dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; - if(!this->dvbsub_timer_stop){ - this->dvbsub_timer_stop=1; - } + pthread_cancel(this->dvbsub_timer_thread); + pthread_join(this->dvbsub_timer_thread, NULL); + pthread_mutex_destroy(&this->dvbsub_osd_mutex); + pthread_cond_destroy(&this->dvbsub_restart_timeout); if(this->spu_descriptor){ free(this->spu_descriptor); @@ -822,9 +833,11 @@ static spu_decoder_t *dvb_spu_class_open this->stream->osd_renderer->set_encoding (this->osd, NULL); this->stream->osd_renderer->set_text_palette (this->osd, TEXTPALETTE_YELLOW_BLACK_TRANSPARENT, OSD_TEXT1); - - /* subtitle timer thread. */ - this->dvbsub_timer_stop = 1; + pthread_mutex_init(&this->dvbsub_osd_mutex, NULL); + pthread_cond_init(&this->dvbsub_restart_timeout, NULL); + this->dvbsub_hide_timeout.tv_nsec = 0; + this->dvbsub_hide_timeout.tv_sec = time(NULL); + pthread_create(&this->dvbsub_timer_thread, NULL, dvbsub_timer_func, this); return (spu_decoder_t *) this; } diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 src/xine-engine/osd.c --- a/src/xine-engine/osd.c Fri Jul 13 21:47:37 2007 +0100 +++ b/src/xine-engine/osd.c Fri Jul 13 19:10:31 2007 +0100 @@ -199,7 +199,7 @@ static int _osd_show (osd_object_t *osd, osd_renderer_t *this = osd->renderer; video_overlay_manager_t *ovl_manager; rle_elem_t rle, *rle_p=0; - int x, y, required; + int x, y; uint8_t *c; lprintf("osd=%p vpts=%"PRId64"\n", osd, vpts); @@ -253,11 +253,11 @@ static int _osd_show (osd_object_t *osd, this->event.object.overlay->hili_right = this->event.object.overlay->width; /* there will be at least that many rle objects (one for each row) */ - required = osd->y2 - osd->y1; this->event.object.overlay->num_rle = 0; - this->event.object.overlay->data_size = 1024; - while (required > this->event.object.overlay->data_size) - this->event.object.overlay->data_size += 1024; + /* We will never need more rle objects than columns in any row + Rely on lazy page allocation to avoid us actually taking up + this much RAM */ + this->event.object.overlay->data_size = osd->width * osd->height; rle_p = this->event.object.overlay->rle = malloc(this->event.object.overlay->data_size * sizeof(rle_elem_t) ); @@ -274,14 +274,6 @@ static int _osd_show (osd_object_t *osd, /* loop over the remaining pixels in the row */ for( x = osd->x1 + rle.len; x < osd->x2; x++, c++ ) { if( rle.color != *c ) { - if( (this->event.object.overlay->num_rle + required) > - this->event.object.overlay->data_size ) { - this->event.object.overlay->data_size += 1024; - rle_p = this->event.object.overlay->rle = - realloc( this->event.object.overlay->rle, - this->event.object.overlay->data_size * sizeof(rle_elem_t) ); - rle_p += this->event.object.overlay->num_rle; - } #ifdef DEBUG_RLE lprintf("(%d, %d), ", rle.len, rle.color); #endif @@ -299,8 +291,6 @@ static int _osd_show (osd_object_t *osd, #endif *rle_p++ = rle; this->event.object.overlay->num_rle++; - /* another row done */ - required--; } #ifdef DEBUG_RLE lprintf("osd_show %p rle ends\n", osd); diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 src/xine-engine/video_overlay.c --- a/src/xine-engine/video_overlay.c Fri Jul 13 21:47:37 2007 +0100 +++ b/src/xine-engine/video_overlay.c Fri Jul 13 19:10:31 2007 +0100 @@ -395,6 +395,8 @@ static int video_overlay_event( video_ov #endif /* free any overlay associated with this event */ if (this->events[this_event].event->object.overlay != NULL) { + if( this->events[this_event].event->object.overlay->rle != NULL ) + free( this->events[this_event].event->object.overlay->rle ); free(this->events[this_event].event->object.overlay); this->events[this_event].event->object.overlay = NULL; } @@ -406,9 +408,11 @@ static int video_overlay_event( video_ov printf ("video_overlay: FREE SPU NOW\n"); #endif /* free any overlay associated with this event */ - if (this->events[this_event].event->object.overlay != NULL) { + if( this->events[this_event].event->object.overlay != NULL) { + if( this->events[this_event].event->object.overlay->rle != NULL ) + free( this->events[this_event].event->object.overlay->rle ); free(this->events[this_event].event->object.overlay); - this->events[this_event].event->object.overlay = NULL; + this->events[this_event].event->object.overlay = NULL; } /* this avoid removing this_event from the queue * (it will be removed at the end of this loop) */ diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 src/xine-engine/xine.c --- a/src/xine-engine/xine.c Fri Jul 13 21:47:37 2007 +0100 +++ b/src/xine-engine/xine.c Fri Jul 13 19:10:31 2007 +0100 @@ -129,17 +129,54 @@ void _x_extra_info_merge( extra_info_t * } } +static int acquire_allowed_to_block(xine_ticket_t *this) { + pthread_t own_id = pthread_self(); + unsigned entry; + unsigned new_size; + + for(entry = 0; entry < this->holder_thread_count; ++entry) { + if(this->holder_threads[entry].holder == own_id) { + /* This thread may already hold this ticket */ + this->holder_threads[entry].count++; + return (this->holder_threads[entry].count == 1); + } + } + /* If we get this far, this thread hasn't claimed this ticket before. + We need to give it a new entry in the list, then return true */ + for(entry = 0; entry < this->holder_thread_count; ++entry) { + if(this->holder_threads[entry].count == 0) { + this->holder_threads[entry].holder = own_id; + this->holder_threads[entry].count = 1; + return 1; + } + } + /* List too small. Realloc to larger size */ + new_size = this->holder_thread_count * 2; + lprintf("Reallocing from %d to %d entries\n", this->holder_thread_count, new_size); + + this->holder_threads = realloc(this->holder_threads, sizeof(*this->holder_threads) * new_size); + memset(this->holder_threads + this->holder_thread_count, 0, this->holder_thread_count); + + /* Old size is equivalent to index of first newly allocated entry*/ + this->holder_threads[this->holder_thread_count].count = 1; + this->holder_threads[this->holder_thread_count].holder = own_id; + this->holder_thread_count = new_size; + + return 1; +} + static int ticket_acquire_internal(xine_ticket_t *this, int irrevocable, int nonblocking) { int must_wait = 0; pthread_mutex_lock(&this->lock); + int allowed_to_block = acquire_allowed_to_block(this); if (this->ticket_revoked && !this->irrevocable_tickets) must_wait = !nonblocking; else if (this->atomic_revoke && !pthread_equal(this->atomic_revoker_thread, pthread_self())) must_wait = 1; - if (must_wait) { + if (must_wait && allowed_to_block) { if (nonblocking) { pthread_mutex_unlock(&this->lock); return 0; @@ -164,9 +201,25 @@ static void ticket_acquire(xine_ticket_t ticket_acquire_internal(this, irrevocable, 0); } +static int release_allowed_to_block(xine_ticket_t *this) { + pthread_t own_id = pthread_self(); + unsigned entry; + + for(entry = 0; entry < this->holder_thread_count; ++entry) { + if(this->holder_threads[entry].holder == own_id) { + this->holder_threads[entry].count--; + return this->holder_threads[entry].count == 0; + } + } + lprintf("BUG! Ticket 0x%p released by a thread that never took it! Allowing code to continue\n", this); + _x_assert(0); + return 1; +} + static void ticket_release_internal(xine_ticket_t *this, int irrevocable, int nonblocking) { pthread_mutex_lock(&this->lock); + int allowed_to_block = release_allowed_to_block(this); this->tickets_granted--; if (irrevocable) @@ -174,8 +227,10 @@ static void ticket_release_internal(xine if (this->ticket_revoked && !this->tickets_granted) pthread_cond_broadcast(&this->revoked); - if (this->ticket_revoked && !this->irrevocable_tickets && !nonblocking) - pthread_cond_wait(&this->issued, &this->lock); + if (allowed_to_block) { + if (this->ticket_revoked && !this->irrevocable_tickets && !nonblocking) + pthread_cond_wait(&this->issued, &this->lock); + } pthread_mutex_unlock(&this->lock); } @@ -295,6 +350,8 @@ static xine_ticket_t *ticket_init(void) port_ticket->lock_port_rewiring = ticket_lock_port_rewiring; port_ticket->unlock_port_rewiring = ticket_unlock_port_rewiring; port_ticket->dispose = ticket_dispose; + port_ticket->holder_thread_count = XINE_MAX_TICKET_HOLDER_THREADS; + port_ticket->holder_threads = calloc(XINE_MAX_TICKET_HOLDER_THREADS,sizeof(*port_ticket->holder_threads)); pthread_mutex_init(&port_ticket->lock, NULL); pthread_mutex_init(&port_ticket->revoke_lock, NULL); diff -r 994fb7956facce572757524a7a634cf042c7800c -r 706b2efe60b76c0925b01233f2b735afd7f566b2 src/xine-engine/xine_internal.h --- a/src/xine-engine/xine_internal.h Fri Jul 13 21:47:37 2007 +0100 +++ b/src/xine-engine/xine_internal.h Fri Jul 13 19:10:31 2007 +0100 @@ -74,6 +74,7 @@ extern "C" { #define XINE_MAX_EVENT_LISTENERS 50 #define XINE_MAX_EVENT_TYPES 100 +#define XINE_MAX_TICKET_HOLDER_THREADS 64 /* used by plugin loader */ #define XINE_VERSION_CODE XINE_MAJOR_VERSION*10000+XINE_MINOR_VERSION*100+XINE_SUB_VERSION @@ -185,6 +186,11 @@ struct xine_ticket_s { int atomic_revoke; pthread_t atomic_revoker_thread; pthread_mutex_t port_rewiring_lock; + struct { + int count; + pthread_t holder; + } *holder_threads; + unsigned holder_thread_count; #endif }; |
From: <li...@yo...> - 2007-08-02 18:54:01
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1186080694 -3600 # Node ID b252f3f6a55be26ce92d7dbf81cb88cf309088c1 # Parent a452fd15a3c1e327d84b98f09eec8b11de95aede # Parent f717058a4c2cb6a98d1279f47b4d1657a67eeb9e Merge from 1.1. diff -r b252f3f6a55be26ce92d7dbf81cb88cf309088c1 -r a452fd15a3c1e327d84b98f09eec8b11de95aede src/video_out/video_out_xxmc.c --- a/src/video_out/video_out_xxmc.c Thu Aug 02 19:51:34 2007 +0100 +++ b/src/video_out/video_out_xxmc.c Sat Jul 28 00:16:47 2007 +0200 @@ -1500,6 +1500,7 @@ static void xxmc_overlay_blend (vo_drive } else if (frame->format == XINE_IMGFMT_XXMC) { if (this->ovl_changed && this->hwSubpictures) { if (this->new_subpic) { + int x0, y0, x1, y1, w, h; LOCK_AND_SURFACE_VALID( this, frame->xvmc_surf ); if (this->first_overlay) { memset(this->subImage->data,0,this->subImage->width* @@ -1510,13 +1511,29 @@ static void xxmc_overlay_blend (vo_drive this->subImage->height, this->subImage->width, &this->alphablend_extra_data, &this->palette, (this->subImage->id == FOURCC_IA44)); - XVMCLOCKDISPLAY( this->display ); - XvMCCompositeSubpicture( this->display, this->new_subpic, - this->subImage, - overlay->x, overlay->y,overlay->width, - overlay->height, - overlay->x, overlay->y); - XVMCUNLOCKDISPLAY( this->display ); + + /* clip overlay against sub image like in _x_blend_xx44() */ + x0 = overlay->x; + y0 = overlay->y; + x1 = x0 + overlay->width; + y1 = y0 + overlay->height; + w = this->subImage->width; + h = this->subImage->height; + + x0 = (x0 < 0) ? 0 : ((x0 > w) ? w : x0); + y0 = (y0 < 0) ? 0 : ((y0 > h) ? h : y0); + x1 = (x1 < 0) ? 0 : ((x1 > w) ? w : x1); + y1 = (y1 < 0) ? 0 : ((y1 > h) ? h : y1); + + /* anything left after clipping? */ + if (x0 != x1 && y0 != y1) { + XVMCLOCKDISPLAY( this->display ); + XvMCCompositeSubpicture( this->display, this->new_subpic, + this->subImage, + x0, y0, x1 - x0, y1 - y0, + x0, y0); + XVMCUNLOCKDISPLAY( this->display ); + } xvmc_context_reader_unlock( &this->xvmc_lock ); } } diff -r b252f3f6a55be26ce92d7dbf81cb88cf309088c1 -r a452fd15a3c1e327d84b98f09eec8b11de95aede src/xine-engine/broadcaster.c --- a/src/xine-engine/broadcaster.c Thu Aug 02 19:51:34 2007 +0100 +++ b/src/xine-engine/broadcaster.c Sat Jul 28 00:16:47 2007 +0200 @@ -352,6 +352,17 @@ broadcaster_t *_x_init_broadcaster(xine_ void _x_close_broadcaster(broadcaster_t *this) { + this->running = 0; + pthread_cancel(this->manager_thread); + pthread_join(this->manager_thread,NULL); + close(this->msock); + + if (this->stream->video_fifo) + this->stream->video_fifo->unregister_put_cb(this->stream->video_fifo, video_put_cb); + + if(this->stream->audio_fifo) + this->stream->audio_fifo->unregister_put_cb(this->stream->audio_fifo, audio_put_cb); + xine_list_iterator_t ite; while ( (ite = xine_list_front(this->connections)) ) { @@ -362,18 +373,9 @@ void _x_close_broadcaster(broadcaster_t xine_list_remove (this->connections, ite); } xine_list_delete(this->connections); - - this->running = 0; - close(this->msock); - pthread_mutex_lock( &this->lock ); - pthread_cancel(this->manager_thread); - pthread_join(this->manager_thread,NULL); - - this->stream->video_fifo->unregister_put_cb(this->stream->video_fifo, video_put_cb); - - if(this->stream->audio_fifo) - this->stream->audio_fifo->unregister_put_cb(this->stream->audio_fifo, audio_put_cb); - + + pthread_mutex_destroy( &this->lock ); + free(this); } diff -r b252f3f6a55be26ce92d7dbf81cb88cf309088c1 -r a452fd15a3c1e327d84b98f09eec8b11de95aede src/xine-engine/post.c --- a/src/xine-engine/post.c Thu Aug 02 19:51:34 2007 +0100 +++ b/src/xine-engine/post.c Sat Jul 28 00:16:47 2007 +0200 @@ -373,6 +373,9 @@ vo_frame_t *_x_post_intercept_video_fram /* make a copy and attach the original */ xine_fast_memcpy(new_frame, frame, sizeof(vo_frame_t)); new_frame->next = frame; + + if (new_frame->stream) + _x_refcounter_inc(new_frame->stream->refcounter); /* modify the frame with the intercept functions */ new_frame->port = &port->new_port; @@ -410,6 +413,9 @@ vo_frame_t *_x_post_restore_video_frame( /* propagate any changes */ _x_post_frame_copy_down(frame, original); + if (frame->stream) + _x_refcounter_dec(frame->stream->refcounter); + /* put the now free slot into the free frames list */ pthread_mutex_lock(&port->free_frames_lock); frame->next = port->free_frame_slots; @@ -421,6 +427,11 @@ vo_frame_t *_x_post_restore_video_frame( void _x_post_frame_copy_down(vo_frame_t *from, vo_frame_t *to) { /* propagate changes downwards (from decoders to video out) */ + if (from->stream) + _x_refcounter_inc(from->stream->refcounter); + if (to->stream) + _x_refcounter_dec(to->stream->refcounter); + to->pts = from->pts; to->bad_frame = from->bad_frame; to->duration = from->duration; @@ -443,8 +454,14 @@ void _x_post_frame_copy_down(vo_frame_t void _x_post_frame_copy_up(vo_frame_t *to, vo_frame_t *from) { /* propagate changes upwards (from video out to decoders) */ + if (from->stream) + _x_refcounter_inc(from->stream->refcounter); + if (to->stream) + _x_refcounter_dec(to->stream->refcounter); + to->vpts = from->vpts; to->duration = from->duration; + to->stream = from->stream; if (to->extra_info != from->extra_info) _x_extra_info_merge(to->extra_info, from->extra_info); @@ -452,6 +469,11 @@ void _x_post_frame_copy_up(vo_frame_t *t void _x_post_frame_u_turn(vo_frame_t *frame, xine_stream_t *stream) { /* frame's travel will end here => do the housekeeping */ + if (stream) + _x_refcounter_inc(stream->refcounter); + if (frame->stream) + _x_refcounter_dec(frame->stream->refcounter); + frame->stream = stream; if (stream) { _x_extra_info_merge(frame->extra_info, stream->video_decoder_extra_info); |
From: <li...@yo...> - 2007-08-25 12:53:31
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1187667592 -3600 # Node ID 4410af8dd84dc741fd59ba031562c527ab1db54f # Parent ed138775c691b15e553746230bb8dea3a77e2cd1 # Parent 47e1a24276b2a633b65d81117ba78f5b6b8dc8f1 Merge from 1.1. diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 ChangeLog --- a/ChangeLog Tue Aug 21 04:39:52 2007 +0100 +++ b/ChangeLog Sun Aug 19 16:13:23 2007 +0100 @@ -51,12 +51,16 @@ xine-lib (1.1.8) (Unreleased) * Various build fixes and cleanups for Solaris, plugin dependencies etc. * Fix some memory leaks in the Vorbis decoder and video overlays. * Fix a problem with the goom plugin which could cause it to stop working. - * Clean up "%" unescaping in MRLs; correctly handle "%" in DVD MRLs. + * Clean up "%" unescaping in MRLs; correctly handle "%" in DVD and VCD MRLs. * Fix a crash with "dvb:/". * DVB subtitle fixes: deadlock prevention, thread leakage, spec compliance. * Allow the DVB input plugin to timeout if it is receiving no signal. * Fix an audio resampling problem which was causing regular clicking. * Fix build with recent glibc and a debugging #define. [Bug 1773769] + * Fix handling of multiple MPEG TS audio streams & subtitle languages. + * Add colouring for bold & italic in text subtitles. + * Simple scaling of subtitles to fit the frame width (intended to cope + with common DVB resolutions such as 544x576). xine-lib (1.1.7) * Support libdca (new name for libdts) by shuffling around the dts.h file. diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 doc/man/en/xine.5 --- a/doc/man/en/xine.5 Tue Aug 21 04:39:52 2007 +0100 +++ b/doc/man/en/xine.5 Sun Aug 19 16:13:23 2007 +0100 @@ -38,7 +38,7 @@ to read from. Valid MRLs may be plain fi .br .BI vcd://[<CD_image>|<device_name>][@[letter]<number>] .br -.BI vcdo://... +.BI vcdo://<track_number> .br .BI cdda:/[<device>][/<track-number>] .LP @@ -109,11 +109,11 @@ After the optional device name or file n After the optional device name or file name, you can name the kind of unit, preceded by a colon. An MRL which ends in a colon is like not adding it at all: the default entry type and number is used. Items come in 4 flavours: -\fB"Track"\fP, \fB"Entry"\fP, \fB"Playback"\fP and \fB"Segment"\fP. These +"\fBTrack\fP", "\fBEntry\fP", "\fBPlayback\fP" and "\fBSegment\fP". These units are indicated with the capital first letter of each type: \fBT\fP, \fBE\fP, \fBP\fP, \fBS\fP, \fBs\fP. An uppercase \fBS\fP in the MRL display -indicates a NTS segment while a lowercase \fBS\fP indicates a PAL segment. -However when you enter an MRL, the case of these letters is insignificant. +indicates a NTSC segment while a lowercase \fBs\fP indicates a PAL segment. +However, when you enter an MRL, the case of these letters is insignificant. Depending on the Video CD, you might not have any playable segments (\fBS\fP,\fBs\fP) or playback control (\fBP\fP). If you give a MRL that diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 include/xine.h.in --- a/include/xine.h.in Tue Aug 21 04:39:52 2007 +0100 +++ b/include/xine.h.in Sun Aug 19 16:13:23 2007 +0100 @@ -1536,8 +1536,7 @@ void xine_config_update_entry (xine_t *s * translation of old configuration entry names */ typedef struct { - const char *old; - const char *new; + const char *old_name, *new_name; } xine_config_entry_translation_t; void xine_config_set_translation_user (const xine_config_entry_translation_t *) XINE_PROTECTED; diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 src/demuxers/demux_ts.c --- a/src/demuxers/demux_ts.c Tue Aug 21 04:39:52 2007 +0100 +++ b/src/demuxers/demux_ts.c Sun Aug 19 16:13:23 2007 +0100 @@ -299,6 +299,7 @@ typedef struct { uint8_t *pmt[MAX_PMTS]; uint8_t *pmt_write_ptr[MAX_PMTS]; uint32_t crc32_table[256]; + uint32_t last_pmt_crc; /* * Stuff to do with the transport header. As well as the video * and audio PIDs, we keep the index of the corresponding entry @@ -639,6 +640,7 @@ static void demux_ts_parse_pat (demux_ts if (this->pmt_pid[program_count] != pmt_pid) { this->pmt_pid[program_count] = pmt_pid; this->audio_tracks_count = 0; + this->last_pmt_crc = 0; this->videoPid = INVALID_PID; this->spu_pid = INVALID_PID; } @@ -737,12 +739,11 @@ static int demux_ts_parse_pes_header (xi if (stream_id == 0xbd) { - int track, spu_id; + int spu_id; lprintf ("audio buf = %02X %02X %02X %02X %02X %02X %02X %02X\n", p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]); - track = p[0] & 0x0F; /* hack : ac3 track */ /* * we check the descriptor tag first because some stations * do not include any of the ac3 header info in their audio tracks @@ -776,7 +777,7 @@ static int demux_ts_parse_pes_header (xi m->content = p+4; m->size = packet_len - 4; - m->type |= BUF_AUDIO_A52 + track; + m->type |= BUF_AUDIO_A52; return 1; } else if ((p[0]&0xf0) == 0xa0) { @@ -792,7 +793,7 @@ static int demux_ts_parse_pes_header (xi m->content = p+pcm_offset; m->size = packet_len-pcm_offset; - m->type |= BUF_AUDIO_LPCM_BE + track; + m->type |= BUF_AUDIO_LPCM_BE; return 1; } @@ -823,26 +824,22 @@ static int demux_ts_parse_pes_header (xi } else if ((stream_id & 0xe0) == 0xc0) { - int track; - - track = stream_id & 0x1f; - m->content = p; m->size = packet_len; switch (m->descriptor_tag) { case ISO_11172_AUDIO: case ISO_13818_AUDIO: lprintf ("demux_ts: found MPEG audio track.\n"); - m->type |= BUF_AUDIO_MPEG + track; + m->type |= BUF_AUDIO_MPEG; break; case ISO_13818_PART7_AUDIO: case ISO_14496_PART3_AUDIO: lprintf ("demux_ts: found AAC audio track.\n"); - m->type |= BUF_AUDIO_AAC + track; + m->type |= BUF_AUDIO_AAC; break; default: lprintf ("demux_ts: unknown audio type: %d, defaulting to MPEG.\n", m->descriptor_tag); - m->type |= BUF_AUDIO_MPEG + track; + m->type |= BUF_AUDIO_MPEG; break; } return 1; @@ -1211,11 +1208,24 @@ printf("Program Number is %i, looking fo crc32,calc_crc32); return; } + else { #ifdef TS_PMT_LOG - else { printf ("demux_ts: PMT CRC32 ok.\n"); - } -#endif +#endif + if ( crc32==this->last_pmt_crc ) { +#ifdef TS_PMT_LOG + printf("demux_ts: PMT with CRC32=%d already parsed. Skipping.\n", crc32); +#endif + return; + } + else { +#ifdef TS_PMT_LOG + printf("demux_ts: new PMT, parsing...\n"); +#endif + this->last_pmt_crc = crc32; + } + } + /* * ES definitions start here...we are going to learn upto one video @@ -1922,6 +1932,7 @@ static void demux_ts_event_handler (demu this->spu_pid = INVALID_PID; this->spu_media = 0; this->spu_langs_count= 0; + this->last_pmt_crc = 0; _x_demux_control_start (this->stream); break; @@ -1997,6 +2008,7 @@ static void demux_ts_send_headers (demux this->videoPid = INVALID_PID; this->audio_tracks_count = 0; this->media_num= 0; + this->last_pmt_crc = 0; _x_demux_control_start (this->stream); @@ -2102,31 +2114,21 @@ static int demux_ts_get_optional_data(de case DEMUX_OPTIONAL_DATA_AUDIOLANG: if ((channel >= 0) && (channel < this->audio_tracks_count)) { if(this->audio_tracks[channel].lang) - strcpy(str, this->audio_tracks[channel].lang); + strcpy(str, this->audio_tracks[channel].lang); else - sprintf(str, "%3i", _x_get_audio_channel(this->stream)); + sprintf(str, "%3i", _x_get_audio_channel(this->stream)); } - else - { - snprintf(str, XINE_LANG_MAX, "%3i", _x_get_audio_channel(this->stream)); - } + else { + snprintf(str, XINE_LANG_MAX, "%3i", _x_get_audio_channel(this->stream)); + } return DEMUX_OPTIONAL_SUCCESS; case DEMUX_OPTIONAL_DATA_SPULANG: - if (this->current_spu_channel >= 0 - && this->current_spu_channel < this->spu_langs_count) - { - memcpy(str, this->spu_langs[this->current_spu_channel].desc.lang, 3); - str[3] = 0; - } - else if (this->current_spu_channel == -1) - { - strcpy(str, "none"); - } - else - { - snprintf(str, XINE_LANG_MAX, "%3i", this->current_spu_channel); - } + if (channel>=0 && channel<this->spu_langs_count) { + memcpy(str, this->spu_langs[channel].desc.lang, 3); + str[3] = 0;} + else + strcpy(str, "none"); return DEMUX_OPTIONAL_SUCCESS; default: @@ -2251,6 +2253,7 @@ static demux_plugin_t *open_plugin (demu this->scrambled_npids = 0; this->videoPid = INVALID_PID; this->audio_tracks_count = 0; + this->last_pmt_crc = 0; this->rate = 16000; /* FIXME */ @@ -2331,3 +2334,4 @@ const plugin_info_t xine_plugin_info[] E { PLUGIN_DEMUX, 26, "mpeg-ts", XINE_VERSION_CODE, &demux_info_ts, init_class }, { PLUGIN_NONE, 0, "", 0, NULL, NULL } }; + diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 src/input/vcd/xineplug_inp_vcd.c --- a/src/input/vcd/xineplug_inp_vcd.c Tue Aug 21 04:39:52 2007 +0100 +++ b/src/input/vcd/xineplug_inp_vcd.c Sun Aug 19 16:13:23 2007 +0100 @@ -502,14 +502,16 @@ vcd_parse_mrl(/*in*/ const char *default itemid->type = (vcdinfo_item_enum_t) auto_type; *used_default = false; - if ( NULL != mrl && !strncasecmp(mrl, MRL_PREFIX, MRL_PREFIX_LEN) ) - p = &mrl[MRL_PREFIX_LEN]; - else { + if ( NULL == mrl || strncasecmp(mrl, MRL_PREFIX, MRL_PREFIX_LEN) ) return false; - } - - count = sscanf (p, "%1024[^@]@%1[EePpSsTt]%u", - device_str, type_str, &num); + p = &mrl[MRL_PREFIX_LEN - 2]; + while (*p == '/') + ++p; + + device_str[0] = '/'; + device_str[1] = 0; + count = sscanf (p, "%1023[^@]@%1[EePpSsTt]%u", + device_str + 1, type_str, &num); itemid->num = num; switch (count) { @@ -522,11 +524,18 @@ vcd_parse_mrl(/*in*/ const char *default itemid->num = num; if (1==count) { type_str[0] = 'T'; + if (default_vcd_device) + strncpy(device_str, default_vcd_device, MAX_DEVICE_LEN); + else + *device_str = 0; } - + else + _x_mrl_unescape (device_str); break; } - + case 2 ... 9: + _x_mrl_unescape (device_str); + case 0: case EOF: { diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 src/libspudvb/xine_spudvb_decoder.c --- a/src/libspudvb/xine_spudvb_decoder.c Tue Aug 21 04:39:52 2007 +0100 +++ b/src/libspudvb/xine_spudvb_decoder.c Sun Aug 19 16:13:23 2007 +0100 @@ -121,6 +121,7 @@ void process_object_data_segment (dvb_sp void process_object_data_segment (dvb_spu_decoder_t * this); void draw_subtitles (dvb_spu_decoder_t * this); static void spudec_dispose (spu_decoder_t * this_gen); +void downscale_region_image( region_t *reg, unsigned char *dest, int dest_width ); void create_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int region_depth) { @@ -595,11 +596,31 @@ static void* dvbsub_timer_func(void *thi return NULL; } +void downscale_region_image( region_t *reg, unsigned char *dest, int dest_width ) +{ + float i, k, inc=reg->width/(float)dest_width; + int j; + for ( j=0; j<reg->height; j++ ) { + for ( i=0,k=0; i<reg->width && k<dest_width; i+=inc,k++ ) { + dest[(j*dest_width)+(int)k] = reg->img[(j*reg->width)+(int)i]; + } + } +} + void draw_subtitles (dvb_spu_decoder_t * this) { int r; int x, y, out_y; int display=0; + int64_t dum; + int dest_width=0, dest_height, reg_width; + this->stream->video_out->status(this->stream->video_out, NULL, &dest_width, &dest_height, &dum); + unsigned char tmp[dest_width*576]; + unsigned char *reg; + + if ( !dest_width ) + return; + /* clear it */ memset (this->bitmap, 0, 720 * 576); /* render all regions onto the page */ @@ -608,11 +629,20 @@ void draw_subtitles (dvb_spu_decoder_t * for (r = 0; r < MAX_REGIONS; r++) { if (this->dvbsub->regions[r].win >= 0) { if (this->dvbsub->page.regions[r].is_visible) { + if (this->dvbsub->regions[r].width>dest_width) { + downscale_region_image(&this->dvbsub->regions[r], tmp, dest_width); + reg = tmp; + reg_width = dest_width; + } + else { + reg = this->dvbsub->regions[r].img; + reg_width = this->dvbsub->regions[r].width; + } out_y = this->dvbsub->page.regions[r].y * 720; for (y = 0; y < this->dvbsub->regions[r].height; y++) { - for (x = 0; x < this->dvbsub->regions[r].width; x++) { - this->bitmap[out_y + x + this->dvbsub->page.regions[r].x] = this->dvbsub->regions[r].img[(y * this->dvbsub->regions[r].width) + x]; + for (x = 0; x < reg_width; x++) { + this->bitmap[out_y + x + this->dvbsub->page.regions[r].x] = reg[(y*reg_width) + x]; if (this->bitmap[out_y + x + this->dvbsub->page.regions[r].x]) { display=1; diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 src/libsputext/xine_sputext_decoder.c --- a/src/libsputext/xine_sputext_decoder.c Tue Aug 21 04:39:52 2007 +0100 +++ b/src/libsputext/xine_sputext_decoder.c Sun Aug 19 16:13:23 2007 +0100 @@ -44,6 +44,39 @@ #define SUB_MAX_TEXT 5 /* lines */ #define SUB_BUFSIZE 256 /* chars per line */ +#define rgb2yuv(R,G,B) ((((((66*R+129*G+25*B+128)>>8)+16)<<8)|(((112*R-94*G-18*B+128)>>8)+128))<<8|(((-38*R-74*G+112*B+128)>>8)+128)) + +static uint32_t sub_palette[22]={ +/* RED */ + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(50,10,10), + rgb2yuv(120,20,20), + rgb2yuv(185,50,50), + rgb2yuv(255,70,70), +/* BLUE */ + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,0,0), + rgb2yuv(0,30,50), + rgb2yuv(0,90,120), + rgb2yuv(0,140,185), + rgb2yuv(0,170,255) +}; + +static uint8_t sub_trans[22]={ + 0, 0, 3, 6, 8, 10, 12, 14, 15, 15, 15, + 0, 0, 3, 6, 8, 10, 12, 14, 15, 15, 15 +}; typedef enum { SUBTITLE_SIZE_TINY = 0, @@ -103,6 +136,9 @@ typedef struct sputext_decoder_s { osd_renderer_t *renderer; osd_object_t *osd; + int current_osd_text; + uint32_t spu_palette[OVL_PALETTE_SIZE]; + uint8_t spu_trans[OVL_PALETTE_SIZE]; int64_t img_duration; int64_t last_subtitle_end; /* no new subtitle before this vpts */ @@ -235,115 +271,74 @@ static int parse_utf8_size(unsigned char return 1; } -static int ogm_get_width(sputext_decoder_t *this, char* text) { - int i=0,width=0,w,dummy; +static int ogm_render_line_internal(sputext_decoder_t *this, int x, int y, const char *text, int render) +{ + int i = 0, w, dummy; char letter[5]={0, 0, 0, 0, 0}; - int shift, isutf8 = 0; - char *encoding = (this->buf_encoding)?this->buf_encoding: - this->class->src_encoding; - if( strcmp(encoding, "utf-8") == 0 ) - isutf8 = 1; - - while (i<=strlen(text)) { + const char *encoding = this->buf_encoding ? this->buf_encoding + : this->class->src_encoding; + int shift, isutf8 = !strcmp(encoding, "utf-8"); + size_t length = strlen (text); + + while (i <= length) { switch (text[i]) { case '<': if (!strncmp("<b>", text+i, 3)) { - /*Do somethink to enable BOLD typeface*/ + /* enable Bold color */ + if (render) + this->current_osd_text = OSD_TEXT2; i=i+3; break; - } else if (!strncmp("</b>", text+i, 3)) { - /*Do somethink to disable BOLD typeface*/ + } else if (!strncmp("</b>", text+i, 4)) { + /* disable BOLD */ + if (render) + this->current_osd_text = OSD_TEXT1; i=i+4; break; } else if (!strncmp("<i>", text+i, 3)) { - /*Do somethink to enable italics typeface*/ + /* enable italics color */ + if (render) + this->current_osd_text = OSD_TEXT3; i=i+3; break; - } else if (!strncmp("</i>", text+i, 3)) { - /*Do somethink to disable italics typeface*/ + } else if (!strncmp("</i>", text+i, 4)) { + /* disable italics */ + if (render) + this->current_osd_text = OSD_TEXT1; i=i+4; break; - } else if (!strncmp("<font>", text+i, 3)) { + } else if (!strncmp("<font>", text+i, 6)) { /*Do somethink to disable typing fixme - no teststreams*/ i=i+6; break; - } else if (!strncmp("</font>", text+i, 3)) { - /*Do somethink to enable typing - fixme - no teststreams*/ - i=i+7; - break; - } -default: - if ( isutf8 ) - shift = parse_utf8_size(&text[i]); - else - shift = 1; - memcpy(letter,&text[i],shift); - letter[shift]=0; - [... 74 lines omitted ...] + ogm_render_line_internal (this, x, y, text, 1); } static void draw_subtitle(sputext_decoder_t *this, int64_t sub_start, int64_t sub_end ) { @@ -373,11 +368,8 @@ static void draw_subtitle(sputext_decode for (line = 0; line < this->lines; line++) /* first, check lenghts and word-wrap if needed */ { - int w, h; - if( this->ogm ) - w = ogm_get_width( this, this->text[line]); - else - this->renderer->get_text_size( this->osd, this->text[line], &w, &h); + int w; + w = ogm_get_width( this, this->text[line]); if( w > this->width ) { /* line is too long */ int chunks=(int)(w/this->width)+(w%this->width?1:0); if( this->lines+chunks <= SUB_MAX_TEXT && chunks>1 ) { /* try adding newlines while keeping existing ones */ @@ -411,7 +403,7 @@ static void draw_subtitle(sputext_decode this->lines+=chunks-1; } else { /* regenerate all the lines to find something that better fits */ char buf[SUB_BUFSIZE*SUB_MAX_TEXT]; - int a,w,h,chunks; + int a,w,chunks; buf[0]='\0'; for(a=0;a<this->lines;a++) { if(a) { @@ -421,10 +413,7 @@ static void draw_subtitle(sputext_decode } strcat(buf,this->text[a]); } - if( this->ogm ) - w = ogm_get_width( this, buf); - else - this->renderer->get_text_size( this->osd, buf, &w, &h); + w = ogm_get_width( this, buf); chunks=(int)(w/this->width)+(w%this->width?1:0); xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "Complete subtitle line splitting in %i chunks\n",chunks); if(chunks<=SUB_MAX_TEXT) {/* if the length is over than SUB_MAX_TEXT*this->width nothing can be done */ @@ -461,11 +450,8 @@ static void draw_subtitle(sputext_decode for (line = 0; line < this->lines; line++) /* first, check lenghts and word-wrap if needed */ { - int w, h; - if( this->ogm ) - w = ogm_get_width( this, this->text[line]); - else - this->renderer->get_text_size( this->osd, this->text[line], &w, &h); + int w; + w = ogm_get_width( this, this->text[line]); if( w > this->width ) { /* line is too long */ int chunks=(int)(w/this->width)+(w%this->width?1:0); if( this->lines+chunks <= SUB_MAX_TEXT && chunks>1 ) { /* try adding newlines while keeping existing ones */ @@ -499,7 +485,7 @@ static void draw_subtitle(sputext_decode this->lines+=chunks-1; } else { /* regenerate all the lines to find something that better fits */ char buf[SUB_BUFSIZE*SUB_MAX_TEXT]; - int a,w,h,chunks; + int a,w,chunks; buf[0]='\0'; for(a=0;a<this->lines;a++) { if(a) { @@ -509,10 +495,7 @@ static void draw_subtitle(sputext_decode } strcat(buf,this->text[a]); } - if( this->ogm ) - w = ogm_get_width( this, buf); - else - this->renderer->get_text_size( this->osd, buf, &w, &h); + w = ogm_get_width( this, buf); chunks=(int)(w/this->width)+(w%this->width?1:0); xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "Complete subtitle line splitting in %i chunks\n",chunks); if(chunks<=SUB_MAX_TEXT) {/* if the length is over than SUB_MAX_TEXT*this->width nothing can be done */ @@ -548,14 +531,10 @@ static void draw_subtitle(sputext_decode y = (SUB_MAX_TEXT - this->lines) * this->line_height; for (line = 0; line < this->lines; line++) { - int w, h, x; + int w, x; while(1) { - if( this->ogm ) - w = ogm_get_width( this, this->text[line]); - else - this->renderer->get_text_size( this->osd, this->text[line], - &w, &h); + w = ogm_get_width( this, this->text[line]); x = (this->width - w) / 2; if( w > this->width && font_size > 16 ) { @@ -566,12 +545,7 @@ static void draw_subtitle(sputext_decode } } - if( this->ogm ) { - ogm_render_line(this, x, y + line*this->line_height, this->text[line]); - } else { - this->renderer->render_text (this->osd, x, y + line * this->line_height, - this->text[line], OSD_TEXT1); - } + ogm_render_line(this, x, y + line*this->line_height, this->text[line]); } if( font_size != this->font_size ) @@ -583,6 +557,11 @@ static void draw_subtitle(sputext_decode this->last_subtitle_end = sub_end; this->renderer->set_text_palette (this->osd, -1, OSD_TEXT1); + this->renderer->get_palette(this->osd, this->spu_palette, this->spu_trans); + /* append some colors for colored typeface tag */ + memcpy(this->spu_palette+OSD_TEXT2, sub_palette, sizeof(sub_palette)); + memcpy(this->spu_trans+OSD_TEXT2, sub_trans, sizeof(sub_trans)); + this->renderer->set_palette(this->osd, this->spu_palette, this->spu_trans); if (this->unscaled) this->renderer->show_unscaled (this->osd, sub_start); @@ -626,7 +605,9 @@ static void spudec_decode_data (spu_deco this->buf_encoding = buf->decoder_info_ptr[2]; else this->buf_encoding = NULL; - + + this->current_osd_text = OSD_TEXT1; + if( (buf->type & 0xFFFF0000) == BUF_SPU_OGM ) { this->ogm = 1; diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 src/xine-engine/audio_decoder.c --- a/src/xine-engine/audio_decoder.c Tue Aug 21 04:39:52 2007 +0100 +++ b/src/xine-engine/audio_decoder.c Sun Aug 19 16:13:23 2007 +0100 @@ -253,6 +253,7 @@ static void *audio_decoder_loop (void *s uint32_t audio_type = 0; int i,j; + uint32_t chan=buf->type&0x0000FFFF; /* printf("audio_decoder: buf_type=%08x auto=%08x user=%08x\n", @@ -264,11 +265,11 @@ static void *audio_decoder_loop (void *s /* update track map */ i = 0; - while ( (i<stream->audio_track_map_entries) && (stream->audio_track_map[i]<buf->type) ) + while ( (i<stream->audio_track_map_entries) && ((stream->audio_track_map[i]&0x0000FFFF)<chan) ) i++; if ( (i==stream->audio_track_map_entries) - || (stream->audio_track_map[i] != buf->type) ) { + || ((stream->audio_track_map[i]&0x0000FFFF)!=chan) ) { xine_event_t ui_event; j = stream->audio_track_map_entries; diff -r 4410af8dd84dc741fd59ba031562c527ab1db54f -r ed138775c691b15e553746230bb8dea3a77e2cd1 src/xine-engine/configfile.c --- a/src/xine-engine/configfile.c Tue Aug 21 04:39:52 2007 +0100 +++ b/src/xine-engine/configfile.c Sun Aug 19 16:13:23 2007 +0100 @@ -353,9 +353,9 @@ static const char *config_xlate_internal static const char *config_xlate_internal (const char *key, const xine_config_entry_translation_t *trans) { --trans; - while ((++trans)->old) - if (trans->new[0] && strcmp(key, trans->old) == 0) - return trans->new; + while ((++trans)->old_name) + if (trans->new_name[0] && strcmp(key, trans->old_name) == 0) + return trans->new_name; return NULL; } |
From: <li...@yo...> - 2007-09-09 22:55:44
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1189364047 -3600 # Node ID 0b05f1f08b97ac083e3a757ec566ba84a2377b21 # Parent e8b9fca235669cea7158f3554579ce3dbfec9f7f # Parent acff2450d94296d881a36d0592f88d34278ce96c Merge from 1.1. diff -r 0b05f1f08b97ac083e3a757ec566ba84a2377b21 -r e8b9fca235669cea7158f3554579ce3dbfec9f7f ChangeLog --- a/ChangeLog Sun Sep 09 19:54:07 2007 +0100 +++ b/ChangeLog Mon Aug 27 21:55:56 2007 +0100 @@ -37,6 +37,11 @@ xine-lib (1.1.90) (Unreleased) * The XML parser no longer ignores <?...?> elements. Such elements are handled as if they were after the XML content for compatibility reasons, though they must appear before it. +xine-lib (1.1.9) (unreleased) + * Fix dvd://.../title[.chapter] handling (somewhat broken in 1.1.8). + * Fix switching DVB subtitles channels. + * DVB sub: switch to dyn mem alloc and allow multiple CLUTs per page. + * Check if DVB sub PTS is reliable and show sub immediately if it's not. xine-lib (1.1.8) * Send a channel-changed event to the frontend when receiving the SYNC diff -r 0b05f1f08b97ac083e3a757ec566ba84a2377b21 -r e8b9fca235669cea7158f3554579ce3dbfec9f7f src/demuxers/demux_ts.c --- a/src/demuxers/demux_ts.c Sun Sep 09 19:54:07 2007 +0100 +++ b/src/demuxers/demux_ts.c Mon Aug 27 21:55:56 2007 +0100 @@ -447,6 +447,17 @@ static void check_newpts( demux_ts_t *th } } +/* Send a BUF_SPU_DVB to let xine know of that channel. */ +static void demux_send_special_spu_buf( demux_ts_t *this, int spu_channel ) +{ + buf_element_t *buf; + + buf = this->video_fifo->buffer_pool_alloc( this->video_fifo ); + buf->type = BUF_SPU_DVB|spu_channel; + buf->content = buf->mem; + buf->size = 0; + this->video_fifo->put( this->video_fifo, buf ); +} /* * demux_ts_update_spu_channel @@ -456,7 +467,6 @@ static void check_newpts( demux_ts_t *th */ static void demux_ts_update_spu_channel(demux_ts_t *this) { - xine_event_t ui_event; buf_element_t *buf; this->current_spu_channel = this->stream->spu_channel; @@ -475,6 +485,7 @@ static void demux_ts_update_spu_channel( buf->decoder_info[2] = sizeof(lang->desc); buf->decoder_info_ptr[2] = &(lang->desc); + buf->type |= this->current_spu_channel; this->spu_pid = lang->pid; this->spu_media = lang->media_index; @@ -496,11 +507,6 @@ static void demux_ts_update_spu_channel( } this->video_fifo->put(this->video_fifo, buf); - - /* Inform UI of SPU channel changes */ - ui_event.type = XINE_EVENT_UI_CHANNELS_CHANGED; - ui_event.data_length = 0; - xine_event_send(this->stream, &ui_event); } /* @@ -763,7 +769,7 @@ static int demux_ts_parse_pes_header (xi m->content = p; m->size = packet_len; - m->type = BUF_SPU_DVB; + m->type |= BUF_SPU_DVB; m->buf->decoder_info[2] = payload_len; return 1; } else if ((p[0] & 0xE0) == 0x20) { @@ -1385,9 +1391,9 @@ printf("Program Number is %i, looking fo (stream[pos + 6] << 8) | stream[pos + 7]; lang->pid = pid; lang->media_index = this->media_num; - demux_ts_pes_new(this, this->media_num, - pid, this->video_fifo, - stream[0]); + this->media[this->media_num].type = no; + demux_ts_pes_new(this, this->media_num, pid, this->video_fifo, stream[0]); + demux_send_special_spu_buf( this, no ); #ifdef TS_LOG printf("demux_ts: DVBSUB: pid 0x%.4x: %s page %ld %ld type %2.2x\n", pid, lang->desc.lang, @@ -1465,8 +1471,14 @@ printf("Program Number is %i, looking fo this->pcrPid = pid; } - /* DVBSUB: update spu decoder */ - demux_ts_update_spu_channel(this); + if ( this->stream->spu_channel>=0 && this->spu_langs_count>0 ) + demux_ts_update_spu_channel( this ); + + /* Inform UI of channels changes */ + xine_event_t ui_event; + ui_event.type = XINE_EVENT_UI_CHANNELS_CHANGED; + ui_event.data_length = 0; + xine_event_send( this->stream, &ui_event ); } static int sync_correct(demux_ts_t*this, uint8_t *buf, int32_t npkt_read) { @@ -2026,7 +2038,7 @@ static void demux_ts_send_headers (demux /* DVBSUB */ this->spu_pid = INVALID_PID; this->spu_langs_count = 0; - this->current_spu_channel = this->stream->spu_channel; + this->current_spu_channel = -1; /* FIXME ? */ _x_stream_info_set(this->stream, XINE_STREAM_INFO_HAS_VIDEO, 1); @@ -2266,7 +2278,7 @@ static demux_plugin_t *open_plugin (demu /* DVBSUB */ this->spu_pid = INVALID_PID; this->spu_langs_count = 0; - this->current_spu_channel = this->stream->spu_channel; + this->current_spu_channel = -1; /* dvb */ this->event_queue = xine_event_new_queue (this->stream); diff -r 0b05f1f08b97ac083e3a757ec566ba84a2377b21 -r e8b9fca235669cea7158f3554579ce3dbfec9f7f src/input/input_dvd.c --- a/src/input/input_dvd.c Sun Sep 09 19:54:07 2007 +0100 +++ b/src/input/input_dvd.c Mon Aug 27 21:55:56 2007 +0100 @@ -1509,8 +1509,6 @@ static int dvd_plugin_open (input_plugin return 0; } - free (locator_orig); - dvdnav_get_title_string(this->dvdnav, &this->dvd_name); if(this->dvd_name) _x_meta_info_set(this->stream, XINE_META_INFO_TITLE, this->dvd_name); @@ -1558,6 +1556,7 @@ static int dvd_plugin_open (input_plugin "input_dvd: Title %i is out of range (1 to %i).\n", tt, titles); dvdnav_close(this->dvdnav); this->dvdnav = NULL; + free (locator_orig); return 0; } @@ -1571,6 +1570,7 @@ static int dvd_plugin_open (input_plugin "input_dvd: Part %i is out of range (1 to %i).\n", pr, parts); dvdnav_close(this->dvdnav); this->dvdnav = NULL; + free (locator_orig); return 0; } } @@ -1605,7 +1605,8 @@ static int dvd_plugin_open (input_plugin } update_title_display(this); - + + free (locator_orig); return 1; } diff -r 0b05f1f08b97ac083e3a757ec566ba84a2377b21 -r e8b9fca235669cea7158f3554579ce3dbfec9f7f src/libspudvb/xine_spudvb_decoder.c --- a/src/libspudvb/xine_spudvb_decoder.c Sun Sep 09 19:54:07 2007 +0100 +++ b/src/libspudvb/xine_spudvb_decoder.c Mon Aug 27 21:55:56 2007 +0100 @@ -33,6 +33,8 @@ #include "osd.h" #define MAX_REGIONS 7 +/*#define LOG 1*/ + typedef struct { int x, y; unsigned char is_visible; @@ -49,12 +51,12 @@ typedef struct { typedef struct { int width, height; int depth; - int win; int CLUT_id; int objects_start; int objects_end; unsigned int object_pos[65536]; - unsigned char img[720 * 576]; + unsigned char *img; + osd_object_t *osd; } region_t; typedef struct { @@ -69,8 +71,8 @@ typedef struct { int in_scanline; page_t page; region_t regions[MAX_REGIONS]; - clut_t colours[256]; - unsigned char trans[256]; + clut_t colours[MAX_REGIONS*256]; + unsigned char trans[MAX_REGIONS*256]; } dvbsub_func_t; typedef struct dvb_spu_class_s { @@ -89,8 +91,6 @@ typedef struct dvb_spu_decoder_s { /* dvbsub_osd_mutex should be locked around all calls to this->osd_renderer->show() and this->osd_renderer->hide() */ pthread_mutex_t dvbsub_osd_mutex; - osd_object_t *osd; - char *bitmap; char *pes_pkt; char *pes_pkt_wrptr; @@ -108,7 +108,7 @@ typedef struct dvb_spu_decoder_s { } dvb_spu_decoder_t; -void create_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int region_depth); +void update_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int fill, int fill_color); void do_plot (dvb_spu_decoder_t * this, int r, int x, int y, unsigned char pixel); void plot (dvb_spu_decoder_t * this, int r, int run_length, unsigned char pixel); unsigned char next_nibble (dvb_spu_decoder_t * this); @@ -123,16 +123,60 @@ static void spudec_dispose (spu_decoder_ static void spudec_dispose (spu_decoder_t * this_gen); void downscale_region_image( region_t *reg, unsigned char *dest, int dest_width ); -void create_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int region_depth) -{ - - dvbsub_func_t *dvbsub = this->dvbsub; - - dvbsub->regions[region_id].win = 1; - dvbsub->regions[region_id].width = region_width; - dvbsub->regions[region_id].height = region_height; - - memset (dvbsub->regions[region_id].img, 15, sizeof (dvbsub->regions[region_id].img)); +void update_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int fill, int fill_color) +{ + + dvbsub_func_t *dvbsub = this->dvbsub; + region_t *reg = &dvbsub->regions[region_id]; + + /* reject invalid sizes and set some limits ! */ + if ( region_width<=0 || region_height<=0 || region_width>720 || region_height>576 ) { + if ( reg->img ) { + free( reg->img ); + reg->img = NULL; + } + if ( reg->osd ) { + pthread_mutex_lock( &this->dvbsub_osd_mutex ); + this->stream->osd_renderer->free_object( reg->osd ); + reg->osd = NULL; + pthread_mutex_unlock( &this->dvbsub_osd_mutex ); + } +#ifdef LOG + printf("SPUDVB: rejected region %d = %dx%d\n", region_id, region_width, region_height ); +#endif + return; + } + + if ( reg->width!=region_width || reg->height!=region_height ) { +#ifdef LOG + printf("SPUDVB: update size of region %d = %dx%d\n", region_id, region_width, region_height); +#endif + if ( reg->img ) { + free( reg->img ); + reg->img = NULL; + } + if ( reg->osd ) { + pthread_mutex_lock( &this->dvbsub_osd_mutex ); + this->stream->osd_renderer->free_object( reg->osd ); + reg->osd = NULL; + pthread_mutex_unlock( &this->dvbsub_osd_mutex ); + } + } + + if ( !reg->img ) { + if ( !(reg->img=xine_xmalloc(region_width*region_height)) ) { + lprintf( "can't allocate mem for region %d\n", region_id ); + return; + } + } + if ( !reg->osd ) + reg->osd = this->stream->osd_renderer->new_object( this->stream->osd_renderer, region_width, region_height ); + + if ( fill!=1 ) + fill_color = 15; + memset( reg->img, fill_color, region_width*region_height ); + reg->width = region_width; + reg->height = region_height; } @@ -141,10 +185,10 @@ void do_plot (dvb_spu_decoder_t * this, [... 226 lines omitted ...] + if ( this->dvbsub->regions[i].osd ) + this->stream->osd_renderer->hide( this->dvbsub->regions[i].osd, 0 ); + } pthread_mutex_unlock(&this->dvbsub_osd_mutex); } else { @@ -715,11 +770,25 @@ static void spudec_decode_data (spu_deco } } } - /* inform metronom we've received the package */ - if (buf->pts) { - metronom_t *metronom = this->stream->metronom; - this->vpts = metronom->got_spu_packet (metronom, buf->pts); - } + /* don't ask metronom for a vpts but rather do the calculation + * because buf->pts could be too far in future and metronom won't accept + * further backwards pts (see metronom_got_spu_packet) */ + if (buf->pts) { + metronom_t *metronom = this->stream->metronom; + int64_t vpts_offset = metronom->get_option( metronom, METRONOM_VPTS_OFFSET ); + int64_t spu_offset = metronom->get_option( metronom, METRONOM_SPU_OFFSET ); + int64_t vpts = (int64_t)(buf->pts)+vpts_offset+spu_offset; + metronom_clock_t *clock = this->stream->xine->clock; + int64_t curvpts = clock->get_current_time( clock ); + /* if buf->pts is unreliable, show page asap (better than nothing) */ +#ifdef LOG + printf("SPUDVB: spu_vpts=%lld - current_vpts=%lld\n", vpts, curvpts); +#endif + if ( vpts<=curvpts || (vpts-curvpts)>(5*90000) ) + this->vpts = 0; + else + this->vpts = vpts; + } /* process the pes section */ @@ -762,17 +831,12 @@ static void spudec_decode_data (spu_deco process_object_data_segment (this); break; case 0x80: /* Page is now completely rendered */ - for (r=0;r<MAX_REGIONS;r++){ - memset (this->dvbsub->regions[r].img, 15, sizeof (this->dvbsub->regions[r].img)); - this->dvbsub->page.regions[r].is_visible=0; - this->dvbsub->regions[r].win = -1; - } + draw_subtitles( this ); break; default: return; break; } - draw_subtitles(this); } this->dvbsub->i = new_i; } @@ -783,10 +847,14 @@ static void spudec_reset (spu_decoder_t static void spudec_reset (spu_decoder_t * this_gen) { dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; + int i; /* Hide the osd - if the timeout thread times out, it'll rehide harmlessly */ pthread_mutex_lock(&this->dvbsub_osd_mutex); - this->stream->osd_renderer->hide(this->osd, 0); + for ( i=0; i<MAX_REGIONS; i++ ) { + if ( this->dvbsub->regions[i].osd ) + this->stream->osd_renderer->hide(this->dvbsub->regions[i].osd, 0); + } pthread_mutex_unlock(&this->dvbsub_osd_mutex); } @@ -799,6 +867,7 @@ static void spudec_dispose (spu_decoder_ static void spudec_dispose (spu_decoder_t * this_gen) { dvb_spu_decoder_t *this = (dvb_spu_decoder_t *) this_gen; + int i; pthread_cancel(this->dvbsub_timer_thread); pthread_join(this->dvbsub_timer_thread, NULL); @@ -810,16 +879,15 @@ static void spudec_dispose (spu_decoder_ this->spu_descriptor=NULL; } - if (this->osd) { - this->stream->osd_renderer->free_object (this->osd); - this->osd = NULL; + for ( i=0; i<MAX_REGIONS; i++ ) { + if ( this->dvbsub->regions[i].img ) + free( this->dvbsub->regions[i].img ); + if ( this->dvbsub->regions[i].osd ) + this->stream->osd_renderer->free_object( this->dvbsub->regions[i].osd ); } if (this->pes_pkt) free (this->pes_pkt); - - if (this->bitmap) - free (this->bitmap); if (this->dvbsub) free (this->dvbsub); @@ -847,21 +915,16 @@ static spu_decoder_t *dvb_spu_class_open this->stream = stream; this->pes_pkt = xine_xmalloc (1024*65); - this->bitmap = xine_xmalloc (720*576); this->spu_descriptor = xine_xmalloc(sizeof(spu_dvb_descriptor_t)); this->dvbsub = xine_xmalloc (sizeof (dvbsub_func_t)); for (i = 0; i < MAX_REGIONS; i++) { this->dvbsub->page.regions[i].is_visible = 0; - this->dvbsub->regions[i].win = -1; - } - - this->osd = this->stream->osd_renderer->new_object (this->stream->osd_renderer, 720, 600); - this->stream->osd_renderer->set_position (this->osd, 1, 1); - this->stream->osd_renderer->set_font (this->osd, "cetus", 26); - this->stream->osd_renderer->set_encoding (this->osd, NULL); - this->stream->osd_renderer->set_text_palette (this->osd, TEXTPALETTE_YELLOW_BLACK_TRANSPARENT, OSD_TEXT1); + this->dvbsub->regions[i].img = NULL; + this->dvbsub->regions[i].osd = NULL; + this->dvbsub->regions[i].CLUT_id = 0; + } pthread_mutex_init(&this->dvbsub_osd_mutex, NULL); pthread_cond_init(&this->dvbsub_restart_timeout, NULL); |
From: <li...@yo...> - 2007-09-14 19:58:41
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1189799383 -3600 # Node ID 3fef8524c1fd7efd40dc9915f91965d4f4524940 # Parent 5b37f4e11e71f2b09283bdd4d7cc6440b3e002e3 # Parent 6d7250703a09f38b33c86448a2a38520372159eb Merge from 1.1. diff -r 3fef8524c1fd7efd40dc9915f91965d4f4524940 -r 5b37f4e11e71f2b09283bdd4d7cc6440b3e002e3 src/libspudvb/xine_spudvb_decoder.c --- a/src/libspudvb/xine_spudvb_decoder.c Fri Sep 14 20:49:43 2007 +0100 +++ b/src/libspudvb/xine_spudvb_decoder.c Fri Sep 14 20:48:15 2007 +0100 @@ -108,22 +108,7 @@ typedef struct dvb_spu_decoder_s { } dvb_spu_decoder_t; -void update_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int fill, int fill_color); -void do_plot (dvb_spu_decoder_t * this, int r, int x, int y, unsigned char pixel); -void plot (dvb_spu_decoder_t * this, int r, int run_length, unsigned char pixel); -unsigned char next_nibble (dvb_spu_decoder_t * this); -void set_clut (dvb_spu_decoder_t * this, int CLUT_id, int CLUT_entry_id, int Y_value, int Cr_value, int Cb_value, int T_value); -void decode_4bit_pixel_code_string (dvb_spu_decoder_t * this, int r, int object_id, int ofs, int n); -void process_pixel_data_sub_block (dvb_spu_decoder_t * this, int r, int o, int ofs, int n); -void process_page_composition_segment (dvb_spu_decoder_t * this); -void process_region_composition_segment (dvb_spu_decoder_t * this); -void process_CLUT_definition_segment (dvb_spu_decoder_t * this); -void process_object_data_segment (dvb_spu_decoder_t * this); -void draw_subtitles (dvb_spu_decoder_t * this); -static void spudec_dispose (spu_decoder_t * this_gen); -void downscale_region_image( region_t *reg, unsigned char *dest, int dest_width ); - -void update_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int fill, int fill_color) +static void update_region (dvb_spu_decoder_t * this, int region_id, int region_width, int region_height, int fill, int fill_color) { dvbsub_func_t *dvbsub = this->dvbsub; @@ -180,7 +165,7 @@ void update_region (dvb_spu_decoder_t * } -void do_plot (dvb_spu_decoder_t * this, int r, int x, int y, unsigned char pixel) +static void do_plot (dvb_spu_decoder_t * this, int r, int x, int y, unsigned char pixel) { int i; dvbsub_func_t *dvbsub = this->dvbsub; @@ -191,7 +176,7 @@ void do_plot (dvb_spu_decoder_t * this, dvbsub->regions[r].img[i] = pixel; } -void plot (dvb_spu_decoder_t * this, int r, int run_length, unsigned char pixel) +static void plot (dvb_spu_decoder_t * this, int r, int run_length, unsigned char pixel) { dvbsub_func_t *dvbsub = this->dvbsub; @@ -204,7 +189,7 @@ void plot (dvb_spu_decoder_t * this, int } } -unsigned char next_nibble (dvb_spu_decoder_t * this) +static unsigned char next_nibble (dvb_spu_decoder_t * this) { unsigned char x; dvbsub_func_t *dvbsub = this->dvbsub; @@ -220,7 +205,7 @@ unsigned char next_nibble (dvb_spu_decod return (x); } -void decode_4bit_pixel_code_string (dvb_spu_decoder_t * this, int r, int object_id, int ofs, int n) +static void decode_4bit_pixel_code_string (dvb_spu_decoder_t * this, int r, int object_id, int ofs, int n) { int next_bits, switch_1, switch_2, switch_3, run_length, pixel_code; @@ -308,7 +293,7 @@ void decode_4bit_pixel_code_string (dvb_ } -void set_clut(dvb_spu_decoder_t *this,int CLUT_id,int CLUT_entry_id,int Y_value, int Cr_value, int Cb_value, int T_value) { +static void set_clut(dvb_spu_decoder_t *this,int CLUT_id,int CLUT_entry_id,int Y_value, int Cr_value, int Cb_value, int T_value) { dvbsub_func_t *dvbsub = this->dvbsub; @@ -328,7 +313,7 @@ void set_clut(dvb_spu_decoder_t *this,in } -void process_CLUT_definition_segment(dvb_spu_decoder_t *this) { +static void process_CLUT_definition_segment(dvb_spu_decoder_t *this) { int page_id, segment_length, CLUT_id, @@ -370,17 +355,17 @@ void process_CLUT_definition_segment(dvb Cb_value=dvbsub->buf[dvbsub->i++]; T_value=dvbsub->buf[dvbsub->i++]; } else { - Y_value=(dvbsub->buf[dvbsub->i]&0xfc)>>2; - Cr_value=(dvbsub->buf[dvbsub->i]&0x2<<2)|((dvbsub->buf[dvbsub->i+1]&0xc0)>>6); - Cb_value=(dvbsub->buf[dvbsub->i+1]&0x2c)>>2; - T_value=dvbsub->buf[dvbsub->i+1]&2; + Y_value = dvbsub->buf[dvbsub->i] & 0xfc; + Cr_value = (dvbsub->buf[dvbsub->i] << 6 | dvbsub->buf[dvbsub->i + 1] >> 2) & 0xf0; + Cb_value = (dvbsub->buf[dvbsub->i + 1] << 2) & 0xf0; + T_value = (dvbsub->buf[dvbsub->i + 1] & 3) * 0x55; /* expand only this one to full range! */ dvbsub->i+=2; } set_clut(this, CLUT_id,CLUT_entry_id,Y_value,Cr_value,Cb_value,T_value); } } -void process_pixel_data_sub_block (dvb_spu_decoder_t * this, int r, int o, int ofs, int n) +static void process_pixel_data_sub_block (dvb_spu_decoder_t * this, int r, int o, int ofs, int n) { int data_type; int j; @@ -413,7 +398,7 @@ void process_pixel_data_sub_block (dvb_s dvbsub->i = j; } -void process_page_composition_segment (dvb_spu_decoder_t * this) +static void process_page_composition_segment (dvb_spu_decoder_t * this) { int segment_length; int region_id, region_x, region_y; @@ -459,7 +444,7 @@ void process_page_composition_segment (d } -void process_region_composition_segment (dvb_spu_decoder_t * this) +static void process_region_composition_segment (dvb_spu_decoder_t * this) { int segment_length, region_id, @@ -528,7 +513,7 @@ void process_region_composition_segment } -void process_object_data_segment (dvb_spu_decoder_t * this) +static void process_object_data_segment (dvb_spu_decoder_t * this) { int segment_length, object_id, object_version_number, object_coding_method, non_modifying_colour_flag; @@ -637,7 +622,7 @@ static void* dvbsub_timer_func(void *thi return NULL; } -void downscale_region_image( region_t *reg, unsigned char *dest, int dest_width ) +static void downscale_region_image( region_t *reg, unsigned char *dest, int dest_width ) { float i, k, inc=reg->width/(float)dest_width; int j; @@ -648,7 +633,7 @@ void downscale_region_image( region_t *r } } -void draw_subtitles (dvb_spu_decoder_t * this) +static void draw_subtitles (dvb_spu_decoder_t * this) { int r; int display=0; |
From: <li...@yo...> - 2007-09-30 20:25:34
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1190509845 -3600 # Node ID 717b46d826e66cb37632dab4f7a1ad78fdaa17cd # Parent 46ea116ba7cd56754a55e97efc1e9a9a1bb6d52b # Parent bd2d7c2d1fe6c44a95590d3b2eaab9ae75ddc110 Merge from 1.1. diff -r 717b46d826e66cb37632dab4f7a1ad78fdaa17cd -r 46ea116ba7cd56754a55e97efc1e9a9a1bb6d52b m4/directx.m4 --- a/m4/directx.m4 Sun Sep 23 02:10:45 2007 +0100 +++ b/m4/directx.m4 Wed Sep 19 18:22:32 2007 +0100 @@ -28,7 +28,7 @@ AC_DEFUN([AM_PATH_DIRECTX], [ #include <windows.h> #include <ddraw.h> #include <dsound.h>]], - [[DirectDrawCreate(0, NULL, 0); DirectsoundCreate(0, NULL, 0)]])], + [[DirectDrawCreate(0, NULL, 0); DirectSoundCreate(0, NULL, 0)]])], [have_directx=yes], [have_directx=no]) CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" diff -r 717b46d826e66cb37632dab4f7a1ad78fdaa17cd -r 46ea116ba7cd56754a55e97efc1e9a9a1bb6d52b src/libmpeg2/decode.c --- a/src/libmpeg2/decode.c Sun Sep 23 02:10:45 2007 +0100 +++ b/src/libmpeg2/decode.c Wed Sep 19 18:22:32 2007 +0100 @@ -484,7 +484,7 @@ static inline int parse_chunk (mpeg2dec_ /* from the decoder to report the AFD change in display order and not */ /* in decoding order like it happens below for now. */ _x_stream_info_set(mpeg2dec->stream, XINE_STREAM_INFO_VIDEO_AFD, mpeg2dec->afd_value_seen); -fprintf(stderr, "AFD changed from %d to %d\n", mpeg2dec->afd_value_reported, mpeg2dec->afd_value_seen); + lprintf ("AFD changed from %d to %d\n", mpeg2dec->afd_value_reported, mpeg2dec->afd_value_seen); mpeg2dec->afd_value_reported = mpeg2dec->afd_value_seen; } diff -r 717b46d826e66cb37632dab4f7a1ad78fdaa17cd -r 46ea116ba7cd56754a55e97efc1e9a9a1bb6d52b src/libreal/real_common.c --- a/src/libreal/real_common.c Sun Sep 23 02:10:45 2007 +0100 +++ b/src/libreal/real_common.c Wed Sep 19 18:22:32 2007 +0100 @@ -89,6 +89,8 @@ void _x_real_codecs_init(xine_t *const x /* The priority is for the first found */ try_real_subpath("lib/win32") else try_real_subpath("lib/codecs") + else try_real_subpath("lib/real") + else try_real_subpath("lib/RealPlayer10GOLD/codecs") else try_real_subpath("lib64/RealPlayer10/codecs") else try_real_subpath("lib/RealPlayer10/codecs") else try_real_subpath("lib64/RealPlayer9/users/Real/Codecs") |
From: <li...@yo...> - 2007-10-03 19:08:08
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1191438239 -3600 # Node ID a33843a7bc9d39a609ef55a4c71999ed5ba4dcb3 # Parent 0221391e6bdcf968d4b3a3ba38e63950809c97c0 # Parent c6d9391b15e9aaa4c7a9cf0bb021f630ae209105 Merge from 1.1. diff -r a33843a7bc9d39a609ef55a4c71999ed5ba4dcb3 -r 0221391e6bdcf968d4b3a3ba38e63950809c97c0 ChangeLog --- a/ChangeLog Wed Oct 03 20:03:59 2007 +0100 +++ b/ChangeLog Tue Oct 02 17:07:25 2007 +0100 @@ -46,6 +46,10 @@ xine-lib (1.1.9) (unreleased) * Fix switching DVB subtitles channels. * DVB sub: switch to dyn mem alloc and allow multiple CLUTs per page. * Check if DVB sub PTS is reliable and show sub immediately if it's not. + * Fix incorrect H.264 detection on successive MPEG1/2 B frames. + * Add UI option to configure FFmpeg's video decoder thread count. + * Improve syncing of audio and video in the presence of bad frames. + * Improve handling of invalid or unknown frame sizes. xine-lib (1.1.8) * Send a channel-changed event to the frontend when receiving the SYNC diff -r a33843a7bc9d39a609ef55a4c71999ed5ba4dcb3 -r 0221391e6bdcf968d4b3a3ba38e63950809c97c0 src/demuxers/demux_mpeg_pes.c --- a/src/demuxers/demux_mpeg_pes.c Wed Oct 03 20:03:59 2007 +0100 +++ b/src/demuxers/demux_mpeg_pes.c Tue Oct 02 17:07:25 2007 +0100 @@ -1110,7 +1110,7 @@ static int32_t parse_video_stream(demux_ uint8_t *pp = p + 2, *pp_limit = p + payload_size - 1; while (0 < pp && pp < pp_limit) { if (pp[0] == 0x01 && pp[-1] == 0x00 && pp[-2] == 0x00) { - if (pp[1] >= 0x80) { /* MPEG 1/2 start code */ + if (pp[1] >= 0x80 || !pp[1]) { /* MPEG 1/2 start code */ this->mpeg12_h264_detected = 2; break; } else { diff -r a33843a7bc9d39a609ef55a4c71999ed5ba4dcb3 -r 0221391e6bdcf968d4b3a3ba38e63950809c97c0 src/libffmpeg/ff_video_decoder.c --- a/src/libffmpeg/ff_video_decoder.c Wed Oct 03 20:03:59 2007 +0100 +++ b/src/libffmpeg/ff_video_decoder.c Tue Oct 02 17:07:25 2007 +0100 @@ -65,6 +65,7 @@ typedef struct ff_video_class_s { video_decoder_class_t decoder_class; int pp_quality; + int thread_count; xine_t *xine; } ff_video_class_t; @@ -366,6 +367,12 @@ static void init_video_codec (ff_video_d _x_stream_info_set(this->stream, XINE_STREAM_INFO_VIDEO_HANDLED, 0); return; } + + if (this->class->thread_count > 1) { + avcodec_thread_init(this->context, this->class->thread_count); + this->context->thread_count = this->class->thread_count; + } + pthread_mutex_unlock(&ffmpeg_lock); lprintf("lavc decoder opened\n"); @@ -418,6 +425,12 @@ static void init_video_codec (ff_video_d break; } +} + +static void thread_count_cb(void *user_data, xine_cfg_entry_t *entry) { + ff_video_class_t *class = (ff_video_class_t *) user_data; + + class->thread_count = entry->num_value; } static void pp_quality_cb(void *user_data, xine_cfg_entry_t *entry) { @@ -1292,14 +1305,17 @@ static void ff_handle_buffer (ff_video_d } if (!got_one_picture) { - /* skipped frame, output a bad frame */ + /* skipped frame, output a bad frame (of size 1x1 when size still uninitialized) */ img = this->stream->video_out->get_frame (this->stream->video_out, - this->bih.biWidth, - this->bih.biHeight, + (this->bih.biWidth <= 0) ? 1 : this->bih.biWidth, + (this->bih.biHeight <= 0) ? 1 : this->bih.biHeight, this->aspect_ratio, this->output_format, VO_BOTH_FIELDS|this->frame_flags); - img->pts = 0; + /* set PTS to allow early syncing */ + img->pts = this->pts; + this->pts = 0; + img->duration = this->video_step; img->bad_frame = 1; this->skipframes = img->draw(img, this->stream); @@ -1525,6 +1541,15 @@ void *init_video_plugin (xine_t *xine, v "too much."), 10, pp_quality_cb, this); + this->thread_count = xine->config->register_num(config, "video.processing.ffmpeg_thread_count", 1, + _("FFmpeg video decoding thread count"), + _("You can adjust the number of video decoding threads which FFmpeg may use.\n" + "Higher values should speed up decoding but it depends on the codec used " + "whether parallel decoding is supported. A rule of thumb is to have one " + "decoding thread per logical CPU (typically 1 to 4). A change will take " + "effect with playing the next stream."), + 10, thread_count_cb, this); + return this; } diff -r a33843a7bc9d39a609ef55a4c71999ed5ba4dcb3 -r 0221391e6bdcf968d4b3a3ba38e63950809c97c0 src/video_out/video_out_xv.c --- a/src/video_out/video_out_xv.c Wed Oct 03 20:03:59 2007 +0100 +++ b/src/video_out/video_out_xv.c Tue Oct 02 17:07:25 2007 +0100 @@ -252,11 +252,6 @@ static XvImage *create_ximage (xv_driver unsigned int xv_format; XvImage *image = NULL; - if (width <= 0) - width = 1; - if (height <= 0) - height = 1; - if (this->use_pitch_alignment) { lprintf ("use_pitch_alignment old width=%d",width); width = (width + 7) & ~0x7; diff -r a33843a7bc9d39a609ef55a4c71999ed5ba4dcb3 -r 0221391e6bdcf968d4b3a3ba38e63950809c97c0 src/video_out/video_out_xxmc.c --- a/src/video_out/video_out_xxmc.c Wed Oct 03 20:03:59 2007 +0100 +++ b/src/video_out/video_out_xxmc.c Tue Oct 02 17:07:25 2007 +0100 @@ -605,11 +605,6 @@ static XvImage *create_ximage (xxmc_driv int width, int height, int format) { unsigned int xv_format; XvImage *image = NULL; - - if (width <= 0) - width = 1; - if (height <= 0) - height = 1; if (this->use_pitch_alignment) { width = (width + 7) & ~0x7; |
From: <li...@yo...> - 2007-10-18 22:09:14
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1192745320 -3600 # Node ID f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e # Parent 9c4596aad5c75d84cf3b064a26da756416aa25e6 # Parent d562948ee6abdaaf8622b8b1585899f44b26d06c Merge from 1.1. diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r 9c4596aad5c75d84cf3b064a26da756416aa25e6 ChangeLog --- a/ChangeLog Thu Oct 18 23:08:40 2007 +0100 +++ b/ChangeLog Thu Oct 18 15:22:48 2007 +0100 @@ -53,6 +53,7 @@ xine-lib (1.1.9) (unreleased) * Add UI option to configure FFmpeg's video decoder thread count. * Improve syncing of audio and video in the presence of bad frames. * Improve handling of invalid or unknown frame sizes. + * Fixed handling of streamed Flash videos (broken in 1.1.5). xine-lib (1.1.8) * Send a channel-changed event to the frontend when receiving the SYNC diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r 9c4596aad5c75d84cf3b064a26da756416aa25e6 src/demuxers/demux_flv.c --- a/src/demuxers/demux_flv.c Thu Oct 18 23:08:40 2007 +0100 +++ b/src/demuxers/demux_flv.c Thu Oct 18 15:22:48 2007 +0100 @@ -183,10 +183,7 @@ static int open_flv_file(demux_flv_t *th this->start = _X_BE_32(&buffer[5]); this->size = this->input->get_length(this->input); - if (INPUT_IS_SEEKABLE(this->input)) - this->input->seek(this->input, this->start, SEEK_SET); - else if (this->start > 9) - this->input->seek(this->input, this->start-9, SEEK_CUR); + this->input->seek(this->input, this->start, SEEK_SET); lprintf(" qualified FLV file, repositioned @ offset 0x%" PRIxMAX "\n", (intmax_t)this->start); @@ -340,7 +337,7 @@ static void parse_flv_script(demux_flv_t free(buf); } -static int read_flv_packet(demux_flv_t *this) { +static int read_flv_packet(demux_flv_t *this, int preview) { fifo_buffer_t *fifo = NULL; buf_element_t *buf = NULL; unsigned char buffer[12]; @@ -487,7 +484,9 @@ static int read_flv_packet(demux_flv_t * buf = fifo->buffer_pool_alloc(fifo); buf->type = buf_type; buf->pts = (int64_t) pts * 90; - check_newpts(this, buf->pts, (tag_type == FLV_TAG_TYPE_VIDEO)); + + if (!preview) + check_newpts(this, buf->pts, (tag_type == FLV_TAG_TYPE_VIDEO)); buf->extra_info->input_time = pts; if (this->input->get_length(this->input)) { @@ -502,6 +501,8 @@ static int read_flv_packet(demux_flv_t * remaining_bytes -= buf->size; buf->decoder_flags = buf_flags; + if (preview) + buf->decoder_flags |= BUF_FLAG_PREVIEW; if (!remaining_bytes) buf->decoder_flags |= BUF_FLAG_FRAME_END; @@ -609,7 +610,7 @@ static int demux_flv_send_chunk(demux_pl static int demux_flv_send_chunk(demux_plugin_t *this_gen) { demux_flv_t *this = (demux_flv_t *) this_gen; - return read_flv_packet(this); + return read_flv_packet(this, 0); } static void demux_flv_send_headers(demux_plugin_t *this_gen) { @@ -632,7 +633,7 @@ static void demux_flv_send_headers(demux /* find first audio/video packets and send headers */ for (i = 0; i < 20; i++) { - if (read_flv_packet(this) != DEMUX_OK) + if (read_flv_packet(this, 1) != DEMUX_OK) break; if (((this->flags & FLV_FLAG_HAS_VIDEO) && this->got_video) && ((this->flags & FLV_FLAG_HAS_AUDIO) && this->got_audio)) { diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r 9c4596aad5c75d84cf3b064a26da756416aa25e6 src/demuxers/demux_matroska.c --- a/src/demuxers/demux_matroska.c Thu Oct 18 23:08:40 2007 +0100 +++ b/src/demuxers/demux_matroska.c Thu Oct 18 15:22:48 2007 +0100 @@ -1856,7 +1856,7 @@ static int parse_block (demux_matroska_t gap = flags & 1; lacing = (flags >> 1) & 0x3; - fprintf(stderr, "lacing: %x\n", lacing); +/*fprintf(stderr, "lacing: %x\n", lacing);*/ if (!find_track_by_id(this, (int)track_num, &track)) { xprintf(this->stream->xine, XINE_VERBOSITY_LOG, diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r 9c4596aad5c75d84cf3b064a26da756416aa25e6 src/libreal/real_common.c --- a/src/libreal/real_common.c Thu Oct 18 23:08:40 2007 +0100 +++ b/src/libreal/real_common.c Thu Oct 18 15:22:48 2007 +0100 @@ -89,6 +89,7 @@ void _x_real_codecs_init(xine_t *const x /* The priority is for the first found */ try_real_subpath("lib/win32") else try_real_subpath("lib/codecs") + else try_real_subpath("lib64/real") else try_real_subpath("lib/real") else try_real_subpath("lib/RealPlayer10GOLD/codecs") else try_real_subpath("lib64/RealPlayer10/codecs") |
From: <li...@yo...> - 2007-10-29 17:32:43
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1193677771 0 # Node ID ff19f68c92f2b618d918332f6eae9b10e12a7b63 # Parent ae9a2fddb2b6b50dab2a7ac649b2307719c78fe2 # Parent 5574c3327175ad4770c8ba1f3f07b55cf84faea5 Merge from 1.1. Spanish translation merge needs checking. diff -r ff19f68c92f2b618d918332f6eae9b10e12a7b63 -r ae9a2fddb2b6b50dab2a7ac649b2307719c78fe2 ChangeLog --- a/ChangeLog Mon Oct 29 17:09:31 2007 +0000 +++ b/ChangeLog Thu Oct 25 13:53:42 2007 +0100 @@ -55,6 +55,7 @@ xine-lib (1.1.9) (unreleased) * Improve handling of invalid or unknown frame sizes. * Fixed handling of streamed Flash videos (broken in 1.1.5). * Fixed division by zero in sputext decoder + * Build fix for when using Linux 2.6.23 headers. [Bug 1820958] xine-lib (1.1.8) * Send a channel-changed event to the frontend when receiving the SYNC diff -r ff19f68c92f2b618d918332f6eae9b10e12a7b63 -r ae9a2fddb2b6b50dab2a7ac649b2307719c78fe2 po/es.po --- a/po/es.po Mon Oct 29 17:09:31 2007 +0000 +++ b/po/es.po Thu Oct 25 13:53:42 2007 +0100 @@ -4,13 +4,14 @@ # # Juan Manuel García Molina <jua...@wa...>, 2002. # Carlos E. Robinson M. <car...@us...>, 2006, 2007. +# Cer: <<== marcas de revision. msgid "" msgstr "" "Project-Id-Version: xine-lib-1.1.4\n" "Report-Msgid-Bugs-To: xin...@li...\n" -"POT-Creation-Date: 2007-06-02 13:14+0200\n" -"PO-Revision-Date: 2007-02-28 14:07+0100\n" -"Last-Translator: Carlos E. Robinson M. <car...@us...>\n" +"POT-Creation-Date: 2007-08-26 22:19+0100\n" +"PO-Revision-Date: 2007-10-28 00:11+0200\n" +"Last-Translator: Carlos E. Robinson <car...@us...>\n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,35 +21,31 @@ msgstr "" "X-Poedit-Language: Spanish\n" "X-Poedit-Country: SPAIN\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Poedit-Basepath: /home/cer/compilaciones/xine/xine-lib-1.1.4\n" +"X-Poedit-Basepath: /home/cer/Documents/babel/xine-lib/po/\n" #: lib/hstrerror.c:17 -#, fuzzy msgid "No error" -msgstr "error desconocido" +msgstr "Sin error" #: lib/hstrerror.c:18 -#, fuzzy msgid "Unknown host" -msgstr "error desconocido" +msgstr "Host desconocido" #: lib/hstrerror.c:19 msgid "No address associated with name" -msgstr "" +msgstr "No hay dirección asociada con el nombre" #: lib/hstrerror.c:20 -#, fuzzy msgid "Unknown server error" -msgstr "error desconocido" +msgstr "Error de servidor desconocido" #: lib/hstrerror.c:21 msgid "Host name lookup failure" -msgstr "" +msgstr "Fallo de búsqueda de nombre del host" #: lib/hstrerror.c:22 -#, fuzzy msgid "Unknown error" -msgstr "error desconocido" +msgstr "Error desconocido" #: src/audio_out/audio_alsa_out.c:351 #, c-format @@ -243,7 +240,7 @@ msgstr "" "un superbajos para las frecuencias bajas.\n" "Paso libre: Su sistema de sonido recibirá sonido digital sin decodificar de " "xine. Necesita conectar un decodificador digital envolvente capaz de " -"decodificar los formatos que quiera reproducir mediate la salida digital de " +"decodificar los formatos que quiera reproducir mediante la salida digital de " "su tarjeta de sonido." #: src/audio_out/audio_alsa_out.c:1491 @@ -568,8 +565,8 @@ msgid "" "The unit of the value is one PTS tick, which is the 90000th part of a second." msgstr "" "Si observa que el sonido no está sincronizado con la imagen, puede " -"introducir aquí un desfase fijo para compensar.\n" -"La unidad del valor es un tick PTS tick, que es 1/90000 de segundo." +"introducir aquí un desfase fijo para compensar.\n" +"La unidad del valor es una marca PTS, que es 1/90000 segundo." #: src/audio_out/audio_esd_out.c:574 msgid "xine audio output plugin using esound" @@ -592,16 +589,16 @@ msgstr "" msgstr "" "Puede especificar la máxima distancia entre el audio y el video que xine " "tolerará antes de que trate de resincronizarlos.\n" -"La unidad del valor es un tick PTS tick, que es 1/90000 de segundo." +"La unidad del valor es una marca PTS, que es 1/90000 segundo." #: src/audio_out/audio_irixal_out.c:417 msgid "xine audio output plugin using IRIX libaudio" msgstr "complemento de xine de salida de audio usando libaudio IRIX" #: src/audio_out/audio_jack_out.c:406 -#, fuzzy msgid "xine output plugin for JACK Audio Connection Kit" -msgstr "complemento de xine de salida de audio para Coreaudio/Mac OS X" +msgstr "" +"complemento de xine de salida de audio para \"JACK Audio Connection Kit\"" #: src/audio_out/audio_none_out.c:225 msgid "xine dummy audio output plugin" @@ -813,22 +810,23 @@ msgstr "" "complemento de xine de salida de audio usando dispositivos/drivers " "compatibles OSS" +# Cer: ¿pulseaudio? #: src/audio_out/audio_pulse_out.c:608 -#, fuzzy msgid "device used for pulseaudio" -msgstr "dispositivo usado para polypaudio" - +msgstr "dispositivo usado para audio a pulsos" + +# Cer: ¿pulseaudio? Estaba como "polypaudio" pero fuzzy. #: src/audio_out/audio_pulse_out.c:609 -#, fuzzy msgid "use 'server[:sink]' for setting the pulseaudio sink device." msgstr "" -"use 'server[:sink]' para definir el sumidero del dispositivo polypaudio." - +"use 'server[:sink]' para definir el sumidero del dispositivo audio a pulsos." + +# Cer: ¿pulseaudio? #: src/audio_out/audio_pulse_out.c:646 -#, fuzzy [... 2394 lines omitted ...] #: src/xine-engine/xine_interface.c:958 msgid "Warning:" -msgstr "" +msgstr "Aviso:" #: src/xine-engine/xine_interface.c:959 -#, fuzzy msgid "Unknown host:" -msgstr "error desconocido" +msgstr "host desconocido:" #: src/xine-engine/xine_interface.c:960 -#, fuzzy msgid "Unknown device:" -msgstr "Tipo de evento desconocido: " +msgstr "Dispositivo desconocido:" #: src/xine-engine/xine_interface.c:961 msgid "Network unreachable" -msgstr "" +msgstr "Red no alcanzable" #: src/xine-engine/xine_interface.c:962 msgid "Connection refused:" -msgstr "" +msgstr "Conexión rechazada:" #: src/xine-engine/xine_interface.c:963 -#, fuzzy msgid "File not found:" -msgstr "input_file: Fichero no encontrado: >%s<\n" +msgstr "Fichero no encontrado:" #: src/xine-engine/xine_interface.c:964 msgid "Read error from:" -msgstr "" +msgstr "Error de lectura desde:" #: src/xine-engine/xine_interface.c:965 msgid "Error loading library:" -msgstr "" +msgstr "Error de carga de librería:" #: src/xine-engine/xine_interface.c:966 -#, fuzzy msgid "Encrypted media stream detected" -msgstr "ogg: detectado stream de audio vorbis\n" +msgstr "Detectado flujo de bits de medios encriptado" #: src/xine-engine/xine_interface.c:967 msgid "Security message:" -msgstr "" +msgstr "Mensaje de seguridad:" #: src/xine-engine/xine_interface.c:968 -#, fuzzy msgid "Audio device unavailable" -msgstr "nombre del dispositivo de audio OSS" +msgstr "Dispositivo de audio no disponible" #: src/xine-engine/xine_interface.c:969 msgid "Permission error" -msgstr "" +msgstr "Error de permisos" #: src/xine-engine/xine_interface.c:970 msgid "File is empty:" -msgstr "" +msgstr "El fichero está vacío:" #: src/xine-utils/memcpy.c:479 msgid "memcopy method used by xine" -msgstr "" +msgstr "método \"memcopy\" usado por xine" #: src/xine-utils/memcpy.c:480 msgid "" @@ -5626,45 +6177,11 @@ msgid "" "on todays computers. Therefore xine provides various tuned methods to do " "this copying. Usually, the best method is detected automatically." msgstr "" +"El copiado de grandes bloques de memoria es una de las operaciones más " +"costosas en las computadoras actuales. Por tanto xine provee varios metodos " +"ajustados para hacer este copiado. Usualmente, el método mejor se detecta " +"automáticamente." #: src/xine-utils/memcpy.c:507 msgid "Benchmarking memcpy methods (smaller is better):\n" -msgstr "" - -#, fuzzy -#~ msgid "video_out_xcbshm: your video mode was not recognized, sorry :-(\n" -#~ msgstr "video_out_fb: Lo sentimos, su modo de vídeo no fue reconocido .\n" - -#~ msgid "CDDB cache directory" -#~ msgstr "directorio caché del CDDB" - -#~ msgid "" -#~ "The replies from the CDDB server will be cached in this directory.\n" -#~ "This setting is security critical, because files with uncontrollable " -#~ "names will be created in this directory. Be sure to use a dedicated " -#~ "directory not used for anything but CDDB caching." -#~ msgstr "" -#~ "Las respuestas del servidor CDDB serán almacenadas temporalmente en este " -#~ "directorio.\n" -#~ "Esta configuración es crítica para su seguridad, porque nombres sin " -#~ "control serán creados en este directorio. Asegúrese de poner un " -#~ "directorio dedicado que no se use para ninguna otra cosa que el cacheado " -#~ "del CDDB." - -#~ msgid "path to the title key cache" -#~ msgstr "camino al caché de claves de títulos" - -#~ msgid "" -#~ "Since cracking the copy protection of scrambled DVDs can be quite time " -#~ "consuming, libdvdcss will cache the cracked keys in this directory.\n" -#~ "This setting is security critical, because files with uncontrollable " -#~ "names will be created in this directory. Be sure to use a dedicated " -#~ "directory not used for anything but DVD key caching." -#~ msgstr "" -#~ "Puesto que rompler la protección de copia de DVDs crifrados puede " -#~ "consumir bastante tiempo, libdvdcss almacenará las claves rotas en éste " -#~ "directorio.\n" -#~ "Esta configuración es de seguridad crítica, porque en este directorio se " -#~ "crearán ficheros con nombres incontrolables. Asegúrse de usar un " -#~ "directorio dedicado que no se use para otra cosa excepto cacheado de " -#~ "claves de DVDs." +msgstr "Evaluando métodos \"memcpy\" (menor es mejor):\n" diff -r ff19f68c92f2b618d918332f6eae9b10e12a7b63 -r ae9a2fddb2b6b50dab2a7ac649b2307719c78fe2 src/xine-engine/buffer_types.c --- a/src/xine-engine/buffer_types.c Mon Oct 29 17:09:31 2007 +0000 +++ b/src/xine-engine/buffer_types.c Thu Oct 25 13:53:42 2007 +0100 @@ -59,6 +59,7 @@ static const video_db_t video_db[] = { ME_FOURCC('P', 'I', 'M', '1'), ME_FOURCC('m', 'p', 'g', '2'), ME_FOURCC('m', 'p', 'g', '1'), + ME_FOURCC(0x02, 0, 0, 0x10), 0 }, BUF_VIDEO_MPEG, @@ -1212,3 +1213,4 @@ void _x_waveformatex_le2me( xine_wavefor wavex->wBitsPerSample = le2me_16(wavex->wBitsPerSample); wavex->cbSize = le2me_16(wavex->cbSize); } + diff -r ff19f68c92f2b618d918332f6eae9b10e12a7b63 -r ae9a2fddb2b6b50dab2a7ac649b2307719c78fe2 src/input/vcd/libcdio/_cdio_linux.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/input/vcd/libcdio/_cdio_linux.c Thu Oct 25 13:53:42 2007 +0100 @@ -0,0 +1,1198 @@ +/* + $Id: _cdio_linux.c,v 1.4 2006/09/26 22:18:44 dgp85 Exp $ + + Copyright (C) 2001 Herbert Valerio Riedel <hv...@gn...> + Copyright (C) 2002, 2003, 2004 Rocky Bernstein <ro...@pa...> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* This file contains Linux-specific code and implements low-level + control of the CD drive. +*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +static const char _rcsid[] = "$Id: _cdio_linux.c,v 1.4 2006/09/26 22:18:44 dgp85 Exp $"; + +#include <string.h> + +#include <cdio/sector.h> +#include <cdio/util.h> +#include <cdio/types.h> +#include <cdio/scsi_mmc.h> +#include <cdio/cdtext.h> +#include "cdtext_private.h" +#include "cdio_assert.h" +#include "cdio_private.h" + +#ifdef HAVE_LINUX_CDROM + +#if defined(HAVE_LINUX_VERSION_H) +# include <linux/version.h> +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,16) +# define __CDIO_LINUXCD_BUILD +# else +# error "You need a kernel greater than 2.2.16 to have CDROM support" +# endif +#else +# error "You need <linux/version.h> to have CDROM support" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <unistd.h> +#include <fcntl.h> +#include <mntent.h> +#include <limits.h> + +#include <linux/cdrom.h> +#include <scsi/scsi.h> +#include <scsi/sg.h> +#include <scsi/scsi_ioctl.h> +#include <sys/mount.h> + +#include <sys/stat.h> +#include <sys/types.h> +#include <sys/ioctl.h> + +typedef enum { + _AM_NONE, + _AM_IOCTL, + _AM_READ_CD, + _AM_READ_10 +} access_mode_t; + +typedef struct { + /* Things common to all drivers like this. + This must be first. */ + generic_img_private_t gen; + + access_mode_t access_mode; + + /* Some of the more OS specific things. */ + /* Entry info for each track, add 1 for leadout. */ + struct cdrom_tocentry tocent[CDIO_CD_MAX_TRACKS+1]; + + struct cdrom_tochdr tochdr; + +} _img_private_t; + +/* Some ioctl() errno values which occur when the tray is empty */ +#define ERRNO_TRAYEMPTY(errno) \ + ((errno == EIO) || (errno == ENOENT) || (errno == EINVAL)) + +/**** prototypes for static functions ****/ +static bool is_cdrom_linux(const char *drive, char *mnttype); +static bool read_toc_linux (void *p_user_data); +static int run_scsi_cmd_linux( const void *p_user_data, + unsigned int i_timeout, + unsigned int i_cdb, + const scsi_mmc_cdb_t *p_cdb, + scsi_mmc_direction_t e_direction, + unsigned int i_buf, + /*in/out*/ void *p_buf ); +static access_mode_t + +str_to_access_mode_linux(const char *psz_access_mode) +{ + const access_mode_t default_access_mode = _AM_IOCTL; + + if (NULL==psz_access_mode) return default_access_mode; + + if (!strcmp(psz_access_mode, "IOCTL")) + return _AM_IOCTL; + else if (!strcmp(psz_access_mode, "READ_CD")) + return _AM_READ_CD; + else if (!strcmp(psz_access_mode, "READ_10")) + return _AM_READ_10; + else { [... 946 lines omitted ...] + for ( j=checklist2[i][1]; exists; ++j ) { + sprintf(drive, "/dev/%s", &checklist2[i][3]); + insert = strchr(drive, '?'); + if ( insert != NULL ) { + *insert = j; + } + if ( (exists=is_cdrom_linux(drive, NULL)) > 0 ) { + return(strdup(drive)); + } + } + } + return NULL; +#endif /*HAVE_LINUX_CDROM*/ +} +/*! + Initialization routine. This is the only thing that doesn't + get called via a function pointer. In fact *we* are the + ones to set that up. + */ +CdIo * +cdio_open_linux (const char *psz_source_name) +{ + return cdio_open_am_linux(psz_source_name, NULL); +} + +/*! + Initialization routine. This is the only thing that doesn't + get called via a function pointer. In fact *we* are the + ones to set that up. + */ +CdIo * +cdio_open_am_linux (const char *psz_orig_source, const char *access_mode) +{ + +#ifdef HAVE_LINUX_CDROM + CdIo *ret; + _img_private_t *_data; + char *psz_source; + + cdio_funcs _funcs = { + .eject_media = eject_media_linux, + .free = cdio_generic_free, + .get_arg = get_arg_linux, + .get_cdtext = get_cdtext_generic, + .get_default_device = cdio_get_default_device_linux, + .get_devices = cdio_get_devices_linux, + .get_discmode = get_discmode_linux, +#if USE_LINUX_CAP + .get_drive_cap = get_drive_cap_linux, +#else + .get_drive_cap = scsi_mmc_get_drive_cap_generic, +#endif + .get_first_track_num= get_first_track_num_generic, + .get_hwinfo = NULL, + .get_mcn = get_mcn_linux, + .get_num_tracks = get_num_tracks_generic, + .get_track_format = get_track_format_linux, + .get_track_green = get_track_green_linux, + .get_track_lba = NULL, /* This could be implemented if need be. */ + .get_track_msf = get_track_msf_linux, + .lseek = cdio_generic_lseek, + .read = cdio_generic_read, + .read_audio_sectors = _read_audio_sectors_linux, + .read_mode1_sector = _read_mode1_sector_linux, + .read_mode1_sectors = _read_mode1_sectors_linux, + .read_mode2_sector = _read_mode2_sector_linux, + .read_mode2_sectors = _read_mode2_sectors_linux, + .read_toc = read_toc_linux, + .run_scsi_mmc_cmd = run_scsi_cmd_linux, + .set_arg = set_arg_linux, + .stat_size = stat_size_linux + }; + + _data = _cdio_malloc (sizeof (_img_private_t)); + + _data->access_mode = str_to_access_mode_linux(access_mode); + _data->gen.init = false; + _data->gen.toc_init = false; + _data->gen.fd = -1; + _data->gen.b_cdtext_init = false; + _data->gen.b_cdtext_error = false; + + if (NULL == psz_orig_source) { + psz_source=cdio_get_default_device_linux(); + if (NULL == psz_source) { + free(_data); + return NULL; + } + set_arg_linux(_data, "source", psz_source); + free(psz_source); + } else { + if (cdio_is_device_generic(psz_orig_source)) + set_arg_linux(_data, "source", psz_orig_source); + else { + /* The below would be okay if all device drivers worked this way. */ +#if 0 + cdio_info ("source %s is not a device", psz_orig_source); +#endif + free(_data); + return NULL; + } + } + + ret = cdio_new ((void *)_data, &_funcs); + if (ret == NULL) return NULL; + + if (cdio_generic_init(_data)) { + return ret; + } else { + cdio_generic_free (_data); + return NULL; + } + +#else + return NULL; +#endif /* HAVE_LINUX_CDROM */ + +} + +bool +cdio_have_linux (void) +{ +#ifdef HAVE_LINUX_CDROM + return true; +#else + return false; +#endif /* HAVE_LINUX_CDROM */ +} |
From: <li...@yo...> - 2007-11-01 00:20:59
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1193874817 0 # Node ID 988cd56f89e42c0883a056b34890bdd4808b322f # Parent f0abbb104bccfd584372c86f1248f7d65c4226b2 # Parent 5c38028a0e8ab0980eeff91e4874bb5a548d1328 Merge from 1.1. diff -r 988cd56f89e42c0883a056b34890bdd4808b322f -r f0abbb104bccfd584372c86f1248f7d65c4226b2 src/demuxers/demux_mpeg_pes.c --- a/src/demuxers/demux_mpeg_pes.c Wed Oct 31 23:53:37 2007 +0000 +++ b/src/demuxers/demux_mpeg_pes.c Mon Oct 29 17:31:55 2007 +0000 @@ -136,13 +136,79 @@ static int32_t parse_program_stream_dire static int32_t parse_program_stream_directory(demux_mpeg_pes_t *this, uint8_t *p, buf_element_t *buf); static int32_t parse_program_stream_pack_header(demux_mpeg_pes_t *this, uint8_t *p, buf_element_t *buf); +static int detect_pts_discontinuity( demux_mpeg_pes_t *this, int64_t pts, int video ) +{ + int64_t diff; + + /* discontinuity detection is difficult to implement in the demuxer as it gets + * for example video packets in decoding order and there can be multiple audio + * and video tracks. So for simplicity, let's just deal with a single audio and + * a single video track. + * + * To start with, let's have a look at the audio and video track independently. + * Whenever pts differs from last_pts[video] by at least WRAP_THRESHOLD, a jump + * in pts is detected. Such a jump can happen for example when the pts counter + * overflows, as shown below (video decoding order ignored for simplicity; the + * variable values are shown after returning from the below function check_newpts; + * an asterisk means that this value has been cleared (see check_newpts)): + * + * pts: 7v 7a 8v 9v 9a : 0v 1v 1a 2v 3v 3a 4v + * last_pts[0]: 6 7 7 7 9 : * * 1 1 1 3 3 + * last_pts[1]: 7 7 8 9 9 : 0 1 1 2 3 3 4 + * | | | + * | | +--- audio pts wrap ignored + * | +--------- video pts wrap detected + * +----------- pts wrap boundary + */ + diff = pts - this->last_pts[video]; + + if (this->last_pts[video] && abs(diff)>WRAP_THRESHOLD) + return 1; + + /* but the above code can cause a huge delay while replaying when audio and video + * track are not aligned on a common pts wrap boundery, as shown below: + * + * pts: 7v 8v 7a 9v : 0v 9a 1v 2v : 1a 3v 4v 3a + * last_pts[0]: 6 6 7 7 : * 9 9 9 : 1 1 1 3 + * last_pts[1]: 7 8 8 9 : 0 0 1 2 : * 3 4 4 + * | | | | | + * | | | | +--- audio pts wrap detected + * | | | +----- audio pts wrap boundary + * | | +-------------- audio packet causes a huge delay + * | +----------------- video pts wrap detected + * +------------------- video pts wrap boundery + * + * So there is the need to compare audio track pts against video track pts + * to detect when pts values are in between pts wrap bounderies, where a + * jump needs to be detected too, as shown below: + * + * pts: 7v 8v 7a 9v : 0v 9a 1v 2v : 1a 3v 4v 3a + * last_pts[0]: 6 6 7 7 : * 9 * * : 1 1 1 3 + * last_pts[1]: 7 8 8 9 : 0 * 1 2 : 2 3 4 4 + * | | | | | | + * | | | | | +--- (audio pts wrap ignored) + * | | | | +----- audio pts wrap boundary + * | | | +----------- video pts wrap detected + * | | +-------------- audio pts wrap detected + * | +----------------- video pts wrap detected + * +------------------- (video pts wrap boundery) + * + * Basically, it's almost the same test like above, but against the other track's + * pts value and with a different limit. As the pts counter is a 33 bit unsigned + * integer, we choose 2^31 as limit (2^32 would require the tracks to be aligned). + */ + diff = pts - this->last_pts[1-video]; + + if (this->last_pts[1-video] && abs(diff)>(1u<<31)) + return 1; + + /* no discontinuity detected */ + return 0; +} + static void check_newpts( demux_mpeg_pes_t *this, int64_t pts, int video ) { - int64_t diff; - - diff = pts - this->last_pts[video]; - - if( pts && (this->send_newpts || (this->last_pts[video] && abs(diff)>WRAP_THRESHOLD) ) ) { + if( pts && (this->send_newpts || detect_pts_discontinuity(this, pts, video) ) ) { /* check if pts is outside nav pts range. any stream without nav must enter here. */ if( pts > this->nav_last_end_pts || pts < this->nav_last_start_pts ) @@ -159,47 +225,13 @@ static void check_newpts( demux_mpeg_pes } else { lprintf("no wrap detected\n" ); } - + + /* clear pts on the other track to avoid detecting the same discontinuity again */ this->last_pts[1-video] = 0; } if( pts ) - { - /* don't detect a discontinuity only for video respectively audio. It's also a discontinuity - indication when audio and video pts differ to much e. g. when a pts wrap happens. - The original code worked well when the wrap happend like this: - - V7 A7 V8 V9 A9 Dv V0 V1 da A1 V2 V3 A3 V4 - - Legend: - Vn = video packet with timestamp n - An = audio packet with timestamp n - Dv = discontinuity detected on following video packet - Da = discontinuity detected on following audio packet - dv = discontinuity detected on following video packet but ignored - da = discontinuity detected on following audio packet but ignored - - But with a certain delay between audio and video packets (e. g. the way DVB-S broadcasts - the packets) the code didn't work: - - V7 V8 A7 V9 Dv V0 _A9_ V1 V2 Da _A1_ V3 V4 A3 - - Packet A9 caused audio to jump forward and A1 caused it to jump backward with inserting - a delay of almoust 26.5 hours! - - The new code gives the following sequences for the above examples: - - V7 A7 V8 V9 A9 Dv V0 V1 A1 V2 V3 A3 V4 - - V7 V8 A7 V9 Dv V0 Da A9 Dv V1 V2 A1 V3 V4 A3 - - After proving this code it should be cleaned up to use just a single variable "last_pts". */ - -/* this->last_pts[video] = pts; -*/ - this->last_pts[video] = this->last_pts[1-video] = pts; - } } static off_t read_data(demux_mpeg_pes_t *this, uint8_t *buf, off_t nlen) diff -r 988cd56f89e42c0883a056b34890bdd4808b322f -r f0abbb104bccfd584372c86f1248f7d65c4226b2 src/libffmpeg/ff_video_decoder.c --- a/src/libffmpeg/ff_video_decoder.c Wed Oct 31 23:53:37 2007 +0000 +++ b/src/libffmpeg/ff_video_decoder.c Mon Oct 29 17:31:55 2007 +0000 @@ -1155,6 +1155,7 @@ static void ff_handle_buffer (ff_video_d int offset = 0; int codec_type = buf->type & 0xFFFF0000; int video_step_to_use; + int frame_flags_to_use; /* pad input data */ /* note: bitstream, alt bitstream reader or something will cause @@ -1197,6 +1198,12 @@ static void ff_handle_buffer (ff_video_d /* use externally provided video_step or fall back to stream's time_base otherwise */ video_step_to_use = (this->video_step || !this->context->time_base.den) ? this->video_step : (int)(90000ll * this->context->time_base.num / this->context->time_base.den); + + frame_flags_to_use = this->frame_flags; + + /* adjust frame flags for interlaced frames when running in demux_mpeg_pes context */ + if (!this->video_step && this->av_frame->interlaced_frame) + frame_flags_to_use |= VO_INTERLACED_FLAG; /* aspect ratio provided by ffmpeg, override previous setting */ if ((this->aspect_ratio_prio < 2) && @@ -1244,10 +1251,10 @@ static void ff_handle_buffer (ff_video_d img = this->stream->video_out->get_frame (this->stream->video_out, this->bih.biWidth, - this->bih.biHeight, + (this->bih.biHeight + 31) & ~31, this->aspect_ratio, this->output_format, - VO_BOTH_FIELDS|this->frame_flags); + VO_BOTH_FIELDS|frame_flags_to_use); free_img = 1; } else { /* DR1 */ @@ -1265,10 +1272,10 @@ static void ff_handle_buffer (ff_video_d /* DR1 */ img = this->stream->video_out->get_frame (this->stream->video_out, img->width, - img->height, + (img->height + 31) & ~31, this->aspect_ratio, this->output_format, - VO_BOTH_FIELDS|this->frame_flags); + VO_BOTH_FIELDS|frame_flags_to_use); free_img = 1; } @@ -1286,10 +1293,6 @@ static void ff_handle_buffer (ff_video_d img->pts = this->pts; this->pts = 0; - - /* workaround for demux_mpeg_pes sending fields as frames */ - if (!this->video_step && this->av_frame->interlaced_frame) - video_step_to_use /= 2; /* workaround for weird 120fps streams */ if( video_step_to_use == 750 ) { @@ -1303,8 +1306,14 @@ static void ff_handle_buffer (ff_video_d img->duration = video_step_to_use; img->crop_right = this->crop_right; - img->crop_bottom = this->crop_bottom; - + img->crop_bottom = this->crop_bottom + (img->height - this->bih.biHeight); + + /* transfer some more frame settings when running in demux_mpeg_pes context */ + if (!this->video_step) { + img->progressive_frame = !this->av_frame->interlaced_frame; + img->top_field_first = this->av_frame->top_field_first; + } + this->skipframes = img->draw(img, this->stream); if(free_img) @@ -1312,19 +1321,27 @@ static void ff_handle_buffer (ff_video_d } } - if (!got_one_picture) { + /* workaround for demux_mpeg_pes sending fields as frames: + * do not generate a bad frame for the first field picture + */ + if (!got_one_picture && (this->size || this->video_step || !this->av_frame->interlaced_frame)) { /* skipped frame, output a bad frame (of size 1x1 when size still uninitialized) */ img = this->stream->video_out->get_frame (this->stream->video_out, - (this->bih.biWidth <= 0) ? 1 : this->bih.biWidth, - (this->bih.biHeight <= 0) ? 1 : this->bih.biHeight, + (this->bih.biWidth <= 0) ? 16 : this->bih.biWidth, + (this->bih.biHeight <= 0) ? 32 : this->bih.biHeight, this->aspect_ratio, this->output_format, - VO_BOTH_FIELDS|this->frame_flags); + VO_BOTH_FIELDS|frame_flags_to_use); /* set PTS to allow early syncing */ img->pts = this->pts; this->pts = 0; img->duration = video_step_to_use; + /* transfer some more frame settings when running in demux_mpeg_pes context */ + if (!this->video_step) { + img->progressive_frame = !this->av_frame->interlaced_frame; + img->top_field_first = this->av_frame->top_field_first; + } img->bad_frame = 1; this->skipframes = img->draw(img, this->stream); img->free(img); |
From: <li...@yo...> - 2007-11-10 23:54:17
|
# [node 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea part 1] diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/metronom.h --- a/src/xine-engine/metronom.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/metronom.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: metronom.h,v 1.64 2006/09/26 05:19:49 dgp85 Exp $ * * metronom: general pts => virtual calculation/assoc * @@ -37,7 +35,6 @@ * video_pts and audio_vpts are not given for every frame. * - corrections to the frame rate may be needed to cope with bad * encoded streams. - * */ #ifndef HAVE_METRONOM_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/osd.h --- a/src/xine-engine/osd.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/osd.h Sat Nov 10 17:40:55 2007 +0100 @@ -18,7 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * OSD stuff (text and graphic primitives) - * $Id: osd.h,v 1.27 2006/09/26 05:19:49 dgp85 Exp $ */ #ifndef HAVE_OSD_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/plugin_catalog.h --- a/src/xine-engine/plugin_catalog.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/plugin_catalog.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: plugin_catalog.h,v 1.21 2006/09/26 05:19:49 dgp85 Exp $ - * * xine-internal header: Definitions for plugin lists - * */ #ifndef _PLUGIN_CATALOG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/post.c --- a/src/xine-engine/post.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/post.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: post.c,v 1.32 2006/01/27 07:46:15 tmattern Exp $ */ /* diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/post.h --- a/src/xine-engine/post.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/post.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: post.h,v 1.26 2007/02/20 01:13:08 dgp85 Exp $ - * * post plugin definitions - * */ #ifndef XINE_POST_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/refcounter.c --- a/src/xine-engine/refcounter.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/refcounter.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: refcounter.c,v 1.2 2006/09/26 05:19:49 dgp85 Exp $ - * */ #define LOG_MODULE "refcounter" #define LOG_VERBOSE diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/refcounter.h --- a/src/xine-engine/refcounter.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/refcounter.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: refcounter.h,v 1.2 2006/09/26 05:19:49 dgp85 Exp $ - * */ #ifndef HAVE_REFCOUNTER_H #define HAVE_REFCOUNTER_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/resample.c --- a/src/xine-engine/resample.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/resample.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: resample.c,v 1.10 2006/09/26 05:19:49 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/resample.h --- a/src/xine-engine/resample.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/resample.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: resample.h,v 1.6 2006/09/26 05:19:49 dgp85 Exp $ * * utilitiy functions for audio drivers * diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/scratch.c --- a/src/xine-engine/scratch.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/scratch.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: scratch.c,v 1.24 2007/01/19 00:12:22 dgp85 Exp $ - * * top-level xine functions - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/scratch.h --- a/src/xine-engine/scratch.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/scratch.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: scratch.h,v 1.13 2007/01/19 00:12:22 dgp85 Exp $ - * * scratch buffer for log output - * */ #ifndef HAVE_SCRATCH_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/tvmode.c --- a/src/xine-engine/tvmode.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/tvmode.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: tvmode.c,v 1.17 2003/12/09 00:02:37 f1rmb Exp $ * * tvmode - TV output selection * diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/video_decoder.c --- a/src/xine-engine/video_decoder.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/video_decoder.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: video_decoder.c,v 1.163 2007/02/20 00:34:58 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/video_decoder.h --- a/src/xine-engine/video_decoder.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/video_decoder.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: video_decoder.h,v 1.14 2004/09/26 22:54:52 valtri Exp $ - * * xine video decoder plugin interface - * */ #ifndef HAVE_VIDEO_DECODER_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/video_out.c --- a/src/xine-engine/video_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/video_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: video_out.c,v 1.228 2007/04/01 01:03:06 dgp85 Exp $ * * frame allocation / queuing / scheduling / output functions */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/video_out.h --- a/src/xine-engine/video_out.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/video_out.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,8 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: video_out.h,v 1.114 2006/09/26 05:19:49 dgp85 Exp $ - * * * xine version of video_out.h * @@ -29,7 +27,6 @@ * * vo_port : generic frame_handling code, uses * a vo_driver for output - * */ #ifndef HAVE_VIDEO_OUT_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/video_overlay.c --- a/src/xine-engine/video_overlay.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/video_overlay.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: video_overlay.c,v 1.41 2006/09/26 00:28:14 dgp85 Exp $ - * */ #include <stdlib.h> diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/video_overlay.h --- a/src/xine-engine/video_overlay.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/video_overlay.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: video_overlay.h,v 1.21 2006/09/26 05:19:49 dgp85 Exp $ - * */ #ifndef HAVE_VIDEO_OVERLAY_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/vo_scale.c --- a/src/xine-engine/vo_scale.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/vo_scale.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,8 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: vo_scale.c,v 1.39 2006/09/26 08:00:02 dgp85 Exp $ - * * Contains common code to calculate video scaling parameters. * In short, it will map frame dimensions to screen/window size. * Takes into account aspect ratio correction and zooming. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/vo_scale.h --- a/src/xine-engine/vo_scale.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/vo_scale.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,8 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: vo_scale.h,v 1.14 2006/09/26 05:19:49 dgp85 Exp $ - * * vo_scale.h * * keeps video scaling information diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/xine.c --- a/src/xine-engine/xine.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/xine.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xine.c,v 1.342 2007/02/20 00:37:02 dgp85 Exp $ */ /* diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/xine_interface.c --- a/src/xine-engine/xine_interface.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/xine_interface.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,11 +17,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: xine_interface.c,v 1.104 2007/03/26 11:48:01 dgp85 Exp $ - * * convenience/abstraction layer, functions to implement * libxine's public interface - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/xine_internal.h --- a/src/xine-engine/xine_internal.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/xine_internal.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xine_internal.h,v 1.181 2007/01/18 23:28:46 dgp85 Exp $ - * */ #ifndef HAVE_XINE_INTERNAL_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/xine_plugin.h --- a/src/xine-engine/xine_plugin.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/xine_plugin.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: xine_plugin.h,v 1.23 2007/01/19 02:49:31 dgp85 Exp $ - * * generic plugin definitions - * */ #ifndef XINE_PLUGIN_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-engine/xineintl.h --- a/src/xine-engine/xineintl.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-engine/xineintl.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xineintl.h,v 1.9 2005/02/19 13:11:53 valtri Exp $ - * */ #ifndef HAVE_XINEINTL_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/array.c --- a/src/xine-utils/array.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/array.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: array.c,v 1.4 2007/02/03 16:31:55 dsalt Exp $ - * */ #ifdef HAVE_CONFIG_H #include "config.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/array.h --- a/src/xine-utils/array.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/array.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: array.h,v 1.3 2007/02/03 16:31:55 dsalt Exp $ * * Array that can grow automatically when you add elements. * Inserting an element in the middle of the array implies memory moves. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/color.c --- a/src/xine-utils/color.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/color.c Sat Nov 10 17:40:55 2007 +0100 @@ -60,8 +60,6 @@ * to facilitate these operations (such as the PPC AltiVec pixel-unpacking * instructions), these macros will automatically map to those special * instructions. - * - * $Id: color.c,v 1.30 2006/07/17 18:31:24 hadess Exp $ */ #include "xine_internal.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/compat.h --- a/src/xine-utils/compat.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/compat.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: compat.h,v 1.3 2003/04/20 21:13:26 guenter Exp $ - * */ #ifndef XINE_COMPAT_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/list.c --- a/src/xine-utils/list.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/list.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: list.c,v 1.12 2006/09/26 05:19:49 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/list.h --- a/src/xine-utils/list.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/list.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: list.h,v 1.5 2007/02/19 23:34:32 dgp85 Exp $ * * Doubly-linked linked list. * diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/monitor.c --- a/src/xine-utils/monitor.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/monitor.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: monitor.c,v 1.8 2006/06/23 18:24:22 dsalt Exp $ - * * debug print and profiling functions - implementation - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/pool.c --- a/src/xine-utils/pool.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/pool.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: pool.c,v 1.2 2006/09/26 05:19:49 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H #include "config.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/pool.h --- a/src/xine-utils/pool.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/pool.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: pool.h,v 1.2 2006/09/26 05:19:49 dgp85 Exp $ * * Object Pool */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/ring_buffer.c --- a/src/xine-utils/ring_buffer.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/ring_buffer.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: ring_buffer.c,v 1.5 2006/09/26 05:19:49 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H #include "config.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/ring_buffer.h --- a/src/xine-utils/ring_buffer.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/ring_buffer.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: ring_buffer.h,v 1.3 2006/09/26 05:19:49 dgp85 Exp $ * * Fifo + Ring Buffer */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/sorted_array.c --- a/src/xine-utils/sorted_array.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/sorted_array.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: sorted_array.c,v 1.3 2006/09/26 05:19:49 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H #include "config.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/sorted_array.h --- a/src/xine-utils/sorted_array.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/sorted_array.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: sorted_array.h,v 1.3 2006/09/26 05:19:49 dgp85 Exp $ * * Sorted array which grows automatically when you add elements. * A binary search is used to find the position of a new element. @@ -52,7 +50,6 @@ * * Delete the array: * xine_sarray_delete(sarray); - * */ #ifndef XINE_SORTED_ARRAY_H #define XINE_SORTED_ARRAY_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/utils.c --- a/src/xine-utils/utils.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/utils.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: utils.c,v 1.46 2006/07/21 04:47:17 dgp85 Exp $ - * */ #define _POSIX_PTHREAD_SEMANTICS 1 /* for 5-arg getpwuid_r on solaris */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xine_buffer.c --- a/src/xine-utils/xine_buffer.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xine_buffer.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xine_buffer.c,v 1.11 2006/06/23 18:24:22 dsalt Exp $ * * * generic dynamic buffer functions. The goals diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xine_buffer.h --- a/src/xine-utils/xine_buffer.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xine_buffer.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xine_buffer.h,v 1.7 2006/09/26 05:19:49 dgp85 Exp $ * * * generic dynamic buffer functions. The goals diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xine_mutex.c --- a/src/xine-utils/xine_mutex.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xine_mutex.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xine_mutex.c,v 1.5 2006/07/16 14:45:24 dsalt Exp $ - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xineutils.h --- a/src/xine-utils/xineutils.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xineutils.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xineutils.h,v 1.107 2006/12/25 15:16:33 dgp85 Exp $ - * */ #ifndef XINEUTILS_H #define XINEUTILS_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xmllexer.c --- a/src/xine-utils/xmllexer.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xmllexer.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,9 +17,6 @@ * License along with the Gnome Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110, USA - * - * $Id: xmllexer.c,v 1.13 2007/03/04 16:19:12 hadess Exp $ - * */ #define LOG_MODULE "xmllexer" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xmllexer.h --- a/src/xine-utils/xmllexer.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xmllexer.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,9 +17,6 @@ * License along with the Gnome Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110, USA - * - * $Id: xmllexer.h,v 1.8 2007/03/04 16:19:12 hadess Exp $ - * */ /* xml lexer */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xmlparser.c --- a/src/xine-utils/xmlparser.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xmlparser.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,9 +17,6 @@ * License along with the Gnome Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110, USA - * - * $Id: xmlparser.c,v 1.16 2007/03/04 16:19:12 hadess Exp $ - * */ #ifdef XINE_COMPILE diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/xine-utils/xmlparser.h --- a/src/xine-utils/xmlparser.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/xine-utils/xmlparser.h Sat Nov 10 17:40:55 2007 +0100 @@ -17,9 +17,6 @@ * License along with the Gnome Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110, USA - * - * $Id: xmlparser.h,v 1.6 2007/03/04 16:19:12 hadess Exp $ - * */ #ifndef XML_PARSER_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea win32/include/msvc/stdint.h --- a/win32/include/msvc/stdint.h Sat Nov 10 23:17:58 2007 +0000 +++ b/win32/include/msvc/stdint.h Sat Nov 10 17:40:55 2007 +0100 @@ -26,8 +26,6 @@ details. */ * You should have received a copy of the GNU General Public License * along with self program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: stdint.h,v 1.2 2004/09/20 19:30:08 valtri Exp $ */ /* Modified original CygWin version for using by MSVC port. */ |
From: <li...@yo...> - 2007-11-10 23:54:17
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1194736678 0 # Node ID 6f8b5361576627d4e0af9d455894b0b6771c36c3 # Parent 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea # Parent 581364dd9bb339a4aadb86dbb02788ab0f17116e Merge from 1.1. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea autogen.sh --- a/autogen.sh Sat Nov 10 23:17:58 2007 +0000 +++ b/autogen.sh Sat Nov 10 17:40:55 2007 +0100 @@ -17,8 +17,6 @@ # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -# -# $Id: autogen.sh,v 1.20 2007/03/26 12:52:05 dgp85 Exp $ # # Maintained by Stephen Torri <st...@us...> # diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea doc/README.dxr3 --- a/doc/README.dxr3 Sat Nov 10 23:17:58 2007 +0000 +++ b/doc/README.dxr3 Sat Nov 10 17:40:55 2007 +0100 @@ -183,8 +183,3 @@ prefer, of course). Have a look at the previous explained configuration options dxr3.output.keycolor and dxr3.output.keycolor_interval too. - - ---- -version of this file: - $Id: README.dxr3,v 1.11 2004/12/12 22:00:47 mroi Exp $ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea doc/README.freebsd --- a/doc/README.freebsd Sat Nov 10 23:17:58 2007 +0000 +++ b/doc/README.freebsd Sat Nov 10 17:40:55 2007 +0100 @@ -108,9 +108,3 @@ For building v4l plugins you will need i For building v4l plugins you will need install v4l_compat package. ------------------------------------------------------------------------ - - - ---- -version of this file: - $Id: README.freebsd,v 1.7 2006/10/16 22:09:32 valtri Exp $ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea doc/README.network_dvd --- a/doc/README.network_dvd Sat Nov 10 23:17:58 2007 +0000 +++ b/doc/README.network_dvd Sat Nov 10 17:40:55 2007 +0100 @@ -135,7 +135,3 @@ dvd commands: dvd_title <block> <error code> 0 - ---- -version of this file: - $Id: README.network_dvd,v 1.3 2004/12/12 22:00:48 mroi Exp $ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea doc/README.solaris --- a/doc/README.solaris Sat Nov 10 23:17:58 2007 +0000 +++ b/doc/README.solaris Sat Nov 10 17:40:55 2007 +0100 @@ -129,8 +129,3 @@ Known Problems See the following message for more details about this bug: http://groups.yahoo.com/group/solarisonintel/message/22516 - - ---- -version of this file: - $Id: README.solaris,v 1.14 2004/06/19 14:51:31 komadori Exp $ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea doc/README.syncfb --- a/doc/README.syncfb Sat Nov 10 23:17:58 2007 +0000 +++ b/doc/README.syncfb Sat Nov 10 17:40:55 2007 +0100 @@ -3,10 +3,6 @@ XINE video output plugin for MATROX G200/G400/G450 cards *only* ===== ===== - - VERSION - => $Id: README.syncfb,v 1.4 2006/11/30 08:45:51 matt2000 Exp $ - * WHAT IS THIS PLUGIN ABOUT and WHY SHOULD I EVEN CONSIDER TO USE IT? :) diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea doc/hackersguide/README --- a/doc/hackersguide/README Sat Nov 10 23:17:58 2007 +0000 +++ b/doc/hackersguide/README Sat Nov 10 17:40:55 2007 +0100 @@ -39,7 +39,3 @@ building the hackersguide.html ------------------------------ The easy way to build everything is to issue a "make docs" here. - ---- -version of this file: - $Id: README,v 1.3 2003/10/12 19:06:43 mroi Exp $ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea include/xine.h.in --- a/include/xine.h.in Sat Nov 10 23:17:58 2007 +0000 +++ b/include/xine.h.in Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xine.h.in,v 1.168 2007/03/26 11:48:01 dgp85 Exp $ * * public xine-lib (libxine) interface and documentation * diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea lib/os_types.h --- a/lib/os_types.h Sat Nov 10 23:17:58 2007 +0000 +++ b/lib/os_types.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: os_types.h,v 1.5 2006/04/08 16:42:23 valtri Exp $ Ext * * Platform dependent types needed by public xine.h. * Types not needed by xine.h are specified in os_internal.h. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea misc/cdda_server.c --- a/misc/cdda_server.c Sat Nov 10 23:17:58 2007 +0000 +++ b/misc/cdda_server.c Sat Nov 10 17:40:55 2007 +0100 @@ -1,4 +1,24 @@ -/* CDDA / DVD server +/* + * CDDA / DVD server + * + * Copyright (C) 2003-2007 the xine project + * + * This file is part of xine, a free video player. + * + * xine is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * xine is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA + * * * This is a TCP server that can be used with xine's cdda input plugin to * play audio CDs over the network. It also supports playing DVDs with a diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_alsa_out.c --- a/src/audio_out/audio_alsa_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_alsa_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -24,9 +24,6 @@ * for initial ALSA 0.9.x support. * adding MONO/STEREO/4CHANNEL/5CHANNEL/5.1CHANNEL analogue support. * (c) 2001 James Courtier-Dutton <Ja...@su...> - * - * - * $Id: audio_alsa_out.c,v 1.168 2007/02/25 22:33:25 miguelfreitas Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_directx2_out.c --- a/src/audio_out/audio_directx2_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_directx2_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: audio_directx2_out.c,v 1.9 2006/07/16 16:18:09 dsalt Exp $ * * * xine audio output plugin using DirectX diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_directx_out.c --- a/src/audio_out/audio_directx_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_directx_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ * * audio_directx_out.c, direct sound audio output plugin for xine * by Matthew Grooms <el...@al...> - * - * $Id: audio_directx_out.c,v 1.17 2006/09/21 15:01:08 valtri Exp $ */ /* diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_esd_out.c --- a/src/audio_out/audio_esd_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_esd_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: audio_esd_out.c,v 1.35 2006/07/16 16:18:09 dsalt Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_file_out.c --- a/src/audio_out/audio_file_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_file_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: audio_file_out.c,v 1.8 2006/07/16 16:18:09 dsalt Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_irixal_out.c --- a/src/audio_out/audio_irixal_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_irixal_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: audio_irixal_out.c,v 1.16 2006/07/16 16:18:09 dsalt Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_none_out.c --- a/src/audio_out/audio_none_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_none_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: audio_none_out.c,v 1.11 2006/07/16 16:18:09 dsalt Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_oss_out.c --- a/src/audio_out/audio_oss_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_oss_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,8 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: audio_oss_out.c,v 1.120 2007/03/17 06:59:31 dgp85 Exp $ - * * 20-8-2001 First implementation of Audio sync and Audio driver separation. * Copyright (C) 2001 James Courtier-Dutton Ja...@su... * @@ -34,7 +32,6 @@ * when dealing with audio_bytes instead of audio_frames. * * The number of samples passed to/from the audio driver is also sent in units of audio_frames. - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_pulse_out.c --- a/src/audio_out/audio_pulse_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_pulse_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,15 +17,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: audio_pulse_out.c,v 1.17 2007/04/01 00:32:29 dgp85 Exp $ - * * ao plugin for pulseaudio (rename of polypaudio): * http://0pointer.de/lennart/projects/pulsaudio/ * * originally written for polypaudio simple api. Lennart then suggested * using the async api for better control (such as volume), therefore, a lot * of this code comes from Lennart's patch to mplayer. - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/audio_out/audio_sun_out.c --- a/src/audio_out/audio_sun_out.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/audio_out/audio_sun_out.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: audio_sun_out.c,v 1.47 2007/03/10 00:55:14 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/nsf_combined.c --- a/src/combined/nsf_combined.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/nsf_combined.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: combined_wavpack.c,v 1.3 2007/03/17 07:34:02 dgp85 Exp $ */ #include "xine_internal.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/nsf_decoder.c --- a/src/combined/nsf_decoder.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/nsf_decoder.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ * * NSF Audio "Decoder" using the Nosefart NSF engine by Matt Conte * http://www.baisoku.org/ - * - * $Id: nsf.c,v 1.13 2006/09/25 23:56:31 dgp85 Exp $ */ #include <stdio.h> diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/nsf_demuxer.c --- a/src/combined/nsf_demuxer.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/nsf_demuxer.c Sat Nov 10 17:40:55 2007 +0100 @@ -29,8 +29,6 @@ * * For more information regarding the NSF format, visit: * http://www.tripoint.org/kevtris/nes/nsfspec.txt - * - * $Id: demux_nsf.c,v 1.24 2007/03/29 17:03:06 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/wavpack_combined.c --- a/src/combined/wavpack_combined.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/wavpack_combined.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * xine interface to libwavpack by Diego Pettenò <fla...@gm...> - * - * $Id: combined_wavpack.c,v 1.3 2007/03/17 07:34:02 dgp85 Exp $ */ #include "xine_internal.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/wavpack_combined.h --- a/src/combined/wavpack_combined.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/wavpack_combined.h Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * xine interface to libwavpack by Diego Pettenò <fla...@gm...> - * - * $Id: combined_wavpack.h,v 1.3 2007/03/17 07:34:02 dgp85 Exp $ */ #include "os_types.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/wavpack_decoder.c --- a/src/combined/wavpack_decoder.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/wavpack_decoder.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * xine interface to libwavpack by Diego Pettenò <fla...@gm...> - * - * $Id: decoder_wavpack.c,v 1.14 2007/03/29 19:45:33 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/wavpack_demuxer.c --- a/src/combined/wavpack_demuxer.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/wavpack_demuxer.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * xine interface to libwavpack by Diego Pettenò <fla...@gm...> - * - * $Id: demux_wavpack.c,v 1.11 2007/03/17 07:34:02 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/xine_ogg_demuxer.c --- a/src/combined/xine_ogg_demuxer.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/xine_ogg_demuxer.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,10 +19,7 @@ */ /* - * $Id: demux_ogg.c,v 1.177 2007/03/29 19:38:51 dgp85 Exp $ - * * demultiplexer for ogg streams - * */ /* 2003.02.09 (dilb) update of the handling for audio/video infos for strongarm cpus. */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/xine_speex_decoder.c --- a/src/combined/xine_speex_decoder.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/xine_speex_decoder.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,8 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: xine_decoder.c,v 1.22 2007/01/19 01:48:05 dgp85 Exp $ - * * (ogg/)speex audio decoder plugin (libspeex wrapper) for xine */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/xine_theora_decoder.c --- a/src/combined/xine_theora_decoder.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/xine_theora_decoder.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,10 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: xine_decoder.c,v 1.26 2006/07/10 22:08:30 dgp85 Exp $ - * * xine decoder plugin using libtheora - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/combined/xine_vorbis_decoder.c --- a/src/combined/xine_vorbis_decoder.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/combined/xine_vorbis_decoder.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: xine_decoder.c,v 1.48 2006/12/04 13:59:38 dgp85 Exp $ * * (ogg/)vorbis audio decoder plugin (libvorbis wrapper) for xine */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/asfheader.h --- a/src/demuxers/asfheader.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/asfheader.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: asfheader.h,v 1.8 2006/09/12 21:24:19 valtri Exp $ * * demultiplexer for asf streams * diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux.h --- a/src/demuxers/demux.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: demux.h,v 1.40 2007/01/19 00:26:39 dgp85 Exp $ */ #ifndef HAVE_DEMUX_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_4xm.c --- a/src/demuxers/demux_4xm.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_4xm.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * 4X Technologies (.4xm) File Demuxer by Mike Melanson (mel...@pc...) * For more information on the 4xm file format, visit: * http://www.pcisys.net/~melanson/codecs/ - * - * $Id: demux_4xm.c,v 1.16 2007/01/19 00:26:39 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_aac.c --- a/src/demuxers/demux_aac.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_aac.c Sat Nov 10 17:40:55 2007 +0100 @@ -20,8 +20,6 @@ * Raw AAC File Demuxer by Mike Melanson (mel...@pc...) * This demuxer detects ADIF and ADTS headers in AAC files. * Then it shovels buffer-sized chunks over to the AAC decoder. - * - * $Id: demux_aac.c,v 1.17 2007/03/03 01:41:16 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_ac3.c --- a/src/demuxers/demux_ac3.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_ac3.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * AC3 File Demuxer by Mike Melanson (mel...@pc...) * This demuxer detects raw AC3 data in a file and shovels AC3 data * directly to the AC3 decoder. - * - * $Id: demux_ac3.c,v 1.21 2007/03/19 16:42:32 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_aiff.c --- a/src/demuxers/demux_aiff.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_aiff.c Sat Nov 10 17:40:55 2007 +0100 @@ -20,9 +20,6 @@ /* * AIFF File Demuxer by Mike Melanson (mel...@pc...) - * - * $Id: demux_aiff.c,v 1.41 2007/01/19 00:26:40 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_asf.c --- a/src/demuxers/demux_asf.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_asf.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: demux_asf.c,v 1.194 2007/03/09 23:18:19 dgp85 Exp $ * * demultiplexer for asf streams * diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_aud.c --- a/src/demuxers/demux_aud.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_aud.c Sat Nov 10 17:40:55 2007 +0100 @@ -33,8 +33,6 @@ * initialized to 0 at the start of the file and maintained throughout the * data. This makes seeking conceptually impossible. Upshot: Random * seeking is not supported. - * - * $Id: demux_aud.c,v 1.20 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_avi.c --- a/src/demuxers/demux_avi.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_avi.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ */ /* - * $Id: demux_avi.c,v 1.232 2007/03/29 19:24:18 dgp85 Exp $ - * * demultiplexer for avi streams * * part of the code is taken from @@ -46,7 +44,6 @@ * expect to find the next A/V frame. We periodically check if we can * read data from the file at that offset. If we can, we append index * data for as many frames as we can read at the time. - * */ /* @@ -55,7 +52,6 @@ * Transcode's and xine's avi code comes from the same source and * still has a very similar architecture, so it wasn't much effort to * port it from transcode to xine. - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_cdda.c --- a/src/demuxers/demux_cdda.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_cdda.c Sat Nov 10 17:40:55 2007 +0100 @@ -23,8 +23,6 @@ * All this demuxer does is read raw CD frames and shovel them to the * linear PCM "decoder" (which in turn sends them directly to the audio * output target; this is a really fancy CD-playing architecture). - * - * $Id: demux_cdda.c,v 1.20 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_dts.c --- a/src/demuxers/demux_dts.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_dts.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * Raw DTS Demuxer by James Stembridge (jst...@gm...) - * - * $Id: demux_dts.c,v 1.8 2007/03/19 16:42:32 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_eawve.c --- a/src/demuxers/demux_eawve.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_eawve.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ */ /* - * $Id: demux_eawve.c,v 1.29 2007/01/19 00:26:40 dgp85 Exp $ - * * demux_eawve.c, Demuxer plugin for Electronic Arts' WVE file format * * written and currently maintained by Robin Kay <kom...@my...> diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_elem.c --- a/src/demuxers/demux_elem.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_elem.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ */ /* - * $Id: demux_elem.c,v 1.91 2007/02/20 00:34:55 dgp85 Exp $ - * * demultiplexer for elementary mpeg streams */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_film.c --- a/src/demuxers/demux_film.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_film.c Sat Nov 10 17:40:55 2007 +0100 @@ -20,8 +20,6 @@ * FILM (CPK) File Demuxer by Mike Melanson (mel...@pc...) * For more information on the FILM file format, visit: * http://www.pcisys.net/~melanson/codecs/ - * - * $Id: demux_film.c,v 1.82 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_flac.c --- a/src/demuxers/demux_flac.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_flac.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * FLAC File Demuxer by Mike Melanson (mel...@pc...) * For more information on the FLAC file format, visit: * http://flac.sourceforge.net/ - * - * $Id: demux_flac.c,v 1.17 2007/03/29 16:52:23 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_fli.c --- a/src/demuxers/demux_fli.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_fli.c Sat Nov 10 17:40:55 2007 +0100 @@ -23,8 +23,6 @@ * For information on the FLI format, as well as various traps to * avoid while programming a FLI decoder, visit: * http://www.pcisys.net/~melanson/codecs/ - * - * $Id: demux_fli.c,v 1.60 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_flv.c --- a/src/demuxers/demux_flv.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_flv.c Sat Nov 10 17:40:55 2007 +0100 @@ -25,8 +25,6 @@ * * For more information on the FLV file format, visit: * http://download.macromedia.com/pub/flash/flash_file_format_specification.pdf - * - * $Id: demux_flv.c,v 1.21 2007/03/17 11:29:43 klan Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_idcin.c --- a/src/demuxers/demux_idcin.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_idcin.c Sat Nov 10 17:40:55 2007 +0100 @@ -64,8 +64,6 @@ * - scan through all 768 palette bytes * - if any bytes exceed 63, do not shift the bytes at all before * transmitting them to the video decoder - * - * $Id: demux_idcin.c,v 1.55 2007/02/20 00:34:55 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_iff.c --- a/src/demuxers/demux_iff.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_iff.c Sat Nov 10 17:40:55 2007 +0100 @@ -35,8 +35,6 @@ * - simple pictures work, nothing more (most work is done in bitmap-decoder) * * ANIM (Animations) * - Animation works fine, without seeking. - * - * $Id: demux_iff.c,v 1.19 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_image.c --- a/src/demuxers/demux_image.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_image.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ */ /* - * $Id: demux_image.c,v 1.26 2007/01/19 00:26:40 dgp85 Exp $ - * * image dummy demultiplexer */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_ipmovie.c --- a/src/demuxers/demux_ipmovie.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_ipmovie.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * Interplay MVE File Demuxer by Mike Melanson (mel...@pc...) * For more information regarding the Interplay MVE file format, visit: * http://www.pcisys.net/~melanson/codecs/ - * - * $Id: demux_ipmovie.c,v 1.27 2007/02/20 00:34:55 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_matroska.c --- a/src/demuxers/demux_matroska.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_matroska.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,15 +17,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: demux_matroska.c,v 1.53 2007/03/12 16:27:21 dgp85 Exp $ - * * demultiplexer for matroska streams * * TODO: * more decoders init * metadata * non seekable input plugins support - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_mng.c --- a/src/demuxers/demux_mng.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_mng.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ */ /* - * $Id: demux_mng.c,v 1.29 2007/01/19 00:26:40 dgp85 Exp $ - * * demux_mng.c, Demuxer plugin for Multiple-image Network Graphics format * * written and currently maintained by Robin Kay <kom...@my...> diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_mpc.c --- a/src/demuxers/demux_mpc.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_mpc.c Sat Nov 10 17:40:55 2007 +0100 @@ -23,8 +23,6 @@ * ID3 tag reading * APE tag reading * Seeking?? - * - * $Id: demux_mpc.c,v 1.5 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_mpeg.c --- a/src/demuxers/demux_mpeg.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_mpeg.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ */ /* - * $Id: demux_mpeg.c,v 1.152 2007/02/20 00:34:55 dgp85 Exp $ - * * demultiplexer for mpeg 1/2 program streams * reads streams of variable blocksizes */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_mpeg_block.c --- a/src/demuxers/demux_mpeg_block.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_mpeg_block.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,11 +17,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: demux_mpeg_block.c,v 1.220 2007/02/20 00:34:55 dgp85 Exp $ - * * demultiplexer for mpeg 1/2 program streams * used with fixed blocksize devices (like dvd/vcd) - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_mpeg_pes.c --- a/src/demuxers/demux_mpeg_pes.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_mpeg_pes.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,15 +17,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: demux_mpeg_pes.c,v 1.43 2007/03/29 17:11:36 dgp85 Exp $ - * * demultiplexer for mpeg 2 PES (Packetized Elementary Streams) * reads streams of variable blocksizes * * 1-7-2003 New implementation of mpeg 2 PES demuxers. * (c) 2003 James Courtier-Dutton Ja...@su... * This code might also decode normal MPG files. - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_mpgaudio.c --- a/src/demuxers/demux_mpgaudio.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_mpgaudio.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,13 +17,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * - * $Id: demux_mpgaudio.c,v 1.156 2007/03/29 16:32:12 dgp85 Exp $ - * * demultiplexer for mpeg audio (i.e. mp3) streams * * mp3 file structure: * [id3v2][Xing|Vbri] Frame1 Frame2 Frame3...FrameX [Lyrics][id3v2][id3v1] - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_nsv.c --- a/src/demuxers/demux_nsv.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_nsv.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * Nullsoft Video (NSV) file demuxer by Mike Melanson (mel...@pc...) * For more information regarding the NSV file format, visit: * http://www.pcisys.net/~melanson/codecs/ - * - * $Id: demux_nsv.c,v 1.25 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_pva.c --- a/src/demuxers/demux_pva.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_pva.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * TechnoTrend PVA File Demuxer by Mike Melanson (mel...@pc...) * For more information regarding the PVA file format, refer to this PDF: * http://www.technotrend.de/download/av_format_v1.pdf - * - * $Id: demux_pva.c,v 1.25 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_qt.c --- a/src/demuxers/demux_qt.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_qt.c Sat Nov 10 17:40:55 2007 +0100 @@ -29,9 +29,6 @@ * parse_trak_atom * build_frame_table * free_qt_info - * - * $Id: demux_qt.c,v 1.214 2007/01/19 01:05:24 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_rawdv.c --- a/src/demuxers/demux_rawdv.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_rawdv.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ */ /* - * $Id: demux_rawdv.c,v 1.30 2007/01/19 00:26:40 dgp85 Exp $ - * * demultiplexer for raw dv streams */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_real.c --- a/src/demuxers/demux_real.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_real.c Sat Nov 10 17:40:55 2007 +0100 @@ -30,8 +30,6 @@ * (C) Alex Beregszaszi <al...@na...> * * Based on FFmpeg's libav/rm.c. - * - * $Id: demux_real.c,v 1.113 2007/02/20 00:34:56 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_realaudio.c --- a/src/demuxers/demux_realaudio.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_realaudio.c Sat Nov 10 17:40:55 2007 +0100 @@ -21,8 +21,6 @@ /* * RealAudio File Demuxer by Mike Melanson (mel...@pc...) * improved by James Stembridge (jst...@us...) - * - * $Id: demux_realaudio.c,v 1.34 2007/03/29 17:00:32 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_roq.c --- a/src/demuxers/demux_roq.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_roq.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * RoQ File Demuxer by Mike Melanson (mel...@pc...) * For more information regarding the RoQ file format, visit: * http://www.csse.monash.edu.au/~timf/ - * - * $Id: demux_roq.c,v 1.54 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_shn.c --- a/src/demuxers/demux_shn.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_shn.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: demux_shn.c,v 1.4 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_slave.c --- a/src/demuxers/demux_slave.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_slave.c Sat Nov 10 17:40:55 2007 +0100 @@ -21,8 +21,6 @@ */ /* - * $Id: demux_slave.c,v 1.23 2007/01/19 01:05:24 dgp85 Exp $ - * * demuxer for slave "protocol" * master xine must be started with XINE_PARAM_BROADCASTER_PORT set, that is, * 'xine --broadcast-port <port_number>' diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_smjpeg.c --- a/src/demuxers/demux_smjpeg.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_smjpeg.c Sat Nov 10 17:40:55 2007 +0100 @@ -22,8 +22,6 @@ * SMJPEG File Demuxer by Mike Melanson (mel...@pc...) * For more information on the SMJPEG file format, visit: * http://www.lokigames.com/development/smjpeg.php3 - * - * $Id: demux_smjpeg.c,v 1.51 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_snd.c --- a/src/demuxers/demux_snd.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_snd.c Sat Nov 10 17:40:55 2007 +0100 @@ -20,8 +20,6 @@ /* * SND/AU File Demuxer by Mike Melanson (mel...@pc...) - * - * $Id: demux_snd.c,v 1.41 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_str.c --- a/src/demuxers/demux_str.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_str.c Sat Nov 10 17:40:55 2007 +0100 @@ -23,8 +23,6 @@ * and Stuart Caie (ky...@4u...) * This demuxer handles either raw STR files (which are just a concatenation * of raw compact disc sectors) or STR files with RIFF headers. - * - * $Id: demux_str.c,v 1.26 2007/01/19 00:26:40 dgp85 Exp $ */ /* diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_ts.c --- a/src/demuxers/demux_ts.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_ts.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: demux_ts.c,v 1.129 2007/04/02 10:46:08 dgp85 Exp $ * * Demultiplexer for MPEG2 Transport Streams. * diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_tta.c --- a/src/demuxers/demux_tta.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_tta.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ * * True Audio demuxer by Diego Pettenò <fla...@ge...> * Inspired by tta libavformat demuxer by Alex Beregszaszi - * - * $Id: demux_tta.c,v 1.4 2007/03/29 16:46:23 dgp85 Exp $ */ #define LOG_MODULE "demux_tta" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_vmd.c --- a/src/demuxers/demux_vmd.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_vmd.c Sat Nov 10 17:40:55 2007 +0100 @@ -27,8 +27,6 @@ * Note that the only way that this demuxer validates by content is by * checking the first 2 bytes, which are 0x2E 0x03 in a Sierra VMD file. * There is a 1/65536 chance of a false positive using this method. - * - * $Id: demux_vmd.c,v 1.4 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_voc.c --- a/src/demuxers/demux_voc.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_voc.c Sat Nov 10 17:40:55 2007 +0100 @@ -24,8 +24,6 @@ * possibly be seen in a VOC file. It only plays the first block in a file. * It will only play that block if it is PCM data. More variations will be * supported as they are encountered. - * - * $Id: demux_voc.c,v 1.41 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_vox.c --- a/src/demuxers/demux_vox.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_vox.c Sat Nov 10 17:40:55 2007 +0100 @@ -21,9 +21,6 @@ /* * VOX Demuxer by Mike Melanson (mel...@pc...) * This a demuxer for .vox files containing raw Dialogic ADPCM data. - * - * $Id: demux_vox.c,v 1.14 2007/01/19 00:26:40 dgp85 Exp $ - * */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_vqa.c --- a/src/demuxers/demux_vqa.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_vqa.c Sat Nov 10 17:40:55 2007 +0100 @@ -28,8 +28,6 @@ * However, seeking is infeasible due to the audio encoding: Each audio * block needs information from the previous audio block in order to be * decoded, thus making random seeking difficult. - * - * $Id: demux_vqa.c,v 1.42 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_wav.c --- a/src/demuxers/demux_wav.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_wav.c Sat Nov 10 17:40:55 2007 +0100 @@ -21,8 +21,6 @@ /* * MS WAV File Demuxer by Mike Melanson (mel...@pc...) * based on WAV specs that are available far and wide - * - * $Id: demux_wav.c,v 1.65 2007/03/17 20:57:04 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_wc3movie.c --- a/src/demuxers/demux_wc3movie.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_wc3movie.c Sat Nov 10 17:40:55 2007 +0100 @@ -23,8 +23,6 @@ * by Mike Melanson (mel...@pc...) * For more information on the MVE file format, visit: * http://www.pcisys.net/~melanson/codecs/ - * - * $Id: demux_wc3movie.c,v 1.54 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_yuv4mpeg2.c --- a/src/demuxers/demux_yuv4mpeg2.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_yuv4mpeg2.c Sat Nov 10 17:40:55 2007 +0100 @@ -23,8 +23,6 @@ * For more information regarding the YUV4MPEG2 file format and associated * tools, visit: * http://mjpeg.sourceforge.net/ - * - * $Id: demux_yuv4mpeg2.c,v 1.44 2007/01/19 00:26:40 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/demux_yuv_frames.c --- a/src/demuxers/demux_yuv_frames.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/demux_yuv_frames.c Sat Nov 10 17:40:55 2007 +0100 @@ -20,8 +20,6 @@ */ /* - * $Id: demux_yuv_frames.c,v 1.24 2007/01/19 01:05:24 dgp85 Exp $ - * * dummy demultiplexer for raw yuv frames (delivered by v4l) */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/ebml.c --- a/src/demuxers/ebml.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/ebml.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,9 +19,6 @@ * * EBML parser * a lot of ideas from the gstreamer parser - * - * $Id: ebml.c,v 1.4 2005/11/28 12:24:57 valtri Exp $ - * */ #ifdef HAVE_CONFIG_H #include "config.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/ebml.h --- a/src/demuxers/ebml.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/ebml.h Sat Nov 10 17:40:55 2007 +0100 @@ -19,9 +19,6 @@ * * EBML parser * a lot of ideas from the gstreamer parser - * - * $Id: ebml.h,v 1.1 2004/01/05 00:40:54 tmattern Exp $ - * */ #ifndef EBML_H #define EBML_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/group_audio.c --- a/src/demuxers/group_audio.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/group_audio.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * This file contains plugin entries for several demuxers used in games - * - * $Id: group_audio.c,v 1.26 2007/03/03 02:06:09 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/group_audio.h --- a/src/demuxers/group_audio.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/group_audio.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: group_audio.h,v 1.9 2006/12/26 16:59:55 dgp85 Exp $ */ #ifndef HAVE_GROUP_AUDIO_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/group_games.c --- a/src/demuxers/group_games.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/group_games.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * This file contains plugin entries for several demuxers used in games - * - * $Id: group_games.c,v 1.15 2006/07/10 22:08:13 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/group_games.h --- a/src/demuxers/group_games.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/group_games.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: group_games.h,v 1.3 2004/02/13 13:48:03 tmmm Exp $ */ #ifndef HAVE_GROUP_GAMES_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/id3.c --- a/src/demuxers/id3.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/id3.c Sat Nov 10 17:40:55 2007 +0100 @@ -28,8 +28,6 @@ * unzip support * * ID3v2 specs: http://www.id3.org/ - * - * $Id: id3.c,v 1.13 2007/03/03 00:58:52 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/id3.h --- a/src/demuxers/id3.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/id3.h Sat Nov 10 17:40:55 2007 +0100 @@ -20,8 +20,6 @@ * ID3 tag parser * * Supported versions: v1, v1.1, v2.2, v2.3, v2.4 - * - * $Id: id3.h,v 1.6 2007/03/03 01:41:16 dgp85 Exp $ */ #ifndef ID3_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/iff.h --- a/src/demuxers/iff.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/iff.h Sat Nov 10 17:40:55 2007 +0100 @@ -21,8 +21,6 @@ /* * IFF header file by Manfred Tremmel (Man...@ii...) * Based on the information of the Amiga Developer CD - * - * $Id: iff.h,v 1.2 2004/02/25 18:57:36 manfredtremmel Exp $ */ #ifndef IFFP_IFF_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/demuxers/matroska.h --- a/src/demuxers/matroska.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/demuxers/matroska.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,9 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: matroska.h,v 1.11 2007/01/07 12:33:50 molivier Exp $ - * */ #ifndef MATROSKA_H #define MATROSKA_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/dxr3.h --- a/src/dxr3/dxr3.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/dxr3.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: dxr3.h,v 1.8 2004/04/10 15:29:57 mroi Exp $ */ #ifndef HAVE_DXR3_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/dxr3_decode_spu.c --- a/src/dxr3/dxr3_decode_spu.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/dxr3_decode_spu.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: dxr3_decode_spu.c,v 1.56 2006/07/10 22:08:13 dgp85 Exp $ */ /* dxr3 spu decoder plugin. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/dxr3_decode_video.c --- a/src/dxr3/dxr3_decode_video.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/dxr3_decode_video.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: dxr3_decode_video.c,v 1.64 2006/07/10 22:08:13 dgp85 Exp $ */ /* dxr3 video decoder plugin. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/dxr3_mpeg_encoders.c --- a/src/dxr3/dxr3_mpeg_encoders.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/dxr3_mpeg_encoders.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: dxr3_mpeg_encoders.c,v 1.25 2007/03/10 17:25:13 dgp85 Exp $ */ /* mpeg encoders for the dxr3 video out plugin. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/dxr3_scr.c --- a/src/dxr3/dxr3_scr.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/dxr3_scr.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: dxr3_scr.c,v 1.19 2004/08/16 15:52:24 mroi Exp $ */ /* dxr3 scr plugin. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/dxr3_scr.h --- a/src/dxr3/dxr3_scr.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/dxr3_scr.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: dxr3_scr.h,v 1.7 2004/01/04 22:26:29 mroi Exp $ */ #include "xine_internal.h" diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/dxr3_spu_encoder.c --- a/src/dxr3/dxr3_spu_encoder.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/dxr3_spu_encoder.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: dxr3_spu_encoder.c,v 1.9 2005/09/24 19:08:26 miguelfreitas Exp $ */ #include <stdio.h> diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/video_out_dxr3.c --- a/src/dxr3/video_out_dxr3.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/video_out_dxr3.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: video_out_dxr3.c,v 1.117 2006/07/17 17:19:51 dsalt Exp $ */ /* mpeg1 encoding video out plugin for the dxr3. diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/dxr3/video_out_dxr3.h --- a/src/dxr3/video_out_dxr3.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/dxr3/video_out_dxr3.h Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: video_out_dxr3.h,v 1.25 2005/09/25 00:44:04 miguelfreitas Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/base64.c --- a/src/input/base64.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/base64.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,7 +19,6 @@ * * Base64 encoding modified for Musicbrainz * relicensed under the GNU General Public License for use in xine-lib - * */ /* -------------------------------------------------------------------------- @@ -40,8 +39,6 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - - $Id: base64.c,v 1.2 2004/05/05 18:44:19 mroi Exp $ ----------------------------------------------------------------------------*/ /* @@ -84,7 +81,6 @@ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * */ #include <ctype.h> diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/base64.h --- a/src/input/base64.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/base64.h Sat Nov 10 17:40:55 2007 +0100 @@ -19,7 +19,6 @@ * * Base64 encoding modified for Musicbrainz * relicensed under the GNU General Public License for use in xine-lib - * */ /* -------------------------------------------------------------------------- @@ -40,8 +39,6 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - - $Id: base64.h,v 1.1 2004/05/05 09:11:39 hadess Exp $ ----------------------------------------------------------------------------*/ /* @@ -84,7 +81,6 @@ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * */ #ifndef BASE64_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/http_helper.c --- a/src/input/http_helper.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/http_helper.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * URL helper functions - * - * $Id: http_helper.c,v 1.9 2006/11/19 15:38:47 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/http_helper.h --- a/src/input/http_helper.h Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/http_helper.h Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * URL helper functions - * - * $Id: http_helper.h,v 1.3 2004/12/24 01:59:12 dsalt Exp $ */ #ifndef HTTP_HELPER_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/input_cdda.c --- a/src/input/input_cdda.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/input_cdda.c Sat Nov 10 17:40:55 2007 +0100 @@ -19,8 +19,6 @@ * * Compact Disc Digital Audio (CDDA) Input Plugin * by Mike Melanson (mel...@pc...) - * - * $Id: input_cdda.c,v 1.94 2007/03/10 00:48:59 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/input_dvd.c --- a/src/input/input_dvd.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/input_dvd.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,9 +17,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: input_dvd.c,v 1.216 2007/02/20 01:04:07 dgp85 Exp $ - * */ /* This file was origninally part of the xine-dvdnav project diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/input_file.c --- a/src/input/input_file.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/input_file.c Sat Nov 10 17:40:55 2007 +0100 @@ -16,8 +16,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: input_file.c,v 1.122 2007/03/29 19:47:17 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/input_gnome_vfs.c --- a/src/input/input_gnome_vfs.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/input_gnome_vfs.c Sat Nov 10 17:40:55 2007 +0100 @@ -17,8 +17,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * $Id: input_gnome_vfs.c,v 1.34 2007/01/19 01:05:25 dgp85 Exp $ */ diff -r 6f8b5361576627d4e0af9d455894b0b6771c36c3 -r 9ba2af68d14435c1dc81d2090e26e5bd5dcf95ea src/input/input_http.c --- a/src/input/input_http.c Sat Nov 10 23:17:58 2007 +0000 +++ b/src/input/input_http.c Sat Nov 10 17:40:55 2007 +0100 @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * input plugin for http network streams - * - * $Id: input_http.c,v 1.129 2007/03/17 16:47:16 dgp85 Exp $ */ #ifdef HAVE_CONFIG_H @@ -64,7 +62,7 @@ #define TAG_ICY_NOTICE2 "icy-notice2:" #define TAG_ICY_METAINT "icy-metaint:" #define TAG_CONTENT_TYPE "Content-Type:" -#define TAG_LAST... [truncated message content] |
From: <li...@yo...> - 2007-11-14 16:49:50
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1195057507 0 # Node ID d8ff45026cdd29acbe85927ce3f617a3a4a2327e # Parent 2ce76206b5c10b6f9cfc55a9edb0d883bfb446a2 # Parent bf1ec833d87a51f0d03102144748c1207a6a38f3 Merge from 1.1. diff -r d8ff45026cdd29acbe85927ce3f617a3a4a2327e -r 2ce76206b5c10b6f9cfc55a9edb0d883bfb446a2 ChangeLog --- a/ChangeLog Wed Nov 14 16:25:07 2007 +0000 +++ b/ChangeLog Sun Nov 11 14:52:34 2007 +0100 @@ -58,6 +58,8 @@ xine-lib (1.1.9) (unreleased) * Build fix for when using Linux 2.6.23 headers. [Bug 1820958] * Implemented decoding of XML character entities with codes >= 256. This requires conversion to UTF-8 of entities with codes >= 128. + * Fixed ATSC support. [Bug 1749508] + * Fixed a possible DVB plugin crash when switching channels. xine-lib (1.1.8) * Send a channel-changed event to the frontend when receiving the SYNC diff -r d8ff45026cdd29acbe85927ce3f617a3a4a2327e -r 2ce76206b5c10b6f9cfc55a9edb0d883bfb446a2 lib/strndup.c --- a/lib/strndup.c Wed Nov 14 16:25:07 2007 +0000 +++ b/lib/strndup.c Sun Nov 11 14:52:34 2007 +0100 @@ -1,16 +1,56 @@ +/* $NetBSD: strndup.c,v 1.4 2007/07/03 12:11:09 nakayama Exp $ */ + +/* + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * Modified for xine project. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + #include "config.h" -#ifdef HAVE_STDLIB_H +#include <errno.h> #include <stdlib.h> -#endif - #include <string.h> -char *xine_private_strndup(const char *s, size_t n) { - char *ret; - - ret = malloc (n + 1); - strncpy(ret, s, n); - ret[n] = '\0'; - return ret; +char * +xine_private_strndup(const char *str, size_t n) +{ + size_t len; + char *copy; + + if (!str) + return (NULL); + + for (len = 0; len < n && str[len]; len++) + continue; + + if (!(copy = malloc(len + 1))) + return (NULL); + memcpy(copy, str, len); + copy[len] = '\0'; + return (copy); } diff -r d8ff45026cdd29acbe85927ce3f617a3a4a2327e -r 2ce76206b5c10b6f9cfc55a9edb0d883bfb446a2 lib/strsep.c --- a/lib/strsep.c Wed Nov 14 16:25:07 2007 +0000 +++ b/lib/strsep.c Sun Nov 11 14:52:34 2007 +0100 @@ -1,36 +1,72 @@ +/* $OpenBSD: strsep.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */ + +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + #include "config.h" #include <string.h> +#include <stdio.h> -char *xine_private_strsep(char **stringp, const char *delim) { - char *begin, *end; +/* + * Get next token from string *stringp, where tokens are possibly-empty + * strings separated by characters from delim. + * + * Writes NULs into the string at *stringp to end tokens. + * delim need not remain constant from call to call. + * On return, *stringp points past the last NUL written (if there might + * be further tokens), or is NULL (if there are definitely no more tokens). + * + * If *stringp is NULL, strsep returns NULL. + */ +char * +xine_private_strsep(char **stringp, const char *delim) +{ + char *s; + const char *spanp; + int c, sc; + char *tok; - begin = *stringp; - if(begin == NULL) - return NULL; - - if(delim[0] == '\0' || delim[1] == '\0') { - char ch = delim[0]; - - if(ch == '\0') - end = NULL; - else { - if(*begin == ch) - end = begin; - else if(*begin == '\0') - end = NULL; - else - end = strchr(begin + 1, ch); - } - } - else - end = strpbrk(begin, delim); - - if(end) { - *end++ = '\0'; - *stringp = end; - } - else - *stringp = NULL; - - return begin; + if ((s = *stringp) == NULL) + return (NULL); + for (tok = s;;) { + c = *s++; + spanp = delim; + do { + if ((sc = *spanp++) == c) { + if (c == 0) + s = NULL; + else + s[-1] = 0; + *stringp = s; + return (tok); + } + } while (sc != 0); + } + /* NOTREACHED */ } diff -r d8ff45026cdd29acbe85927ce3f617a3a4a2327e -r 2ce76206b5c10b6f9cfc55a9edb0d883bfb446a2 src/demuxers/demux_asf.c --- a/src/demuxers/demux_asf.c Wed Nov 14 16:25:07 2007 +0000 +++ b/src/demuxers/demux_asf.c Sun Nov 11 14:52:34 2007 +0100 @@ -1536,108 +1536,90 @@ static int demux_asf_parse_asx_reference ENTRYREF, MOREINFO, PARAM, REPEAT, TITLE */ - const char *version = xml_parser_get_property (xml_tree, "VERSION"); - - if (version) { - int version_major, version_minor = 0; - - if((sscanf (version, "%d.%d", &version_major, &version_minor) == 2 || - sscanf (version, "%d", &version_major) == 1) && - (version_major == 3 && version_minor == 0)) + const char *base_href = NULL; + + for (asx_entry = xml_tree->child; asx_entry; asx_entry = asx_entry->next) + { + const char *ref_base_href = base_href; + + if (!strcasecmp (asx_entry->name, "ENTRY")) { - const char *base_href = NULL; - - for (asx_entry = xml_tree->child; asx_entry; asx_entry = asx_entry->next) + /* Attributes: CLIENTSKIP, SKIPIFREF + * Child elements: ABSTRACT, AUTHOR, BASE, COPYRIGHT, DURATION, + ENDMARKER, MOREINFO, PARAM, REF, STARTMARKER, + STARTTIME, TITLE + */ + const char *href = NULL; + const char *title = NULL; + uint32_t start_time = (uint32_t)-1; + uint32_t duration = (uint32_t)-1; + + for (asx_ref = asx_entry->child; asx_ref; asx_ref = asx_ref->next) { - const char *ref_base_href = base_href; - - if (!strcasecmp (asx_entry->name, "ENTRY")) + if (!strcasecmp(asx_ref->name, "REF")) { - /* Attributes: CLIENTSKIP, SKIPIFREF - * Child elements: ABSTRACT, AUTHOR, BASE, COPYRIGHT, DURATION, - ENDMARKER, MOREINFO, PARAM, REF, STARTMARKER, - STARTTIME, TITLE + xml_node_t *asx_sub; + /* Attributes: HREF + * Child elements: DURATION, ENDMARKER, STARTMARKER, STARTTIME */ - const char *href = NULL; - const char *title = NULL; - uint32_t start_time = (uint32_t)-1; - uint32_t duration = (uint32_t)-1; - - for (asx_ref = asx_entry->child; asx_ref; asx_ref = asx_ref->next) + + /* FIXME: multiple REFs => alternative streams + * (and per-ref start times and durations?). + * Just the one title, though. + */ + href = xml_parser_get_property (asx_ref, "HREF"); + + for (asx_sub = asx_ref->child; asx_sub; asx_sub = asx_sub->next) { - if (!strcasecmp(asx_ref->name, "REF")) - { - xml_node_t *asx_sub; - /* Attributes: HREF - * Child elements: DURATION, ENDMARKER, STARTMARKER, STARTTIME - */ - - /* FIXME: multiple REFs => alternative streams - * (and per-ref start times and durations?). - * Just the one title, though. - */ - href = xml_parser_get_property (asx_ref, "HREF"); - - for (asx_sub = asx_ref->child; asx_sub; asx_sub = asx_sub->next) - { - if (!strcasecmp (asx_sub->name, "STARTTIME")) - start_time = asx_get_time_value (asx_sub); - else if (!strcasecmp (asx_sub->name, "DURATION")) - duration = asx_get_time_value (asx_sub); - } - } - - else if (!strcasecmp (asx_ref->name, "TITLE")) - { - if (!title) - title = asx_ref->data; - } - - else if (!strcasecmp (asx_ref->name, "STARTTIME")) - { - if (start_time == (uint32_t)-1) - start_time = asx_get_time_value (asx_ref); - } - - else if (!strcasecmp (asx_ref->name, "DURATION")) - { - if (duration == (uint32_t)-1) - duration = asx_get_time_value (asx_ref); - } - - else if (!strcasecmp (asx_ref->name, "BASE")) - /* Attributes: HREF */ + if (!strcasecmp (asx_sub->name, "STARTTIME")) + start_time = asx_get_time_value (asx_sub); + else if (!strcasecmp (asx_sub->name, "DURATION")) + duration = asx_get_time_value (asx_sub); + } + } + + else if (!strcasecmp (asx_ref->name, "TITLE")) + { + if (!title) + title = asx_ref->data; + } + + else if (!strcasecmp (asx_ref->name, "STARTTIME")) + { + if (start_time == (uint32_t)-1) + start_time = asx_get_time_value (asx_ref); + } + + else if (!strcasecmp (asx_ref->name, "DURATION")) + { + if (duration == (uint32_t)-1) + duration = asx_get_time_value (asx_ref); + } + + else if (!strcasecmp (asx_ref->name, "BASE")) + /* Attributes: HREF */ ref_base_href = xml_parser_get_property (asx_entry, "HREF"); - } - - /* FIXME: prepend ref_base_href to href */ - if (href && *href) - _x_demux_send_mrl_reference (this->stream, 0, href, title, - start_time == (uint32_t)-1 ? 0 : start_time, - duration == (uint32_t)-1 ? -1 : duration); - } - - else if (!strcasecmp (asx_entry->name, "ENTRYREF")) - { - /* Attributes: HREF, CLIENTBIND */ - const char *href = xml_parser_get_property (asx_entry, "HREF"); - if (href && *href) - _x_demux_send_mrl_reference (this->stream, 0, href, NULL, 0, -1); - } - - else if (!strcasecmp (asx_entry->name, "BASE")) - /* Attributes: HREF */ - base_href = xml_parser_get_property (asx_entry, "HREF"); } - } - else - xprintf(this->stream->xine, XINE_VERBOSITY_LOG, - _("demux_asf: Wrong ASX version: %s\n"), version); - - } - else - xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, - "demux_asf: Unable to find VERSION tag from ASX.\n"); + + /* FIXME: prepend ref_base_href to href */ + if (href && *href) + _x_demux_send_mrl_reference (this->stream, 0, href, title, + start_time == (uint32_t)-1 ? 0 : start_time, + duration == (uint32_t)-1 ? -1 : duration); + } + + else if (!strcasecmp (asx_entry->name, "ENTRYREF")) + { + /* Attributes: HREF, CLIENTBIND */ + const char *href = xml_parser_get_property (asx_entry, "HREF"); + if (href && *href) + _x_demux_send_mrl_reference (this->stream, 0, href, NULL, 0, -1); + } + + else if (!strcasecmp (asx_entry->name, "BASE")) + /* Attributes: HREF */ + base_href = xml_parser_get_property (asx_entry, "HREF"); + } } else xprintf(this->stream->xine, XINE_VERBOSITY_DEBUG, diff -r d8ff45026cdd29acbe85927ce3f617a3a4a2327e -r 2ce76206b5c10b6f9cfc55a9edb0d883bfb446a2 src/demuxers/demux_ts.c --- a/src/demuxers/demux_ts.c Wed Nov 14 16:25:07 2007 +0000 +++ b/src/demuxers/demux_ts.c Sun Nov 11 14:52:34 2007 +0100 @@ -369,8 +369,8 @@ static void demux_ts_build_crc32_table(d } static uint32_t demux_ts_compute_crc32(demux_ts_t*this, uint8_t *data, - uint32_t length, uint32_t crc32) { - uint32_t i; + int32_t length, uint32_t crc32) { + int32_t i; for(i = 0; i < length; i++) { crc32 = (crc32 << 8) ^ this->crc32_table[(crc32 >> 24) ^ data[i]]; @@ -521,7 +521,7 @@ static void demux_ts_parse_pat (demux_ts unsigned char *pkt, unsigned int pusi) { uint32_t table_id; uint32_t section_syntax_indicator; - uint32_t section_length; + int32_t section_length; uint32_t transport_stream_id; uint32_t version_number; uint32_t current_next_indicator; diff -r d8ff45026cdd29acbe85927ce3f617a3a4a2327e -r 2ce76206b5c10b6f9cfc55a9edb0d883bfb446a2 src/input/input_dvb.c --- a/src/input/input_dvb.c Wed Nov 14 16:25:07 2007 +0000 +++ b/src/input/input_dvb.c Sun Nov 11 14:52:34 2007 +0100 @@ -3198,26 +3198,38 @@ static char **dvb_class_get_autoplay_lis dvb_input_class_t *class = (dvb_input_class_t *) this_gen; channel_t *channels=NULL; char foobuffer[BUFSIZE]; - int ch, apch, num_channels; + int ch, apch, num_channels = 0; int default_channel = -1; xine_cfg_entry_t lastchannel_enable = {0}; xine_cfg_entry_t lastchannel; - num_channels = 0; - - if (!(channels = load_channels(class->xine, NULL, &num_channels, 0))) { - static char *placefile = NULL; + /* need to probe card here to get fe_type to read in channels.conf */ + tuner_t *tuner; + xine_cfg_entry_t adapter; + + xine_config_lookup_entry(class->xine, "media.dvb.adapter", &adapter); + + if (!(tuner = tuner_init(class->xine,adapter.num_value))) { + xprintf(class->xine, XINE_VERBOSITY_LOG, _("input_dvb: cannot open dvb device\n")); + class->mrls[0]="Sorry, No DVB input device found."; + *num_files=1; + return class->mrls; + } + + if (!(channels = load_channels(class->xine, NULL, &num_channels, tuner->feinfo.type))) { /* channels.conf not found in .xine */ - class->mrls[0]="Sorry, no channels.conf found."; - class->mrls[1]="Please run the scan utility from the DVB"; - class->mrls[2]="drivers apps package and place the file in"; - if (!placefile) - asprintf (&placefile, "%s/"PACKAGE"/", xdgConfigHome(class->xine->basedir_handle)); - class->mrls[3]=placefile; - *num_files=4; + class->mrls[0]="Sorry, No valid channels.conf found"; + class->mrls[1]="for the selected DVB device."; + class->mrls[2]="Please run the dvbscan utility"; + class->mrls[3]="from the dvb drivers apps package"; + class->mrls[4]="and place the file in ~/.xine/"; + *num_files=5; + tuner_dispose(tuner); return class->mrls; } + tuner_dispose(tuner); + if (xine_config_lookup_entry(class->xine, "media.dvb.remember_channel", &lastchannel_enable) && lastchannel_enable.num_value && xine_config_lookup_entry(class->xine, "media.dvb.last_channel", &lastchannel)) |
From: <li...@yo...> - 2007-11-17 02:34:24
|
# HG changeset patch # User Darren Salt <li...@yo...> # Date 1195266828 0 # Node ID de8b185473f1722d2a3620829507c3f24290779c # Parent 0c999f2c41f1b874333d7767e5d404129bee0efd # Parent 5134b7648f3b3f891034fbe68633dd0354d62fb2 Merge from 1.1. diff -r de8b185473f1722d2a3620829507c3f24290779c -r 0c999f2c41f1b874333d7767e5d404129bee0efd debian/control --- a/debian/control Sat Nov 17 02:33:48 2007 +0000 +++ b/debian/control Thu Nov 15 14:52:14 2007 +0100 @@ -5,9 +5,9 @@ Uploaders: Reinhard Tartler <siretart@ta Uploaders: Reinhard Tartler <sir...@ta...> Build-Depends: debhelper (>= 5.0.1), binutils (>= 2.12.90.0.9), pkg-config, automake1.9, autoconf, libtool, - libxcb-xinerama0-dev | libxv-dev (<< 1.0.3), libxcb-xv0-dev | libxv-dev (<< 1.0.3), - libxcb-xvmc0-dev | libxv-dev (<< 1.0.3), libxcb-shm0-dev | libxv-dev (<< 1.0.3), - libxcb-shape0-dev | libxv-dev (<< 1.0.3), + libxcb-xinerama0-dev | libxv-dev (<< 1:1.0.3), libxcb-xv0-dev | libxv-dev (<< 1:1.0.3), + libxcb-xvmc0-dev | libxv-dev (<< 1:1.0.3), libxcb-shm0-dev | libxv-dev (<< 1:1.0.3), + libxcb-shape0-dev | libxv-dev (<< 1:1.0.3), libxinerama-dev, libxv-dev, libxvmc-dev, libxt-dev, libdirectfb-dev (>= 0.9.22), libasound2-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], |