]> git.sesse.net Git - vlc/commitdiff
More S/PDIF fixes.
authorChristophe Massiot <massiot@videolan.org>
Sun, 11 Aug 2002 01:27:01 +0000 (01:27 +0000)
committerChristophe Massiot <massiot@videolan.org>
Sun, 11 Aug 2002 01:27:01 +0000 (01:27 +0000)
14 files changed:
configure
configure.in
include/config.h
modules/audio_output/oss.c
modules/codec/.cvsignore [moved from modules/codec/a52/.cvsignore with 100% similarity]
modules/codec/Makefile [moved from modules/codec/spdif/Makefile with 54% similarity]
modules/codec/a52.c [moved from modules/codec/a52/a52.c with 62% similarity]
modules/codec/a52/Makefile [deleted file]
modules/codec/a52/a52.h [deleted file]
modules/codec/spdif.c [new file with mode: 0644]
modules/codec/spdif/.cvsignore [deleted file]
modules/codec/spdif/spdif.c [deleted file]
modules/codec/spdif/spdif.h [deleted file]
src/audio_output/audio_output.c

index 6eb4d909fc6e458e37e6b337207554068320b8b6..f9757fb543be0a556352f09566e06e23d915e7d4 100755 (executable)
--- a/configure
+++ b/configure
@@ -5666,7 +5666,8 @@ PLUGINS="${PLUGINS} misc/dummy/dummy misc/null/null"
 PLUGINS="${PLUGINS} control/rc/rc misc/logger/logger access/file access/udp access/http misc/network/ipv4 misc/memcpy/memcpy"
 PLUGINS="${PLUGINS} demux/mpeg/es demux/mpeg/audio demux/mpeg/mpeg_system demux/mpeg/ps demux/mpeg/ts"
 PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec"
-#PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/mpeg_audio/mpeg_audio codec/a52old/a52old codec/lpcm/lpcm codec/spdif/spdif"
+PLUGINS="${PLUGINS} codec/spdif"
+#PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/mpeg_audio/mpeg_audio codec/a52old/a52old codec/lpcm/lpcm"
 PLUGINS="${PLUGINS} video_filter/deinterlace/deinterlace video_filter/invert video_filter/wall video_filter/transform video_filter/distort video_filter/clone video_filter/crop"
 PLUGINS="${PLUGINS} audio_filter/converter/float32tos16"
 PLUGINS="${PLUGINS} audio_filter/resampler/trivial"
@@ -5682,20 +5683,20 @@ SSE_MODULES="codec/a52old/imdct/imdctsse codec/a52old/downmix/downmixsse"
 ALTIVEC_MODULES="codec/mpeg_video/idct/idctaltivec codec/mpeg_video/motion/motionaltivec misc/memcpy/memcpyaltivec"
 
 echo $ac_n "checking if \$CC groks MMX inline assembly""... $ac_c" 1>&6
-echo "configure:5686: checking if \$CC groks MMX inline assembly" >&5
+echo "configure:5687: checking if \$CC groks MMX inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_mmx_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS}"
      cat > conftest.$ac_ext <<EOF
-#line 5692 "configure"
+#line 5693 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mmx_inline=yes
 else
@@ -5713,20 +5714,20 @@ if test "x${ac_cv_mmx_inline}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC groks MMX EXT inline assembly""... $ac_c" 1>&6
-echo "configure:5717: checking if \$CC groks MMX EXT inline assembly" >&5
+echo "configure:5718: checking if \$CC groks MMX EXT inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_mmxext_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS}"
      cat > conftest.$ac_ext <<EOF
-#line 5723 "configure"
+#line 5724 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5730: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mmxext_inline=yes
 else
@@ -5744,20 +5745,20 @@ if test "x${ac_cv_mmxext_inline}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC groks 3D Now! inline assembly""... $ac_c" 1>&6
-echo "configure:5748: checking if \$CC groks 3D Now! inline assembly" >&5
+echo "configure:5749: checking if \$CC groks 3D Now! inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_3dnow_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS}"
      cat > conftest.$ac_ext <<EOF
-#line 5754 "configure"
+#line 5755 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5762: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_3dnow_inline=yes
 else
@@ -5779,20 +5780,20 @@ EOF
 fi
 
 echo $ac_n "checking if \$CC groks SSE inline assembly""... $ac_c" 1>&6
-echo "configure:5783: checking if \$CC groks SSE inline assembly" >&5
+echo "configure:5784: checking if \$CC groks SSE inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_sse_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS}"
      cat > conftest.$ac_ext <<EOF
-#line 5789 "configure"
+#line 5790 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5797: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sse_inline=yes
 else
@@ -5817,20 +5818,20 @@ fi
 # we should be able to remove this test with future versions of mingw32
 if test "x${SYS}" != "xmingw32"; then
 echo $ac_n "checking if \$CC groks AltiVec inline assembly""... $ac_c" 1>&6
-echo "configure:5821: checking if \$CC groks AltiVec inline assembly" >&5
+echo "configure:5822: checking if \$CC groks AltiVec inline assembly" >&5
 if eval "test \"`echo '$''{'ac_cv_altivec_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS}"
      cat > conftest.$ac_ext <<EOF
-#line 5827 "configure"
+#line 5828 "configure"
 #include "confdefs.h"
 
 int main() {
 asm volatile("vperm 0,1,2,3");
 ; return 0; }
 EOF
