* ./configure: Fixed double detection of gethostbyname.
authorChristophe Massiot <massiot@videolan.org>
Mon, 19 Aug 2002 21:31:11 +0000 (21:31 +0000)
committerChristophe Massiot <massiot@videolan.org>
Mon, 19 Aug 2002 21:31:11 +0000 (21:31 +0000)
* Major changes in the handling of dates in the audio output ; still buggy,
but differently.
* Fixed a major bug in the aout pre-filters, preventing to run any other
decoder than liba52.
* p_aout->output.pf_play now has only one argument.

34 files changed:
configure
configure.in
doc/developer/Makefile
include/aout_internal.h
include/audio_output.h
include/config.h
include/defs.h.in
include/vlc_symbols.h
modules/audio_filter/converter/fixed32tofloat32.c
modules/audio_filter/converter/fixed32tos16.c
modules/audio_filter/converter/float32tos16.c
modules/audio_filter/converter/float32tos8.c
modules/audio_filter/converter/float32tou16.c
modules/audio_filter/converter/float32tou8.c
modules/audio_mixer/spdif.c
modules/audio_mixer/trivial.c
modules/audio_output/alsa.c
modules/audio_output/arts.c
modules/audio_output/esd.c
modules/audio_output/file.c
modules/audio_output/oss.c
modules/audio_output/sdl.c
modules/audio_output/waveout.c
modules/codec/a52.c
modules/codec/spdif.c
modules/gui/macosx/aout.m
modules/misc/dummy/aout.c
modules/video_output/directx/aout.c
src/audio_output/audio_output.c
src/audio_output/filters.c
src/audio_output/input.c
src/audio_output/mixer.c
src/audio_output/output.c
src/misc/modules_plugin.h

index 5e37675..4468086 100755 (executable)
--- a/configure
+++ b/configure
@@ -3769,60 +3769,9 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   ipv4_LDFLAGS="${ipv4_LDFLAGS} -lnsl"
 else
   echo "$ac_t""no" 1>&6