-if { (eval echo configure:5834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_altivec_inline=yes
 else
@@ -5839,14 +5840,14 @@ else
   rm -rf conftest*
   CFLAGS="${save_CFLAGS} -Wa,-m7400"
           cat > conftest.$ac_ext <<EOF
-#line 5843 "configure"
+#line 5844 "configure"
 #include "confdefs.h"
 
 int main() {
 asm volatile("vperm 0,1,2,3");
 ; return 0; }
 EOF
-if { (eval echo configure:5850: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5851: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_altivec_inline="-Wa,-m7400"
 else
@@ -5877,21 +5878,21 @@ EOF
 fi
 
 echo $ac_n "checking if \$CC groks AltiVec C extensions""... $ac_c" 1>&6
-echo "configure:5881: checking if \$CC groks AltiVec C extensions" >&5
+echo "configure:5882: checking if \$CC groks AltiVec C extensions" >&5
 if eval "test \"`echo '$''{'ac_cv_c_altivec'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -faltivec"
      # Darwin test
      cat > conftest.$ac_ext <<EOF
-#line 5888 "configure"
+#line 5889 "configure"
 #include "confdefs.h"
 
 int main() {
 vec_mtvscr((vector unsigned int)(0));
 ; return 0; }
 EOF
-if { (eval echo configure:5895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5896: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_altivec=-faltivec
 else
@@ -5902,14 +5903,14 @@ else
         # Linux/PPC test
         CFLAGS="${save_CFLAGS} ${idctaltivec_CFLAGS} -fvec"
         cat > conftest.$ac_ext <<EOF
-#line 5906 "configure"
+#line 5907 "configure"
 #include "confdefs.h"
 
 int main() {
 vec_mtvscr((vector unsigned int)(0));
 ; return 0; }
 EOF
-if { (eval echo configure:5913: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_altivec="-fvec"
 else
@@ -5939,20 +5940,20 @@ EOF
 fi
 
 echo $ac_n "checking if linker needs -framework vecLib""... $ac_c" 1>&6
-echo "configure:5943: checking if linker needs -framework vecLib" >&5
+echo "configure:5944: checking if linker needs -framework vecLib" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_altivec'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   LDFLAGS="${vlc_LDFLAGS} -framework vecLib"
      cat > conftest.$ac_ext <<EOF
-#line 5949 "configure"
+#line 5950 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_ld_altivec=yes
 else
@@ -6084,17 +6085,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6088: checking for $ac_hdr" >&5
+echo "configure:6089: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6093 "configure"
+#line 6094 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6125,7 +6126,7 @@ done
 
     else
       echo $ac_n "checking for libdvdcss.a in ${with_dvdcss_tree}""... $ac_c" 1>&6
-echo "configure:6129: checking for libdvdcss.a in ${with_dvdcss_tree}" >&5
+echo "configure:6130: checking for libdvdcss.a in ${with_dvdcss_tree}" >&5
       real_dvdcss_tree="`cd ${with_dvdcss_tree} 2>/dev/null && pwd`"
       if test "x${real_dvdcss_tree}" = "x"
       then
@@ -6151,7 +6152,7 @@ echo "configure:6129: checking for libdvdcss.a in ${with_dvdcss_tree}" >&5
   ;;
   *)
     echo $ac_n "checking for dvdcss headers in ${with_dvdcss}""... $ac_c" 1>&6
-echo "configure:6155: checking for dvdcss headers in ${with_dvdcss}" >&5
+echo "configure:6156: checking for dvdcss headers in ${with_dvdcss}" >&5
     if test -f ${with_dvdcss}/include/dvdcss/dvdcss.h
     then
             echo "$ac_t""yes" 1>&6
@@ -6193,17 +6194,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6197: checking for $ac_hdr" >&5
+echo "configure:6198: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6202 "configure"
+#line 6203 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6207: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6208: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6225,14 +6226,14 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
 EOF
  
      cat > conftest.$ac_ext <<EOF
-#line 6229 "configure"
+#line 6230 "configure"
 #include "confdefs.h"
 #include <dvdread/dvd_reader.h>
 int main() {
 void foo() { int i=DVD_VIDEO_LB_LEN; }
 ; return 0; }
 EOF
-if { (eval echo configure:6236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
           PLUGINS="${PLUGINS} access/dvdread/dvdread"
@@ -6297,17 +6298,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6301: checking for $ac_hdr" >&5
+echo "configure:6302: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6306 "configure"
+#line 6307 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6312: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6379,17 +6380,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6383: checking for $ac_hdr" >&5
+echo "configure:6384: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6388 "configure"
+#line 6389 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6394: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6418,7 +6419,7 @@ done
 
     else
       echo $ac_n "checking for libdvbpsi.a in ${with_dvbpsi_tree}""... $ac_c" 1>&6
-echo "configure:6422: checking for libdvbpsi.a in ${with_dvbpsi_tree}" >&5
+echo "configure:6423: checking for libdvbpsi.a in ${with_dvbpsi_tree}" >&5
       real_dvbpsi_tree="`cd ${with_dvbpsi_tree} 2>/dev/null && pwd`"
       if test "x${real_dvbpsi_tree}" = "x"
       then
@@ -6441,7 +6442,7 @@ echo "configure:6422: checking for libdvbpsi.a in ${with_dvbpsi_tree}" >&5
       ;;
   *)
     echo $ac_n "checking for dvbpsi headers in ${with_dvbpsi}""... $ac_c" 1>&6
-echo "configure:6445: checking for dvbpsi headers in ${with_dvbpsi}" >&5
+echo "configure:6446: checking for dvbpsi headers in ${with_dvbpsi}" >&5
     if test "x${with_dvbpsi}" = "x"
     then
       test_LDFLAGS=""
@@ -6453,17 +6454,17 @@ echo "configure:6445: checking for dvbpsi headers in ${with_dvbpsi}" >&5
     CPPFLAGS="${save_CPPFLAGS} ${test_CFLAGS}"
     ac_safe=`echo "dvbpsi/dr.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dvbpsi/dr.h""... $ac_c" 1>&6
-echo "configure:6457: checking for dvbpsi/dr.h" >&5
+echo "configure:6458: checking for dvbpsi/dr.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6462 "configure"
+#line 6463 "configure"
 #include "confdefs.h"
 #include <dvbpsi/dr.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6468: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6511,17 +6512,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6515: checking for $ac_hdr" >&5
+echo "configure:6516: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6520 "configure"
+#line 6521 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6561,7 +6562,7 @@ fi
 if test "x${enable_vcd}" != "xno"
 then
   cat > conftest.$ac_ext <<EOF
-#line 6565 "configure"
+#line 6566 "configure"
 #include "confdefs.h"
 #include <linux/cdrom.h>
 EOF
@@ -6576,7 +6577,7 @@ rm -f conftest*
 
   
   cat > conftest.$ac_ext <<EOF
-#line 6580 "configure"
+#line 6581 "configure"
 #include "confdefs.h"
 #include <sys/cdio.h>
 EOF
@@ -6620,12 +6621,12 @@ if test "x${SYS}" != "xnto" && test "x${SYS}" != "xmingw32"
 then
   have_ipv6=0
   echo $ac_n "checking for inet_pton""... $ac_c" 1>&6
-echo "configure:6624: checking for inet_pton" >&5
+echo "configure:6625: checking for inet_pton" >&5
 if eval "test \"`echo '$''{'ac_cv_func_inet_pton'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6629 "configure"
+#line 6630 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char inet_pton(); below.  */
@@ -6648,7 +6649,7 @@ inet_pton();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_inet_pton=yes"
 else
@@ -6667,7 +6668,7 @@ else
   echo "$ac_t""no" 1>&6
 
     echo $ac_n "checking for inet_pton in -lresolv""... $ac_c" 1>&6
-echo "configure:6671: checking for inet_pton in -lresolv" >&5
+echo "configure:6672: checking for inet_pton in -lresolv" >&5
 ac_lib_var=`echo resolv'_'inet_pton | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6675,7 +6676,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6679 "configure"
+#line 6680 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6686,7 +6687,7 @@ int main() {
 inet_pton()
 ; return 0; }
 EOF
-if { (eval echo configure:6690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6711,9 +6712,9 @@ fi
 fi
 
   echo $ac_n "checking for sockaddr_in6 in netinet/in.h""... $ac_c" 1>&6
-echo "configure:6715: checking for sockaddr_in6 in netinet/in.h" >&5
+echo "configure:6716: checking for sockaddr_in6 in netinet/in.h" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6717 "configure"
+#line 6718 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
@@ -6734,9 +6735,9 @@ fi
 if test "x${SYS}" = "xmingw32"
 then
   echo $ac_n "checking for getaddrinfo in ws2tcpip.h""... $ac_c" 1>&6
-echo "configure:6738: checking for getaddrinfo in ws2tcpip.h" >&5
+echo "configure:6739: checking for getaddrinfo in ws2tcpip.h" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6740 "configure"
+#line 6741 "configure"
 #include "confdefs.h"
 #include <ws2tcpip.h>
 EOF
@@ -6807,7 +6808,7 @@ fi
       { echo "configure: error: ${with_mad_tree} directory doesn't exist" 1>&2; exit 1; }
     fi
         echo $ac_n "checking for mad.h in ${real_mad_tree}/libmad""... $ac_c" 1>&6
-echo "configure:6811: checking for mad.h in ${real_mad_tree}/libmad" >&5
+echo "configure:6812: checking for mad.h in ${real_mad_tree}/libmad" >&5
     if test -f ${real_mad_tree}/libmad/mad.h
     then
       echo "$ac_t""yes" 1>&6
@@ -6815,7 +6816,7 @@ echo "configure:6811: checking for mad.h in ${real_mad_tree}/libmad" >&5
       mad_LDFLAGS="${mad_LDFLAGS} -L${real_mad_tree}/libmad/.libs"
       LDFLAGS="${save_LDFLAGS} ${mad_LDFLAGS}"
       echo $ac_n "checking for mad_bit_init in -lmad""... $ac_c" 1>&6
-echo "configure:6819: checking for mad_bit_init in -lmad" >&5
+echo "configure:6820: checking for mad_bit_init in -lmad" >&5
 ac_lib_var=`echo mad'_'mad_bit_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6823,7 +6824,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmad  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6827 "configure"
+#line 6828 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6834,7 +6835,7 @@ int main() {
 mad_bit_init()
 ; return 0; }
 EOF
-if { (eval echo configure:6838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6871,17 +6872,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6875: checking for $ac_hdr" >&5
+echo "configure:6876: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6880 "configure"
+#line 6881 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6885: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6886: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6909,7 +6910,7 @@ fi
 done
 
     echo $ac_n "checking for mad_bit_init in -lmad""... $ac_c" 1>&6
-echo "configure:6913: checking for mad_bit_init in -lmad" >&5
+echo "configure:6914: checking for mad_bit_init in -lmad" >&5
 ac_lib_var=`echo mad'_'mad_bit_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6917,7 +6918,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmad  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6921 "configure"
+#line 6922 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6928,7 +6929,7 @@ int main() {
 mad_bit_init()
 ; return 0; }
 EOF
-if { (eval echo configure:6932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6995,7 +6996,7 @@ fi
   if test "x${with_ffmpeg_tree}" != "x"
   then
     echo $ac_n "checking for libavcodec.a in ${with_ffmpeg_tree}""... $ac_c" 1>&6
-echo "configure:6999: checking for libavcodec.a in ${with_ffmpeg_tree}" >&5
+echo "configure:7000: checking for libavcodec.a in ${with_ffmpeg_tree}" >&5
     real_ffmpeg_tree="`cd ${with_ffmpeg_tree} 2>/dev/null && pwd`"
     if test "x${real_ffmpeg_tree}" = x
     then
@@ -7016,7 +7017,7 @@ echo "configure:6999: checking for libavcodec.a in ${with_ffmpeg_tree}" >&5
     CFLAGS="${save_CFLAGS} ${ffmpeg_CFLAGS}"
     LDFLAGS="${save_LDFLAGS} ${ffmpeg_LDFLAGS} -lm"
     echo $ac_n "checking for avcodec_init in -lavcodec""... $ac_c" 1>&6
-echo "configure:7020: checking for avcodec_init in -lavcodec" >&5
+echo "configure:7021: checking for avcodec_init in -lavcodec" >&5
 ac_lib_var=`echo avcodec'_'avcodec_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7024,7 +7025,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lavcodec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7028 "configure"
+#line 7029 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7035,7 +7036,7 @@ int main() {
 avcodec_init()
 ; return 0; }
 EOF
-if { (eval echo configure:7039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7093,7 +7094,7 @@ fi
   if test "x${with_faad_tree}" != "x"
   then
     echo $ac_n "checking for libfaad.a in ${with_faad_tree}""... $ac_c" 1>&6
-echo "configure:7097: checking for libfaad.a in ${with_faad_tree}" >&5
+echo "configure:7098: checking for libfaad.a in ${with_faad_tree}" >&5
     real_faad_tree="`cd ${with_faad_tree} 2>/dev/null && pwd`"
     if test "x${real_faad_tree}" = x
     then
@@ -7117,17 +7118,17 @@ echo "configure:7097: checking for libfaad.a in ${with_faad_tree}" >&5
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7121: checking for $ac_hdr" >&5
+echo "configure:7122: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7126 "configure"
+#line 7127 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7131: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7155,7 +7156,7 @@ fi
 done
 
     echo $ac_n "checking for faacDecOpen in -lfaad""... $ac_c" 1>&6
-echo "configure:7159: checking for faacDecOpen in -lfaad" >&5
+echo "configure:7160: checking for faacDecOpen in -lfaad" >&5
 ac_lib_var=`echo faad'_'faacDecOpen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7163,7 +7164,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lfaad  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7167 "configure"
+#line 7168 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7174,7 +7175,7 @@ int main() {
 faacDecOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:7178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7218,17 +7219,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7222: checking for $ac_hdr" >&5
+echo "configure:7223: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7227 "configure"
+#line 7228 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7232: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7233: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7285,7 +7286,7 @@ fi
       { echo "configure: error: ${with_a52_tree} directory doesn't exist" 1>&2; exit 1; }
     fi
         echo $ac_n "checking for a52.h in ${real_a52_tree}/include""... $ac_c" 1>&6
-echo "configure:7289: checking for a52.h in ${real_a52_tree}/include" >&5
+echo "configure:7290: checking for a52.h in ${real_a52_tree}/include" >&5
     if test -f ${real_a52_tree}/include/a52.h
     then
       echo "$ac_t""yes" 1>&6
@@ -7293,7 +7294,7 @@ echo "configure:7289: checking for a52.h in ${real_a52_tree}/include" >&5
       a52_LDFLAGS="${a52_LDFLAGS} -L${real_a52_tree}/liba52/.libs"
       LDFLAGS="${save_LDFLAGS} ${a52_LDFLAGS}"
       echo $ac_n "checking for a52_free in -la52""... $ac_c" 1>&6
-echo "configure:7297: checking for a52_free in -la52" >&5
+echo "configure:7298: checking for a52_free in -la52" >&5
 ac_lib_var=`echo a52'_'a52_free | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7301,7 +7302,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-la52 -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7305 "configure"
+#line 7306 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7312,7 +7313,7 @@ int main() {
 a52_free()
 ; return 0; }
 EOF
-if { (eval echo configure:7316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7328,7 +7329,7 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
-        BUILTINS="${BUILTINS} codec/a52/a52"
+        BUILTINS="${BUILTINS} codec/a52"
         a52_LDFLAGS="${a52_LDFLAGS} -la52 -lm"
         a52_CFLAGS="${a52_CFLAGS} -DUSE_A52DEC_TREE"
         
@@ -7366,17 +7367,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7370: checking for $ac_hdr" >&5
+echo "configure:7371: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7375 "configure"
+#line 7376 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7398,7 +7399,7 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
 EOF
  
       echo $ac_n "checking for a52_free in -la52""... $ac_c" 1>&6
-echo "configure:7402: checking for a52_free in -la52" >&5
+echo "configure:7403: checking for a52_free in -la52" >&5
 ac_lib_var=`echo a52'_'a52_free | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7406,7 +7407,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-la52 -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7410 "configure"
+#line 7411 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7417,7 +7418,7 @@ int main() {
 a52_free()
 ; return 0; }
 EOF
-if { (eval echo configure:7421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7433,7 +7434,7 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
-        BUILTINS="${BUILTINS} codec/a52/a52"
+        BUILTINS="${BUILTINS} codec/a52"
         a52_LDFLAGS="${a52_LDFLAGS} ${test_LDFLAGS} -la52 -lm"
         a52_CFLAGS="${a52_CFLAGS} ${test_CFLAGS}"
       
@@ -7481,17 +7482,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7485: checking for $ac_hdr" >&5
+echo "configure:7486: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7490 "configure"
+#line 7491 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7495: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7534,17 +7535,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7538: checking for $ac_hdr" >&5
+echo "configure:7539: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7543 "configure"
+#line 7544 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7549: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7596,17 +7597,17 @@ if test "x${enable_x11}" != "xno" &&
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7600: checking for $ac_hdr" >&5
+echo "configure:7601: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7605 "configure"
+#line 7606 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7610: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7611: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7652,17 +7653,17 @@ if test "x${enable_xvideo}" != "xno" &&
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7656: checking for $ac_hdr" >&5
+echo "configure:7657: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7661 "configure"
+#line 7662 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7666: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7685,7 +7686,7 @@ EOF
  
     CFLAGS="${save_CFLAGS} -L${x_libraries} -lX11 -lXext"
     echo $ac_n "checking for XvPutImage in -lXv_pic""... $ac_c" 1>&6
-echo "configure:7689: checking for XvPutImage in -lXv_pic" >&5
+echo "configure:7690: checking for XvPutImage in -lXv_pic" >&5
 ac_lib_var=`echo Xv_pic'_'XvPutImage | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7693,7 +7694,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXv_pic  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7697 "configure"
+#line 7698 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7704,7 +7705,7 @@ int main() {
 XvPutImage()
 ; return 0; }
 EOF
-if { (eval echo configure:7708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7726,7 +7727,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for XvPutImage in -lXv""... $ac_c" 1>&6
-echo "configure:7730: checking for XvPutImage in -lXv" >&5
+echo "configure:7731: checking for XvPutImage in -lXv" >&5
 ac_lib_var=`echo Xv'_'XvPutImage | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7734,7 +7735,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7738 "configure"
+#line 7739 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7745,7 +7746,7 @@ int main() {
 XvPutImage()
 ; return 0; }
 EOF
-if { (eval echo configure:7749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7805,7 +7806,7 @@ fi
   # Extract the first word of "sdl12-config", so it can be a program name with args.
 set dummy sdl12-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7809: checking for $ac_word" >&5
+echo "configure:7810: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SDL12_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7845,7 +7846,7 @@ fi
     # Extract the first word of "sdl11-config", so it can be a program name with args.
 set dummy sdl11-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7849: checking for $ac_word" >&5
+echo "configure:7850: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SDL11_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7886,7 +7887,7 @@ fi
     # Extract the first word of "sdl-config", so it can be a program name with args.
 set dummy sdl-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7890: checking for $ac_word" >&5
+echo "configure:7891: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_SDL_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7931,17 +7932,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7935: checking for $ac_hdr" >&5
+echo "configure:7936: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7940 "configure"
+#line 7941 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7946: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8011,17 +8012,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8015: checking for $ac_hdr" >&5
+echo "configure:8016: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8020 "configure"
+#line 8021 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8025: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8050,7 +8051,7 @@ done
 
     else
       echo $ac_n "checking for directX headers in ${with_directx}""... $ac_c" 1>&6
-echo "configure:8054: checking for directX headers in ${with_directx}" >&5
+echo "configure:8055: checking for directX headers in ${with_directx}" >&5
       if test -f ${with_directx}/ddraw.h
       then
         PLUGINS="${PLUGINS} video_output/directx/directx"
@@ -8077,17 +8078,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8081: checking for $ac_hdr" >&5
+echo "configure:8082: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8086 "configure"
+#line 8087 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8091: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8182,17 +8183,17 @@ if test "x${enable_aa}" = "xyes"
 then
   ac_safe=`echo "aalib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for aalib.h""... $ac_c" 1>&6
-echo "configure:8186: checking for aalib.h" >&5
+echo "configure:8187: checking for aalib.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8191 "configure"
+#line 8192 "configure"
 #include "confdefs.h"
 #include <aalib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8243,17 +8244,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8247: checking for $ac_hdr" >&5
+echo "configure:8248: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8252 "configure"
+#line 8253 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8276,7 +8277,7 @@ EOF
  
     PLUGINS="${PLUGINS} audio_output/oss"
     echo $ac_n "checking for main in -lossaudio""... $ac_c" 1>&6
-echo "configure:8280: checking for main in -lossaudio" >&5
+echo "configure:8281: checking for main in -lossaudio" >&5
 ac_lib_var=`echo ossaudio'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8284,14 +8285,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lossaudio  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8288 "configure"
+#line 8289 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:8295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8327,7 +8328,7 @@ if test "${enable_esd+set}" = set; then
      # Extract the first word of "esd-config", so it can be a program name with args.
 set dummy esd-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8331: checking for $ac_word" >&5
+echo "configure:8332: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_ESD_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8378,7 +8379,7 @@ if test "${enable_arts+set}" = set; then
      # Extract the first word of "artsc-config", so it can be a program name with args.
 set dummy artsc-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8382: checking for $ac_word" >&5
+echo "configure:8383: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_ARTS_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8428,17 +8429,17 @@ if test "${enable_alsa+set}" = set; then
    then
      ac_safe=`echo "alsa/asoundlib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for alsa/asoundlib.h""... $ac_c" 1>&6
-echo "configure:8432: checking for alsa/asoundlib.h" >&5
+echo "configure:8433: checking for alsa/asoundlib.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8437 "configure"
+#line 8438 "configure"
 #include "confdefs.h"
 #include <alsa/asoundlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8443: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8455,7 +8456,7 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for main in -lasound""... $ac_c" 1>&6
-echo "configure:8459: checking for main in -lasound" >&5
+echo "configure:8460: checking for main in -lasound" >&5
 ac_lib_var=`echo asound'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8463,14 +8464,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lasound  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8467 "configure"
+#line 8468 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:8474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8552,7 +8553,7 @@ fi
   # Extract the first word of "gtk12-config", so it can be a program name with args.
 set dummy gtk12-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8556: checking for $ac_word" >&5
+echo "configure:8557: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GTK12_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8591,7 +8592,7 @@ fi
     # Extract the first word of "gtk-config", so it can be a program name with args.
 set dummy gtk-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8595: checking for $ac_word" >&5
+echo "configure:8596: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8640,17 +8641,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8644: checking for $ac_hdr" >&5
+echo "configure:8645: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8649 "configure"
+#line 8650 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8710,7 +8711,7 @@ fi
   # Extract the first word of "gtk12-config", so it can be a program name with args.
 set dummy gtk12-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8714: checking for $ac_word" >&5
+echo "configure:8715: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GTK12_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8749,7 +8750,7 @@ fi
     # Extract the first word of "gtk-config", so it can be a program name with args.
 set dummy gtk-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8753: checking for $ac_word" >&5
+echo "configure:8754: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8798,17 +8799,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8802: checking for $ac_hdr" >&5
+echo "configure:8803: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8807 "configure"
+#line 8808 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8853,7 +8854,7 @@ if test "${enable_gnome+set}" = set; then
     # Extract the first word of "gnome-config", so it can be a program name with args.
 set dummy gnome-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8857: checking for $ac_word" >&5
+echo "configure:8858: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GNOME_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8897,17 +8898,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8901: checking for $ac_hdr" >&5
+echo "configure:8902: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8906 "configure"
+#line 8907 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8911: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8912: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9012,17 +9013,17 @@ else
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9016: checking for $ac_hdr" >&5
+echo "configure:9017: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9021 "configure"
+#line 9022 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9065,17 +9066,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9069: checking for $ac_hdr" >&5
+echo "configure:9070: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9074 "configure"
+#line 9075 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9146,17 +9147,17 @@ if test "x${enable_xosd}" = "xyes"
 then
   ac_safe=`echo "xosd.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for xosd.h""... $ac_c" 1>&6
-echo "configure:9150: checking for xosd.h" >&5
+echo "configure:9151: checking for xosd.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9155 "configure"
+#line 9156 "configure"
 #include "confdefs.h"
 #include <xosd.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9160: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9161: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9195,17 +9196,17 @@ if test "x${enable_lirc}" = "xyes"
 then
   ac_safe=`echo "lirc/lirc_client.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for lirc/lirc_client.h""... $ac_c" 1>&6
-echo "configure:9199: checking for lirc/lirc_client.h" >&5
+echo "configure:9200: checking for lirc/lirc_client.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9204 "configure"
+#line 9205 "configure"
 #include "confdefs.h"
 #include <lirc/lirc_client.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9222,7 +9223,7 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for lirc_init in -llirc_client""... $ac_c" 1>&6
-echo "configure:9226: checking for lirc_init in -llirc_client" >&5
+echo "configure:9227: checking for lirc_init in -llirc_client" >&5
 ac_lib_var=`echo lirc_client'_'lirc_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9230,7 +9231,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-llirc_client  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9234 "configure"
+#line 9235 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9241,7 +9242,7 @@ int main() {
 lirc_init()
 ; return 0; }
 EOF
-if { (eval echo configure:9245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9296,7 +9297,7 @@ fi
       ;;
     *)
                   echo $ac_n "checking whether the byte order is big-endian""... $ac_c" 1>&6
-echo "configure:9300: checking whether the byte order is big-endian" >&5
+echo "configure:9301: checking whether the byte order is big-endian" >&5
 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9378,7 +9379,7 @@ if test "${enable_pth+set}" = set; then
   enableval="$enable_pth"
    if test "x${enable_pth}" = "xyes"; then
     echo $ac_n "checking for pth_init in -lpth""... $ac_c" 1>&6
-echo "configure:9382: checking for pth_init in -lpth" >&5
+echo "configure:9383: checking for pth_init in -lpth" >&5
 ac_lib_var=`echo pth'_'pth_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9386,7 +9387,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpth  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9390 "configure"
+#line 9391 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9397,7 +9398,7 @@ int main() {
 pth_init()
 ; return 0; }
 EOF
-if { (eval echo configure:9401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9425,7 +9426,7 @@ else
 fi
 
     cat > conftest.$ac_ext <<EOF
-#line 9429 "configure"
+#line 9430 "configure"
 #include "confdefs.h"
 #include <pth.h>
 EOF
@@ -9451,7 +9452,7 @@ if test "${enable_st+set}" = set; then
   enableval="$enable_st"
    if test "x${enable_st}" = "xyes"; then
     echo $ac_n "checking for st_init in -lst""... $ac_c" 1>&6
-echo "configure:9455: checking for st_init in -lst" >&5
+echo "configure:9456: checking for st_init in -lst" >&5
 ac_lib_var=`echo st'_'st_init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9459,7 +9460,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lst  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9463 "configure"
+#line 9464 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9470,7 +9471,7 @@ int main() {
 st_init()
 ; return 0; }
 EOF
-if { (eval echo configure:9474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9498,7 +9499,7 @@ else
 fi
 
     cat > conftest.$ac_ext <<EOF
-#line 9502 "configure"
+#line 9503 "configure"
 #include "confdefs.h"
 #include <st.h>
 EOF
@@ -9534,7 +9535,7 @@ then
   # Extract the first word of "mozilla-config", so it can be a program name with args.
 set dummy mozilla-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9538: checking for $ac_word" >&5
+echo "configure:9539: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MOZILLA_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9572,7 +9573,7 @@ fi
     if test "x${SYS}" != "xmingw32"; then
       LDFLAGS="${save_LDFLAGS} -L${x_libraries}"
       echo $ac_n "checking for XtStrings in -lXt""... $ac_c" 1>&6
-echo "configure:9576: checking for XtStrings in -lXt" >&5
+echo "configure:9577: checking for XtStrings in -lXt" >&5
 ac_lib_var=`echo Xt'_'XtStrings | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9580,7 +9581,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9584 "configure"
+#line 9585 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9591,7 +9592,7 @@ int main() {
 XtStrings()
 ; return 0; }
 EOF
-if { (eval echo configure:9595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
index fcc11b0d52690fd86f4aa961a46426e667a63d3b..79483a4341d85b388c34de42b1f82e6ecd4f9c6a 100644 (file)
@@ -442,7 +442,8 @@ PLUGINS="${PLUGINS} misc/dummy/dummy misc/null/null"
 PLUGINS="${PLUGINS} control/rc/rc misc/logger/logger access/file access/udp access/http misc/network/ipv4 misc/memcpy/memcpy"
 PLUGINS="${PLUGINS} demux/mpeg/es demux/mpeg/audio demux/mpeg/mpeg_system demux/mpeg/ps demux/mpeg/ts"
 PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec"
-#PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/mpeg_audio/mpeg_audio codec/a52old/a52old codec/lpcm/lpcm codec/spdif/spdif"
+PLUGINS="${PLUGINS} codec/spdif"
+#PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/mpeg_audio/mpeg_audio codec/a52old/a52old codec/lpcm/lpcm"
 PLUGINS="${PLUGINS} video_filter/deinterlace/deinterlace video_filter/invert video_filter/wall video_filter/transform video_filter/distort video_filter/clone video_filter/crop"
 PLUGINS="${PLUGINS} audio_filter/converter/float32tos16"
 PLUGINS="${PLUGINS} audio_filter/resampler/trivial"
@@ -1155,7 +1156,7 @@ then
       a52_LDFLAGS="${a52_LDFLAGS} -L${real_a52_tree}/liba52/.libs"
       LDFLAGS="${save_LDFLAGS} ${a52_LDFLAGS}"
       AC_CHECK_LIB(a52, a52_free, [
-        BUILTINS="${BUILTINS} codec/a52/a52"
+        BUILTINS="${BUILTINS} codec/a52"
         a52_LDFLAGS="${a52_LDFLAGS} -la52 -lm"
         a52_CFLAGS="${a52_CFLAGS} -DUSE_A52DEC_TREE"
         ],[
@@ -1186,7 +1187,7 @@ then
     LDFLAGS="${save_LDFLAGS} ${test_LDFLAGS}"
     AC_CHECK_HEADERS(a52dec/a52.h, [
       AC_CHECK_LIB(a52, a52_free, [
-        BUILTINS="${BUILTINS} codec/a52/a52"
+        BUILTINS="${BUILTINS} codec/a52"
         a52_LDFLAGS="${a52_LDFLAGS} ${test_LDFLAGS} -la52 -lm"
         a52_CFLAGS="${a52_CFLAGS} ${test_CFLAGS}"
       ],[
index 471dccde40117db75a836f455447701c978d8112..9cf4bfa9f7fb00ed9baf8d8c54649d86de27e77b 100644 (file)
 #define VOLUME_MAX                      1024
 #define VOLUME_MIN                      0
 
-/* Max number of pre-filters per input, and max-number of post-filters */
+/* Max number of pre-filters per input, and max number of post-filters */
 #define AOUT_MAX_FILTERS                10
 
 /* Max number of inputs */
 #define AOUT_MAX_INPUTS                 5
 
+/* Buffers which arrive in advance of more than AOUT_MAX_PREPARE_TIME
+ * will cause the calling thread to sleep */
+#define AOUT_MAX_PREPARE_TIME           (mtime_t)(.5*CLOCK_FREQ)
+
 /*****************************************************************************
  * Video configuration
  *****************************************************************************/
index bd1931c13c033c6ebe2b5a2575d5c455839c6e5f..25e28cbb007161daee5bcfa0d7d699e39f4e46cb 100644 (file)
@@ -2,7 +2,7 @@
  * oss.c : OSS /dev/dsp module for vlc
  *****************************************************************************
  * Copyright (C) 2000-2002 VideoLAN
- * $Id: oss.c,v 1.4 2002/08/09 23:47:23 massiot Exp $
+ * $Id: oss.c,v 1.5 2002/08/11 01:27:01 massiot Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -293,39 +293,44 @@ static int OSSThread( aout_instance_t * p_aout )
         int i_bytes_per_sample;
         aout_buffer_t * p_buffer;
         mtime_t next_date;
-        int i_tmp;
+        int i_tmp, i_size;
         byte_t * p_bytes;
 
-        /* Get the presentation date of the next write() operation. It
-         * is equal to the current date + duration of buffered samples.
-         * Order is important here, since GetBufInfo is believed to take
-         * more time than mdate(). */
         if( !p_sys->b_initialized )
         {
             msleep( THREAD_SLEEP );
             continue;
         }
 
-        i_bytes_per_sample = aout_FormatToSize( &p_aout->output.output, 1 );
-        next_date = (mtime_t)GetBufInfo( p_aout ) * 1000000
-                      / i_bytes_per_sample
-                      / p_aout->output.output.i_rate;
-        next_date += mdate();
+        if ( p_aout->output.output.i_format != AOUT_FMT_SPDIF )
+        {
+            /* Get the presentation date of the next write() operation. It
+             * is equal to the current date + duration of buffered samples.
+             * Order is important here, since GetBufInfo is believed to take
+             * more time than mdate(). */
+            next_date = (mtime_t)GetBufInfo( p_aout ) * 1000000
+                      / aout_FormatToByterate( &p_aout->output.output,
+                                               p_aout->output.output.i_rate );
+            next_date += mdate();
+        }
 
         p_buffer = aout_OutputNextBuffer( p_aout, next_date );
 
         if ( p_buffer != NULL )
         {
             p_bytes = p_buffer->p_buffer;
+            i_size = aout_FormatToSize( &p_aout->output.output,
+                                        p_buffer->i_nb_samples );
         }
         else
         {
-            p_bytes = alloca( DEFAULT_FRAME_SIZE * i_bytes_per_sample );
-            memset( p_bytes, 0, DEFAULT_FRAME_SIZE * i_bytes_per_sample );
+            i_size = aout_FormatToSize( &p_aout->output.output,
+                                        DEFAULT_FRAME_SIZE );
+            p_bytes = alloca( i_size );
+            memset( p_bytes, 0, i_size );
         }
 
-        i_tmp = write( p_sys->i_fd, p_bytes,
-                       DEFAULT_FRAME_SIZE * i_bytes_per_sample );
+        i_tmp = write( p_sys->i_fd, p_bytes, i_size );
 
         if( i_tmp < 0 )
         {
similarity index 54%
rename from modules/codec/spdif/Makefile
rename to modules/codec/Makefile
index d5706048c45ca0cd23c51cda6d75f8f98f5ec521..3215fb5278cd61679928cc42b4a1e9bd6692c2d6 100644 (file)
@@ -1 +1,2 @@
+a52_SOURCES = a52.c
 spdif_SOURCES = spdif.c
similarity index 62%
rename from modules/codec/a52/a52.c
rename to modules/codec/a52.c
index d23c459ae3cdbea716c2b9cb6bae7726caf4e5d4..9ec4ccf25e9482940cbf9abfbf8d10f0328220d2 100644 (file)
@@ -4,7 +4,7 @@
  *   (http://liba52.sf.net/).
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: a52.c,v 1.2 2002/08/07 21:36:56 massiot Exp $
+ * $Id: a52.c,v 1.1 2002/08/11 01:27:01 massiot Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *          Christophe Massiot <massiot@via.ecp.fr>
 #   include "a52dec/a52.h"
 #endif
 
-#include "a52.h"
-
-#define A52DEC_FRAME_SIZE 1536 
+#define A52_FRAME_SIZE 1536 
 
+/*****************************************************************************
+ * a52_thread_t : a52 decoder thread descriptor
+ *****************************************************************************/
+typedef struct a52_thread_s
+{
+    /*
+     * liba52 properties
+     */
+    a52_state_t *       p_a52_state;
+    vlc_bool_t          b_dynrng;
+
+    /* The bit stream structure handles the PES stream at the bit level */
+    bit_stream_t        bit_stream;
+
+    /*
+     * Input properties
+     */
+    decoder_fifo_t *    p_fifo;                /* stores the PES stream data */
+    data_packet_t *     p_data;
+
+    /*
+     * Output properties
+     */
+    aout_instance_t *   p_aout; /* opaque */
+    aout_input_t *      p_aout_input; /* opaque */
+    audio_sample_format_t output_format;
+    mtime_t             last_date;
+} a52_thread_t;
 
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
 static int  OpenDecoder    ( vlc_object_t * );
 static int  RunDecoder     ( decoder_fifo_t * );
-static int  DecodeFrame    ( a52_thread_t *, u8 * );
+static int  DecodeFrame    ( a52_thread_t *, const byte_t * );
 static int  InitThread     ( a52_thread_t *, decoder_fifo_t * );
 static void EndThread      ( a52_thread_t * );
 
@@ -102,44 +128,44 @@ static int OpenDecoder( vlc_object_t *p_this )
  *****************************************************************************/
 static int RunDecoder( decoder_fifo_t *p_fifo )
 {
-    a52_thread_t *p_a52;
+    a52_thread_t *p_dec;
 
     /* Allocate the memory needed to store the thread's structure */
-    p_a52 = (a52_thread_t *)malloc( sizeof(a52_thread_t) );
-    if( p_a52 == NULL )
+    p_dec = (a52_thread_t *)malloc( sizeof(a52_thread_t) );
+    if( p_dec == NULL )
     {
         msg_Err( p_fifo, "out of memory" );
         DecoderError( p_fifo );
         return -1;
     }
 
-    if( InitThread( p_a52, p_fifo ) )
+    if( InitThread( p_dec, p_fifo ) )
     {
-        msg_Err( p_a52->p_fifo, "could not initialize thread" );
+        msg_Err( p_dec->p_fifo, "could not initialize thread" );
         DecoderError( p_fifo );
-        free( p_a52 );
+        free( p_dec );
         return -1;
     }
 
     /* liba52 decoder thread's main loop */
-    while( !p_a52->p_fifo->b_die && !p_a52->p_fifo->b_error )
+    while( !p_dec->p_fifo->b_die && !p_dec->p_fifo->b_error )
     {
         int i_frame_size, i_flags, i_rate, i_bit_rate;
         mtime_t pts;
         /* Temporary buffer to store the raw frame to be decoded */
-        u8  p_frame_buffer[3840];
+        byte_t p_frame_buffer[3840];
 
         /* Look for sync word - should be 0x0b77 */
-        RealignBits(&p_a52->bit_stream);
-        while( (ShowBits( &p_a52->bit_stream, 16 ) ) != 0x0b77 && 
-               (!p_a52->p_fifo->b_die) && (!p_a52->p_fifo->b_error))
+        RealignBits( &p_dec->bit_stream );
+        while( (ShowBits( &p_dec->bit_stream, 16 ) ) != 0x0b77 && 
+               (!p_dec->p_fifo->b_die) && (!p_dec->p_fifo->b_error))
         {
-            RemoveBits( &p_a52->bit_stream, 8 );
+            RemoveBits( &p_dec->bit_stream, 8 );
         }
 
         /* Get A/52 frame header */
-        GetChunk( &p_a52->bit_stream, p_frame_buffer, 7 );
-        if( p_a52->p_fifo->b_die ) break;
+        GetChunk( &p_dec->bit_stream, p_frame_buffer, 7 );
+        if( p_dec->p_fifo->b_die ) break;
 
         /* Check if frame is valid and get frame info */
         i_frame_size = a52_syncinfo( p_frame_buffer, &i_flags, &i_rate,
@@ -147,62 +173,62 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
 
         if( !i_frame_size )
         {
-            msg_Warn( p_a52->p_fifo, "a52_syncinfo failed" );
+            msg_Warn( p_dec->p_fifo, "a52_syncinfo failed" );
             continue;
         }
 
-        if( (p_a52->p_aout_input != NULL) &&
-            ( (p_a52->output_format.i_rate != i_rate)
-               /* || (p_a52->output_format.i_channels != i_channels) */ ) )
+        if( (p_dec->p_aout_input != NULL) &&
+            ( (p_dec->output_format.i_rate != i_rate)
+               /* || (p_dec->output_format.i_channels != i_channels) */ ) )
         {
             /* Parameters changed - this should not happen. */
-            aout_InputDelete( p_a52->p_aout, p_a52->p_aout_input );
-            p_a52->p_aout_input = NULL;
+            aout_InputDelete( p_dec->p_aout, p_dec->p_aout_input );
+            p_dec->p_aout_input = NULL;
         }
 
         /* Creating the audio input if not created yet. */
-        if( p_a52->p_aout_input == NULL )
+        if( p_dec->p_aout_input == NULL )
         {
-            p_a52->output_format.i_rate = i_rate;
-            /* p_a52->output_format.i_channels = i_channels; */
-            p_a52->p_aout_input = aout_InputNew( p_a52->p_fifo,
-                                                 &p_a52->p_aout,
-                                                 &p_a52->output_format );
+            p_dec->output_format.i_rate = i_rate;
+            /* p_dec->output_format.i_channels = i_channels; */
+            p_dec->p_aout_input = aout_InputNew( p_dec->p_fifo,
+                                                 &p_dec->p_aout,
+                                                 &p_dec->output_format );
 
-            if ( p_a52->p_aout_input == NULL )
+            if ( p_dec->p_aout_input == NULL )
             {
-                p_a52->p_fifo->b_error = 1;
+                p_dec->p_fifo->b_error = 1;
                 break;
             }
         }
 
         /* Set the Presentation Time Stamp */
-        CurrentPTS( &p_a52->bit_stream, &pts, NULL );
+        CurrentPTS( &p_dec->bit_stream, &pts, NULL );
         if ( pts != 0 )
         {
-            p_a52->last_date = pts;
+            p_dec->last_date = pts;
         }
 
         /* Get the complete frame */
-        GetChunk( &p_a52->bit_stream, p_frame_buffer + 7,
+        GetChunk( &p_dec->bit_stream, p_frame_buffer + 7,
                   i_frame_size - 7 );
-        if( p_a52->p_fifo->b_die ) break;
+        if( p_dec->p_fifo->b_die ) break;
 
-        if( DecodeFrame( p_a52, p_frame_buffer ) )
+        if( DecodeFrame( p_dec, p_frame_buffer ) )
         {
-            p_a52->p_fifo->b_error = 1;
+            p_dec->p_fifo->b_error = 1;
             break;
         }
     }
 
     /* If b_error is set, the decoder thread enters the error loop */
-    if( p_a52->p_fifo->b_error )
+    if( p_dec->p_fifo->b_error )
     {
-        DecoderError( p_a52->p_fifo );
+        DecoderError( p_dec->p_fifo );
     }
 
-    /* End of the liba52 decoder thread */
-    EndThread( p_a52 );
+    /* End of the a52 decoder thread */
+    EndThread( p_dec );
 
     return 0;
 }
@@ -210,28 +236,28 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
 /*****************************************************************************
  * InitThread: initialize data before entering main loop
  *****************************************************************************/
-static int InitThread( a52_thread_t * p_a52, decoder_fifo_t * p_fifo )
+static int InitThread( a52_thread_t * p_dec, decoder_fifo_t * p_fifo )
 {
     /* Initialize the thread properties */
-    p_a52->p_aout = NULL;
-    p_a52->p_aout_input = NULL;
-    p_a52->p_fifo = p_fifo;
-    p_a52->output_format.i_format = AOUT_FMT_FLOAT32;
-    p_a52->output_format.i_channels = 2; /* FIXME ! */
-    p_a52->last_date = 0;
+    p_dec->p_aout = NULL;
+    p_dec->p_aout_input = NULL;
+    p_dec->p_fifo = p_fifo;
+    p_dec->output_format.i_format = AOUT_FMT_FLOAT32;
+    p_dec->output_format.i_channels = 2; /* FIXME ! */
+    p_dec->last_date = 0;
 
     /* Initialize liba52 */
-    p_a52->p_a52_state = a52_init( 0 );
-    if( p_a52->p_a52_state == NULL )
+    p_dec->p_a52_state = a52_init( 0 );
+    if( p_dec->p_a52_state == NULL )
     {
-        msg_Err( p_a52->p_fifo, "unable to initialize liba52" );
+        msg_Err( p_dec->p_fifo, "unable to initialize liba52" );
         return -1;
     }
 
-    p_a52->b_dynrng = config_GetInt( p_a52->p_fifo, "a52-dynrng" );
+    p_dec->b_dynrng = config_GetInt( p_dec->p_fifo, "a52-dynrng" );
 
-    /* Init the BitStream */
-    InitBitstream( &p_a52->bit_stream, p_a52->p_fifo,
+    /* Init the Bitstream */
+    InitBitstream( &p_dec->bit_stream, p_dec->p_fifo,
                    NULL, NULL );
 
     return 0;
@@ -240,7 +266,7 @@ static int InitThread( a52_thread_t * p_a52, decoder_fifo_t * p_fifo )
 /*****************************************************************************
  * Interleave: helper function to interleave channels
  *****************************************************************************/
-static void Interleave( float * p_out, float * p_in, int i_channels )
+static void Interleave( float * p_out, const float * p_in, int i_channels )
 {
     int i, j;
 
@@ -256,57 +282,57 @@ static void Interleave( float * p_out, float * p_in, int i_channels )
 /*****************************************************************************
  * DecodeFrame: decode an ATSC A/52 frame.
  *****************************************************************************/
-static int DecodeFrame( a52_thread_t * p_a52, u8 * p_frame_buffer )
+static int DecodeFrame( a52_thread_t * p_dec, const byte_t * p_frame_buffer )
 {
     sample_t        i_sample_level = 1;
     aout_buffer_t * p_buffer;
     int             i, i_flags;
-    int             i_bytes_per_block = 256 * p_a52->output_format.i_channels
+    int             i_bytes_per_block = 256 * p_dec->output_format.i_channels
                       * sizeof(float);
 
-    if( !p_a52->last_date )
+    if( !p_dec->last_date )
     {
         /* We've just started the stream, wait for the first PTS. */
         return 0;
     }
 
-    p_buffer = aout_BufferNew( p_a52->p_aout, p_a52->p_aout_input,
-                               A52DEC_FRAME_SIZE );
+    p_buffer = aout_BufferNew( p_dec->p_aout, p_dec->p_aout_input,
+                               A52_FRAME_SIZE );
     if ( p_buffer == NULL ) return -1;
-    p_buffer->start_date = p_a52->last_date;
-    p_a52->last_date += (mtime_t)(A52DEC_FRAME_SIZE * 1000000)
-                          / p_a52->output_format.i_rate;
-    p_buffer->end_date = p_a52->last_date;
+    p_buffer->start_date = p_dec->last_date;
+    p_dec->last_date += (mtime_t)(A52_FRAME_SIZE * 1000000)
+                          / p_dec->output_format.i_rate;
+    p_buffer->end_date = p_dec->last_date;
 
     /* FIXME */
     i_flags = A52_STEREO | A52_ADJUST_LEVEL;
 
     /* Do the actual decoding now */
-    a52_frame( p_a52->p_a52_state, p_frame_buffer,
+    a52_frame( p_dec->p_a52_state, p_frame_buffer,
                &i_flags, &i_sample_level, 0 );
 
-    if( !p_a52->b_dynrng )
+    if( !p_dec->b_dynrng )
     {
-        a52_dynrng( p_a52->p_a52_state, NULL, NULL );
+        a52_dynrng( p_dec->p_a52_state, NULL, NULL );
     }
 
     for ( i = 0; i < 6; i++ )
     {
         sample_t * p_samples;
 
-        if( a52_block( p_a52->p_a52_state ) )
+        if( a52_block( p_dec->p_a52_state ) )
         {
-            msg_Warn( p_a52->p_fifo, "a52_block failed for block %i", i );
+            msg_Warn( p_dec->p_fifo, "a52_block failed for block %i", i );
         }
 
-        p_samples = a52_samples( p_a52->p_a52_state );
+        p_samples = a52_samples( p_dec->p_a52_state );
 
         /* Interleave the *$£%ù samples */
         Interleave( (float *)(p_buffer->p_buffer + i * i_bytes_per_block),
-                    p_samples, p_a52->output_format.i_channels );
+                    p_samples, p_dec->output_format.i_channels );
     }
 
-    aout_BufferPlay( p_a52->p_aout, p_a52->p_aout_input, p_buffer );
+    aout_BufferPlay( p_dec->p_aout, p_dec->p_aout_input, p_buffer );
 
     return 0;
 }
@@ -314,14 +340,14 @@ static int DecodeFrame( a52_thread_t * p_a52, u8 * p_frame_buffer )
 /*****************************************************************************
  * EndThread : liba52 decoder thread destruction
  *****************************************************************************/
-static void EndThread (a52_thread_t *p_a52)
+static void EndThread( a52_thread_t * p_dec )
 {
-    if ( p_a52->p_aout_input != NULL )
+    if ( p_dec->p_aout_input != NULL )
     {
-        aout_InputDelete( p_a52->p_aout, p_a52->p_aout_input );
+        aout_InputDelete( p_dec->p_aout, p_dec->p_aout_input );
     }
 
-    a52_free( p_a52->p_a52_state );
-    free( p_a52 );
+    a52_free( p_dec->p_a52_state );
+    free( p_dec );
 }
 
diff --git a/modules/codec/a52/Makefile b/modules/codec/a52/Makefile
deleted file mode 100644 (file)
index ba23988..0000000
+++ /dev/null
@@ -1 +0,0 @@
-a52_SOURCES = a52.c
diff --git a/modules/codec/a52/a52.h b/modules/codec/a52/a52.h
deleted file mode 100644 (file)
index 2c5934b..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*****************************************************************************
- * a52.h: ATSC A/52 aka AC-3 decoder plugin for vlc.
- *   This plugin makes use of liba52 to decode A/52 audio
- *   (http://liba52.sf.net/).
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: a52.h,v 1.2 2002/08/07 21:36:56 massiot Exp $
- *
- * Authors: Gildas Bazin <gbazin@netcourrier.com>
- *      
- * 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, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * a52_thread_t : a52 decoder thread descriptor
- *****************************************************************************/
-typedef struct a52_thread_s
-{
-    /*
-     * liba52 properties
-     */
-    a52_state_t *       p_a52_state;
-    vlc_bool_t          b_dynrng;
-
-    /* The bit stream structure handles the PES stream at the bit level */
-    bit_stream_t        bit_stream;
-
-    /*
-     * Input properties
-     */
-    decoder_fifo_t *    p_fifo;                /* stores the PES stream data */
-    data_packet_t *     p_data;
-
-    /*
-     * Output properties
-     */
-    aout_instance_t *   p_aout; /* opaque */
-    aout_input_t *      p_aout_input; /* opaque */
-    audio_sample_format_t output_format;
-    mtime_t             last_date;
-} a52_thread_t;
diff --git a/modules/codec/spdif.c b/modules/codec/spdif.c
new file mode 100644 (file)
index 0000000..dfca88d
--- /dev/null
@@ -0,0 +1,382 @@
+/*****************************************************************************
+ * spdif.c: A52 pass-through to external decoder with enabled soundcard
+ *****************************************************************************
+ * Copyright (C) 2001-2002 VideoLAN
+ * $Id: spdif.c,v 1.1 2002/08/11 01:27:01 massiot Exp $
+ *
+ * Authors: Stéphane Borel <stef@via.ecp.fr>
+ *          Juha Yrjola <jyrjola@cc.hut.fi>
+ *          German Gomez Garcia <german@piraos.com>
+ *          Christophe Massiot <massiot@via.ecp.fr>
+ *
+ * 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, USA.
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>                                              /* memcpy() */
+#include <fcntl.h>
+
+#include <vlc/vlc.h>
+#include <vlc/decoder.h>
+#include <vlc/aout.h>
+
+#ifdef HAVE_UNISTD_H
+#   include <unistd.h>
+#endif
+
+#define A52_FRAME_SIZE 1536 
+
+/*****************************************************************************
+ * spdif_thread_t : A52 pass-through thread descriptor
+ *****************************************************************************/
+typedef struct spdif_thread_s
+{
+    /*
+     * Thread properties
+     */
+    vlc_thread_t        thread_id;                /* id for thread functions */
+
+    /*
+     * Input properties
+     */
+    decoder_fifo_t *    p_fifo;                /* stores the PES stream data */
+
+    /* The bit stream structure handles the PES stream at the bit level */
+    bit_stream_t        bit_stream;
+
+    /*
+     * Output properties
+     */
+    aout_instance_t *   p_aout; /* opaque */
+    aout_input_t *      p_aout_input; /* opaque */
+    audio_sample_format_t output_format;
+} spdif_thread_t;
+
+/****************************************************************************
+ * Local prototypes
+ ****************************************************************************/
+static int  OpenDecoder    ( vlc_object_t * );
+static int  RunDecoder     ( decoder_fifo_t * );
+
+static int  InitThread     ( spdif_thread_t *, decoder_fifo_t * );
+static void EndThread      ( spdif_thread_t * );
+
+int         SyncInfo       ( const byte_t *, int *, int *, int * );
+
+/*****************************************************************************
+ * Module descriptor
+ *****************************************************************************/
+vlc_module_begin();
+    set_description( _("SPDIF pass-through A52 decoder") );
+    set_capability( "decoder", 0 );
+    set_callbacks( OpenDecoder, NULL );
+    add_shortcut( "pass_through" );
+    add_shortcut( "pass" );
+vlc_module_end();
+
+/*****************************************************************************
+ * OpenDecoder: probe the decoder and return score
+ *****************************************************************************
+ * Tries to launch a decoder and return score so that the interface is able 
+ * to chose.
+ *****************************************************************************/
+static int OpenDecoder( vlc_object_t *p_this ) 
+{   
+    decoder_fifo_t *p_fifo = (decoder_fifo_t*) p_this;
+
+    if( p_fifo->i_fourcc != VLC_FOURCC('a','5','2',' ') )
+    {   
+        return VLC_EGENERIC; 
+    }
+
+    p_fifo->pf_run = RunDecoder;
+    return VLC_SUCCESS;
+}
+
+/****************************************************************************
+ * RunDecoder: the whole thing
+ ****************************************************************************
+ * This function is called just after the thread is launched.
+ ****************************************************************************/
+static int RunDecoder( decoder_fifo_t *p_fifo )
+{
+    spdif_thread_t * p_dec;
+    mtime_t last_date = 0;
+    
+    /* Allocate the memory needed to store the thread's structure */
+    p_dec = malloc( sizeof(spdif_thread_t) );
+    if( p_dec == NULL )
+    {
+        msg_Err( p_fifo, "out of memory" );
+        DecoderError( p_fifo );
+        return -1;
+    }
+  
+    if ( InitThread( p_dec, p_fifo ) )
+    {
+        
+        msg_Err( p_fifo, "could not initialize thread" );
+        DecoderError( p_fifo );
+        free( p_dec );
+        return -1;
+    }
+
+    /* liba52 decoder thread's main loop */
+    while( !p_dec->p_fifo->b_die && !p_dec->p_fifo->b_error )
+    {
+        int i_frame_size, i_flags, i_rate, i_bit_rate;
+        mtime_t pts;
+        /* Temporary buffer to store the raw frame to be decoded */
+        byte_t p_header[7];
+        aout_buffer_t * p_buffer;
+
+        /* Look for sync word - should be 0x0b77 */
+        RealignBits( &p_dec->bit_stream );
+        while( (ShowBits( &p_dec->bit_stream, 16 ) ) != 0x0b77 && 
+               (!p_dec->p_fifo->b_die) && (!p_dec->p_fifo->b_error))
+        {
+            RemoveBits( &p_dec->bit_stream, 8 );
+        }
+
+        /* Get A/52 frame header */
+        GetChunk( &p_dec->bit_stream, p_header, 7 );
+        if( p_dec->p_fifo->b_die ) break;
+
+        /* Check if frame is valid and get frame info */
+        i_frame_size = SyncInfo( p_header, &i_flags, &i_rate,
+                                 &i_bit_rate );
+
+        if( !i_frame_size )
+        {
+            msg_Warn( p_dec->p_fifo, "a52_syncinfo failed" );
+            continue;
+        }
+
+        if( (p_dec->p_aout_input != NULL) &&
+            ( (p_dec->output_format.i_rate != i_rate) ) )
+        {
+            /* Parameters changed - this should not happen. */
+            aout_InputDelete( p_dec->p_aout, p_dec->p_aout_input );
+            p_dec->p_aout_input = NULL;
+        }
+
+        /* Creating the audio input if not created yet. */
+        if( p_dec->p_aout_input == NULL )
+        {
+            p_dec->output_format.i_rate = i_rate;
+            /* p_dec->output_format.i_channels = i_channels; */
+            p_dec->p_aout_input = aout_InputNew( p_dec->p_fifo,
+                                                 &p_dec->p_aout,
+                                                 &p_dec->output_format );
+
+            if ( p_dec->p_aout_input == NULL )
+            {
+                p_dec->p_fifo->b_error = 1;
+                break;
+            }
+        }
+
+        /* Set the Presentation Time Stamp */
+        CurrentPTS( &p_dec->bit_stream, &pts, NULL );
+        if ( pts != 0 )
+        {
+            last_date = pts;
+        }
+
+        if ( !last_date )
+        {
+            byte_t p_junk[3840];
+
+            /* We've just started the stream, wait for the first PTS. */
+            GetChunk( &p_dec->bit_stream, p_junk, i_frame_size - 7 );
+            continue;
+        }
+
+        p_buffer = aout_BufferNew( p_dec->p_aout, p_dec->p_aout_input, 1 );
+        if ( p_buffer == NULL ) return -1;
+        p_buffer->start_date = last_date;
+        last_date += (mtime_t)(A52_FRAME_SIZE * 1000000)
+                       / p_dec->output_format.i_rate;
+        p_buffer->end_date = last_date;
+
+        /* Get the whole frame. */
+        memcpy( p_buffer->p_buffer, p_header, 7 );
+        GetChunk( &p_dec->bit_stream, p_buffer->p_buffer + 7,
+                  i_frame_size - 7 );
+        if( p_dec->p_fifo->b_die ) break;
+
+        /* Send the buffer to the mixer. */
+        aout_BufferPlay( p_dec->p_aout, p_dec->p_aout_input, p_buffer );
+    }
+
+    /* If b_error is set, the spdif thread enters the error loop */
+    if( p_dec->p_fifo->b_error )
+    {
+        DecoderError( p_dec->p_fifo );
+    }
+
+    /* End of the spdif decoder thread */
+    EndThread( p_dec );
+    
+    return 0;
+}
+
+/****************************************************************************
+ * InitThread: initialize thread data and create output fifo
+ ****************************************************************************/
+static int InitThread( spdif_thread_t * p_dec, decoder_fifo_t * p_fifo )
+{
+    /* Initialize the thread properties */
+    p_dec->p_aout = NULL;
+    p_dec->p_aout_input = NULL;
+    p_dec->p_fifo = p_fifo;
+    p_dec->output_format.i_format = AOUT_FMT_A52;
+    p_dec->output_format.i_channels = -1;
+
+    /* Init the Bitstream */
+    InitBitstream( &p_dec->bit_stream, p_dec->p_fifo,
+                   NULL, NULL );
+
+    return 0;
+}
+
+/*****************************************************************************
+ * EndThread : spdif thread destruction
+ *****************************************************************************/
+static void EndThread( spdif_thread_t * p_dec )
+{
+    if ( p_dec->p_aout_input != NULL )
+    {
+        aout_InputDelete( p_dec->p_aout, p_dec->p_aout_input );
+    }
+
+    free( p_dec );
+}
+
+/****************************************************************************
+ * Local structures and tables
+ ****************************************************************************/
+typedef struct sync_frame_s
+{
+    struct syncinfo
+    {
+        u8      syncword[2];
+        u8      crc1[2];
+        u8      code;
+    } syncinfo;
+
+    struct bsi
+    {
+        u8      bsidmod;
+        u8      acmod;
+    } bsi;
+} sync_frame_t;
+
+typedef struct frame_size_s
+{
+    u16     i_bit_rate;
+    u16     i_frame_size[3];
+} frame_size_t;                
+
+typedef struct info_s
+{
+    int i_bit_rate;
+    int i_frame_size;
+    int i_sample_rate;
+    int i_bs_mod;
+} info_t;
+
+static const frame_size_t p_frame_size_code[64] =
+{
+        { 32  ,{64   ,69   ,96   } },
+        { 32  ,{64   ,70   ,96   } },
+        { 40  ,{80   ,87   ,120  } },
+        { 40  ,{80   ,88   ,120  } },
+        { 48  ,{96   ,104  ,144  } },
+        { 48  ,{96   ,105  ,144  } },
+        { 56  ,{112  ,121  ,168  } },
+        { 56  ,{112  ,122  ,168  } },
+        { 64  ,{128  ,139  ,192  } },
+        { 64  ,{128  ,140  ,192  } },
+        { 80  ,{160  ,174  ,240  } },
+        { 80  ,{160  ,175  ,240  } },
+        { 96  ,{192  ,208  ,288  } },
+        { 96  ,{192  ,209  ,288  } },
+        { 112 ,{224  ,243  ,336  } },
+        { 112 ,{224  ,244  ,336  } },
+        { 128 ,{256  ,278  ,384  } },
+        { 128 ,{256  ,279  ,384  } },
+        { 160 ,{320  ,348  ,480  } },
+        { 160 ,{320  ,349  ,480  } },
+        { 192 ,{384  ,417  ,576  } },
+        { 192 ,{384  ,418  ,576  } },
+        { 224 ,{448  ,487  ,672  } },
+        { 224 ,{448  ,488  ,672  } },
+        { 256 ,{512  ,557  ,768  } },
+        { 256 ,{512  ,558  ,768  } },
+        { 320 ,{640  ,696  ,960  } },
+        { 320 ,{640  ,697  ,960  } },
+        { 384 ,{768  ,835  ,1152 } },
+        { 384 ,{768  ,836  ,1152 } },
+        { 448 ,{896  ,975  ,1344 } },
+        { 448 ,{896  ,976  ,1344 } },
+        { 512 ,{1024 ,1114 ,1536 } },
+        { 512 ,{1024 ,1115 ,1536 } },
+        { 576 ,{1152 ,1253 ,1728 } },
+        { 576 ,{1152 ,1254 ,1728 } },
+        { 640 ,{1280 ,1393 ,1920 } },
+        { 640 ,{1280 ,1394 ,1920 } }
+};
+
+/****************************************************************************
+ * SyncInfo: parse A52 sync info
+ ****************************************************************************
+ * NB : i_flags is unused, this is just to mimick liba52's a52_syncinfo
+ * Returns the frame size
+ ****************************************************************************/
+static int SyncInfo( const byte_t * p_buffer, int * pi_flags, int * pi_rate,
+                     int * pi_bitrate )
+{
+    static const int p_sample_rates[4] = { 48000, 44100, 32000, -1 };
+    int             i_frame_rate_code;
+    int             i_frame_size_code;
+    const sync_frame_t * p_sync_frame;
+
+    p_sync_frame = (const sync_frame_t *)p_buffer;
+
+    /* Compute frame rate */
+    i_frame_rate_code = (p_sync_frame->syncinfo.code >> 6) & 0x03;
+    *pi_rate = p_sample_rates[i_frame_rate_code];
+    if ( *pi_rate == -1 )
+    {
+        return 0;
+    }
+
+    if ( ( ( p_sync_frame->bsi.bsidmod >> 3 ) & 0x1f ) != 0x08 )
+    {
+        return 0;
+    }
+
+    /* Compute frame size */
+    i_frame_size_code = p_sync_frame->syncinfo.code & 0x3f;        
+    *pi_bitrate = p_frame_size_code[i_frame_size_code].i_bit_rate;
+
+    return ( 2 * p_frame_size_code[i_frame_size_code]
+                   .i_frame_size[i_frame_rate_code] );
+}
diff --git a/modules/codec/spdif/.cvsignore b/modules/codec/spdif/.cvsignore
deleted file mode 100644 (file)
index 435f39e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-.dep
-*.lo
-*.o.*
-*.lo.*
diff --git a/modules/codec/spdif/spdif.c b/modules/codec/spdif/spdif.c
deleted file mode 100644 (file)
index 1aadb2a..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-/*****************************************************************************
- * spdif.c: A52 pass-through to external decoder with enabled soundcard
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: spdif.c,v 1.2 2002/08/08 00:35:11 sam Exp $
- *
- * Authors: Stéphane Borel <stef@via.ecp.fr>
- *          Juha Yrjola <jyrjola@cc.hut.fi>
- *          German Gomez Garcia <german@piraos.com>
- *
- * 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, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>                                              /* memcpy() */
-#include <fcntl.h>
-
-#include <vlc/vlc.h>
-#include <vlc/decoder.h>
-#include <vlc/aout.h>
-
-#ifdef HAVE_UNISTD_H
-#   include <unistd.h>
-#endif
-
-#include "spdif.h"
-
-/****************************************************************************
- * Local prototypes
- ****************************************************************************/
-static int  OpenDecoder    ( vlc_object_t * );
-static int  RunDecoder     ( decoder_fifo_t * );
-
-static int  InitThread        ( spdif_thread_t * );
-static void EndThread         ( spdif_thread_t * );
-static void BitstreamCallback ( bit_stream_t *, vlc_bool_t );
-
-int         parse_syncinfo    ( spdif_thread_t * );
-
-/****************************************************************************
- * Local structures and tables
- ****************************************************************************/
-static const frame_size_t p_frame_size_code[64] =
-{
-        { 32  ,{64   ,69   ,96   } },
-        { 32  ,{64   ,70   ,96   } },
-        { 40  ,{80   ,87   ,120  } },
-        { 40  ,{80   ,88   ,120  } },
-        { 48  ,{96   ,104  ,144  } },
-        { 48  ,{96   ,105  ,144  } },
-        { 56  ,{112  ,121  ,168  } },
-        { 56  ,{112  ,122  ,168  } },
-        { 64  ,{128  ,139  ,192  } },
-        { 64  ,{128  ,140  ,192  } },
-        { 80  ,{160  ,174  ,240  } },
-        { 80  ,{160  ,175  ,240  } },
-        { 96  ,{192  ,208  ,288  } },
-        { 96  ,{192  ,209  ,288  } },
-        { 112 ,{224  ,243  ,336  } },
-        { 112 ,{224  ,244  ,336  } },
-        { 128 ,{256  ,278  ,384  } },
-        { 128 ,{256  ,279  ,384  } },
-        { 160 ,{320  ,348  ,480  } },
-        { 160 ,{320  ,349  ,480  } },
-        { 192 ,{384  ,417  ,576  } },
-        { 192 ,{384  ,418  ,576  } },
-        { 224 ,{448  ,487  ,672  } },
-        { 224 ,{448  ,488  ,672  } },
-        { 256 ,{512  ,557  ,768  } },
-        { 256 ,{512  ,558  ,768  } },
-        { 320 ,{640  ,696  ,960  } },
-        { 320 ,{640  ,697  ,960  } },
-        { 384 ,{768  ,835  ,1152 } },
-        { 384 ,{768  ,836  ,1152 } },
-        { 448 ,{896  ,975  ,1344 } },
-        { 448 ,{896  ,976  ,1344 } },
-        { 512 ,{1024 ,1114 ,1536 } },
-        { 512 ,{1024 ,1115 ,1536 } },
-        { 576 ,{1152 ,1253 ,1728 } },
-        { 576 ,{1152 ,1254 ,1728 } },
-        { 640 ,{1280 ,1393 ,1920 } },
-        { 640 ,{1280 ,1394 ,1920 } }
-};
-
-/*****************************************************************************
- * Module descriptor
- *****************************************************************************/
-vlc_module_begin();
-    set_description( _("SPDIF pass-through A52 decoder") );
-    set_capability( "decoder", 0 );
-    set_callbacks( OpenDecoder, NULL );
-    add_shortcut( "pass_through" );
-    add_shortcut( "pass" );
-vlc_module_end();
-
-/*****************************************************************************
- * OpenDecoder: probe the decoder and return score
- *****************************************************************************
- * Tries to launch a decoder and return score so that the interface is able 
- * to chose.
- *****************************************************************************/
-static int OpenDecoder( vlc_object_t *p_this ) 
-{   
-    decoder_fifo_t *p_fifo = (decoder_fifo_t*) p_this;
-
-    if( p_fifo->i_fourcc != VLC_FOURCC('a','5','2',' ') )
-    {   
-        return VLC_EGENERIC; 
-    }
-
-    p_fifo->pf_run = RunDecoder;
-    return VLC_SUCCESS;
-}
-
-/****************************************************************************
- * RunDecoder: the whole thing
- ****************************************************************************
- * This function is called just after the thread is launched.
- ****************************************************************************/
-static int RunDecoder( decoder_fifo_t *p_fifo )
-{
-    spdif_thread_t *   p_spdif;
-    mtime_t     i_frame_time;
-    vlc_bool_t  b_sync;
-    /* PTS of the current frame */
-    mtime_t     i_current_pts = 0;
-    u16         i_length;
-    
-    /* Allocate the memory needed to store the thread's structure */
-    p_spdif = malloc( sizeof(spdif_thread_t) );
-
-    if( p_spdif == NULL )
-    {
-        msg_Err( p_fifo, "out of memory" );
-        DecoderError( p_fifo );
-        return( -1 );
-    }
-  
-    p_spdif->p_fifo = p_fifo; 
-    
-    if (InitThread( p_spdif ) )
-    {
-        
-        if( p_fifo->b_error )
-        {
-            msg_Err( p_fifo, "could not initialize thread" );
-        }
-
-        DecoderError( p_fifo );
-        free( p_spdif );
-        return( -1 );
-    }
-
-    /* Compute the theorical duration of an A52 frame */
-    i_frame_time = 1000000 * A52_FRAME_SIZE /
-                             p_spdif->info.i_sample_rate;
-    i_length = p_spdif->info.i_frame_size;
-    
-    while( !p_spdif->p_fifo->b_die && !p_spdif->p_fifo->b_error )
-    {
-        p_spdif->p_bytes[0] = 0x0b;
-        p_spdif->p_bytes[1] = 0x77;
-        
-         /* Handle the dates */
-        if( p_spdif->i_real_pts )
-        {
-            mtime_t     i_delta = p_spdif->i_real_pts - i_current_pts -
-                                  i_frame_time;
-            if( i_delta > i_frame_time || i_delta < -i_frame_time )
-            {
-                msg_Warn( p_fifo,
-                          "date discontinuity (%d)", i_delta );
-            }
-            i_current_pts = p_spdif->i_real_pts;
-            p_spdif->i_real_pts = 0;
-        }
-        else
-        {
-            i_current_pts += i_frame_time;
-        }
-
-        /* wait a little to avoid an input flood from the a52 input */
-        mwait( i_current_pts - 500000 );
-
-        vlc_mutex_lock (&p_spdif->p_aout_fifo->data_lock);
-        
-        p_spdif->p_aout_fifo->date[p_spdif->p_aout_fifo->i_end_frame] =
-            i_current_pts;
-
-        p_spdif->p_aout_fifo->i_end_frame = 
-                (p_spdif->p_aout_fifo->i_end_frame + 1 ) & AOUT_FIFO_SIZE;
-        
-        p_spdif->p_bytes = ((u8*)(p_spdif->p_aout_fifo->buffer)) +
-                     (p_spdif->p_aout_fifo->i_end_frame * i_length );
-        
-        vlc_mutex_unlock (&p_spdif->p_aout_fifo->data_lock);
-
-        /* Find syncword again in case of stream discontinuity */
-        /* Here we have p_spdif->i_pts == 0
-         * Therefore a non-zero value after a call to GetBits() means the PES
-         * has changed. */
-        b_sync = 0;
-        while( !p_spdif->p_fifo->b_die
-            && !p_spdif->p_fifo->b_error
-            && !b_sync )
-        {
-            while( !p_spdif->p_fifo->b_die
-                && !p_spdif->p_fifo->b_error
-                && GetBits( &p_spdif->bit_stream, 8 ) != 0x0b );
-            p_spdif->i_real_pts = p_spdif->i_pts;
-            p_spdif->i_pts = 0;
-            b_sync = ( ShowBits( &p_spdif->bit_stream, 8 ) == 0x77 );
-        }
-        RemoveBits( &p_spdif->bit_stream, 8 );
-
-        /* Read data from bitstream */
-        GetChunk( &p_spdif->bit_stream, p_spdif->p_bytes + 2, i_length - 2 );
-    }
-
-    /* If b_error is set, the spdif thread enters the error loop */
-    if( p_spdif->p_fifo->b_error )
-    {
-        DecoderError( p_spdif->p_fifo );
-    }
-
-    /* End of the spdif decoder thread */
-    EndThread( p_spdif );
-    
-    return( 0 );
-}
-
-/****************************************************************************
- * InitThread: initialize thread data and create output fifo
- ****************************************************************************/
-static int InitThread( spdif_thread_t * p_spdif )
-{
-    vlc_bool_t b_sync = 0;
-
-    /* Temporary buffer to store first A52 frame */
-    p_spdif->p_bytes = malloc( SPDIF_FRAME_SIZE );
-
-    if( p_spdif->p_bytes == NULL )
-    {
-        free( p_spdif->p_bytes );
-        return( -1 );
-    }
-
-    /*
-     * Initialize the thread properties
-     */
-    p_spdif->p_fifo = p_spdif->p_fifo;
-
-    InitBitstream( &p_spdif->bit_stream, p_spdif->p_fifo,
-                   BitstreamCallback, (void*)p_spdif );
-
-    /* Find syncword */
-    while( !p_spdif->p_fifo->b_die
-        && !p_spdif->p_fifo->b_error
-        && !b_sync )
-    {
-        while( !p_spdif->p_fifo->b_die
-            && !p_spdif->p_fifo->b_error
-            && GetBits( &p_spdif->bit_stream, 8 ) != 0x0b );
-        p_spdif->i_real_pts = p_spdif->i_pts;
-        p_spdif->i_pts = 0;
-        b_sync = ( ShowBits( &p_spdif->bit_stream, 8 ) == 0x77 );
-    }
-
-    if( p_spdif->p_fifo->b_die || p_spdif->p_fifo->b_error )
-    {
-        return -1;
-    }
-
-    RemoveBits( &p_spdif->bit_stream, 8 );
-
-    /* Check stream properties */
-    if( parse_syncinfo( p_spdif ) < 0 )
-    {
-        msg_Err( p_spdif->p_fifo, "stream not valid" );
-
-        return( -1 );
-    }
-
-    /* Check that we can handle the rate 
-     * FIXME: we should check that we have the same rate for all fifos 
-     * but all rates should be supported by the decoder (32, 44.1, 48) */
-    if( p_spdif->info.i_sample_rate != 48000 )
-    {
-        msg_Err( p_spdif->p_fifo,
-                 "only 48000 Hz streams tested, expect weird things!" );
-    }
-
-    /* The audio output need to be ready for an A52 stream */
-    p_spdif->i_previous_format = config_GetInt( p_spdif->p_fifo,
-                                               "audio-format" );
-    config_PutInt( p_spdif->p_fifo, "audio-format", 8 );
-    
-    /* Creating the audio output fifo */
-    p_spdif->p_aout_fifo =
-                    aout_CreateFifo( p_spdif->p_fifo, AOUT_FIFO_SPDIF,
-                                     1, p_spdif->info.i_sample_rate,
-                                     p_spdif->info.i_frame_size, NULL );
-
-    if( p_spdif->p_aout_fifo == NULL )
-    {
-        return( -1 );
-    }
-
-    msg_Dbg( p_spdif->p_fifo, "aout fifo #%d created",
-                              p_spdif->p_aout_fifo->i_fifo );
-
-    /* Put read data into fifo */
-    memcpy( (u8*)(p_spdif->p_aout_fifo->buffer) +
-                 (p_spdif->p_aout_fifo->i_end_frame *
-                   p_spdif->info.i_frame_size ),
-            p_spdif->p_bytes, sizeof(sync_frame_t) );
-    free( p_spdif->p_bytes );
-    p_spdif->p_bytes = ((u8*)(p_spdif->p_aout_fifo->buffer) +
-                             (p_spdif->p_aout_fifo->i_end_frame *
-                              p_spdif->info.i_frame_size ));
-
-    GetChunk( &p_spdif->bit_stream, p_spdif->p_bytes + sizeof(sync_frame_t),
-        p_spdif->info.i_frame_size - sizeof(sync_frame_t) );
-
-    return( 0 );
-}
-
-/*****************************************************************************
- * EndThread : spdif thread destruction
- *****************************************************************************/
-static void EndThread( spdif_thread_t * p_spdif )
-{
-    /* If the audio output fifo was created, we destroy it */
-    if( p_spdif->p_aout_fifo != NULL )
-    {
-        aout_DestroyFifo( p_spdif->p_aout_fifo );
-
-        /* Make sure the output thread leaves the NextFrame() function */
-        vlc_mutex_lock( &(p_spdif->p_aout_fifo->data_lock ) );
-        vlc_cond_signal( &(p_spdif->p_aout_fifo->data_wait ) );
-        vlc_mutex_unlock( &(p_spdif->p_aout_fifo->data_lock ) );
-        
-    }
-
-    /* restore previous setting for output format */
-    config_PutInt( p_spdif->p_fifo, "audio-format",
-                                    p_spdif->i_previous_format );
-
-    /* Destroy descriptor */
-    free( p_spdif );
-}
-
-/*****************************************************************************
- * BitstreamCallback: Import parameters from the new data/PES packet
- *****************************************************************************
- * This function is called by input's NextDataPacket.
- *****************************************************************************/
-static void BitstreamCallback( bit_stream_t * p_bit_stream,
-                               vlc_bool_t b_new_pes )
-{
-    spdif_thread_t *    p_spdif;
-
-    if( b_new_pes )
-    {
-        p_spdif = (spdif_thread_t *)p_bit_stream->p_callback_arg;
-
-/*        p_bit_stream->p_byte += 3; */
-
-        p_spdif->i_pts =
-            p_bit_stream->p_decoder_fifo->p_first->i_pts;
-        p_bit_stream->p_decoder_fifo->p_first->i_pts = 0;
-    }
-}
-
-/****************************************************************************
- * parse_syncinfo: parse A52 sync info
- ****************************************************************************/
-int parse_syncinfo( spdif_thread_t *p_spdif )
-{
-    int             p_sample_rates[4] = { 48000, 44100, 32000, -1 };
-    int             i_frame_rate_code;
-    int             i_frame_size_code;
-    sync_frame_t *  p_sync_frame;
-
-    /* Read sync frame */
-    GetChunk( &p_spdif->bit_stream, p_spdif->p_bytes + 2,
-              sizeof(sync_frame_t) - 2 );
-    if( p_spdif->p_fifo->b_die ) return -1;
-
-    p_sync_frame = (sync_frame_t*)p_spdif->p_bytes;
-
-    /* Compute frame rate */
-    i_frame_rate_code = (p_sync_frame->syncinfo.code >> 6) & 0x03;
-    p_spdif->info.i_sample_rate = p_sample_rates[i_frame_rate_code];
-    if( p_spdif->info.i_sample_rate == -1 )
-    {
-        return -1;
-    }
-
-    /* Compute frame size */
-    i_frame_size_code = p_sync_frame->syncinfo.code & 0x3f;
-    p_spdif->info.i_frame_size = 2 *
-        p_frame_size_code[i_frame_size_code].i_frame_size[i_frame_rate_code];
-    p_spdif->info.i_bit_rate =
-        p_frame_size_code[i_frame_size_code].i_bit_rate;
-
-    if( ( ( p_sync_frame->bsi.bsidmod >> 3 ) & 0x1f ) != 0x08 )
-    {
-        return -1;
-    }
-
-    p_spdif->info.i_bs_mod = p_sync_frame->bsi.bsidmod & 0x7;
-
-    return 0;
-}
diff --git a/modules/codec/spdif/spdif.h b/modules/codec/spdif/spdif.h
deleted file mode 100644 (file)
index 39b5019..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*****************************************************************************
- * spdif.h: header for A52 pass-through
- *****************************************************************************
- * Copyright (C) 2001 VideoLAN
- * $Id: spdif.h,v 1.1 2002/08/04 17:23:42 sam Exp $
- *
- * Authors: Stéphane Borel <stef@via.ecp.fr>
- *
- * 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, USA.
- ****************************************************************************/
-
-/****************************************************************************
- * information about A52 frame
- ****************************************************************************/
-typedef struct sync_frame_s
-{
-    struct syncinfo
-    {
-        u8      syncword[2];
-        u8      crc1[2];
-        u8      code;
-    } syncinfo;
-
-    struct bsi
-    {
-        u8      bsidmod;
-        u8      acmod;
-    } bsi;
-} sync_frame_t;
-
-typedef struct frame_size_s
-{
-    u16     i_bit_rate;
-    u16     i_frame_size[3];
-} frame_size_t;                
-
-typedef struct info_s
-{
-    int i_bit_rate;
-    int i_frame_size;
-    int i_sample_rate;
-    int i_bs_mod;
-} info_t;
-
-/*****************************************************************************
- * spdif_thread_t : A52 pass-through thread descriptor
- *****************************************************************************/
-typedef struct spdif_thread_s
-{
-    /*
-     * Thread properties
-     */
-    vlc_thread_t        thread_id;                /* id for thread functions */
-
-    /*
-     * Input properties
-     */
-    decoder_fifo_t *    p_fifo;                /* stores the PES stream data */
-
-    /* The bit stream structure handles the PES stream at the bit level */
-    bit_stream_t        bit_stream;
-    int                 i_available;
-
-    /*
-     * Decoder properties
-     */
-    info_t              info;
-    u8 *                p_bytes;
-
-    /* current pes date */
-    mtime_t             i_pts;
-    mtime_t             i_real_pts;
-
-    /*
-     * Output properties
-     */
-    int                 i_previous_format;
-    aout_fifo_t *       p_aout_fifo; /* stores the decompressed audio frames */
-
-} spdif_thread_t;
-
index a9633858781a04c3a44c7ad199be45986fc61e0e..a411464b6ae76c68cf76baa329502035c0cbfe26 100644 (file)
@@ -2,7 +2,7 @@
  * audio_output.c : audio output instance
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: audio_output.c,v 1.91 2002/08/09 23:47:23 massiot Exp $
+ * $Id: audio_output.c,v 1.92 2002/08/11 01:27:01 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -137,6 +137,9 @@ void aout_BufferPlay( aout_instance_t * p_aout, aout_input_t * p_input,
                                     / p_input->input.i_rate;
     }
 
+    /* If the buffer is too early, wait a while. */
+    mwait( p_buffer->start_date - AOUT_MAX_PREPARE_TIME );
+
     aout_InputPlay( p_aout, p_input, p_buffer );
 
     /* Run the mixer if it is able to run. */