-fi
-
-
-fi
-
-echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:3779: checking for gethostbyname" >&5
-if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3784 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethostbyname(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
-choke me
-#else
-gethostbyname();
-#endif
 
-; return 0; }
-EOF
-if { (eval echo configure:3807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_gethostbyname=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_gethostbyname=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-
-  echo $ac_n "checking for gethostbyname in -lbind""... $ac_c" 1>&6
-echo "configure:3826: checking for gethostbyname in -lbind" >&5
+    echo $ac_n "checking for gethostbyname in -lbind""... $ac_c" 1>&6
+echo "configure:3775: checking for gethostbyname in -lbind" >&5
 ac_lib_var=`echo bind'_'gethostbyname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3830,7 +3779,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbind  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3834 "configure"
+#line 3783 "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
@@ -3841,7 +3790,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:3845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3794: \"$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
@@ -3861,17 +3810,19 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
+fi
+
 
 fi
 
 have_nanosleep=0
 echo $ac_n "checking for nanosleep""... $ac_c" 1>&6
-echo "configure:3870: checking for nanosleep" >&5
+echo "configure:3821: checking for nanosleep" >&5
 if eval "test \"`echo '$''{'ac_cv_func_nanosleep'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3875 "configure"
+#line 3826 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char nanosleep(); below.  */
@@ -3894,7 +3845,7 @@ nanosleep();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_nanosleep=yes"
 else
@@ -3913,7 +3864,7 @@ else
   echo "$ac_t""no" 1>&6
 
   echo $ac_n "checking for nanosleep in -lrt""... $ac_c" 1>&6
-echo "configure:3917: checking for nanosleep in -lrt" >&5
+echo "configure:3868: checking for nanosleep in -lrt" >&5
 ac_lib_var=`echo rt'_'nanosleep | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3921,7 +3872,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lrt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3925 "configure"
+#line 3876 "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
@@ -3932,7 +3883,7 @@ int main() {
 nanosleep()
 ; return 0; }
 EOF
-if { (eval echo configure:3936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3887: \"$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
@@ -3951,7 +3902,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 nanosleep in -lposix4""... $ac_c" 1>&6
-echo "configure:3955: checking for nanosleep in -lposix4" >&5
+echo "configure:3906: checking for nanosleep in -lposix4" >&5
 ac_lib_var=`echo posix4'_'nanosleep | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3959,7 +3910,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lposix4  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3963 "configure"
+#line 3914 "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
@@ -3970,7 +3921,7 @@ int main() {
 nanosleep()
 ; return 0; }
 EOF
-if { (eval echo configure:3974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3925: \"$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
@@ -4004,7 +3955,7 @@ EOF
 fi
 # HP/UX port
 echo $ac_n "checking for sem_init in -lrt""... $ac_c" 1>&6
-echo "configure:4008: checking for sem_init in -lrt" >&5
+echo "configure:3959: checking for sem_init in -lrt" >&5
 ac_lib_var=`echo rt'_'sem_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
@@ -4012,7 +3963,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lrt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4016 "configure"
+#line 3967 "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
@@ -4023,7 +3974,7 @@ int main() {
 sem_init()
 ; return 0; }
 EOF
-if { (eval echo configure:4027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3978: \"$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
@@ -4045,12 +3996,12 @@ fi
 
 
 echo $ac_n "checking for inet_aton""... $ac_c" 1>&6
-echo "configure:4049: checking for inet_aton" >&5
+echo "configure:4000: checking for inet_aton" >&5
 if eval "test \"`echo '$''{'ac_cv_func_inet_aton'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4054 "configure"
+#line 4005 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char inet_aton(); below.  */
@@ -4073,7 +4024,7 @@ inet_aton();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_inet_aton=yes"
 else
@@ -4092,7 +4043,7 @@ else
   echo "$ac_t""no" 1>&6
 
   echo $ac_n "checking for inet_aton in -lresolv""... $ac_c" 1>&6
-echo "configure:4096: checking for inet_aton in -lresolv" >&5
+echo "configure:4047: checking for inet_aton in -lresolv" >&5
 ac_lib_var=`echo resolv'_'inet_aton | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4100,7 +4051,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4104 "configure"
+#line 4055 "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
@@ -4111,7 +4062,7 @@ int main() {
 inet_aton()
 ; return 0; }
 EOF
-if { (eval echo configure:4115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4066: \"$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
@@ -4135,12 +4086,12 @@ fi
 fi
 
 echo $ac_n "checking for textdomain""... $ac_c" 1>&6
-echo "configure:4139: checking for textdomain" >&5
+echo "configure:4090: checking for textdomain" >&5
 if eval "test \"`echo '$''{'ac_cv_func_textdomain'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4144 "configure"
+#line 4095 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char textdomain(); below.  */
@@ -4163,7 +4114,7 @@ textdomain();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_textdomain=yes"
 else
@@ -4182,7 +4133,7 @@ else
   echo "$ac_t""no" 1>&6
 
   echo $ac_n "checking for textdomain in -lintl""... $ac_c" 1>&6
-echo "configure:4186: checking for textdomain in -lintl" >&5
+echo "configure:4137: checking for textdomain in -lintl" >&5
 ac_lib_var=`echo intl'_'textdomain | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4190,7 +4141,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4194 "configure"
+#line 4145 "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
@@ -4201,7 +4152,7 @@ int main() {
 textdomain()
 ; return 0; }
 EOF
-if { (eval echo configure:4205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4156: \"$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
@@ -4229,12 +4180,12 @@ fi
 
 NEED_GETOPT=0
 echo $ac_n "checking for getopt_long""... $ac_c" 1>&6
-echo "configure:4233: checking for getopt_long" >&5
+echo "configure:4184: checking for getopt_long" >&5
 if eval "test \"`echo '$''{'ac_cv_func_getopt_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4238 "configure"
+#line 4189 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char getopt_long(); below.  */
@@ -4257,7 +4208,7 @@ getopt_long();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_getopt_long=yes"
 else
@@ -4279,7 +4230,7 @@ else
   echo "$ac_t""no" 1>&6
  # FreeBSD has a gnugetopt library for this:
   echo $ac_n "checking for getopt_long in -lgnugetopt""... $ac_c" 1>&6
-echo "configure:4283: checking for getopt_long in -lgnugetopt" >&5
+echo "configure:4234: checking for getopt_long in -lgnugetopt" >&5
 ac_lib_var=`echo gnugetopt'_'getopt_long | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4287,7 +4238,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgnugetopt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4291 "configure"
+#line 4242 "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
@@ -4298,7 +4249,7 @@ int main() {
 getopt_long()
 ; return 0; }
 EOF
-if { (eval echo configure:4302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4253: \"$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
@@ -4326,12 +4277,12 @@ fi
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:4330: checking return type of signal handlers" >&5
+echo "configure:4281: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4335 "configure"
+#line 4286 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -4348,7 +4299,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:4352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -4367,7 +4318,7 @@ EOF
 
 
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:4371: checking for dlopen in -ldl" >&5
+echo "configure:4322: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4375,7 +4326,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4379 "configure"
+#line 4330 "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
@@ -4386,7 +4337,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:4390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4341: \"$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
@@ -4407,7 +4358,7 @@ else
 fi
 
 echo $ac_n "checking for cos in -lm""... $ac_c" 1>&6
-echo "configure:4411: checking for cos in -lm" >&5
+echo "configure:4362: checking for cos in -lm" >&5
 ac_lib_var=`echo m'_'cos | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4415,7 +4366,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4419 "configure"
+#line 4370 "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
@@ -4426,7 +4377,7 @@ int main() {
 cos()
 ; return 0; }
 EOF
-if { (eval echo configure:4430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4381: \"$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
@@ -4448,7 +4399,7 @@ else
 fi
 
 echo $ac_n "checking for pow in -lm""... $ac_c" 1>&6
-echo "configure:4452: checking for pow in -lm" >&5
+echo "configure:4403: checking for pow in -lm" >&5
 ac_lib_var=`echo m'_'pow | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4456,7 +4407,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4460 "configure"
+#line 4411 "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
@@ -4467,7 +4418,7 @@ int main() {
 pow()
 ; return 0; }
 EOF
-if { (eval echo configure:4471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4422: \"$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
@@ -4497,7 +4448,7 @@ fi
 THREAD_LIB=error
 if test "x${THREAD_LIB}" = "xerror"; then
   echo $ac_n "checking for main in -lpthread""... $ac_c" 1>&6
-echo "configure:4501: checking for main in -lpthread" >&5
+echo "configure:4452: checking for main in -lpthread" >&5
 ac_lib_var=`echo pthread'_'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
@@ -4505,14 +4456,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4509 "configure"
+#line 4460 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:4516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4467: \"$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
@@ -4535,7 +4486,7 @@ fi
 fi
 if test "x${THREAD_LIB}" = "xerror"; then
   echo $ac_n "checking for main in -lpthreads""... $ac_c" 1>&6
-echo "configure:4539: checking for main in -lpthreads" >&5
+echo "configure:4490: checking for main in -lpthreads" >&5
 ac_lib_var=`echo pthreads'_'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
@@ -4543,14 +4494,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4547 "configure"
+#line 4498 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:4554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4505: \"$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
@@ -4573,7 +4524,7 @@ fi
 fi
 if test "x${THREAD_LIB}" = "xerror"; then
   echo $ac_n "checking for main in -lc_r""... $ac_c" 1>&6
-echo "configure:4577: checking for main in -lc_r" >&5
+echo "configure:4528: checking for main in -lc_r" >&5
 ac_lib_var=`echo c_r'_'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
@@ -4581,14 +4532,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lc_r  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4585 "configure"
+#line 4536 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:4592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4543: \"$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
@@ -4611,12 +4562,12 @@ fi
 fi
 if test "x${THREAD_LIB}" = "xerror"; then
   echo $ac_n "checking for pthread_mutex_lock""... $ac_c" 1>&6
-echo "configure:4615: checking for pthread_mutex_lock" >&5
+echo "configure:4566: checking for pthread_mutex_lock" >&5
 if eval "test \"`echo '$''{'ac_cv_func_pthread_mutex_lock'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4620 "configure"
+#line 4571 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pthread_mutex_lock(); below.  */
@@ -4639,7 +4590,7 @@ pthread_mutex_lock();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_pthread_mutex_lock=yes"
 else
@@ -4662,7 +4613,7 @@ fi
 fi
 
 echo $ac_n "checking for cthread_fork in -lthreads""... $ac_c" 1>&6
-echo "configure:4666: checking for cthread_fork in -lthreads" >&5
+echo "configure:4617: checking for cthread_fork in -lthreads" >&5
 ac_lib_var=`echo threads'_'cthread_fork | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4670,7 +4621,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4674 "configure"
+#line 4625 "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
@@ -4681,7 +4632,7 @@ int main() {
 cthread_fork()
 ; return 0; }
 EOF
-if { (eval echo configure:4685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4636: \"$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
@@ -4703,7 +4654,7 @@ fi
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4707 "configure"
+#line 4658 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -4719,7 +4670,7 @@ fi
 rm -f conftest*
 
 cat > conftest.$ac_ext <<EOF
-#line 4723 "configure"
+#line 4674 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -4735,7 +4686,7 @@ fi
 rm -f conftest*
 
 cat > conftest.$ac_ext <<EOF
-#line 4739 "configure"
+#line 4690 "configure"
 #include "confdefs.h"
 #include <strings.h>
 EOF
@@ -4755,17 +4706,17 @@ for ac_hdr in stdint.h getopt.h strings.h inttypes.h sys/int_types.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4759: checking for $ac_hdr" >&5
+echo "configure:4710: 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 4764 "configure"
+#line 4715 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4769: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4720: \"$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*
@@ -4795,17 +4746,17 @@ for ac_hdr in sys/sockio.h fcntl.h sys/types.h sys/time.h sys/times.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4799: checking for $ac_hdr" >&5
+echo "configure:4750: 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 4804 "configure"
+#line 4755 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4809: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4760: \"$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*
@@ -4835,17 +4786,17 @@ for ac_hdr in dlfcn.h image.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4839: checking for $ac_hdr" >&5
+echo "configure:4790: 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 4844 "configure"
+#line 4795 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4800: \"$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*
@@ -4875,17 +4826,17 @@ for ac_hdr in arpa/inet.h net/if.h netinet/in.h sys/socket.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4879: checking for $ac_hdr" >&5
+echo "configure:4830: 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 4884 "configure"
+#line 4835 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4840: \"$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*
@@ -4915,17 +4866,17 @@ for ac_hdr in machine/param.h sys/shm.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4919: checking for $ac_hdr" >&5
+echo "configure:4870: 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 4924 "configure"
+#line 4875 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4880: \"$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*
@@ -4955,17 +4906,17 @@ for ac_hdr in linux/version.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4959: checking for $ac_hdr" >&5
+echo "configure:4910: 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 4964 "configure"
+#line 4915 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4920: \"$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*
@@ -4993,12 +4944,12 @@ done
 
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:4997: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:4948: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5002 "configure"
+#line 4953 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -5007,7 +4958,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:5011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -5029,7 +4980,7 @@ fi
 
 
 cat > conftest.$ac_ext <<EOF
-#line 5033 "configure"
+#line 4984 "configure"
 #include "confdefs.h"
 #include <time.h>
 EOF
@@ -5047,7 +4998,7 @@ rm -f conftest*
 
 
 cat > conftest.$ac_ext <<EOF
-#line 5051 "configure"
+#line 5002 "configure"
 #include "confdefs.h"
 #include <sys/time.h>
 EOF
@@ -5068,17 +5019,17 @@ for ac_hdr in cthreads.h pthread.h kernel/scheduler.h kernel/OS.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5072: checking for $ac_hdr" >&5
+echo "configure:5023: 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 5077 "configure"
+#line 5028 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5033: \"$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*
@@ -5119,17 +5070,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5123: checking for $ac_hdr" >&5
+echo "configure:5074: 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 5128 "configure"
+#line 5079 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5133: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5084: \"$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*
@@ -5151,7 +5102,7 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
 EOF
  
     cat > conftest.$ac_ext <<EOF
-#line 5155 "configure"
+#line 5106 "configure"
 #include "confdefs.h"
 #include <X11/extensions/dpms.h>
 EOF
@@ -5177,20 +5128,20 @@ done
 fi
 
 echo $ac_n "checking for ntohl in sys/param.h""... $ac_c" 1>&6
-echo "configure:5181: checking for ntohl in sys/param.h" >&5
+echo "configure:5132: checking for ntohl in sys/param.h" >&5
 if eval "test \"`echo '$''{'ac_cv_c_ntohl_sys_param_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -Wall -Werror"
      cat > conftest.$ac_ext <<EOF
-#line 5187 "configure"
+#line 5138 "configure"
 #include "confdefs.h"
 #include <sys/param.h>
 int main() {
 void foo() { int meuh; ntohl(meuh); }
 ; return 0; }
 EOF
-if { (eval echo configure:5194: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_ntohl_sys_param_h=yes
 else
@@ -5211,20 +5162,20 @@ EOF
 fi
 
 echo $ac_n "checking if \$CC accepts -finline-limit""... $ac_c" 1>&6
-echo "configure:5215: checking if \$CC accepts -finline-limit" >&5
+echo "configure:5166: checking if \$CC accepts -finline-limit" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline_limit'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -finline-limit-30000"
      cat > conftest.$ac_ext <<EOF
-#line 5221 "configure"
+#line 5172 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline_limit=yes
 else
@@ -5242,20 +5193,20 @@ if test "x${ac_cv_c_inline_limit}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -Wall -Winline""... $ac_c" 1>&6
-echo "configure:5246: checking if \$CC accepts -Wall -Winline" >&5
+echo "configure:5197: checking if \$CC accepts -Wall -Winline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_Wall_Winline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="-Wall -Winline ${save_CFLAGS}"
      cat > conftest.$ac_ext <<EOF
-#line 5252 "configure"
+#line 5203 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_Wall_Winline=yes
 else
@@ -5272,20 +5223,20 @@ if test "x${ac_cv_c_Wall_Winline}" != "xno"; then
     save_CFLAGS="-Wall -Winline ${save_CFLAGS}"; CFLAGS="${save_CFLAGS}"
 else
     echo $ac_n "checking if \$CC accepts -wall -winline""... $ac_c" 1>&6
-echo "configure:5276: checking if \$CC accepts -wall -winline" >&5
+echo "configure:5227: checking if \$CC accepts -wall -winline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_wall_winline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="-wall -winline ${save_CFLAGS}"
          cat > conftest.$ac_ext <<EOF
-#line 5282 "configure"
+#line 5233 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5289: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5240: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_wall_winline=yes
 else
@@ -5304,20 +5255,20 @@ echo "$ac_t""$ac_cv_c_wall_winline" 1>&6
 fi
 
 echo $ac_n "checking if \$CC accepts -pipe""... $ac_c" 1>&6
-echo "configure:5308: checking if \$CC accepts -pipe" >&5
+echo "configure:5259: checking if \$CC accepts -pipe" >&5
 if eval "test \"`echo '$''{'ac_cv_c_pipe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -pipe"
      cat > conftest.$ac_ext <<EOF
-#line 5314 "configure"
+#line 5265 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5321: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_pipe=yes
 else
@@ -5335,20 +5286,20 @@ if test "x${ac_cv_c_pipe}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -O3""... $ac_c" 1>&6
-echo "configure:5339: checking if \$CC accepts -O3" >&5
+echo "configure:5290: checking if \$CC accepts -O3" >&5
 if eval "test \"`echo '$''{'ac_cv_c_o3'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -O3"
      cat > conftest.$ac_ext <<EOF
-#line 5345 "configure"
+#line 5296 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_o3=yes
 else
@@ -5365,20 +5316,20 @@ if test "x${ac_cv_c_o3}" != "xno"; then
     CFLAGS_OPTIM="${CFLAGS_OPTIM} -O3"
 else
     echo $ac_n "checking if \$CC accepts -O2""... $ac_c" 1>&6
-echo "configure:5369: checking if \$CC accepts -O2" >&5
+echo "configure:5320: checking if \$CC accepts -O2" >&5
 if eval "test \"`echo '$''{'ac_cv_c_o2'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -O2"
          cat > conftest.$ac_ext <<EOF
-#line 5375 "configure"
+#line 5326 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5382: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5333: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_o2=yes
 else
@@ -5395,20 +5346,20 @@ echo "$ac_t""$ac_cv_c_o2" 1>&6
         CFLAGS_OPTIM="${CFLAGS_OPTIM} -O2"
     else
         echo $ac_n "checking if \$CC accepts -O""... $ac_c" 1>&6
-echo "configure:5399: checking if \$CC accepts -O" >&5
+echo "configure:5350: checking if \$CC accepts -O" >&5
 if eval "test \"`echo '$''{'ac_cv_c_o'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -O"
              cat > conftest.$ac_ext <<EOF
-#line 5405 "configure"
+#line 5356 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5412: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_o=yes
 else
@@ -5428,20 +5379,20 @@ echo "$ac_t""$ac_cv_c_o" 1>&6
 fi
 
 echo $ac_n "checking if \$CC accepts -ffast-math""... $ac_c" 1>&6
-echo "configure:5432: checking if \$CC accepts -ffast-math" >&5
+echo "configure:5383: checking if \$CC accepts -ffast-math" >&5
 if eval "test \"`echo '$''{'ac_cv_c_fast_math'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -ffast-math"
      cat > conftest.$ac_ext <<EOF
-#line 5438 "configure"
+#line 5389 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5396: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_fast_math=yes
 else
@@ -5459,20 +5410,20 @@ if test "x${ac_cv_c_fast_math}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -funroll-loops""... $ac_c" 1>&6
-echo "configure:5463: checking if \$CC accepts -funroll-loops" >&5
+echo "configure:5414: checking if \$CC accepts -funroll-loops" >&5
 if eval "test \"`echo '$''{'ac_cv_c_unroll_loops'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -funroll-loops"
      cat > conftest.$ac_ext <<EOF
-#line 5469 "configure"
+#line 5420 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5476: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5427: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_unroll_loops=yes
 else
@@ -5490,20 +5441,20 @@ if test "x${ac_cv_c_unroll_loops}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -fomit-frame-pointer""... $ac_c" 1>&6
-echo "configure:5494: checking if \$CC accepts -fomit-frame-pointer" >&5
+echo "configure:5445: checking if \$CC accepts -fomit-frame-pointer" >&5
 if eval "test \"`echo '$''{'ac_cv_c_omit_frame_pointer'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -fomit-frame-pointer"
      cat > conftest.$ac_ext <<EOF
-#line 5500 "configure"
+#line 5451 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5458: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_omit_frame_pointer=yes
 else
@@ -5523,20 +5474,20 @@ if test "x${ac_cv_c_omit_frame_pointer}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -bundle -undefined error -lcc_dynamic""... $ac_c" 1>&6
-echo "configure:5527: checking if \$CC accepts -bundle -undefined error -lcc_dynamic" >&5
+echo "configure:5478: checking if \$CC accepts -bundle -undefined error -lcc_dynamic" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_darwin'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -bundle -undefined error -lcc_dynamic"
      cat > conftest.$ac_ext <<EOF
-#line 5533 "configure"
+#line 5484 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_ld_darwin=yes
 else
@@ -5554,20 +5505,20 @@ if test "x${ac_cv_ld_darwin}" != "xno"; then
 fi
 
 echo $ac_n "checking if \$CC accepts -shared""... $ac_c" 1>&6
-echo "configure:5558: checking if \$CC accepts -shared" >&5
+echo "configure:5509: checking if \$CC accepts -shared" >&5
 if eval "test \"`echo '$''{'ac_cv_ld_plugins'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS} -shared"
      cat > conftest.$ac_ext <<EOF
-#line 5564 "configure"
+#line 5515 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_ld_plugins=yes
 else
@@ -5585,13 +5536,13 @@ if test "x${ac_cv_ld_plugins}" != "xno"; then
 fi
         
 echo $ac_n "checking for variadic cpp macros""... $ac_c" 1>&6
-echo "configure:5589: checking for variadic cpp macros" >&5
+echo "configure:5540: checking for variadic cpp macros" >&5
 if eval "test \"`echo '$''{'ac_cv_cpp_variadic_macros'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   CFLAGS="${save_CFLAGS}"
      cat > conftest.$ac_ext <<EOF
-#line 5595 "configure"
+#line 5546 "configure"
 #include "confdefs.h"
 #include <stdio.h>
           #define a(b,c...) printf(b,##c)
@@ -5599,7 +5550,7 @@ int main() {
 a("foo");a("%s","bar");a("%s%s","baz","quux");
 ; return 0; }
 EOF
-if { (eval echo configure:5603: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cpp_variadic_macros=yes
 else
@@ -5620,7 +5571,7 @@ EOF
 fi
 
 echo $ac_n "checking __attribute__ ((aligned ())) support""... $ac_c" 1>&6
-echo "configure:5624: checking __attribute__ ((aligned ())) support" >&5
+echo "configure:5575: checking __attribute__ ((aligned ())) support" >&5
 if eval "test \"`echo '$''{'ac_cv_c_attribute_aligned'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5628,14 +5579,14 @@ else
         CFLAGS="${save_CFLAGS} -Werror"
     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
         cat > conftest.$ac_ext <<EOF
-#line 5632 "configure"
+#line 5583 "configure"
 #include "confdefs.h"
 
 int main() {
 static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;
 ; return 0; }
 EOF
-if { (eval echo configure:5639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5590: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"
 else
@@ -5692,20 +5643,20 @@ then
 fi
 
 echo $ac_n "checking if \$CC groks MMX inline assembly""... $ac_c" 1>&6
-echo "configure:5696: checking if \$CC groks MMX inline assembly" >&5
+echo "configure:5647: 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 5702 "configure"
+#line 5653 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5709: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mmx_inline=yes
 else
@@ -5723,20 +5674,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:5727: checking if \$CC groks MMX EXT inline assembly" >&5
+echo "configure:5678: 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 5733 "configure"
+#line 5684 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mmxext_inline=yes
 else
@@ -5754,20 +5705,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:5758: checking if \$CC groks 3D Now! inline assembly" >&5
+echo "configure:5709: 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 5764 "configure"
+#line 5715 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_3dnow_inline=yes
 else
@@ -5789,20 +5740,20 @@ EOF
 fi
 
 echo $ac_n "checking if \$CC groks SSE inline assembly""... $ac_c" 1>&6
-echo "configure:5793: checking if \$CC groks SSE inline assembly" >&5
+echo "configure:5744: 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 5799 "configure"
+#line 5750 "configure"
 #include "confdefs.h"
 
 int main() {
 void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));
 ; return 0; }
 EOF
-if { (eval echo configure:5806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5757: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sse_inline=yes
 else
@@ -5827,20 +5778,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:5831: checking if \$CC groks AltiVec inline assembly" >&5
+echo "configure:5782: 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 5837 "configure"
+#line 5788 "configure"
 #include "confdefs.h"
 
 int main() {
 asm volatile("vperm 0,1,2,3");
 ; return 0; }
 EOF
-if { (eval echo configure:5844: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_altivec_inline=yes
 else
@@ -5849,14 +5800,14 @@ else
   rm -rf conftest*
   CFLAGS="${save_CFLAGS} -Wa,-m7400"
           cat > conftest.$ac_ext <<EOF
-#line 5853 "configure"
+#line 5804 "configure"
 #include "confdefs.h"
 
 int main() {
 asm volatile("vperm 0,1,2,3");
 ; return 0; }
 EOF
-if { (eval echo configure:5860: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5811: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_altivec_inline="-Wa,-m7400"
 else
@@ -5887,21 +5838,21 @@ EOF
 fi
 
 echo $ac_n "checking if \$CC groks AltiVec C extensions""... $ac_c" 1>&6
-echo "configure:5891: checking if \$CC groks AltiVec C extensions" >&5
+echo "configure:5842: 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 5898 "configure"
+#line 5849 "configure"
 #include "confdefs.h"
 
 int main() {
 vec_mtvscr((vector unsigned int)(0));
 ; return 0; }
 EOF
-if { (eval echo configure:5905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_altivec=-faltivec
 else
@@ -5912,14 +5863,14 @@ else
         # Linux/PPC test
         CFLAGS="${save_CFLAGS} ${idctaltivec_CFLAGS} -fvec"
         cat > conftest.$ac_ext <<EOF
-#line 5916 "configure"
+#line 5867 "configure"
 #include "confdefs.h"
 
 int main() {
 vec_mtvscr((vector unsigned int)(0));
 ; return 0; }
 EOF
-if { (eval echo configure:5923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_altivec="-fvec"
 else
@@ -5949,20 +5900,20 @@ EOF
 fi
 
 echo $ac_n "checking if linker needs -framework vecLib""... $ac_c" 1>&6
-echo "configure:5953: checking if linker needs -framework vecLib" >&5
+echo "configure:5904: 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 5959 "configure"
+#line 5910 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_ld_altivec=yes
 else
@@ -6094,17 +6045,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6098: checking for $ac_hdr" >&5
+echo "configure:6049: 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 6103 "configure"
+#line 6054 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6108: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6059: \"$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*
@@ -6135,7 +6086,7 @@ done
 
     else
       echo $ac_n "checking for libdvdcss.a in ${with_dvdcss_tree}""... $ac_c" 1>&6
-echo "configure:6139: checking for libdvdcss.a in ${with_dvdcss_tree}" >&5
+echo "configure:6090: 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
@@ -6161,7 +6112,7 @@ echo "configure:6139: 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:6165: checking for dvdcss headers in ${with_dvdcss}" >&5
+echo "configure:6116: checking for dvdcss headers in ${with_dvdcss}" >&5
     if test -f ${with_dvdcss}/include/dvdcss/dvdcss.h
     then
             echo "$ac_t""yes" 1>&6
@@ -6203,17 +6154,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6207: checking for $ac_hdr" >&5
+echo "configure:6158: 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 6212 "configure"
+#line 6163 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6168: \"$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*
@@ -6235,14 +6186,14 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
 EOF
  
      cat > conftest.$ac_ext <<EOF
-#line 6239 "configure"
+#line 6190 "configure"
 #include "confdefs.h"
 #include <dvdread/dvd_reader.h>
 int main() {
 int foo() { return DVD_VIDEO_LB_LEN; }
 ; return 0; }
 EOF
-if { (eval echo configure:6246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
           PLUGINS="${PLUGINS} access/dvdread/dvdread"
@@ -6307,17 +6258,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6311: checking for $ac_hdr" >&5
+echo "configure:6262: 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 6316 "configure"
+#line 6267 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6272: \"$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*
@@ -6389,17 +6340,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6393: checking for $ac_hdr" >&5
+echo "configure:6344: 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 6398 "configure"
+#line 6349 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6354: \"$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*
@@ -6428,7 +6379,7 @@ done
 
     else
       echo $ac_n "checking for libdvbpsi.a in ${with_dvbpsi_tree}""... $ac_c" 1>&6
-echo "configure:6432: checking for libdvbpsi.a in ${with_dvbpsi_tree}" >&5
+echo "configure:6383: 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
@@ -6451,7 +6402,7 @@ echo "configure:6432: 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:6455: checking for dvbpsi headers in ${with_dvbpsi}" >&5
+echo "configure:6406: checking for dvbpsi headers in ${with_dvbpsi}" >&5
     if test "x${with_dvbpsi}" = "x"
     then
       test_LDFLAGS=""
@@ -6463,17 +6414,17 @@ echo "configure:6455: 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:6467: checking for dvbpsi/dr.h" >&5
+echo "configure:6418: 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 6472 "configure"
+#line 6423 "configure"
 #include "confdefs.h"
 #include <dvbpsi/dr.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6428: \"$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*
@@ -6521,17 +6472,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6525: checking for $ac_hdr" >&5
+echo "configure:6476: 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 6530 "configure"
+#line 6481 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6486: \"$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*
@@ -6571,7 +6522,7 @@ fi
 if test "x${enable_vcd}" != "xno"
 then
   cat > conftest.$ac_ext <<EOF
-#line 6575 "configure"
+#line 6526 "configure"
 #include "confdefs.h"
 #include <linux/cdrom.h>
 EOF
@@ -6586,7 +6537,7 @@ rm -f conftest*
 
   
   cat > conftest.$ac_ext <<EOF
-#line 6590 "configure"
+#line 6541 "configure"
 #include "confdefs.h"
 #include <sys/cdio.h>
 EOF
@@ -6630,12 +6581,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:6634: checking for inet_pton" >&5
+echo "configure:6585: 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 6639 "configure"
+#line 6590 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char inet_pton(); below.  */
@@ -6658,7 +6609,7 @@ inet_pton();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6613: \"$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
@@ -6677,7 +6628,7 @@ else
   echo "$ac_t""no" 1>&6
 
     echo $ac_n "checking for inet_pton in -lresolv""... $ac_c" 1>&6
-echo "configure:6681: checking for inet_pton in -lresolv" >&5
+echo "configure:6632: 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
@@ -6685,7 +6636,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6689 "configure"
+#line 6640 "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
@@ -6696,7 +6647,7 @@ int main() {
 inet_pton()
 ; return 0; }
 EOF
-if { (eval echo configure:6700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6651: \"$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
@@ -6721,9 +6672,9 @@ fi
 fi
 
   echo $ac_n "checking for sockaddr_in6 in netinet/in.h""... $ac_c" 1>&6
-echo "configure:6725: checking for sockaddr_in6 in netinet/in.h" >&5
+echo "configure:6676: checking for sockaddr_in6 in netinet/in.h" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6727 "configure"
+#line 6678 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
@@ -6744,9 +6695,9 @@ fi
 if test "x${SYS}" = "xmingw32"
 then
   echo $ac_n "checking for getaddrinfo in ws2tcpip.h""... $ac_c" 1>&6
-echo "configure:6748: checking for getaddrinfo in ws2tcpip.h" >&5
+echo "configure:6699: checking for getaddrinfo in ws2tcpip.h" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6750 "configure"
+#line 6701 "configure"
 #include "confdefs.h"
 #include <ws2tcpip.h>
 EOF
@@ -6828,7 +6779,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:6832: checking for mad.h in ${real_mad_tree}/libmad" >&5
+echo "configure:6783: 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
@@ -6836,7 +6787,7 @@ echo "configure:6832: 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:6840: checking for mad_bit_init in -lmad" >&5
+echo "configure:6791: 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
@@ -6844,7 +6795,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmad  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6848 "configure"
+#line 6799 "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
@@ -6855,7 +6806,7 @@ int main() {
 mad_bit_init()
 ; return 0; }
 EOF
-if { (eval echo configure:6859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6810: \"$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
@@ -6892,17 +6843,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6896: checking for $ac_hdr" >&5
+echo "configure:6847: 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 6901 "configure"
+#line 6852 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6857: \"$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*
@@ -6930,7 +6881,7 @@ fi
 done
 
     echo $ac_n "checking for mad_bit_init in -lmad""... $ac_c" 1>&6
-echo "configure:6934: checking for mad_bit_init in -lmad" >&5
+echo "configure:6885: 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
@@ -6938,7 +6889,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmad  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6942 "configure"
+#line 6893 "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
@@ -6949,7 +6900,7 @@ int main() {
 mad_bit_init()
 ; return 0; }
 EOF
-if { (eval echo configure:6953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6904: \"$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
@@ -6981,17 +6932,17 @@ for ac_hdr in id3tag.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6985: checking for $ac_hdr" >&5
+echo "configure:6936: 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 6990 "configure"
+#line 6941 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6946: \"$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*
@@ -7057,7 +7008,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:7061: checking for libavcodec.a in ${with_ffmpeg_tree}" >&5
+echo "configure:7012: 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
@@ -7078,7 +7029,7 @@ echo "configure:7061: checking for libavcodec.a in ${with_ffmpeg_tree}" >&5
     CFLAGS="${save_CFLAGS} ${ffmpeg_CFLAGS}"
     LDFLAGS="${save_LDFLAGS} ${ffmpeg_LDFLAGS}"
     echo $ac_n "checking for avcodec_init in -lavcodec""... $ac_c" 1>&6
-echo "configure:7082: checking for avcodec_init in -lavcodec" >&5
+echo "configure:7033: 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
@@ -7086,7 +7037,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lavcodec  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7090 "configure"
+#line 7041 "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
@@ -7097,7 +7048,7 @@ int main() {
 avcodec_init()
 ; return 0; }
 EOF
-if { (eval echo configure:7101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7052: \"$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
@@ -7155,7 +7106,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:7159: checking for libfaad.a in ${with_faad_tree}" >&5
+echo "configure:7110: 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
@@ -7179,17 +7130,17 @@ echo "configure:7159: 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:7183: checking for $ac_hdr" >&5
+echo "configure:7134: 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 7188 "configure"
+#line 7139 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7144: \"$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*
@@ -7217,7 +7168,7 @@ fi
 done
 
     echo $ac_n "checking for faacDecOpen in -lfaad""... $ac_c" 1>&6
-echo "configure:7221: checking for faacDecOpen in -lfaad" >&5
+echo "configure:7172: 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
@@ -7225,7 +7176,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lfaad  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7229 "configure"
+#line 7180 "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
@@ -7236,7 +7187,7 @@ int main() {
 faacDecOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:7240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7191: \"$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
@@ -7280,17 +7231,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7284: checking for $ac_hdr" >&5
+echo "configure:7235: 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 7289 "configure"
+#line 7240 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7294: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7245: \"$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*
@@ -7347,7 +7298,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:7351: checking for a52.h in ${real_a52_tree}/include" >&5
+echo "configure:7302: 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
@@ -7355,7 +7306,7 @@ echo "configure:7351: 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:7359: checking for a52_free in -la52" >&5
+echo "configure:7310: 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
@@ -7363,7 +7314,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-la52 -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7367 "configure"
+#line 7318 "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
@@ -7374,7 +7325,7 @@ int main() {
 a52_free()
 ; return 0; }
 EOF
-if { (eval echo configure:7378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7329: \"$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
@@ -7428,17 +7379,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7432: checking for $ac_hdr" >&5
+echo "configure:7383: 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 7437 "configure"
+#line 7388 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7393: \"$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*
@@ -7460,7 +7411,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:7464: checking for a52_free in -la52" >&5
+echo "configure:7415: 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
@@ -7468,7 +7419,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-la52 -lm $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7472 "configure"
+#line 7423 "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
@@ -7479,7 +7430,7 @@ int main() {
 a52_free()
 ; return 0; }
 EOF
-if { (eval echo configure:7483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7434: \"$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
@@ -7543,17 +7494,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7547: checking for $ac_hdr" >&5
+echo "configure:7498: 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 7552 "configure"
+#line 7503 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7508: \"$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 +7547,17 @@ then
 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:7551: 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 7556 "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:7561: \"$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*
@@ -7658,17 +7609,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:7662: checking for $ac_hdr" >&5
+echo "configure:7613: 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 7667 "configure"
+#line 7618 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7623: \"$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*
@@ -7714,17 +7665,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:7718: checking for $ac_hdr" >&5
+echo "configure:7669: 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 7723 "configure"
+#line 7674 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7679: \"$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*
@@ -7747,7 +7698,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:7751: checking for XvPutImage in -lXv_pic" >&5
+echo "configure:7702: 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
@@ -7755,7 +7706,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXv_pic  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7759 "configure"
+#line 7710 "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
@@ -7766,7 +7717,7 @@ int main() {
 XvPutImage()
 ; return 0; }
 EOF
-if { (eval echo configure:7770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7721: \"$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
@@ -7788,7 +7739,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:7792: checking for XvPutImage in -lXv" >&5
+echo "configure:7743: 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
@@ -7796,7 +7747,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7800 "configure"
+#line 7751 "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
@@ -7807,7 +7758,7 @@ int main() {
 XvPutImage()
 ; return 0; }
 EOF
-if { (eval echo configure:7811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7762: \"$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
@@ -7867,7 +7818,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:7871: checking for $ac_word" >&5
+echo "configure:7822: 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
@@ -7907,7 +7858,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:7911: checking for $ac_word" >&5
+echo "configure:7862: 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
@@ -7948,7 +7899,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:7952: checking for $ac_word" >&5
+echo "configure:7903: 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
@@ -7993,17 +7944,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7997: checking for $ac_hdr" >&5
+echo "configure:7948: 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 8002 "configure"
+#line 7953 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7958: \"$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*
@@ -8073,17 +8024,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8077: checking for $ac_hdr" >&5
+echo "configure:8028: 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 8082 "configure"
+#line 8033 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8038: \"$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*
@@ -8112,7 +8063,7 @@ done
 
     else
       echo $ac_n "checking for directX headers in ${with_directx}""... $ac_c" 1>&6
-echo "configure:8116: checking for directX headers in ${with_directx}" >&5
+echo "configure:8067: checking for directX headers in ${with_directx}" >&5
       if test -f ${with_directx}/ddraw.h
       then
         PLUGINS="${PLUGINS} video_output/directx/directx"
@@ -8139,17 +8090,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8143: checking for $ac_hdr" >&5
+echo "configure:8094: 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 8148 "configure"
+#line 8099 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8153: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8104: \"$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*
@@ -8244,17 +8195,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:8248: checking for aalib.h" >&5
+echo "configure:8199: 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 8253 "configure"
+#line 8204 "configure"
 #include "confdefs.h"
 #include <aalib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8209: \"$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*
@@ -8305,17 +8256,17 @@ then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8309: checking for $ac_hdr" >&5
+echo "configure:8260: 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 8314 "configure"
+#line 8265 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8270: \"$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*
@@ -8338,7 +8289,7 @@ EOF
  
     PLUGINS="${PLUGINS} audio_output/oss"
     echo $ac_n "checking for main in -lossaudio""... $ac_c" 1>&6
-echo "configure:8342: checking for main in -lossaudio" >&5
+echo "configure:8293: 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
@@ -8346,14 +8297,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lossaudio  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8350 "configure"
+#line 8301 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:8357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8308: \"$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
@@ -8389,7 +8340,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:8393: checking for $ac_word" >&5
+echo "configure:8344: 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
@@ -8440,7 +8391,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:8444: checking for $ac_word" >&5
+echo "configure:8395: 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
@@ -8490,17 +8441,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:8494: checking for alsa/asoundlib.h" >&5
+echo "configure:8445: 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 8499 "configure"
+#line 8450 "configure"
 #include "confdefs.h"
 #include <alsa/asoundlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8455: \"$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*
@@ -8517,7 +8468,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:8521: checking for main in -lasound" >&5
+echo "configure:8472: 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
@@ -8525,14 +8476,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lasound  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8529 "configure"
+#line 8480 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:8536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8487: \"$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
@@ -8614,7 +8565,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:8618: checking for $ac_word" >&5
+echo "configure:8569: 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
@@ -8653,7 +8604,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:8657: checking for $ac_word" >&5
+echo "configure:8608: 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
@@ -8702,17 +8653,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8706: checking for $ac_hdr" >&5
+echo "configure:8657: 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 8711 "configure"
+#line 8662 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8716: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8667: \"$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*
@@ -8772,7 +8723,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:8776: checking for $ac_word" >&5
+echo "configure:8727: 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
@@ -8811,7 +8762,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:8815: checking for $ac_word" >&5
+echo "configure:8766: 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
@@ -8860,17 +8811,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8864: checking for $ac_hdr" >&5
+echo "configure:8815: 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 8869 "configure"
+#line 8820 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8825: \"$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*
@@ -8915,7 +8866,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:8919: checking for $ac_word" >&5
+echo "configure:8870: 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
@@ -8959,17 +8910,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8963: checking for $ac_hdr" >&5
+echo "configure:8914: 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 8968 "configure"
+#line 8919 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8973: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8924: \"$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*
@@ -9074,17 +9025,17 @@ else
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9078: checking for $ac_hdr" >&5
+echo "configure:9029: 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 9083 "configure"
+#line 9034 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9039: \"$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*
@@ -9127,17 +9078,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9131: checking for $ac_hdr" >&5
+echo "configure:9082: 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 9136 "configure"
+#line 9087 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9141: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9092: \"$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*
@@ -9208,17 +9159,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:9212: checking for xosd.h" >&5
+echo "configure:9163: 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 9217 "configure"
+#line 9168 "configure"
 #include "confdefs.h"
 #include <xosd.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9173: \"$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*
@@ -9241,14 +9192,14 @@ have_xosd="false"
 fi
 
   cat > conftest.$ac_ext <<EOF
-#line 9245 "configure"
+#line 9196 "configure"
 #include "confdefs.h"
 #include <xosd.h>
 int main() {
 void foo() { xosd_init("foo","bar",12,XOSD_top,2,12,42); }
 ; return 0; }
 EOF
-if { (eval echo configure:9252: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   :
 else
   echo "configure: failed program was:" >&5
@@ -9277,17 +9228,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:9281: checking for lirc/lirc_client.h" >&5
+echo "configure:9232: 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 9286 "configure"
+#line 9237 "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:9291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9242: \"$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*
@@ -9304,7 +9255,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:9308: checking for lirc_init in -llirc_client" >&5
+echo "configure:9259: 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
@@ -9312,7 +9263,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-llirc_client  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9316 "configure"
+#line 9267 "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
@@ -9323,7 +9274,7 @@ int main() {
 lirc_init()
 ; return 0; }
 EOF
-if { (eval echo configure:9327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9278: \"$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
@@ -9378,7 +9329,7 @@ fi
       ;;
     *)
                   echo $ac_n "checking whether the byte order is big-endian""... $ac_c" 1>&6
-echo "configure:9382: checking whether the byte order is big-endian" >&5
+echo "configure:9333: 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
@@ -9460,7 +9411,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:9464: checking for pth_init in -lpth" >&5
+echo "configure:9415: 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
@@ -9468,7 +9419,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpth  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9472 "configure"
+#line 9423 "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
@@ -9479,7 +9430,7 @@ int main() {
 pth_init()
 ; return 0; }
 EOF
-if { (eval echo configure:9483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9434: \"$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
@@ -9507,7 +9458,7 @@ else
 fi
 
     cat > conftest.$ac_ext <<EOF
-#line 9511 "configure"
+#line 9462 "configure"
 #include "confdefs.h"
 #include <pth.h>
 EOF
@@ -9533,7 +9484,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:9537: checking for st_init in -lst" >&5
+echo "configure:9488: 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
@@ -9541,7 +9492,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lst  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9545 "configure"
+#line 9496 "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
@@ -9552,7 +9503,7 @@ int main() {
 st_init()
 ; return 0; }
 EOF
-if { (eval echo configure:9556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9507: \"$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
@@ -9580,7 +9531,7 @@ else
 fi
 
     cat > conftest.$ac_ext <<EOF
-#line 9584 "configure"
+#line 9535 "configure"
 #include "confdefs.h"
 #include <st.h>
 EOF
@@ -9616,7 +9567,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:9620: checking for $ac_word" >&5
+echo "configure:9571: 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
@@ -9654,7 +9605,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:9658: checking for XtStrings in -lXt" >&5
+echo "configure:9609: 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
@@ -9662,7 +9613,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lXt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9666 "configure"
+#line 9617 "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
@@ -9673,7 +9624,7 @@ int main() {
 XtStrings()
 ; return 0; }
 EOF
-if { (eval echo configure:9677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9628: \"$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 47d5294..23370e1 100644 (file)
@@ -147,10 +147,8 @@ AC_CHECK_FUNC(send,,[
     http_LDFLAGS="${http_LDFLAGS} -lsocket"
 )])
 AC_CHECK_FUNC(gethostbyname,,[
-  AC_CHECK_LIB(nsl,gethostbyname,ipv4_LDFLAGS="${ipv4_LDFLAGS} -lnsl")
-])
-AC_CHECK_FUNC(gethostbyname,,[
-  AC_CHECK_LIB(bind,gethostbyname,ipv4_LDFLAGS="${ipv4_LDFLAGS} -lbind")
+  AC_CHECK_LIB(nsl,gethostbyname,ipv4_LDFLAGS="${ipv4_LDFLAGS} -lnsl",[
+    AC_CHECK_LIB(bind,gethostbyname,ipv4_LDFLAGS="${ipv4_LDFLAGS} -lbind")])
 ])
 have_nanosleep=0
 AC_CHECK_FUNC(nanosleep,have_nanosleep=1,[
index 19ecf07..27be11e 100644 (file)
@@ -3,18 +3,24 @@
 MAX_TEX_RECURSION=4
 
 # For Debian :
-XML_DECL=/usr/lib/sgml/declaration/xml.decl
-HTML_SS=/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh/html/docbook.dsl
-PRINT_SS=/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh/print/docbook.dsl
+#XML_DECL=/usr/lib/sgml/declaration/xml.decl
+#HTML_SS=/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh/html/docbook.dsl
+#PRINT_SS=/usr/lib/sgml/stylesheet/dsssl/docbook/nwalsh/print/docbook.dsl
 
 # For RedHat :
 #XML_DECL=/usr/lib/sgml/stylesheets/nwalsh-modular/dtds/decls/xml.dcl
 #HTML_SS=/usr/lib/sgml/stylesheets/nwalsh-modular/html/docbook.dsl
 #PRINT_SS=/usr/lib/sgml/stylesheets/nwalsh-modular/print/docbook.dsl
 
+# For Mac OS X :
+#XML_DECL=/usr/lib/sgml/declaration/xml.decl
+HTML_SS=/sw/share/sgml/dsssl/docbook-dsssl-nwalsh/html/docbook.dsl
+PRINT_SS=/sw/share/sgml/dsssl/docbook-dsssl-nwalsh/print/docbook.dsl
+
 all: manual
 
-JADE=jade
+#JADE=jade
+JADE=openjade
 
 manual: manual.txt manual.ps manual.html
 
index f125950..4d247ca 100644 (file)
@@ -2,7 +2,7 @@
  * aout_internal.h : internal defines for audio output
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: aout_internal.h,v 1.5 2002/08/14 00:43:51 massiot Exp $
+ * $Id: aout_internal.h,v 1.6 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -27,8 +27,7 @@
 typedef struct aout_alloc_t
 {
     int                     i_alloc_type;
-    int                     i_bytes_per_sec; /* -1 if only the alloc_type is
-                                              * relevant. */
+    int                     i_bytes_per_sec;
 } aout_alloc_t;
 
 #define AOUT_ALLOC_NONE     0
@@ -86,6 +85,7 @@ typedef struct aout_fifo_t
     vlc_mutex_t             lock;
     struct aout_buffer_t *  p_first;
     struct aout_buffer_t ** pp_last;
+    mtime_t                 end_date;
 } aout_fifo_t;
 
 static inline void aout_FifoInit( struct aout_instance_t * p_aout,
@@ -94,6 +94,7 @@ static inline void aout_FifoInit( struct aout_instance_t * p_aout,
     vlc_mutex_init( (vlc_object_t *)p_aout, &p_fifo->lock );
     p_fifo->p_first = NULL;
     p_fifo->pp_last = &p_fifo->p_first;
+    p_fifo->end_date = 0;
 }
 
 static inline void aout_FifoPush( struct aout_instance_t * p_aout,
@@ -104,10 +105,42 @@ static inline void aout_FifoPush( struct aout_instance_t * p_aout,
     *p_fifo->pp_last = p_buffer;
     p_fifo->pp_last = &p_buffer->p_next;
     *p_fifo->pp_last = NULL;
+    /* Enforce continuity of the stream. */
+    if ( p_fifo->end_date )
+    {
+        mtime_t duration = p_buffer->end_date - p_buffer->start_date;
+
+        p_buffer->start_date = p_fifo->end_date;
+        p_buffer->end_date = p_fifo->end_date =
+                             p_buffer->start_date + duration;
+    }
+    else
+    {
+        p_fifo->end_date = p_buffer->end_date;
+    }
     vlc_mutex_unlock( &p_fifo->lock );
 }
 
-/* This function supposes there is one buffer in p_fifo. */
+static inline mtime_t aout_FifoNextStart( struct aout_instance_t * p_aout,
+                                          aout_fifo_t * p_fifo )
+{
+    mtime_t end_date;
+    vlc_mutex_lock( &p_fifo->lock );
+    end_date = p_fifo->end_date;
+    vlc_mutex_unlock( &p_fifo->lock );
+    return end_date;
+}
+
+/* Reinit the end_date (for instance after a pause). */
+static inline void aout_FifoSet( struct aout_instance_t * p_aout,
+                                 aout_fifo_t * p_fifo, mtime_t date )
+{
+    vlc_mutex_lock( &p_fifo->lock );
+    p_fifo->end_date = date;
+    vlc_mutex_unlock( &p_fifo->lock );
+}
+
+/* This function supposes there is at least one buffer in p_fifo. */
 static inline aout_buffer_t * aout_FifoPop( struct aout_instance_t * p_aout,
                                             aout_fifo_t * p_fifo )
 {
@@ -164,8 +197,7 @@ typedef struct aout_filter_t
  *****************************************************************************/
 typedef struct aout_mixer_t
 {
-    audio_sample_format_t   input;
-    audio_sample_format_t   output;
+    audio_sample_format_t   mixer;
     aout_alloc_t            output_alloc;
 
     module_t *              p_module;
@@ -188,7 +220,7 @@ struct aout_input_t
 
     aout_fifo_t             fifo;
 
-    mtime_t                 next_packet_date;
+    /* Mixer information */
     byte_t *                p_first_byte_to_mix;
 };
 
@@ -204,12 +236,11 @@ typedef struct aout_output_t
     int                     i_nb_filters;
 
     aout_fifo_t             fifo;
-    mtime_t                 last_date;
 
     struct module_t *       p_module;
     struct aout_sys_t *     p_sys;
     int                  (* pf_setformat)( aout_instance_t * );
-    void                 (* pf_play)( aout_instance_t *, aout_buffer_t * );
+    void                 (* pf_play)( aout_instance_t * );
     int                     i_nb_samples;
 } aout_output_t;
 
@@ -229,8 +260,8 @@ struct aout_instance_t
     int                     i_nb_inputs;
 
     /* Mixer */
-    vlc_mutex_t             mixer_lock;
-    vlc_cond_t              mixer_signal;
+    vlc_cond_t              mixer_signal; /* the associated mutex is
+                                           * p_aout->output.fifo.lock */
     vlc_bool_t              b_mixer_active;
     aout_mixer_t            mixer;
 
@@ -247,8 +278,8 @@ void aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
 int aout_FiltersCreatePipeline( aout_instance_t * p_aout,
                                 aout_filter_t ** pp_filters,
                                 int * pi_nb_filters,
-                                audio_sample_format_t * p_input_format,
-                                audio_sample_format_t * p_output_format );
+                                const audio_sample_format_t * p_input_format,
+                                const audio_sample_format_t * p_output_format );
 void aout_FiltersDestroyPipeline( aout_instance_t * p_aout,
                                   aout_filter_t ** pp_filters,
                                   int i_nb_filters );
index 19a8878..2878d46 100644 (file)
@@ -2,7 +2,7 @@
  * audio_output.h : audio output interface
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: audio_output.h,v 1.59 2002/08/14 00:43:51 massiot Exp $
+ * $Id: audio_output.h,v 1.60 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -32,7 +32,12 @@ struct audio_sample_format_t
     int                 i_rate;
     int                 i_channels;
     /* Optional - for A52, SPDIF and DTS types */
-    int                 i_bytes_per_sec;
+    int                 i_bytes_per_frame;
+    int                 i_frame_length;
+    /* Please note that it may be completely arbitrary - buffers are not
+     * obliged to contain a integral number of so-called "frames". It's
+     * just here for the division :
+     * i_nb_samples * i_bytes_per_frame / i_frame_length */
 };
 
 #define AOUT_FMT_MU_LAW     0x00000001
@@ -56,6 +61,12 @@ struct audio_sample_format_t
       && ((p_first)->i_channels == (p_second)->i_channels                   \
            || (p_first)->i_channels == -1 || (p_second)->i_channels == -1) )
 
+/* Check if i_rate == i_rate and i_channels == i_channels */
+#define AOUT_FMTS_SIMILAR( p_first, p_second ) (                            \
+    ((p_first)->i_rate == (p_second)->i_rate)                               \
+      && ((p_first)->i_channels == (p_second)->i_channels                   \
+           || (p_first)->i_channels == -1 || (p_second)->i_channels == -1) )
+
 #ifdef WORDS_BIGENDIAN
 #   define AOUT_FMT_S16_NE AOUT_FMT_S16_BE
 #   define AOUT_FMT_U16_NE AOUT_FMT_U16_BE
@@ -103,7 +114,7 @@ struct aout_buffer_t
 {
     byte_t *                p_buffer;
     int                     i_alloc_type;
-    /* i_size is the real size of the buffer (normally unused), i_nb_bytes
+    /* i_size is the real size of the buffer (used for debug ONLY), i_nb_bytes
      * is the number of significative bytes in it. */
     size_t                  i_size, i_nb_bytes;
     int                     i_nb_samples;
@@ -125,7 +136,7 @@ VLC_EXPORT( void,              aout_DeleteInstance, ( aout_instance_t * ) );
 VLC_EXPORT( aout_buffer_t *, aout_BufferNew, ( aout_instance_t *, aout_input_t *, size_t ) );
 VLC_EXPORT( void, aout_BufferDelete, ( aout_instance_t *, aout_input_t *, aout_buffer_t * ) );
 VLC_EXPORT( void, aout_BufferPlay, ( aout_instance_t *, aout_input_t *, aout_buffer_t * ) );
-VLC_EXPORT( int, aout_FormatToByterate, ( audio_sample_format_t * p_format ) );
+VLC_EXPORT( void, aout_FormatPrepare, ( audio_sample_format_t * p_format ) );
 
 /* From input.c : */
 #define aout_InputNew(a,b,c) __aout_InputNew(VLC_OBJECT(a),b,c)
index 9cf4bfa..049d9d0 100644 (file)
  * will cause the calling thread to sleep */
 #define AOUT_MAX_PREPARE_TIME           (mtime_t)(.5*CLOCK_FREQ)
 
+/* Max acceptable delay between the coded PTS and the actual presentation
+ * time, without resampling */
+#define AOUT_PTS_TOLERANCE              (mtime_t)(.03*CLOCK_FREQ)
+
 /*****************************************************************************
  * Video configuration
  *****************************************************************************/
index a20ea8d..8f9d6b2 100644 (file)
@@ -1,4 +1,4 @@
-/* include/defs.h.in.  Generated automatically from configure.in by autoheader 2.13.  */
+/* include/defs.h.in.  Generated automatically from configure.in by autoheader.  */
 
 /* Define if using alloca.c.  */
 #undef C_ALLOCA
index 9f163fe..421788b 100644 (file)
@@ -36,7 +36,6 @@ struct module_symbols_t
     int (* __vlc_thread_create_inner) ( vlc_object_t *, char *, int, char *, void * ( * ) ( void * ), vlc_bool_t ) ;
     int (* __vlc_threads_end_inner) ( vlc_object_t * ) ;
     int (* __vlc_threads_init_inner) ( vlc_object_t * ) ;
-    int (* aout_FormatToByterate_inner) ( audio_sample_format_t * p_format ) ;
     int (* input_AccessInit_inner) ( input_thread_t * ) ;
     int (* input_AddInfo_inner) ( input_info_category_t *, char *, char *, ... ) ;
     int (* input_ChangeArea_inner) ( input_thread_t *, input_area_t * ) ;
@@ -104,6 +103,7 @@ struct module_symbols_t
     void (* aout_BufferDelete_inner) ( aout_instance_t *, aout_input_t *, aout_buffer_t * ) ;
     void (* aout_BufferPlay_inner) ( aout_instance_t *, aout_input_t *, aout_buffer_t * ) ;
     void (* aout_DeleteInstance_inner) ( aout_instance_t * ) ;
+    void (* aout_FormatPrepare_inner) ( audio_sample_format_t * p_format ) ;
     void (* aout_InputDelete_inner) ( aout_instance_t *, aout_input_t * ) ;
     void (* config_Duplicate_inner) ( module_t *, module_config_t * ) ;
     void (* config_SetCallbacks_inner) ( module_config_t *, module_config_t * ) ;
@@ -211,7 +211,7 @@ struct module_symbols_t
 #   define aout_BufferNew p_symbols->aout_BufferNew_inner
 #   define aout_BufferPlay p_symbols->aout_BufferPlay_inner
 #   define aout_DeleteInstance p_symbols->aout_DeleteInstance_inner
-#   define aout_FormatToByterate p_symbols->aout_FormatToByterate_inner
+#   define aout_FormatPrepare p_symbols->aout_FormatPrepare_inner
 #   define aout_InputDelete p_symbols->aout_InputDelete_inner
 #   define aout_OutputNextBuffer p_symbols->aout_OutputNextBuffer_inner
 #   define config_Duplicate p_symbols->config_Duplicate_inner
index c3926a6..6459778 100644 (file)
@@ -2,7 +2,7 @@
  * fixed32float32.c : converter from fixed32 to float32 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: fixed32tofloat32.c,v 1.4 2002/08/13 16:11:15 sam Exp $
+ * $Id: fixed32tofloat32.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *
@@ -64,8 +64,7 @@ static int Create( vlc_object_t *p_this )
         return -1;
     }
 
-    if ( p_filter->input.i_rate != p_filter->output.i_rate
-          || p_filter->input.i_channels != p_filter->output.i_channels )
+    if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
     {
         return -1;
     }
@@ -73,8 +72,6 @@ static int Create( vlc_object_t *p_this )
     p_filter->pf_do_work = DoWork;
     p_filter->b_in_place = 1;
 
-    printf( "fixed32tofloat32 spawned.\n" );
-
     return 0;
 }
 
index c63523c..80f8b17 100644 (file)
@@ -2,7 +2,7 @@
  * fixed32tos16.c : converter from fixed32 to signed 16 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: fixed32tos16.c,v 1.3 2002/08/13 16:11:15 sam Exp $
+ * $Id: fixed32tos16.c,v 1.4 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *
@@ -64,8 +64,7 @@ static int Create( vlc_object_t *p_this )
         return -1;
     }
 
-    if ( p_filter->input.i_rate != p_filter->output.i_rate
-          || p_filter->input.i_channels != p_filter->output.i_channels )
+    if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
     {
         return -1;
     }
@@ -73,7 +72,6 @@ static int Create( vlc_object_t *p_this )
     p_filter->pf_do_work = DoWork;
     p_filter->b_in_place = 1;
 
-    printf( "fixed32tos16 spawned.\n" );
     return 0;
 }
 
index 0353d77..05cde78 100644 (file)
@@ -2,7 +2,7 @@
  * float32tos16.c : converter from float32 to signed 16 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32tos16.c,v 1.7 2002/08/14 00:23:59 massiot Exp $
+ * $Id: float32tos16.c,v 1.8 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -64,13 +64,11 @@ static int Create( vlc_object_t *p_this )
         return -1;
     }
 
-    if ( p_filter->input.i_rate != p_filter->output.i_rate
-          || p_filter->input.i_channels != p_filter->output.i_channels )
+    if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
     {
         return -1;
     }
 
-
     p_filter->pf_do_work = DoWork;
     p_filter->b_in_place = 1;
 
index da61855..9f0f92f 100644 (file)
@@ -2,7 +2,7 @@
  * float32tos8.c : converter from float32 to signed 8 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32tos8.c,v 1.2 2002/08/14 00:23:59 massiot Exp $
+ * $Id: float32tos8.c,v 1.3 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Xavier Maillard <zedek@fxgsproject.org>
  *
@@ -64,13 +64,11 @@ static int Create( vlc_object_t *p_this )
         return -1;
     }
 
-    if ( p_filter->input.i_rate != p_filter->output.i_rate
-          || p_filter->input.i_channels != p_filter->output.i_channels )
+    if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
     {
         return -1;
     }
 
-
     p_filter->pf_do_work = DoWork;
     p_filter->b_in_place = 1;
 
index b5aa6a3..723983e 100644 (file)
@@ -2,7 +2,7 @@
  * float32tou16.c : converter from float32 to unsigned 16 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32tou16.c,v 1.2 2002/08/14 00:23:59 massiot Exp $
+ * $Id: float32tou16.c,v 1.3 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Xavier Maillard <zedek@fxgsproject.org>
  *
@@ -64,8 +64,7 @@ static int Create( vlc_object_t *p_this )
         return -1;
     }
 
-    if ( p_filter->input.i_rate != p_filter->output.i_rate
-          || p_filter->input.i_channels != p_filter->output.i_channels )
+    if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
     {
         return -1;
     }
index 185cd02..052e048 100644 (file)
@@ -2,7 +2,7 @@
  * float32tou8.c : converter from float32 to unsigned 8 bits integer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: float32tou8.c,v 1.2 2002/08/14 00:23:59 massiot Exp $
+ * $Id: float32tou8.c,v 1.3 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Xavier Maillard <zedek@fxgsproject.org>
  *
@@ -64,13 +64,11 @@ static int Create( vlc_object_t *p_this )
         return -1;
     }
 
-    if ( p_filter->input.i_rate != p_filter->output.i_rate
-          || p_filter->input.i_channels != p_filter->output.i_channels )
+    if ( !AOUT_FMTS_SIMILAR( &p_filter->input, &p_filter->output ) )
     {
         return -1;
     }
 
-
     p_filter->pf_do_work = DoWork;
     p_filter->b_in_place = 1;
 
index 3070569..a754f3b 100644 (file)
@@ -2,7 +2,7 @@
  * spdif.c : dummy mixer for S/PDIF output (1 input only)
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: spdif.c,v 1.3 2002/08/14 00:23:59 massiot Exp $
+ * $Id: spdif.c,v 1.4 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -56,7 +56,7 @@ static int Create( vlc_object_t *p_this )
 {
     aout_instance_t * p_aout = (aout_instance_t *)p_this;
 
-    if ( !AOUT_FMT_NON_LINEAR(&p_aout->mixer.output) )
+    if ( !AOUT_FMT_NON_LINEAR(&p_aout->mixer.mixer) )
     {
         return -1;
     }
index e534793..e681848 100644 (file)
@@ -2,7 +2,7 @@
  * trivial.c : trivial mixer plug-in (1 input, no downmixing)
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: trivial.c,v 1.4 2002/08/12 22:12:50 massiot Exp $
+ * $Id: trivial.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -56,8 +56,8 @@ static int Create( vlc_object_t *p_this )
 {
     aout_instance_t * p_aout = (aout_instance_t *)p_this;
 
-    if ( p_aout->mixer.output.i_format != AOUT_FMT_FLOAT32
-          && p_aout->mixer.output.i_format != AOUT_FMT_FIXED32 )
+    if ( p_aout->mixer.mixer.i_format != AOUT_FMT_FLOAT32
+          && p_aout->mixer.mixer.i_format != AOUT_FMT_FIXED32 )
     {
         return -1;
     }
@@ -67,6 +67,7 @@ static int Create( vlc_object_t *p_this )
     return 0;
 }
 
+#if 0
 /*****************************************************************************
  * SparseCopy: trivially downmix or upmix a buffer
  *****************************************************************************/
@@ -85,6 +86,7 @@ static void SparseCopy( u32 * p_dest, const u32 * p_src, size_t i_len,
         p_dest += i_output_stride;
     }
 }
+#endif
 
 /*****************************************************************************
  * DoWork: mix a new output buffer
@@ -92,111 +94,44 @@ static void SparseCopy( u32 * p_dest, const u32 * p_src, size_t i_len,
 static void DoWork( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
 {
     aout_input_t * p_input = p_aout->pp_inputs[0];
+    int i_nb_bytes = p_buffer->i_nb_samples * sizeof(u32)
+                      * p_aout->mixer.mixer.i_channels;
+    byte_t * p_in = p_input->p_first_byte_to_mix;
+    byte_t * p_out = p_buffer->p_buffer;
 
-    if ( p_input->input.i_channels == p_aout->mixer.output.i_channels )
+    for ( ; ; )
     {
-        int i_nb_bytes = p_buffer->i_nb_samples * sizeof(u32)
-                          * p_input->input.i_channels;
-        byte_t * p_in = (p_input->p_first_byte_to_mix == NULL) ?
-                        p_input->fifo.p_first->p_buffer :
-                        p_input->p_first_byte_to_mix;
-        byte_t * p_out = p_buffer->p_buffer;
-
-        for ( ; ; )
+        ptrdiff_t i_available_bytes = (p_input->fifo.p_first->p_buffer
+                                        - p_in)
+                                        + p_input->fifo.p_first->i_nb_samples
+                                           * sizeof(u32)
+                                           * p_aout->mixer.mixer.i_channels;
+
+        if ( i_available_bytes < i_nb_bytes )
         {
-            ptrdiff_t i_available_bytes = (p_input->fifo.p_first->p_buffer
-                                           - p_in)
-                                           + p_input->fifo.p_first->i_nb_samples
-                                              * sizeof(u32)
-                                              * p_input->input.i_channels;
+            aout_buffer_t * p_old_buffer;
 
-            if ( i_available_bytes < i_nb_bytes )
-            {
-                aout_buffer_t * p_old_buffer;
-
-                if ( i_available_bytes > 0 )
-                    p_aout->p_vlc->pf_memcpy( p_out, p_in, i_available_bytes );
-                i_nb_bytes -= i_available_bytes;
-                p_out += i_available_bytes;
-
-                /* Next buffer */
-                p_old_buffer = aout_FifoPop( p_aout, &p_input->fifo );
-                aout_BufferFree( p_old_buffer );
-                if ( p_input->fifo.p_first == NULL )
-                {
-                    msg_Err( p_aout, "internal amix error" );
-                    return;
-                }
-                p_in = p_input->fifo.p_first->p_buffer;
-            }
-            else
+            if ( i_available_bytes > 0 )
+                p_aout->p_vlc->pf_memcpy( p_out, p_in, i_available_bytes );
+            i_nb_bytes -= i_available_bytes;
+            p_out += i_available_bytes;
+
+            /* Next buffer */
+            p_old_buffer = aout_FifoPop( p_aout, &p_input->fifo );
+            aout_BufferFree( p_old_buffer );
+            if ( p_input->fifo.p_first == NULL )
             {
-                p_aout->p_vlc->pf_memcpy( p_out, p_in, i_nb_bytes );
-                p_input->p_first_byte_to_mix = p_in + i_nb_bytes;
-                break;
+                msg_Err( p_aout, "internal amix error" );
+                return;
             }
+            p_in = p_input->fifo.p_first->p_buffer;
         }
-    }
-    else
-    {
-        /* Downmixing or upmixing. */
-        int i_nb_samples = p_buffer->i_nb_samples;
-        u32 * p_in = (p_input->p_first_byte_to_mix == NULL) ?
-                     (u32 *)p_input->fifo.p_first->p_buffer :
-                     (u32 *)p_input->p_first_byte_to_mix;
-        u32 * p_out = (u32 *)p_buffer->p_buffer;
-
-        if ( p_input->input.i_channels < p_aout->mixer.output.i_channels )
+        else
         {
-            /* Zero out the destination buffer, to avoid static on unavailable
-             * channels. */
-            memset( p_buffer->p_buffer, 0,
-                    p_buffer->i_nb_samples * sizeof(u32)
-                     * p_aout->mixer.output.i_channels );
-        }
-
-        for ( ; ; )
-        {
-            ptrdiff_t i_available_bytes = (p_input->fifo.p_first->p_buffer
-                                           - (byte_t *)p_in)
-                                           + p_input->fifo.p_first->i_nb_samples
-                                              * sizeof(u32)
-                                              * p_input->input.i_channels;
-            int i_available_samples = i_available_bytes
-                                       / p_input->input.i_channels
-                                       / sizeof(u32);
-
-            if ( i_available_samples < i_nb_samples )
-            {
-                aout_buffer_t * p_old_buffer;
-
-                if ( i_available_samples > 0 )
-                    SparseCopy( p_out, p_in, i_available_samples,
-                                p_aout->mixer.output.i_channels,
-                                p_input->input.i_channels );
-                i_nb_samples -= i_available_samples;
-                p_out += i_available_samples * p_aout->mixer.output.i_channels;
-
-                /* Next buffer */
-                p_old_buffer = aout_FifoPop( p_aout, &p_input->fifo );
-                aout_BufferFree( p_old_buffer );
-                if ( p_input->fifo.p_first == NULL )
-                {
-                    msg_Err( p_aout, "internal amix error" );
-                    return;
-                }
-                p_in = (u32 *)p_input->fifo.p_first->p_buffer;
-            }
-            else
-            {
-                SparseCopy( p_out, p_in, i_nb_samples,
-                            p_aout->mixer.output.i_channels,
-                            p_input->input.i_channels );
-                p_input->p_first_byte_to_mix = (byte_t *)p_in
-                               + i_nb_samples * p_input->input.i_channels
-                                  * sizeof(u32);
-                break;
-            }
+            if ( i_nb_bytes > 0 )
+                p_aout->p_vlc->pf_memcpy( p_out, p_in, i_nb_bytes );
+            p_input->p_first_byte_to_mix = p_in + i_nb_bytes;
+            break;
         }
     }
 }
index 8ff9645..a8da821 100644 (file)
@@ -2,7 +2,7 @@
  * alsa.c : alsa plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: alsa.c,v 1.4 2002/08/19 17:07:14 bozo Exp $
+ * $Id: alsa.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Henri Fallon <henri@videolan.org> - Original Author
  *          Jeffrey Baker <jwbaker@acm.org> - Port to ALSA 1.0 API
@@ -79,8 +79,7 @@ static int  Open         ( vlc_object_t * );
 static void Close        ( vlc_object_t * );
 
 static int  SetFormat    ( aout_instance_t * );
-static void Play         ( aout_instance_t *,
-                           aout_buffer_t * );
+static void Play         ( aout_instance_t * );
 
 static int  ALSAThread   ( aout_instance_t * );
 static void ALSAFill     ( aout_instance_t * );
@@ -343,9 +342,8 @@ static int SetFormat( aout_instance_t * p_aout )
 /*****************************************************************************
  * Play: queue a buffer for playing by ALSAThread
  *****************************************************************************/
-static void Play( aout_instance_t *p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t *p_aout )
 {
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
 }
 
 /*****************************************************************************
index 80c1769..19f5a81 100644 (file)
@@ -59,7 +59,7 @@ static int  Open         ( vlc_object_t * );
 static void Close        ( vlc_object_t * );
 
 static int  SetFormat    ( aout_instance_t * );
-static void Play         ( aout_instance_t *, aout_buffer_t * );
+static void Play         ( aout_instance_t * );
 static int  aRtsThread   ( aout_instance_t * );
 
 /*****************************************************************************
@@ -159,9 +159,8 @@ static int SetFormat( aout_instance_t *p_aout )
 /*****************************************************************************
  * Play: queue a buffer for playing by aRtsThread
  *****************************************************************************/
-static void Play( aout_instance_t *p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t *p_aout );
 {
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
 }
 
 /*****************************************************************************
index c1138a1..33e91c4 100644 (file)
@@ -2,7 +2,7 @@
  * esd.c : EsounD module
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: esd.c,v 1.6 2002/08/14 13:10:44 sam Exp $
+ * $Id: esd.c,v 1.7 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -58,7 +58,7 @@ static int  Open         ( vlc_object_t * );
 static void Close        ( vlc_object_t * );
 
 static int  SetFormat    ( aout_instance_t * );
-static void Play         ( aout_instance_t *, aout_buffer_t * );
+static void Play         ( aout_instance_t * );
 static int  ESDThread    ( aout_instance_t * );
 
 /*****************************************************************************
@@ -160,9 +160,8 @@ static int SetFormat( aout_instance_t *p_aout )
 /*****************************************************************************
  * Play: queue a buffer for playing by ESDThread
  *****************************************************************************/
-static void Play( aout_instance_t *p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t *p_aout )
 {
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
 }
 
 /*****************************************************************************
index 84de6fc..564aa03 100644 (file)
@@ -2,7 +2,7 @@
  * file.c : audio output which writes the samples to a file
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: file.c,v 1.5 2002/08/14 00:23:59 massiot Exp $
+ * $Id: file.c,v 1.6 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -42,7 +42,7 @@
 static int     Open        ( vlc_object_t * );
 static void    Close       ( vlc_object_t * );
 static int     SetFormat   ( aout_instance_t * );
-static void    Play        ( aout_instance_t *, aout_buffer_t * );
+static void    Play        ( aout_instance_t * );
 
 /*****************************************************************************
  * Module descriptor
@@ -133,8 +133,8 @@ static int SetFormat( aout_instance_t * p_aout )
     if ( p_aout->output.output.i_format == AOUT_FMT_SPDIF )
     {
         p_aout->output.i_nb_samples = A52_FRAME_NB;
-        p_aout->output.output.i_bytes_per_sec = p_aout->output.output.i_rate
-                                     * AOUT_SPDIF_SIZE / A52_FRAME_NB;
+        p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
+        p_aout->output.output.i_frame_length = A52_FRAME_NB;
     }
     else
     {
@@ -146,8 +146,9 @@ static int SetFormat( aout_instance_t * p_aout )
 /*****************************************************************************
  * Play: pretend to play a sound
  *****************************************************************************/
-static void Play( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t * p_aout )
 {
+    aout_buffer_t * p_buffer = aout_FifoPop( p_aout, &p_aout->output.fifo );
     if( fwrite( p_buffer->p_buffer, p_buffer->i_nb_bytes, 1,
                 (FILE *)p_aout->output.p_sys ) != 1 )
     {
index 5c66b0e..7e2e1f2 100644 (file)
@@ -2,7 +2,7 @@
  * oss.c : OSS /dev/dsp module for vlc
  *****************************************************************************
  * Copyright (C) 2000-2002 VideoLAN
- * $Id: oss.c,v 1.10 2002/08/14 00:43:52 massiot Exp $
+ * $Id: oss.c,v 1.11 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -75,7 +75,7 @@ static int  Open         ( vlc_object_t * );
 static void Close        ( vlc_object_t * );
 
 static int  SetFormat    ( aout_instance_t * );
-static void Play         ( aout_instance_t *, aout_buffer_t * );
+static void Play         ( aout_instance_t * );
 static int  OSSThread    ( aout_instance_t * );
 
 /*****************************************************************************
@@ -171,8 +171,8 @@ static int SetFormat( aout_instance_t *p_aout )
     if ( p_aout->output.output.i_format == AOUT_FMT_SPDIF )
     {
         p_aout->output.i_nb_samples = A52_FRAME_NB;
-        p_aout->output.output.i_bytes_per_sec = p_aout->output.output.i_rate
-                                     * AOUT_SPDIF_SIZE / A52_FRAME_NB;
+        p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
+        p_aout->output.output.i_frame_length = A52_FRAME_NB;
     }
     else
     {
@@ -241,9 +241,8 @@ static int SetFormat( aout_instance_t *p_aout )
 /*****************************************************************************
  * Play: queue a buffer for playing by OSSThread
  *****************************************************************************/
-static void Play( aout_instance_t *p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t *p_aout )
 {
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
 }
 
 /*****************************************************************************
index 6224bf3..6ab0a13 100644 (file)
@@ -2,7 +2,7 @@
  * sdl.c : SDL audio output plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2002 VideoLAN
- * $Id: sdl.c,v 1.2 2002/08/14 00:43:52 massiot Exp $
+ * $Id: sdl.c,v 1.3 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -47,7 +47,7 @@ static int  Open        ( vlc_object_t * );
 static void Close       ( vlc_object_t * );
 
 static int  SetFormat   ( aout_instance_t * );
-static void Play        ( aout_instance_t *, aout_buffer_t * );
+static void Play        ( aout_instance_t * );
 
 static void SDLCallback ( void *, Uint8 *, int );
 
@@ -129,13 +129,8 @@ static int SetFormat( aout_instance_t *p_aout )
 /*****************************************************************************
  * Play: play a sound samples buffer
  *****************************************************************************/
-static void Play( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t * p_aout )
 {
-    SDL_LockAudio();                                     /* Stop callbacking */
-
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
-
-    SDL_UnlockAudio();                                  /* go on callbacking */
 }
 
 /*****************************************************************************
index 1046829..dbd23ad 100644 (file)
@@ -2,7 +2,7 @@
  * waveout.c : Windows waveOut plugin for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: waveout.c,v 1.3 2002/08/14 00:43:52 massiot Exp $
+ * $Id: waveout.c,v 1.4 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *      
@@ -45,7 +45,7 @@ static int  Open         ( vlc_object_t * );
 static void Close        ( vlc_object_t * );                   
 
 static int  SetFormat    ( aout_instance_t * );  
-static void Play         ( aout_instance_t *, aout_buffer_t * );
+static void Play         ( aout_instance_t * );
 
 /* local functions */
 static int OpenWaveOut   ( aout_instance_t *p_aout, int i_format,
@@ -186,9 +186,8 @@ static int SetFormat( aout_instance_t *p_aout )
  * This doesn't actually play the buffer. This just stores the buffer so it
  * can be played by the callback thread.
  *****************************************************************************/
-static void Play( aout_instance_t *p_aout, aout_buffer_t *p_buffer )
+static void Play( aout_instance_t *p_aout )
 {
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
 }
 
 /*****************************************************************************
index f48e40d..d59d022 100644 (file)
@@ -4,7 +4,7 @@
  *   (http://liba52.sf.net/).
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: a52.c,v 1.4 2002/08/14 00:23:59 massiot Exp $
+ * $Id: a52.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -304,7 +304,7 @@ static int DecodeFrame( a52_thread_t * p_dec, byte_t * p_frame_buffer )
                                A52_FRAME_NB );
     if ( p_buffer == NULL ) return -1;
     p_buffer->start_date = p_dec->last_date;
-    p_dec->last_date += (mtime_t)(A52_FRAME_NB * 1000000)
+    p_dec->last_date += (mtime_t)A52_FRAME_NB * 1000000
                           / p_dec->output_format.i_rate;
     p_buffer->end_date = p_dec->last_date;
 
index 758f9f7..862dc03 100644 (file)
@@ -2,7 +2,7 @@
  * spdif.c: A52 pass-through to external decoder with enabled soundcard
  *****************************************************************************
  * Copyright (C) 2001-2002 VideoLAN
- * $Id: spdif.c,v 1.5 2002/08/14 00:23:59 massiot Exp $
+ * $Id: spdif.c,v 1.6 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: St├ęphane Borel <stef@via.ecp.fr>
  *          Juha Yrjola <jyrjola@cc.hut.fi>
@@ -170,7 +170,7 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
 
         if( (p_dec->p_aout_input != NULL) &&
             ( (p_dec->output_format.i_rate != i_rate)
-                || (p_dec->output_format.i_bytes_per_sec != i_bit_rate * 1000 / 8) ) )
+                || (p_dec->output_format.i_bytes_per_frame != i_frame_size) ) )
         {
             /* Parameters changed - this should not happen. */
             aout_InputDelete( p_dec->p_aout, p_dec->p_aout_input );
@@ -181,7 +181,8 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
         if( p_dec->p_aout_input == NULL )
         {
             p_dec->output_format.i_rate = i_rate;
-            p_dec->output_format.i_bytes_per_sec = i_bit_rate * 1000 / 8;
+            p_dec->output_format.i_bytes_per_frame = i_frame_size;
+            p_dec->output_format.i_frame_length = A52_FRAME_NB;
             /* p_dec->output_format.i_channels = i_channels; */
             p_dec->p_aout_input = aout_InputNew( p_dec->p_fifo,
                                                  &p_dec->p_aout,
index c56b5a5..6abb59b 100644 (file)
@@ -2,7 +2,7 @@
  * aout.m: CoreAudio output plugin
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: aout.m,v 1.4 2002/08/14 00:43:52 massiot Exp $
+ * $Id: aout.m,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Colin Delacroix <colin@zoy.org>
  *          Jon Lech Johansen <jon-vl@nanocrew.net>
@@ -58,8 +58,7 @@ struct aout_sys_t
  * Local prototypes.
  *****************************************************************************/
 static int      SetFormat       ( aout_instance_t *p_aout );
-static void     Play            ( aout_instance_t *p_aout,
-                                  aout_buffer_t *p_buffer );
+static void     Play            ( aout_instance_t *p_aout );
 
 static OSStatus IOCallback      ( AudioDeviceID inDevice,
                                   const AudioTimeStamp *inNow, 
@@ -139,14 +138,10 @@ static int SetFormat( aout_instance_t * p_aout )
                  p_aout->output.output.i_format );
         return -1;
     }
-    p_sys->stream_format.mFormatFlags |=
-        kLinearPCMFormatFlagIsFloat;
 
     /* Set sample rate and channels per frame */
-    p_sys->stream_format.mSampleRate
-                 = p_aout->output.output.i_rate; 
-    p_sys->stream_format.mChannelsPerFrame
-                 = p_aout->output.output.i_channels;
+    p_aout->output.output.i_rate = p_sys->stream_format.mSampleRate;
+    p_aout->output.output.i_channels = p_sys->stream_format.mChannelsPerFrame;
 
     /* Get the buffer size that the device uses for IO */
     i_param_size = sizeof( p_sys->i_buffer_size );
@@ -186,8 +181,9 @@ msg_Dbg( p_aout, "toto : %d", p_sys->i_buffer_size );
     }
 
     /* Let's pray for the following operation to be atomic... */
-    p_sys->clock_diff = mdate()
-         - AudioConvertHostTimeToNanos(AudioGetCurrentHostTime()) / 1000;
+    p_sys->clock_diff = - (mtime_t)AudioConvertHostTimeToNanos(
+                                 AudioGetCurrentHostTime()) / 1000;
+    p_sys->clock_diff += mdate();
 
     return 0;
 }
@@ -214,9 +210,8 @@ void E_(CloseAudio)( aout_instance_t * p_aout )
 /*****************************************************************************
  * Play: queue a buffer for playing by IOCallback
  *****************************************************************************/
-static void Play( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t * p_aout )
 {
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
 }
 
 /*****************************************************************************
index 3c40338..3799247 100644 (file)
@@ -2,7 +2,7 @@
  * aout_dummy.c : dummy audio output plugin
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: aout.c,v 1.4 2002/08/14 00:23:59 massiot Exp $
+ * $Id: aout.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -39,7 +39,7 @@
  * Local prototypes.
  *****************************************************************************/
 static int     SetFormat   ( aout_instance_t * );
-static void    Play        ( aout_instance_t *, aout_buffer_t * );
+static void    Play        ( aout_instance_t * );
 
 /*****************************************************************************
  * OpenAudio: open a dummy audio device
@@ -62,8 +62,8 @@ static int SetFormat( aout_instance_t * p_aout )
     if ( p_aout->output.output.i_format == AOUT_FMT_SPDIF )
     {
         p_aout->output.i_nb_samples = A52_FRAME_NB;
-        p_aout->output.output.i_bytes_per_sec = p_aout->output.output.i_rate
-                                     * AOUT_SPDIF_SIZE / A52_FRAME_NB;
+        p_aout->output.output.i_bytes_per_frame = AOUT_SPDIF_SIZE;
+        p_aout->output.output.i_frame_length = A52_FRAME_NB;
     }
     else
     {
@@ -75,8 +75,9 @@ static int SetFormat( aout_instance_t * p_aout )
 /*****************************************************************************
  * Play: pretend to play a sound
  *****************************************************************************/
-static void Play( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
+static void Play( aout_instance_t * p_aout )
 {
+    aout_buffer_t * p_buffer = aout_FifoPop( p_aout, &p_aout->output.fifo );
     aout_BufferFree( p_buffer );
 }
 
index e654a6f..59ee239 100644 (file)
@@ -2,7 +2,7 @@
  * aout.c: Windows DirectX audio output method
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: aout.c,v 1.4 2002/08/14 00:43:52 massiot Exp $
+ * $Id: aout.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -97,7 +97,7 @@ void E_(CloseAudio) ( vlc_object_t *p_this );
  * Local prototypes.
  *****************************************************************************/
 static int  SetFormat ( aout_instance_t * );
-static void Play      ( aout_instance_t *, aout_buffer_t * );
+static void Play      ( aout_instance_t * );
 
 /* local functions */
 static int  DirectxCreateSecondaryBuffer ( aout_instance_t * );
@@ -248,9 +248,8 @@ static int SetFormat( aout_instance_t *p_aout )
  * This doesn't actually play the buffer. This just stores the buffer so it
  * can be played by the callback thread.
  *****************************************************************************/
-static void Play( aout_instance_t *p_aout, aout_buffer_t *p_buffer )
+static void Play( aout_instance_t *p_aout )
 {
-    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
 }
 
 /*****************************************************************************
index ce4e8f4..28205ea 100644 (file)
@@ -2,7 +2,7 @@
  * audio_output.c : audio output instance
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: audio_output.c,v 1.96 2002/08/14 13:10:44 sam Exp $
+ * $Id: audio_output.c,v 1.97 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -57,7 +57,6 @@ aout_instance_t * __aout_NewInstance( vlc_object_t * p_parent )
     p_aout->b_change_requested = 0;
     p_aout->i_nb_inputs = 0;
 
-    vlc_mutex_init( p_parent, &p_aout->mixer_lock );
     vlc_cond_init( p_parent, &p_aout->mixer_signal );
     p_aout->b_mixer_active = 0;
 
@@ -73,7 +72,6 @@ void aout_DeleteInstance( aout_instance_t * p_aout )
 {
     vlc_mutex_destroy( &p_aout->input_lock );
     vlc_cond_destroy( &p_aout->input_signal );
-    vlc_mutex_destroy( &p_aout->mixer_lock );
     vlc_cond_destroy( &p_aout->mixer_signal );
 
     /* Free structure. */
@@ -94,10 +92,8 @@ aout_buffer_t * aout_BufferNew( aout_instance_t * p_aout,
     /* This necessarily allocates in the heap. */
     aout_BufferAlloc( &p_input->input_alloc, duration, NULL, p_buffer );
     p_buffer->i_nb_samples = i_nb_samples;
-    p_buffer->i_nb_bytes = duration
-                              * aout_FormatToByterate( &p_input->input )
-                              / 1000000;
-    p_buffer->i_nb_bytes &= ~0x3;
+    p_buffer->i_nb_bytes = i_nb_samples * p_input->input.i_bytes_per_frame
+                              / p_input->input.i_frame_length;
 
     if ( p_buffer == NULL )
     {
@@ -126,8 +122,6 @@ void aout_BufferDelete( aout_instance_t * p_aout, aout_input_t * p_input,
 void aout_BufferPlay( aout_instance_t * p_aout, aout_input_t * p_input,
                       aout_buffer_t * p_buffer )
 {
-    vlc_bool_t b_run_mixer = 0;
-
     if ( p_buffer->start_date == 0 )
     {
         msg_Warn( p_aout, "non-dated buffer received" );
@@ -146,28 +140,13 @@ void aout_BufferPlay( aout_instance_t * p_aout, aout_input_t * p_input,
     aout_InputPlay( p_aout, p_input, p_buffer );
 
     /* Run the mixer if it is able to run. */
-    vlc_mutex_lock( &p_aout->mixer_lock );
-    if ( !p_aout->b_mixer_active )
-    {
-        p_aout->b_mixer_active = 1;
-        b_run_mixer = 1;
-    }
-    vlc_mutex_unlock( &p_aout->mixer_lock );
-
-    if ( b_run_mixer )
-    {
-        aout_MixerRun( p_aout );
-        vlc_mutex_lock( &p_aout->mixer_lock );
-        p_aout->b_mixer_active = 0;
-        vlc_cond_broadcast( &p_aout->mixer_signal );
-        vlc_mutex_unlock( &p_aout->mixer_lock );
-    }
+    aout_MixerRun( p_aout );
 }
 
 /*****************************************************************************
- * aout_FormatToByterate : compute the number of bytes per second
+ * aout_FormatPrepare : compute the number of bytes per frame & frame length
  *****************************************************************************/
-int aout_FormatToByterate( audio_sample_format_t * p_format )
+void aout_FormatPrepare( audio_sample_format_t * p_format )
 {
     int i_result;
 
@@ -193,14 +172,15 @@ int aout_FormatToByterate( audio_sample_format_t * p_format )
     case AOUT_FMT_SPDIF:
     case AOUT_FMT_A52:
     case AOUT_FMT_DTS:
-        /* For these formats the caller has to indicate the number of bytes
-         * per second it evaluates. */
-        return p_format->i_bytes_per_sec;
+        /* For these formats the caller has to indicate the parameters
+         * by hand. */
+        return;
 
     default:
-        return 0; /* will segfault much sooner... */
+        i_result = 0; /* will segfault much sooner... */
     }
 
-    return i_result * p_format->i_channels * p_format->i_rate;
+    p_format->i_bytes_per_frame = i_result * p_format->i_channels;
+    p_format->i_frame_length = 1;
 }
 
index 7afe654..f4c017b 100644 (file)
@@ -2,7 +2,7 @@
  * filters.c : audio output filters management
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: filters.c,v 1.4 2002/08/14 00:23:59 massiot Exp $
+ * $Id: filters.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
 #include "audio_output.h"
 #include "aout_internal.h"
 
+/*****************************************************************************
+ * FindFilter: find an audio filter for a specific transformation
+ *****************************************************************************/
+static aout_filter_t * FindFilter( aout_instance_t * p_aout,
+                             const audio_sample_format_t * p_input_format,
+                             const audio_sample_format_t * p_output_format )
+{
+    aout_filter_t * p_filter = vlc_object_create( p_aout,
+                                                  sizeof(aout_filter_t) );
+
+    if ( p_filter == NULL ) return NULL;
+    vlc_object_attach( p_filter, p_aout );
+
+    memcpy( &p_filter->input, p_input_format, sizeof(audio_sample_format_t) );
+    memcpy( &p_filter->output, p_output_format,
+            sizeof(audio_sample_format_t) );
+    p_filter->p_module = module_Need( p_filter, "audio filter", NULL );
+    if ( p_filter->p_module == NULL )
+    {
+        vlc_object_detach( p_filter );
+        vlc_object_destroy( p_filter );
+        return NULL;
+    }
+
+    return p_filter;
+}
+
+/*****************************************************************************
+ * SplitConversion: split a conversion in two parts 
+ *****************************************************************************
+ * Returns the number of conversions required by the first part - 0 if only
+ * one conversion was asked.
+ * Beware : p_output_format can be modified during this function if the
+ * developer passed SplitConversion( toto, titi, titi, ... ). That is legal.
+ * SplitConversion( toto, titi, toto, ... ) isn't.
+ *****************************************************************************/
+static int SplitConversion( aout_instance_t * p_aout,
+                             const audio_sample_format_t * p_input_format,
+                             const audio_sample_format_t * p_output_format,
+                             audio_sample_format_t * p_middle_format,
+                             boolean_t b_format_first,
+                             boolean_t b_rate_first )
+{
+    boolean_t b_format =
+             (p_input_format->i_format != p_output_format->i_format);
+    boolean_t b_rate = (p_input_format->i_rate != p_output_format->i_rate);
+    boolean_t b_channels =
+             (p_input_format->i_channels != p_output_format->i_channels);
+    int i_nb_conversions = b_format + b_rate + b_channels;
+
+    if ( i_nb_conversions <= 1 ) return 0;
+
+    memcpy( p_middle_format, p_output_format, sizeof(audio_sample_format_t) );
+
+    if ( i_nb_conversions == 2 )
+    {
+        if ( !b_format )
+        {
+            if ( b_rate_first )
+            {
+                p_middle_format->i_channels = p_input_format->i_channels;
+            }
+            else
+            {
+                p_middle_format->i_rate = p_input_format->i_rate;
+            }
+            return 1;
+        }
+
+        if ( !b_rate )
+        {
+            if ( b_format_first )
+            {
+                p_middle_format->i_channels = p_input_format->i_channels;
+            }
+            else
+            {
+                p_middle_format->i_format = p_input_format->i_format;
+            }
+            return 1;
+        }
+
+        /* !b_channels */
+        if ( b_format_first )
+        {
+            p_middle_format->i_rate = p_input_format->i_rate;
+        }
+        else
+        {
+            p_middle_format->i_format = p_input_format->i_format;
+        }
+        return 1;
+    }
+
+    /* i_nb_conversion == 3 */
+    if ( !b_format_first )
+    {
+        p_middle_format->i_format = p_input_format->i_format;
+    }
+    else if ( !b_rate_first )
+    {
+        p_middle_format->i_channels = p_input_format->i_channels;
+    }
+    else
+    {
+        p_middle_format->i_rate = p_input_format->i_rate;
+    }
+
+    return 2;
+}
+
 /*****************************************************************************
  * aout_FiltersCreatePipeline: create a filters pipeline to transform a sample
  *                             format to another
 int aout_FiltersCreatePipeline( aout_instance_t * p_aout,
                                 aout_filter_t ** pp_filters,
                                 int * pi_nb_filters,
-                                audio_sample_format_t * p_input_format,
-                                audio_sample_format_t * p_output_format )
+                                const audio_sample_format_t * p_input_format,
+                                const audio_sample_format_t * p_output_format )
 {
+    audio_sample_format_t temp_format;
+    boolean_t b_format_first, b_rate_first;
+
     if ( AOUT_FMTS_IDENTICAL( p_input_format, p_output_format ) )
     {
         msg_Dbg( p_aout, "no need for any filter" );
@@ -55,79 +169,105 @@ int aout_FiltersCreatePipeline( aout_instance_t * p_aout,
         return 0;
     }
 
-    pp_filters[0] = vlc_object_create( p_aout, sizeof(aout_filter_t) );
-    if ( pp_filters[0] == NULL )
-    {
-        return -1;
-    }
-    vlc_object_attach( pp_filters[0], p_aout );
+    msg_Dbg( p_aout, "filter(s) format=%d->%d rate=%d->%d channels=%d->%d",
+             p_input_format->i_format, p_output_format->i_format,
+             p_input_format->i_rate, p_output_format->i_rate,
+             p_input_format->i_channels, p_output_format->i_channels );
 
     /* Try to find a filter to do the whole conversion. */
-    memcpy( &pp_filters[0]->input, p_input_format,
-            sizeof(audio_sample_format_t) );
-    memcpy( &pp_filters[0]->output, p_output_format,
-            sizeof(audio_sample_format_t) );
-    pp_filters[0]->p_module = module_Need( pp_filters[0], "audio filter",
-                                           NULL );
-    if ( pp_filters[0]->p_module != NULL )
+    pp_filters[0] = FindFilter( p_aout, p_input_format, p_output_format );
+    if ( pp_filters[0] != NULL )
     {
         msg_Dbg( p_aout, "found a filter for the whole conversion" );
         *pi_nb_filters = 1;
         return 0;
     }
 
-    /* Split the conversion : format | rate, or rate | format. */
-    pp_filters[0]->output.i_format = pp_filters[0]->input.i_format;
-    pp_filters[0]->p_module = module_Need( pp_filters[0], "audio filter",
-                                           NULL );
-    if ( pp_filters[0]->p_module == NULL )
+    /* We'll have to split the conversion. We always to the downmixing
+     * before the resampling, and the upmixing after the resampling (to
+     * maximize the resampling efficiency). */
+    b_rate_first = (p_input_format->i_channels < p_output_format->i_channels);
+
+    for ( b_format_first = 1; b_format_first >= 0; b_format_first-- )
     {
-        /* Then, start with the format conversion. */
-        memcpy( &pp_filters[0]->output, p_output_format,
-                sizeof(audio_sample_format_t) );
-        pp_filters[0]->output.i_rate = pp_filters[0]->input.i_rate;
-        pp_filters[0]->p_module = module_Need( pp_filters[0], "audio filter",
-                                               NULL );
-        if ( pp_filters[0]->p_module == NULL )
+        int i_nb_conversions = SplitConversion( p_aout, p_input_format,
+                                               p_output_format, &temp_format,
+                                               b_format_first, b_rate_first );
+        if ( !i_nb_conversions )
         {
-            msg_Err( p_aout, "couldn't find a filter for any conversion" );
-            vlc_object_detach( pp_filters[0] );
-            vlc_object_destroy( pp_filters[0] );
+            /* There was only one conversion to do, and we already failed. */
+            msg_Err( p_aout, "couldn't find a filter for the conversion" );
             return -1;
         }
-    }
 
-    /* Find a filter for the rest. */
-    pp_filters[1] = vlc_object_create( p_aout, sizeof(aout_filter_t) );
-    if ( pp_filters[1] == NULL )
-    {
-        vlc_object_detach( pp_filters[0] );
-        vlc_object_destroy( pp_filters[0] );
-        return -1;
-    }
-    vlc_object_attach( pp_filters[1], p_aout );
+        pp_filters[0] = FindFilter( p_aout, p_input_format, &temp_format );
+        if ( pp_filters[0] == NULL && i_nb_conversions == 2 )
+        {
+            /* Try with only one conversion. */
+            SplitConversion( p_aout, p_input_format, &temp_format,
+                             &temp_format, b_format_first, b_rate_first );
+            pp_filters[0] = FindFilter( p_aout, p_input_format,
+                                        &temp_format );
+        }
+        if ( pp_filters[0] == NULL )
+        {
+            /* Retry with b_format_first = 0. */
+            continue;
+        }
 
-    memcpy( &pp_filters[1]->input, &pp_filters[0]->output,
-            sizeof(audio_sample_format_t) );
-    memcpy( &pp_filters[1]->output, p_output_format,
-            sizeof(audio_sample_format_t) );
-    pp_filters[1]->p_module = module_Need( pp_filters[1], "audio filter",
-                                           NULL );
-    if ( pp_filters[1]->p_module == NULL )
-    {
-        msg_Err( p_aout,
-                 "couldn't find a filter for the 2nd part of the conversion" );
-        vlc_object_detach( pp_filters[0] );
-        vlc_object_destroy( pp_filters[0] );
-        vlc_object_detach( pp_filters[1] );
-        vlc_object_destroy( pp_filters[1] );
-        return -1;
-    }
+        /* We have the first stage of the conversion. Find a filter for
+         * the rest. */
+        pp_filters[1] = FindFilter( p_aout, &pp_filters[0]->output,
+                                    p_output_format );
+        if ( pp_filters[1] == NULL )
+        {
+            /* Try to split the conversion. */
+            i_nb_conversions = SplitConversion( p_aout,
+                                    &pp_filters[0]->output,
+                                    p_output_format, &temp_format,
+                                    b_format_first, b_rate_first );
+            if ( !i_nb_conversions )
+            {
+                vlc_object_detach( pp_filters[0] );
+                vlc_object_destroy( pp_filters[0] );
+                continue;
+            }
+            pp_filters[1] = FindFilter( p_aout, &pp_filters[0]->output,
+                                        &temp_format );
+            pp_filters[2] = FindFilter( p_aout, &temp_format,
+                                        p_output_format );
+
+            if ( pp_filters[1] == NULL || pp_filters[2] == NULL )
+            {
+                vlc_object_detach( pp_filters[0] );
+                vlc_object_destroy( pp_filters[0] );
+                if ( pp_filters[1] != NULL )
+                {
+                    vlc_object_detach( pp_filters[1] );
+                    vlc_object_destroy( pp_filters[1] );
+                }
+                if ( pp_filters[2] != NULL )
+                {
+                    vlc_object_detach( pp_filters[2] );
+                    vlc_object_destroy( pp_filters[2] );
+                }
+                continue;
+            }
+            *pi_nb_filters = 3;
+        }
+        else
+        {
+            *pi_nb_filters = 2;
+        }
 
-    msg_Dbg( p_aout, "filter pipeline made of two filters" );
-    *pi_nb_filters = 2;
+        /* We have enough filters. */
+        msg_Dbg( p_aout, "found %d filters for the whole conversion",
+                 *pi_nb_filters );
+        return 0;
+    }
 
-    return 0;
+    msg_Err( p_aout, "couldn't find filters for the conversion" );
+    return -1;
 }
 
 /*****************************************************************************
@@ -161,8 +301,12 @@ void aout_FiltersHintBuffers( aout_instance_t * p_aout,
     {
         aout_filter_t * p_filter = pp_filters[i];
 
-        int i_output_size = aout_FormatToByterate( &p_filter->output );
-        int i_input_size = aout_FormatToByterate( &p_filter->input );
+        int i_output_size = p_filter->output.i_bytes_per_frame
+                             * p_filter->output.i_rate
+                             / p_filter->output.i_frame_length;
+        int i_input_size = p_filter->input.i_bytes_per_frame
+                             * p_filter->input.i_rate
+                             / p_filter->input.i_frame_length;
 
         p_first_alloc->i_bytes_per_sec = __MAX( p_first_alloc->i_bytes_per_sec,
                                                 i_output_size );
@@ -199,7 +343,7 @@ void aout_FiltersPlay( aout_instance_t * p_aout,
         aout_buffer_t * p_output_buffer;
 
         aout_BufferAlloc( &p_filter->output_alloc,
-                          (u64)((*pp_input_buffer)->i_nb_samples * 1000000)
+                          (mtime_t)(*pp_input_buffer)->i_nb_samples * 1000000
                             / p_filter->output.i_rate, *pp_input_buffer,
                           p_output_buffer );
         if ( p_output_buffer == NULL )
index 4b91530..33621f2 100644 (file)
@@ -2,7 +2,7 @@
  * input.c : internal management of input streams for the audio output
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: input.c,v 1.4 2002/08/14 00:23:59 massiot Exp $
+ * $Id: input.c,v 1.5 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
 static aout_input_t * InputNew( aout_instance_t * p_aout,
                                 audio_sample_format_t * p_format )
 {
-    aout_input_t *  p_input = malloc(sizeof(aout_input_t));
+    aout_input_t * p_input = malloc(sizeof(aout_input_t));
 
     if ( p_input == NULL ) return NULL;
 
-    vlc_mutex_lock( &p_aout->mixer_lock );
+    vlc_mutex_lock( &p_aout->output.fifo.lock );
     while ( p_aout->b_mixer_active )
     {
-        vlc_cond_wait( &p_aout->mixer_signal, &p_aout->mixer_lock );
+        vlc_cond_wait( &p_aout->mixer_signal, &p_aout->output.fifo.lock );
     }
+    p_aout->b_mixer_active = 1;
+    vlc_mutex_unlock( &p_aout->output.fifo.lock );
 
     if ( p_aout->i_nb_inputs == 0 )
     {
@@ -64,18 +66,16 @@ static aout_input_t * InputNew( aout_instance_t * p_aout,
 
     memcpy( &p_input->input, p_format,
             sizeof(audio_sample_format_t) );
-    p_input->input.i_bytes_per_sec =
-                            aout_FormatToByterate( &p_input->input );
+    aout_FormatPrepare( &p_input->input );
 
     /* Prepare FIFO. */
     aout_FifoInit( p_aout, &p_input->fifo );
     p_input->p_first_byte_to_mix = NULL;
-    p_input->next_packet_date = 0;
 
     /* Create filters. */
     if ( aout_FiltersCreatePipeline( p_aout, p_input->pp_filters,
                                      &p_input->i_nb_filters, &p_input->input,
-                                     &p_aout->mixer.input ) < 0 )
+                                     &p_aout->mixer.mixer ) < 0 )
     {
         msg_Err( p_aout, "couldn't set an input pipeline" );
 
@@ -105,9 +105,24 @@ static aout_input_t * InputNew( aout_instance_t * p_aout,
         if ( !p_aout->i_nb_inputs )
         {
             aout_OutputDelete( p_aout );
-        }   
+        }
+        else
+        {
+            aout_MixerNew( p_aout );
+        }
+        vlc_mutex_lock( &p_aout->output.fifo.lock );
+        p_aout->b_mixer_active = 0;
+        vlc_cond_signal( &p_aout->mixer_signal );
+        vlc_mutex_unlock( &p_aout->output.fifo.lock );
+
+        return NULL;
     }
 
+    vlc_mutex_lock( &p_aout->output.fifo.lock );
+    p_aout->b_mixer_active = 0;
+    vlc_cond_signal( &p_aout->mixer_signal );
+    vlc_mutex_unlock( &p_aout->output.fifo.lock );
+
     /* Prepare hints for the buffer allocator. */
     p_input->input_alloc.i_alloc_type = AOUT_ALLOC_HEAP;
     p_input->input_alloc.i_bytes_per_sec = -1;
@@ -119,12 +134,12 @@ static aout_input_t * InputNew( aout_instance_t * p_aout,
     /* i_bytes_per_sec is still == -1 if no filters */
     p_input->input_alloc.i_bytes_per_sec = __MAX(
                                     p_input->input_alloc.i_bytes_per_sec,
-                                    p_input->input.i_bytes_per_sec );
+                                    p_input->input.i_bytes_per_frame
+                                     * p_input->input.i_rate
+                                     / p_input->input.i_frame_length );
     /* Allocate in the heap, it is more convenient for the decoder. */
     p_input->input_alloc.i_alloc_type = AOUT_ALLOC_HEAP;
 
-    vlc_mutex_unlock( &p_aout->mixer_lock );
-
     msg_Dbg( p_aout, "input 0x%x created", p_input );
     return p_input;
 }
@@ -164,11 +179,13 @@ void aout_InputDelete( aout_instance_t * p_aout, aout_input_t * p_input )
 
     msg_Dbg( p_aout, "input 0x%x destroyed", p_input );
 
-    vlc_mutex_lock( &p_aout->mixer_lock );
+    vlc_mutex_lock( &p_aout->output.fifo.lock );
     while ( p_aout->b_mixer_active )
     {
-        vlc_cond_wait( &p_aout->mixer_signal, &p_aout->mixer_lock );
+        vlc_cond_wait( &p_aout->mixer_signal, &p_aout->output.fifo.lock );
     }
+    p_aout->b_mixer_active = 1;
+    vlc_mutex_unlock( &p_aout->output.fifo.lock );
 
     for ( i_input = 0; i_input < p_aout->i_nb_inputs; i_input++ )
     {
@@ -189,7 +206,10 @@ void aout_InputDelete( aout_instance_t * p_aout, aout_input_t * p_input )
              (AOUT_MAX_INPUTS - i_input - 1) * sizeof(aout_input_t *) );
     p_aout->i_nb_inputs--;
 
-    vlc_mutex_unlock( &p_aout->mixer_lock );
+    vlc_mutex_lock( &p_aout->output.fifo.lock );
+    p_aout->b_mixer_active = 0;
+    vlc_cond_signal( &p_aout->mixer_signal );
+    vlc_mutex_unlock( &p_aout->output.fifo.lock );
 
     aout_FiltersDestroyPipeline( p_aout, p_input->pp_filters,
                                  p_input->i_nb_filters );
@@ -210,6 +230,8 @@ void aout_InputDelete( aout_instance_t * p_aout, aout_input_t * p_input )
 void aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
                      aout_buffer_t * p_buffer )
 {
+    mtime_t start_date, duration;
+
     vlc_mutex_lock( &p_aout->input_lock );
     while( p_aout->b_change_requested )
     {
@@ -218,9 +240,113 @@ void aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
     p_aout->i_inputs_active++;
     vlc_mutex_unlock( &p_aout->input_lock );
 
-    aout_FiltersPlay( p_aout, p_input->pp_filters, p_input->i_nb_filters,
-                      &p_buffer );
+    /* We don't care if someone changes the start date behind our back after
+     * aout_FifoNextStart. aout_FifoPush will deal with that, and we will
+     * compensate with the next incoming buffer. */
+    start_date = aout_FifoNextStart( p_aout, &p_input->fifo );
+
+    if ( start_date != 0 && start_date < mdate() )
+    {
+        /* The decoder is _very_ late. This can only happen if the user
+         * pauses the stream (or if the decoder is buggy, which cannot
+         * happen :). */
+        msg_Warn( p_aout, "Computed PTS is out of range (%lld), clearing out",
+                  start_date );
+        aout_FifoSet( p_aout, &p_input->fifo, 0 );
+        start_date = 0;
+    } 
+
+    if ( p_buffer->start_date < mdate() )
+    {
+        /* The decoder gives us f*cked up PTS. It's its business, but we
+         * can't present it anyway, so drop the buffer. */
+        msg_Warn( p_aout, "PTS is out of range (%lld), dropping buffer",
+                  mdate() - p_buffer->start_date );
+        aout_BufferFree( p_buffer );
+
+        vlc_mutex_lock( &p_aout->input_lock );
+        p_aout->i_inputs_active--;
+        vlc_cond_broadcast( &p_aout->input_signal );
+        vlc_mutex_unlock( &p_aout->input_lock );
+        return;
+    }
+
+    if ( start_date == 0 ) start_date = p_buffer->start_date;
+
+    if ( start_date < p_buffer->start_date - AOUT_PTS_TOLERANCE
+          || start_date > p_buffer->start_date + AOUT_PTS_TOLERANCE )
+    {
+        /* Can happen in several circumstances :
+         * 1. A problem at the input (clock drift)
+         * 2. A small pause triggered by the user
+         * 3. Some delay in the output stage, causing a loss of lip
+         *    synchronization
+         * Solution : resample the buffer to avoid a scratch.
+         */
+        audio_sample_format_t new_output;
+        int i_ratio, i_nb_filters;
+        mtime_t old_duration;
+        aout_filter_t * pp_filters[AOUT_MAX_FILTERS];
+        aout_alloc_t dummy_alloc;
+        mtime_t drift = p_buffer->start_date - start_date;
+
+        msg_Warn( p_aout, "buffer is %lld %s, resampling",
+                         drift > 0 ? drift : -drift,
+                         drift > 0 ? "in advance" : "late" );
+        memcpy( &new_output, &p_aout->mixer.mixer,
+                sizeof(audio_sample_format_t) );
+        old_duration = p_buffer->end_date - p_buffer->start_date;
+        duration = p_buffer->end_date - start_date;
+        i_ratio = duration * 100 / old_duration;
+        /* If the ratio is too != 100, the sound quality will be awful. */
+        if ( i_ratio < 90 /* % */ )
+        {
+            duration = old_duration * 90 / 100;
+        }
+        if ( i_ratio > 110 /* % */ )
+        {
+            duration = old_duration * 110 / 100;
+        }
+        new_output.i_rate = new_output.i_rate * old_duration / duration;
+
+        if ( aout_FiltersCreatePipeline( p_aout, pp_filters,
+                                         &i_nb_filters, &p_input->input,
+                                         &new_output ) < 0 )
+        {
+            msg_Err( p_aout, "couldn't set an input pipeline for resampling" );
+            aout_FifoSet( p_aout, &p_input->fifo, 0 );
+            aout_BufferFree( p_buffer );
+
+            vlc_mutex_lock( &p_aout->input_lock );
+            p_aout->i_inputs_active--;
+            vlc_cond_broadcast( &p_aout->input_signal );
+            vlc_mutex_unlock( &p_aout->input_lock );
+            return;
+        }
+
+        dummy_alloc.i_alloc_type = AOUT_ALLOC_HEAP;
+        dummy_alloc.i_bytes_per_sec = -1;
+        aout_FiltersHintBuffers( p_aout, pp_filters, i_nb_filters,
+                                 &dummy_alloc );
+
+        aout_FiltersPlay( p_aout, pp_filters, i_nb_filters,
+                          &p_buffer );
+
+        aout_FiltersDestroyPipeline( p_aout, pp_filters,
+                                     i_nb_filters );
+    }
+    else
+    {
+        /* No resampling needed (except maybe the one imposed by the
+         * output). */
+        duration = p_buffer->end_date - p_buffer->start_date;
+        aout_FiltersPlay( p_aout, p_input->pp_filters, p_input->i_nb_filters,
+                          &p_buffer );
+    }
 
+    /* Adding the start date will be managed by aout_FifoPush(). */
+    p_buffer->start_date = start_date;
+    p_buffer->end_date = start_date + duration;
     aout_FifoPush( p_aout, &p_input->fifo, p_buffer );
 
     vlc_mutex_lock( &p_aout->input_lock );
index 343fc82..f17a6ec 100644 (file)
@@ -2,7 +2,7 @@
  * mixer.c : audio output mixing operations
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: mixer.c,v 1.5 2002/08/14 13:10:44 sam Exp $
+ * $Id: mixer.c,v 1.6 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -65,38 +65,141 @@ void aout_MixerRun( aout_instance_t * p_aout )
 {
     int             i;
     aout_buffer_t * p_output_buffer;
+    mtime_t start_date, end_date;
+
+    /* Retrieve the date of the next buffer. We don't use aout_FifoNextStart
+     * because we need to keep the lock on the FIFO, to prevent the aout
+     * thread from triggering resampling while we are running. */
+    vlc_mutex_lock( &p_aout->output.fifo.lock );
+    start_date = p_aout->output.fifo.end_date;
+    if ( start_date != 0 && start_date < mdate() )
+    {
+        /* The output is _very_ late. This can only happen if the user
+         * pauses the stream (or if the decoder is buggy, which cannot
+         * happen :). */
+        msg_Warn( p_aout, "Output PTS is out of range (%lld), clearing out",
+                  start_date );
+        start_date = p_aout->output.fifo.end_date = 0;
+    } 
+    end_date = start_date + (mtime_t)p_aout->output.i_nb_samples * 1000000
+                             / p_aout->output.output.i_rate;
 
     /* See if we have enough data to prepare a new buffer for the audio
      * output. */
-    mtime_t wanted_date = 0, first_date = 0;
-
     for ( i = 0; i < p_aout->i_nb_inputs; i++ )
     {
-        aout_fifo_t * p_fifo = &p_aout->pp_inputs[i]->fifo;
+        aout_input_t * p_input = p_aout->pp_inputs[i];
+        aout_fifo_t * p_fifo = &p_input->fifo;
         aout_buffer_t * p_buffer;
+        mtime_t prev_date;
+        boolean_t b_drop_buffers;
+
         vlc_mutex_lock( &p_fifo->lock );
-        for ( p_buffer = p_fifo->p_first; p_buffer != NULL;
-              p_buffer = p_buffer->p_next )
+
+        p_buffer = p_fifo->p_first;
+        if ( p_buffer == NULL )
+        {
+            vlc_mutex_unlock( &p_fifo->lock );
+            break;
+        }
+
+        if ( !start_date )
         {
-            if ( !wanted_date )
+            start_date = p_buffer->start_date;
+            end_date += p_buffer->start_date;
+            p_input->p_first_byte_to_mix = p_buffer->p_buffer;
+        }
+        else
+        {
+            /* Check for the continuity of start_date */
+            while ( p_buffer != NULL && p_buffer->end_date < start_date )
+            {
+                aout_buffer_t * p_next = p_buffer->p_next;
+                msg_Err( p_aout, "the mixer got a packet in the past (%lld)",
+                         start_date - p_buffer->end_date );
+                aout_BufferFree( p_buffer );
+                p_fifo->p_first = p_buffer = p_next;
+                p_input->p_first_byte_to_mix = NULL;
+            }
+            if ( p_buffer == NULL )
             {
-                if ( !p_aout->output.last_date )
+                p_fifo->pp_last = &p_fifo->p_first;
+                vlc_mutex_unlock( &p_fifo->lock );
+                break;
+            }
+
+            if ( !AOUT_FMT_NON_LINEAR( &p_aout->mixer.mixer ) )
+            {
+                /* Additionally check that p_first_byte_to_mix is well
+                 * located. */
+                unsigned long i_nb_bytes = (start_date - p_buffer->start_date)
+                                * p_aout->mixer.mixer.i_bytes_per_frame
+                                * p_aout->mixer.mixer.i_rate
+                                / p_aout->mixer.mixer.i_frame_length
+                                / 1000000;
+                ptrdiff_t mixer_nb_bytes;
+
+                if ( p_input->p_first_byte_to_mix == NULL )
                 {
-                    first_date = p_buffer->start_date;
-                    wanted_date = p_buffer->start_date
-                        + (mtime_t)p_aout->output.i_nb_samples * 1000000
-                            / p_aout->output.output.i_rate;
+                    p_input->p_first_byte_to_mix = p_buffer->p_buffer;
                 }
-                else
+                mixer_nb_bytes = p_input->p_first_byte_to_mix
+                                  - p_buffer->p_buffer;
+
+                if ( i_nb_bytes + p_aout->mixer.mixer.i_bytes_per_frame
+                      < mixer_nb_bytes ||
+                     i_nb_bytes - p_aout->mixer.mixer.i_bytes_per_frame
+                      > mixer_nb_bytes )
                 {
-                    first_date = p_aout->output.last_date;
-                    wanted_date = p_aout->output.last_date
-                        + (mtime_t)p_aout->output.i_nb_samples * 1000000
-                           / p_aout->output.output.i_rate;
+                    msg_Warn( p_aout,
+                              "mixer start isn't output start (%ld)",
+                              i_nb_bytes - mixer_nb_bytes );
+
+                    /* Round to the nearest multiple */
+                    i_nb_bytes /= p_aout->mixer.mixer.i_bytes_per_frame;
+                    i_nb_bytes *= p_aout->mixer.mixer.i_bytes_per_frame;
+                    p_input->p_first_byte_to_mix = p_buffer->p_buffer
+                                                    + i_nb_bytes;
                 }
             }
+        }
+
+        /* Check that we have enough samples. */
+        for ( ; ; )
+        {
+            p_buffer = p_fifo->p_first;
+            if ( p_buffer == NULL ) break;
+            if ( p_buffer->end_date >= end_date ) break;
 
-            if ( p_buffer->end_date >= wanted_date ) break;
+            /* Check that all buffers are contiguous. */
+            prev_date = p_fifo->p_first->end_date;
+            p_buffer = p_buffer->p_next;
+            b_drop_buffers = 0;
+            for ( ; p_buffer != NULL; p_buffer = p_buffer->p_next )
+            {
+                if ( prev_date != p_buffer->start_date )
+                {
+                    msg_Warn( p_aout,
+                              "buffer discontinuity, dropping packets (%lld)",
+                              p_buffer->start_date - prev_date );
+                    b_drop_buffers = 1;
+                    break;
+                }
+                if ( p_buffer->end_date >= end_date ) break;
+                prev_date = p_buffer->end_date;
+            }
+            if ( b_drop_buffers )
+            {
+                aout_buffer_t * p_deleted = p_fifo->p_first;
+                while ( p_deleted != NULL && p_deleted != p_buffer )
+                {
+                    aout_buffer_t * p_next = p_deleted->p_next;
+                    aout_BufferFree( p_deleted );
+                    p_deleted = p_next;
+                }
+                p_fifo->p_first = p_deleted; /* == p_buffer */
+            }
+            else break;
         }
         vlc_mutex_unlock( &p_fifo->lock );
         if ( p_buffer == NULL ) break;
@@ -105,9 +208,13 @@ void aout_MixerRun( aout_instance_t * p_aout )
     if ( i < p_aout->i_nb_inputs )
     {
         /* Interrupted before the end... We can't run. */
+        vlc_mutex_unlock( &p_aout->output.fifo.lock );
         return;
     }
 
+    p_aout->b_mixer_active = 1;
+    vlc_mutex_unlock( &p_aout->output.fifo.lock );
+
     /* Run the mixer. */
     aout_BufferAlloc( &p_aout->mixer.output_alloc,
                       ((u64)p_aout->output.i_nb_samples * 1000000)
@@ -122,16 +229,19 @@ void aout_MixerRun( aout_instance_t * p_aout )
         return;
     }
     p_output_buffer->i_nb_samples = p_aout->output.i_nb_samples;
-    p_output_buffer->i_nb_bytes = (wanted_date - first_date)
-                              * aout_FormatToByterate( &p_aout->mixer.output )
-                              / 1000000;
-    p_output_buffer->i_nb_bytes &= ~0x3;
-    p_output_buffer->start_date = first_date;
-    p_output_buffer->end_date = wanted_date;
-    p_aout->output.last_date = wanted_date;
+    p_output_buffer->i_nb_bytes = p_aout->output.i_nb_samples
+                              * p_aout->output.output.i_bytes_per_frame
+                              / p_aout->output.output.i_frame_length;
+    p_output_buffer->start_date = start_date;
+    p_output_buffer->end_date = end_date;
 
     p_aout->mixer.pf_do_work( p_aout, p_output_buffer );
 
     aout_OutputPlay( p_aout, p_output_buffer );
+
+    vlc_mutex_lock( &p_aout->output.fifo.lock );
+    p_aout->b_mixer_active = 0;
+    vlc_cond_signal( &p_aout->mixer_signal );
+    vlc_mutex_unlock( &p_aout->output.fifo.lock );
 }
 
index 94604d3..b33a60a 100644 (file)
@@ -2,7 +2,7 @@
  * output.c : internal management of output streams for the audio output
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: output.c,v 1.6 2002/08/14 00:43:52 massiot Exp $
+ * $Id: output.c,v 1.7 2002/08/19 21:31:11 massiot Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -46,7 +46,6 @@ int aout_OutputNew( aout_instance_t * p_aout,
     vlc_mutex_init( p_aout, &p_aout->output.fifo.lock );
     p_aout->output.fifo.p_first = NULL;
     p_aout->output.fifo.pp_last = &p_aout->output.fifo.p_first;
-    p_aout->output.last_date = 0;
 
     p_aout->output.p_module = module_Need( p_aout, "audio output",
                                            psz_name );
@@ -80,43 +79,36 @@ int aout_OutputNew( aout_instance_t * p_aout,
         module_Unneed( p_aout, p_aout->output.p_module );
         return -1;
     }
+    aout_FormatPrepare( &p_aout->output.output );
 
     msg_Dbg( p_aout, "output format=%d rate=%d channels=%d",
              p_aout->output.output.i_format, p_aout->output.output.i_rate,
              p_aout->output.output.i_channels );
 
     /* Calculate the resulting mixer output format. */
-    p_aout->mixer.output.i_channels = p_aout->output.output.i_channels;
-    p_aout->mixer.output.i_rate = p_aout->output.output.i_rate;
+    memcpy( &p_aout->mixer.mixer, &p_aout->output.output,
+            sizeof(audio_sample_format_t) );
     if ( !AOUT_FMT_NON_LINEAR(&p_aout->output.output) )
     {
         /* Non-S/PDIF mixer only deals with float32 or fixed32. */
-        p_aout->mixer.output.i_format
+        p_aout->mixer.mixer.i_format
                      = (p_aout->p_vlc->i_cpu & CPU_CAPABILITY_FPU) ?
                         AOUT_FMT_FLOAT32 : AOUT_FMT_FIXED32;
-        p_aout->mixer.output.i_bytes_per_sec
-                     = aout_FormatToByterate( &p_aout->mixer.output );
+        aout_FormatPrepare( &p_aout->mixer.mixer );
     }
     else
     {
-        p_aout->mixer.output.i_format = p_format->i_format;
-        p_aout->mixer.output.i_bytes_per_sec = p_format->i_bytes_per_sec;
+        p_aout->mixer.mixer.i_format = p_format->i_format;
     }
 
     msg_Dbg( p_aout, "mixer format=%d rate=%d channels=%d",
-             p_aout->mixer.output.i_format, p_aout->mixer.output.i_rate,
-             p_aout->mixer.output.i_channels );
-
-    /* Calculate the resulting mixer input format. */
-    p_aout->mixer.input.i_channels = -1; /* unchanged */
-    p_aout->mixer.input.i_rate = p_aout->mixer.output.i_rate;
-    p_aout->mixer.input.i_format = p_aout->mixer.output.i_format;
-    p_aout->mixer.input.i_bytes_per_sec = p_aout->mixer.output.i_bytes_per_sec;
+             p_aout->mixer.mixer.i_format, p_aout->mixer.mixer.i_rate,
+             p_aout->mixer.mixer.i_channels );
 
     /* Create filters. */
     if ( aout_FiltersCreatePipeline( p_aout, p_aout->output.pp_filters,
                                      &p_aout->output.i_nb_filters,
-                                     &p_aout->mixer.output,
+                                     &p_aout->mixer.mixer,
                                      &p_aout->output.output ) < 0 )
     {
         msg_Err( p_aout, "couldn't set an output pipeline" );
@@ -127,7 +119,9 @@ int aout_OutputNew( aout_instance_t * p_aout,
     /* Prepare hints for the buffer allocator. */
     p_aout->mixer.output_alloc.i_alloc_type = AOUT_ALLOC_HEAP;
     p_aout->mixer.output_alloc.i_bytes_per_sec
-         = aout_FormatToByterate( &p_aout->output.output );
+                        = p_aout->mixer.mixer.i_bytes_per_frame
+                           * p_aout->mixer.mixer.i_rate
+                           / p_aout->mixer.mixer.i_frame_length;
 
     aout_FiltersHintBuffers( p_aout, p_aout->output.pp_filters,
                              p_aout->output.i_nb_filters,
@@ -157,7 +151,9 @@ void aout_OutputPlay( aout_instance_t * p_aout, aout_buffer_t * p_buffer )
                       p_aout->output.i_nb_filters,
                       &p_buffer );
 
-    p_aout->output.pf_play( p_aout, p_buffer );
+    aout_FifoPush( p_aout, &p_aout->output.fifo, p_buffer );
+
+    p_aout->output.pf_play( p_aout );
 }
 
 /*****************************************************************************
@@ -211,12 +207,12 @@ aout_buffer_t * aout_OutputNextBuffer( aout_instance_t * p_aout,
 
         /* Take the mixer lock because no input can be removed when the
          * the mixer lock is taken. */
-        vlc_mutex_lock( &p_aout->mixer_lock );
+        vlc_mutex_lock( &p_aout->output.fifo.lock );
         for ( i = 0; i < p_input->i_nb_inputs; i++ )
         {
             aout_input_t * p_input = p_aout->pp_inputs[i];
         }
-        vlc_mutex_lock( &p_aout->mixer_lock );
+        vlc_mutex_lock( &p_aout->output.fifo.lock );
     }
 #endif
 
index 6efe9c0..45ad13d 100644 (file)
@@ -185,7 +185,7 @@ static const char * module_error( char *psz_buffer )
     (p_symbols)->aout_BufferNew_inner = aout_BufferNew; \
     (p_symbols)->aout_BufferDelete_inner = aout_BufferDelete; \
     (p_symbols)->aout_BufferPlay_inner = aout_BufferPlay; \
-    (p_symbols)->aout_FormatToByterate_inner = aout_FormatToByterate; \
+    (p_symbols)->aout_FormatPrepare_inner = aout_FormatPrepare; \
     (p_symbols)->__aout_InputNew_inner = __aout_InputNew; \
     (p_symbols)->aout_InputDelete_inner = aout_InputDelete; \
     (p_symbols)->__config_GetInt_inner = __config_GetInt; \