* ALL: new module API. Makes a few things a lot simpler, and we gain
authorSam Hocevar <sam@videolan.org>
Wed, 31 Jul 2002 20:56:53 +0000 (20:56 +0000)
committerSam Hocevar <sam@videolan.org>
Wed, 31 Jul 2002 20:56:53 +0000 (20:56 +0000)
    about 2000 lines of code.

    I could not test everything on every architecture, so please report
    any module breakage (especially on BeOS, OSX and QNX).

193 files changed:
BUGS
Makefile
configure
configure.in
doc/fortunes.txt
include/ac3_downmix.h
include/ac3_imdct.h
include/audio_output.h
include/configuration.h
include/input_ext-dec.h
include/input_ext-intf.h
include/input_ext-plugins.h
include/interface.h
include/intf_eject.h
include/main.h
include/modules.h
include/modules_inner.h
include/netutils.h
include/stream_control.h
include/video_output.h
include/vlc_common.h
include/vlc_cpu.h
include/vlc_messages.h
include/vlc_objects.h
include/vlc_playlist.h
include/vlc_symbols.h
include/vlc_threads.h
plugins/a52/a52.c
plugins/a52_system/a52_system.c
plugins/aa/aa.c
plugins/ac3_adec/ac3_adec.c
plugins/ac3_adec/ac3_adec.h
plugins/ac3_adec/ac3_decoder.c
plugins/ac3_adec/ac3_decoder.h
plugins/ac3_adec/ac3_imdct.c
plugins/ac3_adec/ac3_internal.h
plugins/ac3_spdif/ac3_spdif.c
plugins/access/file.c
plugins/access/http.c
plugins/access/udp.c
plugins/alsa/alsa.c
plugins/arts/arts.c
plugins/avi/avi.c
plugins/beos/aout_beos.cpp
plugins/beos/beos.cpp
plugins/beos/intf_beos.cpp
plugins/beos/vout_beos.cpp
plugins/chroma/i420_rgb.c
plugins/chroma/i420_rgb.h
plugins/chroma/i420_rgb16.c
plugins/chroma/i420_rgb8.c
plugins/chroma/i420_ymga.c
plugins/chroma/i420_yuy2.c
plugins/chroma/i422_yuy2.c
plugins/cinepak/cinepak.c
plugins/directx/aout_directx.c
plugins/directx/directx.c
plugins/directx/vout_directx.c
plugins/downmix/Makefile
plugins/downmix/ac3_downmix_3dn.c
plugins/downmix/ac3_downmix_c.c
plugins/downmix/ac3_downmix_common.h
plugins/downmix/ac3_downmix_sse.c
plugins/downmix/downmix.c
plugins/downmix/downmix3dn.c [deleted file]
plugins/downmix/downmixsse.c [deleted file]
plugins/dsp/dsp.c
plugins/dummy/aout_dummy.c
plugins/dummy/dec_dummy.c
plugins/dummy/dummy.c
plugins/dummy/dummy.h [new file with mode: 0644]
plugins/dummy/input_dummy.c
plugins/dummy/intf_dummy.c
plugins/dummy/null.c
plugins/dummy/vout_dummy.c
plugins/dvd/dvd.c
plugins/dvd/dvd_access.c
plugins/dvd/dvd_demux.c
plugins/dvdplay/access.c
plugins/dvdplay/demux.c
plugins/dvdplay/dvd.c
plugins/dvdplay/intf.c
plugins/dvdread/dvdread.c
plugins/dvdread/input_dvdread.c
plugins/esd/esd.c
plugins/familiar/familiar.c
plugins/fb/fb.c
plugins/ffmpeg/ffmpeg.c
plugins/filter/clone.c
plugins/filter/crop.c
plugins/filter/deinterlace.c
plugins/filter/distort.c
plugins/filter/invert.c
plugins/filter/transform.c
plugins/filter/wall.c
plugins/fx/scope.c
plugins/ggi/ggi.c
plugins/glide/glide.c
plugins/gtk/gnome.c
plugins/gtk/gtk.c
plugins/gtk/gtk_preferences.c
plugins/idct/idct.c
plugins/idct/idct_decl.h
plugins/idct/idctaltivec.c
plugins/idct/idctclassic.c
plugins/idct/idctmmx.c
plugins/idct/idctmmxext.c
plugins/imdct/Makefile
plugins/imdct/ac3_imdct_3dn.c
plugins/imdct/ac3_imdct_c.c
plugins/imdct/ac3_imdct_common.c
plugins/imdct/ac3_imdct_common.h
plugins/imdct/ac3_imdct_sse.c
plugins/imdct/ac3_srfft_3dn.c
plugins/imdct/ac3_srfft_c.c
plugins/imdct/ac3_srfft_sse.c
plugins/imdct/imdct.c
plugins/imdct/imdct3dn.c [deleted file]
plugins/imdct/imdctsse.c [deleted file]
plugins/kde/kde.cpp
plugins/kde/kde_preferences.cpp
plugins/lirc/lirc.c
plugins/lpcm_adec/lpcm_adec.c
plugins/macosx/aout_macosx.m
plugins/macosx/intf_macosx.m
plugins/macosx/macosx.m
plugins/macosx/vout_macosx.m
plugins/mad/mad_adec.c
plugins/memcpy/fastmemcpy.h
plugins/memcpy/memcpy.c
plugins/memcpy/memcpyaltivec.c
plugins/mga/mga.c
plugins/mga/xmga.c
plugins/motion/motion.c
plugins/motion/motion3dnow.c
plugins/motion/motionaltivec.c
plugins/motion/motionmmx.c
plugins/motion/motionmmxext.c
plugins/mp4/mp4.c
plugins/mpeg_adec/mpeg_adec.c
plugins/mpeg_system/mpeg_audio.c
plugins/mpeg_system/mpeg_es.c
plugins/mpeg_system/mpeg_ps.c
plugins/mpeg_system/mpeg_ts.c
plugins/mpeg_vdec/video_parser.c
plugins/mpeg_vdec/video_parser.h
plugins/mpeg_vdec/vpar_pool.c
plugins/network/ipv4.c
plugins/network/ipv6.c
plugins/qnx/aout_qnx.c
plugins/qnx/qnx.c
plugins/qnx/vout_qnx.c
plugins/qt/intf_qt.cpp
plugins/qt/qt.cpp
plugins/satellite/input_satellite.c
plugins/satellite/satellite.c
plugins/sdl/aout_sdl.c
plugins/sdl/sdl.c
plugins/sdl/vout_sdl.c
plugins/spudec/spu_decoder.c
plugins/text/logger.c
plugins/text/ncurses.c
plugins/text/rc.c
plugins/vcd/Makefile
plugins/vcd/input_vcd.c [deleted file]
plugins/vcd/vcd.c
plugins/win32/intf_win32.cpp
plugins/win32/waveout.c
plugins/win32/win32.cpp
plugins/win32/win32.h
plugins/x11/x11.c
plugins/x11/xcommon.c
plugins/x11/xcommon.h
plugins/x11/xvideo.c
plugins/xosd/xosd.c
src/audio_output/audio_output.c
src/input/input.c
src/input/input_dec.c
src/input/input_ext-intf.c
src/input/input_ext-plugins.c
src/input/input_programs.c
src/interface/interface.c
src/libvlc.c
src/libvlc.h
src/misc/configuration.c
src/misc/messages.c
src/misc/modules.c
src/misc/modules_builtin.h.in
src/misc/modules_plugin.h
src/misc/netutils.c
src/misc/objects.c
src/video_output/video_output.c
src/video_output/vout_pictures.h

diff --git a/BUGS b/BUGS
index b98e49a..0f2a20f 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,4 +1,4 @@
-List of known vlc bugs $Id: BUGS,v 1.14 2002/06/01 12:31:57 sam Exp $
+List of known vlc bugs $Id: BUGS,v 1.15 2002/07/31 20:56:50 sam Exp $
 
    Please try to keep this file up to date. Also, grep for FIXME in the
 source files for more and more bugs to fix.
@@ -16,6 +16,9 @@ Input:
 
   * DVD raw device support doesn't seem to work.
 
+  * Going to title 0 with the dvdold or dvdread plugins segfaults (tested
+    with Nausicaa).
+
 Decoders:
 
 
@@ -36,6 +39,10 @@ Video output:
   * On-the-fly resizing when using a chroma transformation doesn't work for
   all plugins. Currently it is only implemented for x11 and SDL.
 
+  * --filter clone gives a slanted picture on axe.mpeg
+  * --filter transform barfs on rambo.avi
+
+
 Chroma transformations:
 
   * Most chroma transformation modules completely ignore margins.
index 0eeb38a..ea4b1f7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -357,7 +357,7 @@ plugins-uninstall:
 builtins-install:
        mkdir -p $(DESTDIR)$(libdir)/vlc
 ifneq (,$(BUILTINS))
-       $(INSTALL) $(BUILTINS:%=plugins/%.a) $(DESTDIR)$(libdir)/vlc
+       $(INSTALL) -m 644 $(BUILTINS:%=plugins/%.a) $(DESTDIR)$(libdir)/vlc
 endif
 
 builtins-uninstall:
@@ -564,9 +564,7 @@ src/misc/modules_builtin.h: Makefile.opts Makefile Makefile.config
        @rm -f $@ && cp $@.in $@
 ifneq (,$(BUILTINS))
        @for i in $(BUILTINS) ; do \
-               echo "int InitModule__MODULE_"$$i"( module_t* );" >>$@; \
-               echo "int ActivateModule__MODULE_"$$i"( module_t* );" >>$@; \
-               echo "int DeactivateModule__MODULE_"$$i"( module_t* );" >>$@; \
+               echo "int vlc_entry__"$$i"( module_t* );" >>$@; \
        done
        @echo "" >> $@ ;
 endif
@@ -621,10 +619,6 @@ ifeq ($(SYS),beos)
        mimeset -f $@
 endif
 
-# here are the rules for a dynamic link of libvlc:
-#vlc: Makefile.opts Makefile.dep Makefile $(VLC_OBJ) lib/libvlc.so $(BUILTIN_OBJ)
-#      $(CC) $(CFLAGS) -o $@ $(VLC_OBJ) $(BUILTIN_OBJ) $(LDFLAGS) $(builtins_LDFLAGS) -L./lib -lvlc
-
 #
 # Main library target
 #
@@ -633,6 +627,10 @@ lib/libvlc.a: Makefile.opts Makefile.dep Makefile $(LIBVLC_OBJ)
        ar rc $@ $(LIBVLC_OBJ)
        $(RANLIB) $@
 
+#
+# DO NOT DISTRIBUTE SHARED VERSIONS OF LIBVLC UNTIL THE ABI IS STABLE
+# OR BURN IN HELL -- Sam
+#
 #lib/libvlc.so: Makefile.opts Makefile.dep Makefile $(LIBVLC_OBJ)
 #      $(CC) -shared $(LIBVLC_OBJ) $(LDFLAGS) $(vlc_LDFLAGS) -o $@
 
index 4da31aa..41f55d5 100755 (executable)
--- a/configure
+++ b/configure
@@ -1527,7 +1527,7 @@ else
 int main() {
 
 /* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x = {0,0};
+typedef int charset[2]; const charset x;
 /* SunOS 4.1.1 cc rejects this.  */
 char const *const *ccp;
 char **p;
@@ -1602,7 +1602,7 @@ for ac_kw in inline __inline__ __inline; do
 #include "confdefs.h"
 
 int main() {
-} int $ac_kw foo() {
+} $ac_kw foo() {
 ; return 0; }
 EOF
 if { (eval echo configure:1609: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
@@ -1708,7 +1708,7 @@ else
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
-void *p = alloca(2 * sizeof(int));
+char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
 if { (eval echo configure:1715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
@@ -2061,15 +2061,12 @@ else
 #include <sys/types.h>
 #include <fcntl.h>
 #include <sys/mman.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
 
 /* This mess was copied from the GNU getpagesize.h.  */
 #ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+# endif
 
 /* Assume that all systems that can run configure have sys/param.h.  */
 # ifndef HAVE_SYS_PARAM_H
@@ -2124,7 +2121,7 @@ main()
        /*
         * First, make a file with some known garbage in it.
         */
-       data = (char*)malloc(pagesize);
+       data = malloc(pagesize);
        if (!data)
                exit(1);
        for (i = 0; i < pagesize; ++i)
@@ -2145,7 +2142,7 @@ main()
        fd = open("conftestmmap", O_RDWR);
        if (fd < 0)
                exit(1);
-       data2 = (char*)malloc(2 * pagesize);
+       data2 = malloc(2 * pagesize);
        if (!data2)
                exit(1);
        data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -2163,7 +2160,7 @@ main()
         */
        for (i = 0; i < pagesize; ++i)
                *(data2 + i) = *(data2 + i) + 1;
-       data3 = (char*)malloc(pagesize);
+       data3 = malloc(pagesize);
        if (!data3)
                exit(1);
        if (read(fd, data3, pagesize) != pagesize)
@@ -2177,7 +2174,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:2181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -2201,12 +2198,12 @@ fi
 
 
     echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6
-echo "configure:2205: checking whether we are using the GNU C Library 2.1 or newer" >&5
+echo "configure:2202: checking whether we are using the GNU C Library 2.1 or newer" >&5
 if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2210 "configure"
+#line 2207 "configure"
 #include "confdefs.h"
 
 #include <features.h>
@@ -2242,17 +2239,17 @@ stdlib.h string.h unistd.h sys/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2246: checking for $ac_hdr" >&5
+echo "configure:2243: 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 2251 "configure"
+#line 2248 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2256: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2253: \"$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*
@@ -2283,12 +2280,12 @@ getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
 strdup strtoul tsearch __argz_count __argz_stringify __argz_next
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2287: checking for $ac_func" >&5
+echo "configure:2284: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2292 "configure"
+#line 2289 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2311,7 +2308,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2351,7 +2348,7 @@ fi
 
 
   echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:2355: checking for iconv" >&5
+echo "configure:2352: checking for iconv" >&5
 if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2359,7 +2356,7 @@ else
     am_cv_func_iconv="no, consider installing GNU libiconv"
     am_cv_lib_iconv=no
     cat > conftest.$ac_ext <<EOF
-#line 2363 "configure"
+#line 2360 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <iconv.h>
@@ -2369,7 +2366,7 @@ iconv_t cd = iconv_open("","");
        iconv_close(cd);
 ; return 0; }
 EOF
-if { (eval echo configure:2373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_func_iconv=yes
 else
@@ -2381,7 +2378,7 @@ rm -f conftest*
       am_save_LIBS="$LIBS"
       LIBS="$LIBS -liconv"
       cat > conftest.$ac_ext <<EOF
-#line 2385 "configure"
+#line 2382 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <iconv.h>
@@ -2391,7 +2388,7 @@ iconv_t cd = iconv_open("","");
          iconv_close(cd);
 ; return 0; }
 EOF
-if { (eval echo configure:2395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_lib_iconv=yes
         am_cv_func_iconv=yes
@@ -2412,13 +2409,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
 EOF
 
     echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:2416: checking for iconv declaration" >&5
+echo "configure:2413: checking for iconv declaration" >&5
     if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
       cat > conftest.$ac_ext <<EOF
-#line 2422 "configure"
+#line 2419 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -2437,7 +2434,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2438: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_proto_iconv_arg1=""
 else
@@ -2466,19 +2463,19 @@ EOF
 
    
   echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6
-echo "configure:2470: checking for nl_langinfo and CODESET" >&5
+echo "configure:2467: checking for nl_langinfo and CODESET" >&5
 if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2475 "configure"
+#line 2472 "configure"
 #include "confdefs.h"
 #include <langinfo.h>
 int main() {
 char* cs = nl_langinfo(CODESET);
 ; return 0; }
 EOF
-if { (eval echo configure:2482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_langinfo_codeset=yes
 else
@@ -2501,19 +2498,19 @@ EOF
 
    if test $ac_cv_header_locale_h = yes; then
     echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2505: checking for LC_MESSAGES" >&5
+echo "configure:2502: checking for LC_MESSAGES" >&5
 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2510 "configure"
+#line 2507 "configure"
 #include "confdefs.h"
 #include <locale.h>
 int main() {
 return LC_MESSAGES
 ; return 0; }
 EOF
-if { (eval echo configure:2517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_val_LC_MESSAGES=yes
 else
@@ -2534,7 +2531,7 @@ EOF
     fi
   fi
    echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2538: checking whether NLS is requested" >&5
+echo "configure:2535: checking whether NLS is requested" >&5
         # Check whether --enable-nls or --disable-nls was given.
 if test "${enable_nls+set}" = set; then
   enableval="$enable_nls"
@@ -2556,7 +2553,7 @@ fi
 EOF
 
       echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2560: checking whether included gettext is requested" >&5
+echo "configure:2557: checking whether included gettext is requested" >&5
       # Check whether --with-included-gettext or --without-included-gettext was given.
 if test "${with_included_gettext+set}" = set; then
   withval="$with_included_gettext"
@@ -2576,17 +2573,17 @@ fi
 
        ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2580: checking for libintl.h" >&5
+echo "configure:2577: checking for libintl.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 2585 "configure"
+#line 2582 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2587: \"$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*
@@ -2603,12 +2600,12 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6
-echo "configure:2607: checking for GNU gettext in libc" >&5
+echo "configure:2604: checking for GNU gettext in libc" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2612 "configure"
+#line 2609 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 extern int _nl_msg_cat_cntr;
@@ -2617,7 +2614,7 @@ bindtextdomain ("", "");
 return (int) gettext ("") + _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:2621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gnugettext1_libc=yes
 else
@@ -2633,14 +2630,14 @@ echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6
 
           if test "$gt_cv_func_gnugettext1_libc" != "yes"; then
             echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6
-echo "configure:2637: checking for GNU gettext in libintl" >&5
+echo "configure:2634: checking for GNU gettext in libintl" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   gt_save_LIBS="$LIBS"
                LIBS="$LIBS -lintl $LIBICONV"
                cat > conftest.$ac_ext <<EOF
-#line 2644 "configure"
+#line 2641 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 extern int _nl_msg_cat_cntr;
@@ -2649,7 +2646,7 @@ bindtextdomain ("", "");
 return (int) gettext ("") + _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:2653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gnugettext1_libintl=yes
 else
@@ -2682,12 +2679,12 @@ EOF
             for ac_func in dcgettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2686: checking for $ac_func" >&5
+echo "configure:2683: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2691 "configure"
+#line 2688 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2710,7 +2707,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2739,7 +2736,7 @@ done
                     # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2743: checking for $ac_word" >&5
+echo "configure:2740: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2773,7 +2770,7 @@ fi
             # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2777: checking for $ac_word" >&5
+echo "configure:2774: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2810,7 +2807,7 @@ fi
                     # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2814: checking for $ac_word" >&5
+echo "configure:2811: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2860,7 +2857,7 @@ fi
         # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2864: checking for $ac_word" >&5
+echo "configure:2861: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2894,7 +2891,7 @@ fi
         # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2898: checking for $ac_word" >&5
+echo "configure:2895: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2930,7 +2927,7 @@ fi
         # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2934: checking for $ac_word" >&5
+echo "configure:2931: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3001,7 +2998,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3005: checking for $ac_word" >&5
+echo "configure:3002: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3034,7 +3031,7 @@ done
       ac_verc_fail=yes
     else
             echo $ac_n "checking version of bison""... $ac_c" 1>&6
-echo "configure:3038: checking version of bison" >&5
+echo "configure:3035: checking version of bison" >&5
       ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
       case $ac_prog_version in
         '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -3081,7 +3078,7 @@ echo "configure:3038: checking version of bison" >&5
        LINGUAS=
      else
        echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:3085: checking for catalogs to be installed" >&5
+echo "configure:3082: checking for catalogs to be installed" >&5
        NEW_LINGUAS=
        for presentlang in $ALL_LINGUAS; do
          useit=no
@@ -3133,7 +3130,7 @@ echo "configure:3085: checking for catalogs to be installed" >&5
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:3137: checking for a BSD compatible install" >&5
+echo "configure:3134: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3215,7 +3212,7 @@ case "x${target_os}" in
     # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
 set dummy ${ac_tool_prefix}windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3219: checking for $ac_word" >&5
+echo "configure:3216: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3247,7 +3244,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "windres", so it can be a program name with args.
 set dummy windres; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3251: checking for $ac_word" >&5
+echo "configure:3248: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3292,6 +3289,9 @@ fi
     x11_LDFLAGS="${x11_LDFLAGS} -lsocket"
     xvideo_LDFLAGS="${xvideo_LDFLAGS} -lsocket"
     ;;
+  xsolaris*)
+    SYS=solaris
+    ;;
   xbeos)
     SYS=beos
     save_CFLAGS="${save_CFLAGS} -Wno-multichar -Wno-ctor-dtor-privacy -Woverloaded-virtual"; CFLAGS="${save_CFLAGS}"
@@ -9199,7 +9199,7 @@ EOF
 
 VLC_SYMBOL="`echo ${VERSION} | tr .- __`"
 cat >> confdefs.h <<EOF
-#define MODULE_SUFFIX "__MODULE_${VLC_SYMBOL}"
+#define MODULE_SUFFIX "__${VLC_SYMBOL}"
 EOF
 
 cat >> confdefs.h <<EOF
index acac87a..6244d90 100644 (file)
@@ -1816,7 +1816,7 @@ AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "VideoLAN Client - version ${VERSION} ${CO
 AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line])
 
 VLC_SYMBOL="`echo ${VERSION} | tr .- __`"
-AC_DEFINE_UNQUOTED(MODULE_SUFFIX, "__MODULE_${VLC_SYMBOL}", [String suffix for module functions])
+AC_DEFINE_UNQUOTED(MODULE_SUFFIX, "__${VLC_SYMBOL}", [String suffix for module functions])
 AC_DEFINE_UNQUOTED(MODULE_SYMBOL, ${VLC_SYMBOL}, [Symbol suffix for module functions])
 
 DATA_PATH="${ac_tool_prefix}/share/videolan"
index f72d540..fd5c780 100644 (file)
@@ -183,3 +183,13 @@ the Boston strangler is to the woman home alone.
 
   -- Jack Valenti (president of the MPAA) on April 12, 1982
 %
+<Meuuh> then we need to update download.html
+<Meuuh> what do we still have ?
+<sam> the mail, freshmeat, the videolan.org news
+<sam> cvs tag
+<sam> regression tests
+<sam> bwaahahahahahAHAHAHA
+<Meuuh> mouhahaha
+
+  -- #videolan
+%
index cd16b96..8073795 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_downmix.h : AC3 downmix types
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: ac3_downmix.h,v 1.5 2002/07/20 18:01:41 sam Exp $
+ * $Id: ac3_downmix.h,v 1.6 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Renaud Dartus <reno@videolan.org>
@@ -31,6 +31,8 @@ struct dm_par_t
 
 struct downmix_t
 {
+    VLC_COMMON_MEMBERS
+
     /* Module used and shortcuts */
     module_t * p_module;
     void (*pf_downmix_3f_2r_to_2ch)(float *, dm_par_t * dm_par);
index 4b5a7dc..e6e101c 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_imdct.h : AC3 IMDCT types
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: ac3_imdct.h,v 1.9 2002/07/20 18:01:41 sam Exp $
+ * $Id: ac3_imdct.h,v 1.10 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Renaud Dartus <reno@videolan.org>
@@ -32,6 +32,8 @@ struct complex_t
 
 struct imdct_t
 {
+    VLC_COMMON_MEMBERS
+
     complex_t * buf;
     void *      buf_orig;                         /* pointer before memalign */
 
index f216e99..690053a 100644 (file)
@@ -2,7 +2,7 @@
  * audio_output.h : audio output thread interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: audio_output.h,v 1.49 2002/07/20 18:01:41 sam Exp $
+ * $Id: audio_output.h,v 1.50 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Cyril Deguet <asmax@via.ecp.fr>
@@ -120,11 +120,9 @@ struct aout_thread_t
 
     /* Plugin used and shortcuts to access its capabilities */
     module_t *   p_module;
-    int       ( *pf_open )       ( aout_thread_t * );
     int       ( *pf_setformat )  ( aout_thread_t * );
     int       ( *pf_getbufinfo ) ( aout_thread_t * , int );
     void      ( *pf_play )       ( aout_thread_t * , byte_t *, int );
-    void      ( *pf_close )      ( aout_thread_t * );
 
     void *              buffer;
     /* The s32 buffer is used to mix all the audio fifos together before
@@ -185,7 +183,7 @@ struct aout_thread_t
 aout_thread_t * aout_CreateThread       ( vlc_object_t *, int, int );
 void            aout_DestroyThread      ( aout_thread_t * );
 
-#define aout_CreateFifo(a,b,c,d,e,f) __aout_CreateFifo(CAST_TO_VLC_OBJECT(a),b,c,d,e,f)
+#define aout_CreateFifo(a,b,c,d,e,f) __aout_CreateFifo(VLC_OBJECT(a),b,c,d,e,f)
 VLC_EXPORT( aout_fifo_t *, __aout_CreateFifo,  ( vlc_object_t *, int, int, int, int, void * ) );
 VLC_EXPORT( void,            aout_DestroyFifo, ( aout_fifo_t *p_fifo ) );
             void             aout_FreeFifo     ( aout_fifo_t *p_fifo );
index 0bd352a..fffdf70 100644 (file)
@@ -4,7 +4,7 @@
  * It includes functions allowing to declare, get or set configuration options.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: configuration.h,v 1.16 2002/07/20 18:01:41 sam Exp $
+ * $Id: configuration.h,v 1.17 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -49,6 +49,7 @@
 struct module_config_t
 {
     int          i_type;                               /* Configuration type */
+    char        *psz_type;                          /* Configuration subtype */
     char        *psz_name;                                    /* Option name */
     char         i_short;                      /* Optional short option name */
     char        *psz_text;      /* Short comment on the configuration option */
@@ -89,16 +90,16 @@ VLC_EXPORT( void, config_Duplicate, ( module_t *, module_config_t * ) );
 VLC_EXPORT( void, config_SetCallbacks, ( module_config_t *, module_config_t * ) );
 VLC_EXPORT( void, config_UnsetCallbacks, ( module_config_t * ) );
 
-#define config_GetInt(a,b) __config_GetInt(CAST_TO_VLC_OBJECT(a),b)
-#define config_PutInt(a,b,c) __config_PutInt(CAST_TO_VLC_OBJECT(a),b,c)
-#define config_GetFloat(a,b) __config_GetFloat(CAST_TO_VLC_OBJECT(a),b)
-#define config_PutFloat(a,b,c) __config_PutFloat(CAST_TO_VLC_OBJECT(a),b,c)
-#define config_GetPsz(a,b) __config_GetPsz(CAST_TO_VLC_OBJECT(a),b)
-#define config_PutPsz(a,b,c) __config_PutPsz(CAST_TO_VLC_OBJECT(a),b,c)
+#define config_GetInt(a,b) __config_GetInt(VLC_OBJECT(a),b)
+#define config_PutInt(a,b,c) __config_PutInt(VLC_OBJECT(a),b,c)
+#define config_GetFloat(a,b) __config_GetFloat(VLC_OBJECT(a),b)
+#define config_PutFloat(a,b,c) __config_PutFloat(VLC_OBJECT(a),b,c)
+#define config_GetPsz(a,b) __config_GetPsz(VLC_OBJECT(a),b)
+#define config_PutPsz(a,b,c) __config_PutPsz(VLC_OBJECT(a),b,c)
 
-#define config_LoadCmdLine(a,b,c,d) __config_LoadCmdLine(CAST_TO_VLC_OBJECT(a),b,c,d)
-#define config_LoadConfigFile(a,b) __config_LoadConfigFile(CAST_TO_VLC_OBJECT(a),b)
-#define config_SaveConfigFile(a,b) __config_SaveConfigFile(CAST_TO_VLC_OBJECT(a),b)
+#define config_LoadCmdLine(a,b,c,d) __config_LoadCmdLine(VLC_OBJECT(a),b,c,d)
+#define config_LoadConfigFile(a,b) __config_LoadConfigFile(VLC_OBJECT(a),b)
+#define config_SaveConfigFile(a,b) __config_SaveConfigFile(VLC_OBJECT(a),b)
 
 /*****************************************************************************
  * Macros used to build the configuration structure.
@@ -113,61 +114,43 @@ VLC_EXPORT( void, config_UnsetCallbacks, ( module_config_t * ) );
  *   allow for a more user friendly interface.
  *****************************************************************************/
 
-#define MODULE_CONFIG_START \
-    static module_config_t p_config[] = {
-#define MODULE_CONFIG_STOP \
-    { CONFIG_HINT_END, NULL, '\0' } };
-
-#define ADD_CATEGORY_HINT( text, longtext ) \
-    { CONFIG_HINT_CATEGORY, NULL, '\0', text, longtext },
-#define ADD_SUBCATEGORY_HINT( text, longtext ) \
-    { CONFIG_HINT_SUBCATEGORY, NULL, '\0', text, longtext },
-#define END_SUBCATEGORY_HINT \
-    { CONFIG_HINT_SUBCATEGORY_END, NULL, '\0' },
-#define ADD_USAGE_HINT( text ) \
-    { CONFIG_HINT_USAGE, NULL, '\0', text },
-
-#define ADD_STRING( name, psz_value, p_callback, text, longtext ) \
-    { CONFIG_ITEM_STRING, name, '\0', text, longtext, psz_value, 0, 0, \
-      p_callback },
-#define ADD_STRING_FROM_LIST( name, psz_value, ppsz_list, p_callback, text, \
+#define add_category_hint( text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_HINT_CATEGORY, NULL, NULL, '\0', text, longtext }; i_config++
+#define add_subcategory_hint( text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_HINT_SUBCATEGORY, NULL, NULL, '\0', text, longtext }; i_config++
+#define end_subcategory_hint \
+    p_config[ i_config ] = (module_config_t){ CONFIG_HINT_SUBCATEGORY_END, NULL, NULL, '\0' }; i_config++
+#define add_usage_hint( text ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_HINT_USAGE, NULL, NULL, '\0', text }; i_config++
+
+#define add_string( name, psz_value, p_callback, text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_STRING, NULL, name, '\0', text, longtext, psz_value, 0, 0, p_callback }; i_config++
+#define add_string_from_list( name, psz_value, ppsz_list, p_callback, text, \
       longtext ) \
-    { CONFIG_ITEM_STRING, name, '\0', text, longtext, psz_value, 0, 0, \
-      p_callback, ppsz_list },
-#define ADD_FILE( name, psz_value, p_callback, text, longtext ) \
-    { CONFIG_ITEM_FILE, name, '\0', text, longtext, psz_value, 0, 0, \
-      p_callback },
-#define ADD_MODULE( name, i_caps, psz_value, p_callback, text, longtext ) \
-    { CONFIG_ITEM_MODULE, name, '\0', text, longtext, psz_value, i_caps, 0, \
-      p_callback },
-#define ADD_INTEGER( name, i_value, p_callback, text, longtext ) \
-    { CONFIG_ITEM_INTEGER, name, '\0', text, longtext, NULL, i_value, 0, \
-      p_callback },
-#define ADD_FLOAT( name, f_value, p_callback, text, longtext ) \
-    { CONFIG_ITEM_FLOAT, name, '\0', text, longtext, NULL, 0, f_value, \
-      p_callback },
-#define ADD_BOOL( name, b_value, p_callback, text, longtext ) \
-    { CONFIG_ITEM_BOOL, name, '\0', text, longtext, NULL, b_value, 0, \
-      p_callback },
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_STRING, NULL, name, '\0', text, longtext, psz_value, 0, 0, p_callback, ppsz_list }; i_config++
+#define add_file( name, psz_value, p_callback, text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_FILE, NULL, name, '\0', text, longtext, psz_value, 0, 0, p_callback }; i_config++
+#define add_module( name, psz_caps, psz_value, p_callback, text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_MODULE, psz_caps, name, '\0', text, longtext, psz_value, 0, 0, p_callback }; i_config++
+#define add_integer( name, i_value, p_callback, text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_INTEGER, NULL, name, '\0', text, longtext, NULL, i_value, 0, p_callback }; i_config++
+#define add_float( name, f_value, p_callback, text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_FLOAT, NULL, name, '\0', text, longtext, NULL, 0, f_value, p_callback }; i_config++
+#define add_bool( name, b_value, p_callback, text, longtext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_BOOL, NULL, name, '\0', text, longtext, NULL, b_value, 0, p_callback }; i_config++
 
 /* These should be seldom used. They were added just to provide easy shortcuts
  * for the command line interface */
-#define ADD_STRING_WITH_SHORT( name, ch, psz_value, p_callback, text, ltext ) \
-    { CONFIG_ITEM_STRING, name, ch, text, ltext, psz_value, 0, 0, \
-      p_callback },
-#define ADD_FILE_WITH_SHORT( name, ch, psz_value, p_callback, text, ltext ) \
-    { CONFIG_ITEM_FILE, name, ch, text, ltext, psz_value, 0, 0, \
-      p_callback },
-#define ADD_MODULE_WITH_SHORT( name, ch, i_capability, psz_value, p_callback, \
+#define add_string_with_short( name, ch, psz_value, p_callback, text, ltext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_STRING, NULL, name, ch, text, ltext, psz_value, 0, 0, p_callback }; i_config++
+#define add_file_with_short( name, ch, psz_value, p_callback, text, ltext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_FILE, NULL, name, ch, text, ltext, psz_value, 0, 0, p_callback }; i_config++
+#define add_module_with_short( name, ch, psz_caps, psz_value, p_callback, \
     text, ltext) \
-    { CONFIG_ITEM_MODULE, name, ch, text, ltext, psz_value, i_capability, 0, \
-      p_callback },
-#define ADD_INTEGER_WITH_SHORT( name, ch, i_value, p_callback, text, ltext ) \
-    { CONFIG_ITEM_INTEGER, name, ch, text, ltext, NULL, i_value, 0, \
-      p_callback },
-#define ADD_FLOAT_WITH_SHORT( name, ch, f_value, p_callback, text, ltext ) \
-    { CONFIG_ITEM_FLOAT, name, ch, text, ltext, NULL, 0, f_value, \
-      p_callback },
-#define ADD_BOOL_WITH_SHORT( name, ch, b_value, p_callback, text, ltext ) \
-    { CONFIG_ITEM_BOOL, name, ch, text, ltext, NULL, b_value, 0, \
-      p_callback },
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_MODULE, psz_caps, name, ch, text, ltext, psz_value, 0, 0, p_callback }; i_config++
+#define add_integer_with_short( name, ch, i_value, p_callback, text, ltext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_INTEGER, NULL, name, ch, text, ltext, NULL, i_value, 0, p_callback }; i_config++
+#define add_float_with_short( name, ch, f_value, p_callback, text, ltext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_FLOAT, NULL, name, ch, text, ltext, NULL, 0, f_value, p_callback }; i_config++
+#define add_bool_with_short( name, ch, b_value, p_callback, text, ltext ) \
+    p_config[ i_config ] = (module_config_t){ CONFIG_ITEM_BOOL, NULL, name, ch, text, ltext, NULL, b_value, 0, p_callback }; i_config++
index a75a224..f5cdcd0 100644 (file)
@@ -2,7 +2,7 @@
  * input_ext-dec.h: structures exported to the VideoLAN decoders
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: input_ext-dec.h,v 1.64 2002/07/23 00:39:16 sam Exp $
+ * $Id: input_ext-dec.h,v 1.65 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Michel Kaempf <maxx@via.ecp.fr>
@@ -118,6 +118,10 @@ struct decoder_fifo_t
     vlc_fourcc_t        i_fourcc;
     void *              p_demux_data;
     stream_ctrl_t *     p_stream_ctrl;
+
+    /* Module properties */
+    module_t *              p_module;
+    int                 ( * pf_run ) ( decoder_fifo_t * );
 };
 
 /*****************************************************************************
index d2253f5..f2d5b87 100644 (file)
@@ -4,7 +4,7 @@
  * control the pace of reading. 
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: input_ext-intf.h,v 1.72 2002/07/23 00:39:16 sam Exp $
+ * $Id: input_ext-intf.h,v 1.73 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -65,13 +65,9 @@ struct es_descriptor_t
 
     /* Decoder information */
     decoder_fifo_t *        p_decoder_fifo;
-    vlc_thread_t            thread_id;                  /* ID of the decoder */
 
     count_t                 c_packets;                 /* total packets read */
     count_t                 c_invalid_packets;       /* invalid packets read */
-
-    /* Module properties */
-    module_t *              p_module;
 };
 
 /* Special PID values - note that the PID is only on 13 bits, and that values
@@ -274,9 +270,7 @@ struct input_thread_t
     vlc_bool_t              b_eof;
 
     /* Access module */
-    module_t *       p_access_module;
-    int           (* pf_open ) ( input_thread_t * );
-    void          (* pf_close )( input_thread_t * );
+    module_t *       p_access;
     ssize_t       (* pf_read ) ( input_thread_t *, byte_t *, size_t );
     int           (* pf_set_program )( input_thread_t *, pgrm_descriptor_t * );
     int           (* pf_set_area )( input_thread_t *, input_area_t * );
@@ -285,9 +279,7 @@ struct input_thread_t
     size_t           i_mtu;
 
     /* Demux module */
-    module_t *       p_demux_module;
-    int           (* pf_init )   ( input_thread_t * );
-    void          (* pf_end )    ( input_thread_t * );
+    module_t *       p_demux;
     int           (* pf_demux )  ( input_thread_t * );
     int           (* pf_rewind ) ( input_thread_t * );
                                            /* NULL if we don't support going *
@@ -347,19 +339,19 @@ struct input_thread_t
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
-#define input_CreateThread(a,b,c) __input_CreateThread(CAST_TO_VLC_OBJECT(a),b,c)
+#define input_CreateThread(a,b,c) __input_CreateThread(VLC_OBJECT(a),b,c)
 input_thread_t * __input_CreateThread ( vlc_object_t *,
                                         playlist_item_t *, int * );
 void   input_StopThread     ( input_thread_t * );
 void   input_DestroyThread  ( input_thread_t * );
 
-#define input_SetStatus(a,b) __input_SetStatus(CAST_TO_VLC_OBJECT(a),b)
+#define input_SetStatus(a,b) __input_SetStatus(VLC_OBJECT(a),b)
 VLC_EXPORT( void, __input_SetStatus, ( vlc_object_t *, int ) );
 
-#define input_Seek(a,b,c) __input_Seek(CAST_TO_VLC_OBJECT(a),b,c)
+#define input_Seek(a,b,c) __input_Seek(VLC_OBJECT(a),b,c)
 VLC_EXPORT( void, __input_Seek, ( vlc_object_t *, off_t, int ) );
 
-#define input_Tell(a,b) __input_Tell(CAST_TO_VLC_OBJECT(a),b)
+#define input_Tell(a,b) __input_Tell(VLC_OBJECT(a),b)
 VLC_EXPORT( void, __input_Tell, ( vlc_object_t *, stream_position_t * ) );
 
 VLC_EXPORT( void, input_DumpStream, ( input_thread_t * ) );
@@ -370,6 +362,5 @@ VLC_EXPORT( int, input_ChangeProgram, ( input_thread_t *, u16 ) );
 
 int    input_ToggleGrayscale( input_thread_t * );
 int    input_ToggleMute     ( input_thread_t * );
-int    input_SetSMP         ( input_thread_t *, int );
 
 #endif /* "input_ext-intf.h" */
index bfed587..3bf087b 100644 (file)
@@ -3,7 +3,7 @@
  *                      but exported to plug-ins
  *****************************************************************************
  * Copyright (C) 1999-2002 VideoLAN
- * $Id: input_ext-plugins.h,v 1.32 2002/07/21 19:26:13 sigmunau Exp $
+ * $Id: input_ext-plugins.h,v 1.33 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -79,7 +79,7 @@ int input_DelInfo( input_thread_t * p_input ); /* no need to export this */
 /*****************************************************************************
  * Prototypes from input_ext-plugins.h (buffers management)
  *****************************************************************************/
-#define input_BuffersInit(a) __input_BuffersInit(CAST_TO_VLC_OBJECT(a))
+#define input_BuffersInit(a) __input_BuffersInit(VLC_OBJECT(a))
 void * __input_BuffersInit( vlc_object_t * );
 VLC_EXPORT( void, input_BuffersEnd, ( input_thread_t *, input_buffers_t * ) );
 
@@ -282,8 +282,10 @@ struct input_socket_t
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
-VLC_EXPORT( void, input_FDClose, ( input_thread_t * ) );
-VLC_EXPORT( void, input_FDNetworkClose, ( input_thread_t * ) );
+VLC_EXPORT( void, __input_FDClose, ( vlc_object_t * ) );
+#define input_FDClose(a) __input_FDClose(VLC_OBJECT(a))
+VLC_EXPORT( void, __input_FDNetworkClose, ( vlc_object_t * ) );
+#define input_FDNetworkClose(a) __input_FDNetworkClose(VLC_OBJECT(a))
 VLC_EXPORT( ssize_t, input_FDRead, ( input_thread_t *, byte_t *, size_t ) );
 VLC_EXPORT( ssize_t, input_FDNetworkRead, ( input_thread_t *, byte_t *, size_t ) );
 VLC_EXPORT( void, input_FDSeek, ( input_thread_t *, off_t ) );
index 1509757..20d64ac 100644 (file)
@@ -4,7 +4,7 @@
  * interface, such as message output.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: interface.h,v 1.32 2002/07/20 18:01:41 sam Exp $
+ * $Id: interface.h,v 1.33 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -40,23 +40,20 @@ struct intf_thread_t
     intf_console_t *    p_console;                                /* console */
     intf_sys_t *        p_sys;                           /* system interface */
     
-    /* Plugin used and shortcuts to access its capabilities */
+    /* Interface module */
     module_t *   p_module;
-    int       ( *pf_open )   ( intf_thread_t * );
-    void      ( *pf_close )  ( intf_thread_t * );
     void      ( *pf_run )    ( intf_thread_t * );
 
     /* XXX: new message passing stuff will go here */
     vlc_mutex_t  change_lock;
     vlc_bool_t   b_menu_change;
     vlc_bool_t   b_menu;
-
 };
 
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
-#define intf_Create(a) __intf_Create(CAST_TO_VLC_OBJECT(a))
+#define intf_Create(a) __intf_Create(VLC_OBJECT(a))
 VLC_EXPORT( intf_thread_t *, __intf_Create,     ( vlc_object_t * ) );
 VLC_EXPORT( vlc_error_t,       intf_RunThread,  ( intf_thread_t * ) );
 VLC_EXPORT( void,              intf_StopThread, ( intf_thread_t * ) );
index d9c625e..115ef4c 100644 (file)
@@ -2,7 +2,7 @@
  * intf_eject.h: CD/DVD-ROM ejection handling functions
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: intf_eject.h,v 1.4 2002/06/01 18:04:48 sam Exp $
+ * $Id: intf_eject.h,v 1.5 2002/07/31 20:56:50 sam Exp $
  *
  * Author: Julien Blache <jb@technologeek.org>
  *
@@ -21,6 +21,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-#define intf_Eject(a,b) __intf_Eject(CAST_TO_VLC_OBJECT(a),b)
+#define intf_Eject(a,b) __intf_Eject(VLC_OBJECT(a),b)
 VLC_EXPORT( int, __intf_Eject, ( vlc_object_t *, const char * ) );
 
index 24e0bd8..0145358 100644 (file)
@@ -3,7 +3,7 @@
  * Declaration and extern access to global program object.
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001, 2002 VideoLAN
- * $Id: main.h,v 1.41 2002/07/29 19:05:47 gbazin Exp $
+ * $Id: main.h,v 1.42 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *
@@ -44,7 +44,7 @@ struct vlc_t
     char **                ppsz_argv;              /* command line arguments */
     char *                 psz_homedir;             /* user's home directory */
 
-    u32                    i_cpu_capabilities;             /* CPU extensions */
+    u32                    i_cpu;                          /* CPU extensions */
 
     /* Generic settings */
     vlc_bool_t             b_quiet;                            /* be quiet ? */
@@ -58,7 +58,7 @@ struct vlc_t
     void* ( *pf_memset ) ( void *, int, size_t );    /* FIXME: unimplemented */
 
     /* The module bank */
-    module_bank_t   module_bank;
+    module_bank_t * p_module_bank;
 
     /* The message bank */
     msg_bank_t      msg_bank;
index de07bc6..6de57cf 100644 (file)
@@ -2,7 +2,7 @@
  * modules.h : Module management functions.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules.h,v 1.58 2002/07/23 00:39:16 sam Exp $
+ * $Id: modules.h,v 1.59 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -36,53 +36,6 @@ typedef int     module_handle_t;
 typedef void *  module_handle_t;
 #endif
 
-/*****************************************************************************
- * Module capabilities.
- *****************************************************************************/
-#define MODULE_CAPABILITY_MAIN             0  /* Main */
-#define MODULE_CAPABILITY_INTF             1  /* Interface */
-#define MODULE_CAPABILITY_ACCESS           2  /* Input */
-#define MODULE_CAPABILITY_DEMUX            3  /* Input */
-#define MODULE_CAPABILITY_NETWORK          4  /* Network */
-#define MODULE_CAPABILITY_DECODER          5  /* Audio or video decoder */
-#define MODULE_CAPABILITY_MOTION           6  /* Motion compensation */
-#define MODULE_CAPABILITY_IDCT             7  /* IDCT transformation */
-#define MODULE_CAPABILITY_AOUT             8  /* Audio output */
-#define MODULE_CAPABILITY_AOUT_FILTER      9  /* Audio output filter */
-#define MODULE_CAPABILITY_VOUT            10  /* Video output */
-#define MODULE_CAPABILITY_VOUT_FILTER     11  /* Video output filter */
-#define MODULE_CAPABILITY_CHROMA          12  /* colorspace conversion */
-#define MODULE_CAPABILITY_IMDCT           13  /* IMDCT transformation */
-#define MODULE_CAPABILITY_DOWNMIX         14  /* AC3 downmix */
-#define MODULE_CAPABILITY_MEMCPY          15  /* memcpy */
-#define MODULE_CAPABILITY_MAX             16  /* Total number of capabilities */
-
-#define DECLARE_MODULE_CAPABILITY_TABLE \
-    static const char *ppsz_capabilities[] = \
-    { \
-        "main", \
-        "interface", \
-        "access", \
-        "demux", \
-        "network", \
-        "decoder", \
-        "motion", \
-        "iDCT", \
-        "audio output", \
-        "audio output filter", \
-        "video output", \
-        "video output filter", \
-        "chroma transformation", \
-        "iMDCT", \
-        "downmix", \
-        "memcpy", \
-        "unknown" \
-    }
-
-#define MODULE_CAPABILITY( i_capa ) \
-    ppsz_capabilities[ ((i_capa) > MODULE_CAPABILITY_MAX) ? \
-                          MODULE_CAPABILITY_MAX : (i_capa) ]
-
 /*****************************************************************************
  * module_bank_t: the module bank
  *****************************************************************************
@@ -90,11 +43,14 @@ typedef void *  module_handle_t;
  *****************************************************************************/
 struct module_bank_t
 {
+    VLC_COMMON_MEMBERS
+
     module_t *   first;                          /* First module in the bank */
     int          i_count;                     /* Number of allocated modules */
 
     vlc_mutex_t  lock;         /* Global lock -- you can't imagine how awful *
                                     it is to design thread-safe linked lists */
+    module_symbols_t symbols;
 };
 
 /*****************************************************************************
@@ -113,14 +69,18 @@ struct module_t
      * Variables set by the module to tell us what it can do
      */
     char *psz_program;        /* Program name which will activate the module */
+
     char *pp_shortcuts[ MODULE_SHORTCUT_MAX ];    /* Shortcuts to the module */
 
-    u32   i_capabilities;                                 /* Capability list */
-    int   pi_score[ MODULE_CAPABILITY_MAX ];    /* Score for each capability */
+    char *psz_capability;                                      /* Capability */
+    int   i_score;                              /* Score for each capability */
+    u32   i_cpu;                                /* Required CPU capabilities */
 
-    u32   i_cpu_capabilities;                   /* Required CPU capabilities */
+    vlc_bool_t b_submodule;                          /* Is this a submodule? */
 
-    module_functions_t *p_functions;                 /* Capability functions */
+    /* Callbacks */
+    int  ( * pf_activate )   ( vlc_object_t * );
+    void ( * pf_deactivate ) ( vlc_object_t * );
 
     /*
      * Variables set by the module to store its config options
@@ -132,24 +92,11 @@ struct module_t
     /*
      * Variables used internally by the module manager
      */
-    vlc_bool_t          b_builtin;  /* Set to true if the module is built in */
-
-    union
-    {
-        struct
-        {
-            module_handle_t     handle;                     /* Unique handle */
-            char *              psz_filename;             /* Module filename */
+    /* Plugin-specific stuff */
+    module_handle_t     handle;                             /* Unique handle */
+    char *              psz_filename;                     /* Module filename */
 
-        } plugin;
-
-        struct
-        {
-            int ( *pf_deactivate ) ( module_t * );
-
-        } builtin;
-
-    } is;
+    vlc_bool_t          b_builtin;  /* Set to true if the module is built in */
 
     int   i_usage;                                      /* Reference counter */
     int   i_unused_delay;                  /* Delay until module is unloaded */
@@ -163,178 +110,26 @@ struct module_t
     module_symbols_t *p_symbols;
 };
 
-/*****************************************************************************
- * Module functions description structure
- *****************************************************************************/
-typedef struct function_list_t
-{
-    union
-    {
-        /* Interface plugin */
-        struct
-        {
-            int  ( * pf_open ) ( intf_thread_t * );
-            void ( * pf_close )( intf_thread_t * );
-            void ( * pf_run )  ( intf_thread_t * );
-        } intf;
-
-        /* Access plugin */
-        struct
-        {
-            int  ( * pf_open )        ( input_thread_t * );
-            void ( * pf_close )       ( input_thread_t * );
-            ssize_t ( * pf_read )     ( input_thread_t *, byte_t *, size_t );
-            void ( * pf_seek )        ( input_thread_t *, off_t );
-            int  ( * pf_set_program ) ( input_thread_t *, pgrm_descriptor_t * );
-            int  ( * pf_set_area )    ( input_thread_t *, input_area_t * );
-        } access;
-
-        /* Demux plugin */
-        struct
-        {
-            int  ( * pf_init )   ( input_thread_t * );
-            void ( * pf_end )    ( input_thread_t * );
-            int  ( * pf_demux )  ( input_thread_t * );
-            int  ( * pf_rewind ) ( input_thread_t * );
-        } demux;
-
-        /* Network plugin */
-        struct
-        {
-            int  ( * pf_open ) ( vlc_object_t *, network_socket_t * );
-        } network;
-
-        /* Audio output plugin */
-        struct
-        {
-            int  ( * pf_open )       ( aout_thread_t * );
-            int  ( * pf_setformat )  ( aout_thread_t * );
-            int  ( * pf_getbufinfo ) ( aout_thread_t *, int );
-            void ( * pf_play )       ( aout_thread_t *, byte_t *, int );
-            void ( * pf_close )      ( aout_thread_t * );
-        } aout;
-
-        /* Video output plugin */
-        struct
-        {
-            int  ( * pf_create )     ( vout_thread_t * );
-            int  ( * pf_init )       ( vout_thread_t * );
-            void ( * pf_end )        ( vout_thread_t * );
-            void ( * pf_destroy )    ( vout_thread_t * );
-            int  ( * pf_manage )     ( vout_thread_t * );
-            void ( * pf_render )     ( vout_thread_t *, picture_t * );
-            void ( * pf_display )    ( vout_thread_t *, picture_t * );
-        } vout;
-
-        /* Motion compensation plugin */
-        struct
-        {
-            void ( * ppppf_motion[2][2][4] ) ( yuv_data_t *, yuv_data_t *,
-                                               int, int );
-        } motion;
-
-        /* IDCT plugin */
-        struct
-        {
-            void ( * pf_idct_init )    ( void ** );
-            void ( * pf_sparse_idct_add )( dctelem_t *, yuv_data_t *, int,
-                                         void *, int );
-            void ( * pf_idct_add )     ( dctelem_t *, yuv_data_t *, int,
-                                         void *, int );
-            void ( * pf_sparse_idct_copy )( dctelem_t *, yuv_data_t *, int,
-                                         void *, int );
-            void ( * pf_idct_copy )    ( dctelem_t *, yuv_data_t *, int,
-                                         void *, int );
-            void ( * pf_norm_scan )    ( u8 ppi_scan[2][64] );
-        } idct;
-
-        /* Chroma transformation plugin */
-        struct
-        {
-            int  ( * pf_init )         ( vout_thread_t * );
-            void ( * pf_end )          ( vout_thread_t * );
-        } chroma;
-
-        /* IMDCT plugin */
-        struct
-        {
-            void ( * pf_imdct_init )   ( imdct_t * );
-            void ( * pf_imdct_256 )    ( imdct_t *, float [], float [] );
-            void ( * pf_imdct_256_nol )( imdct_t *, float [], float [] );
-            void ( * pf_imdct_512 )    ( imdct_t *, float [], float [] );
-            void ( * pf_imdct_512_nol )( imdct_t *, float [], float [] );
-//            void ( * pf_fft_64p )      ( complex_t * );
-
-        } imdct;
-
-        /* AC3 downmix plugin */
-        struct
-        {
-            void ( * pf_downmix_3f_2r_to_2ch ) ( float *, dm_par_t * );
-            void ( * pf_downmix_3f_1r_to_2ch ) ( float *, dm_par_t * );
-            void ( * pf_downmix_2f_2r_to_2ch ) ( float *, dm_par_t * );
-            void ( * pf_downmix_2f_1r_to_2ch ) ( float *, dm_par_t * );
-            void ( * pf_downmix_3f_0r_to_2ch ) ( float *, dm_par_t * );
-            void ( * pf_stream_sample_2ch_to_s16 ) ( s16 *, float *, float * );
-            void ( * pf_stream_sample_1ch_to_s16 ) ( s16 *, float * );
-
-        } downmix;
-
-        /* Decoder plugins */
-        struct
-        {
-            int  ( * pf_probe)( vlc_fourcc_t * p_es );
-            int  ( * pf_run ) ( decoder_fifo_t * p_fifo );
-        } dec;
-
-        /* memcpy plugins */
-        struct
-        {
-            void* ( * pf_memcpy ) ( void *, const void *, size_t );
-            void* ( * pf_memset ) ( void *, int, size_t );
-        } memcpy;
-
-    } functions;
-
-} function_list_t;
-
-struct module_functions_t
-{
-    /* XXX: The order here has to be the same as above for the #defines */
-    function_list_t intf;
-    function_list_t access;
-    function_list_t demux;
-    function_list_t network;
-    function_list_t dec;
-    function_list_t motion;
-    function_list_t idct;
-    function_list_t aout;
-    function_list_t vout;
-    function_list_t chroma;
-    function_list_t imdct;
-    function_list_t downmix;
-    function_list_t memcpy;
-};
-
 /*****************************************************************************
  * Exported functions.
  *****************************************************************************/
-#define module_InitBank(a)     __module_InitBank(CAST_TO_VLC_OBJECT(a))
+#define module_InitBank(a)     __module_InitBank(VLC_OBJECT(a))
 void  __module_InitBank        ( vlc_object_t * );
-#define module_LoadMain(a)     __module_LoadMain(CAST_TO_VLC_OBJECT(a))
+#define module_LoadMain(a)     __module_LoadMain(VLC_OBJECT(a))
 void  __module_LoadMain        ( vlc_object_t * );
-#define module_LoadBuiltins(a) __module_LoadBuiltins(CAST_TO_VLC_OBJECT(a))
+#define module_LoadBuiltins(a) __module_LoadBuiltins(VLC_OBJECT(a))
 void  __module_LoadBuiltins    ( vlc_object_t * );
-#define module_LoadPlugins(a)  __module_LoadPlugins(CAST_TO_VLC_OBJECT(a))
+#define module_LoadPlugins(a)  __module_LoadPlugins(VLC_OBJECT(a))
 void  __module_LoadPlugins     ( vlc_object_t * );
-#define module_EndBank(a)      __module_EndBank(CAST_TO_VLC_OBJECT(a))
+#define module_EndBank(a)      __module_EndBank(VLC_OBJECT(a))
 void  __module_EndBank         ( vlc_object_t * );
-#define module_ResetBank(a)    __module_ResetBank(CAST_TO_VLC_OBJECT(a))
+#define module_ResetBank(a)    __module_ResetBank(VLC_OBJECT(a))
 void  __module_ResetBank       ( vlc_object_t * );
-#define module_ManageBank(a)   __module_ManageBank(CAST_TO_VLC_OBJECT(a))
+#define module_ManageBank(a)   __module_ManageBank(VLC_OBJECT(a))
 void  __module_ManageBank      ( vlc_object_t * );
 
-#define module_Need(a,b,c,d) __module_Need(CAST_TO_VLC_OBJECT(a),b,c,d)
-VLC_EXPORT( module_t *, __module_Need, ( vlc_object_t *, int, const char *, void * ) );
-VLC_EXPORT( void, module_Unneed, ( module_t * ) );
+#define module_Need(a,b,c) __module_Need(VLC_OBJECT(a),b,c)
+VLC_EXPORT( module_t *, __module_Need, ( vlc_object_t *, const char *, const char * ) );
+#define module_Unneed(a,b) __module_Unneed(VLC_OBJECT(a),b)
+VLC_EXPORT( void, __module_Unneed, ( vlc_object_t *, module_t * ) );
 
index 043d442..0bfbe43 100644 (file)
@@ -2,7 +2,7 @@
  * modules_inner.h : Macros used from within a module.
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: modules_inner.h,v 1.23 2002/06/01 12:31:57 sam Exp $
+ * $Id: modules_inner.h,v 1.24 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
 #define UGLY_KLUDGE( z ) #z
 /* And I need to do _this_ to change « foo bar » to « module_foo_bar » ! */
 #define CONCATENATE( y, z ) CRUDE_HACK( y, z )
-#define CRUDE_HACK( y, z )  y##__MODULE_##z
+#define CRUDE_HACK( y, z )  y##__##z
 
 /* If the module is built-in, then we need to define foo_InitModule instead
  * of InitModule. Same for Activate- and DeactivateModule. */
 #if defined( __BUILTIN__ )
-#   define _M( function )          CONCATENATE( function, MODULE_NAME )
+#   define E_( function )          CONCATENATE( function, MODULE_NAME )
 #   define __VLC_SYMBOL( symbol )  CONCATENATE( symbol, MODULE_NAME )
 #   define DECLARE_SYMBOLS         ;
 #   define STORE_SYMBOLS           ;
 #elif defined( __PLUGIN__ )
-#   define _M( function )          function
+#   define E_( function )          function
 #   define __VLC_SYMBOL( symbol  ) CONCATENATE( symbol, MODULE_SYMBOL )
 #   define DECLARE_SYMBOLS         module_symbols_t* p_symbols;
 #   define STORE_SYMBOLS           p_symbols = p_module->p_symbols;
 #endif
 
+#if defined( __cplusplus )
+#   define EXTERN_SYMBOL           extern "C"
+#else
+#   define EXTERN_SYMBOL
+#endif
+
 #define MODULE_STRING STRINGIFY( MODULE_NAME )
 
 /*
  * instance the module name, its shortcuts, its capabilities... we also create
  * a copy of its config because the module can be unloaded at any time.
  */
-#define MODULE_INIT_START                                                     \
+#define vlc_module_begin( )                                                   \
     DECLARE_SYMBOLS;                                                          \
-    int __VLC_SYMBOL( InitModule ) ( module_t *p_module )                     \
+    EXTERN_SYMBOL int __VLC_SYMBOL(vlc_entry) ( module_t *p_module )          \
     {                                                                         \
-        int i_shortcut = 1;                                                   \
+        int i_shortcut = 1, i_config = 0;                                     \
+        module_config_t p_config[ 100 ];                                      \
         STORE_SYMBOLS;                                                        \
+        p_module->b_submodule = VLC_FALSE;                                    \
         p_module->psz_object_name = MODULE_STRING;                            \
         p_module->psz_longname = MODULE_STRING;                               \
-        p_module->psz_program = NULL;                                         \
         p_module->pp_shortcuts[ 0 ] = MODULE_STRING;                          \
-        p_module->i_capabilities = 0;                                         \
-        p_module->i_cpu_capabilities = 0;                                     \
-        do {
+        p_module->i_cpu = 0;                                                  \
+        p_module->psz_program = NULL;                                         \
+        p_module->psz_capability = "";                                        \
+        p_module->i_score = 1;                                                \
+        p_module->pf_activate = NULL;                                         \
+        p_module->pf_deactivate = NULL;                                       \
+        do                                                                    \
+        {                                                                     \
+            module_t *p_submodule = p_module /* the ; gets added */
 
-#define MODULE_INIT_STOP                                                      \
+#define vlc_module_end( )                                                     \
+            p_submodule->pp_shortcuts[ i_shortcut ] = NULL;                   \
         } while( 0 );                                                         \
-        p_module->pp_shortcuts[ i_shortcut ] = NULL;                          \
+        p_config[ i_config ] =                                                \
+            (module_config_t){ CONFIG_HINT_END, NULL, NULL, '\0' };           \
         config_Duplicate( p_module, p_config );                               \
         if( p_module->p_config == NULL )                                      \
         {                                                                     \
-/*//X            intf_Err( p_module, "InitModule can't duplicate p_config" );*/      \
             return -1;                                                        \
         }                                                                     \
-        return 0;                                                             \
-    }
-
-#define ADD_CAPABILITY( cap, score )                                          \
-    p_module->i_capabilities |= 1 << MODULE_CAPABILITY_##cap;                 \
-    p_module->pi_score[ MODULE_CAPABILITY_##cap ] = score;
-
-#define ADD_REQUIREMENT( cap )                                                \
-    p_module->i_cpu_capabilities |= CPU_CAPABILITY_##cap;
-
-#define ADD_PROGRAM( program )                                                \
-    p_module->psz_program = program;
-
-#define ADD_SHORTCUT( shortcut )                                              \
-    p_module->pp_shortcuts[ i_shortcut ] = shortcut;                          \
-    i_shortcut++;
-
-#define SET_DESCRIPTION( desc )                                               \
-    p_module->psz_longname = desc;
+        return 0 && i_shortcut;                                               \
+    }                                                                         \
+    int __VLC_SYMBOL(vlc_entry) ( module_t * ) /* the ; gets added */
+
+
+#define add_submodule( )                                                      \
+    p_submodule->pp_shortcuts[ i_shortcut ] = NULL;                           \
+    p_submodule = vlc_object_create( p_module, VLC_OBJECT_MODULE );           \
+    vlc_object_attach( p_submodule, p_module );                               \
+    p_submodule->b_submodule = VLC_TRUE;                                      \
+    /* Nuahahaha! Heritage! Polymorphism! Ugliness!! */                       \
+    for( i_shortcut = 0; p_module->pp_shortcuts[ i_shortcut ]; i_shortcut++ ) \
+    {                                                                         \
+        p_submodule->pp_shortcuts[ i_shortcut ] =                             \
+                                p_module->pp_shortcuts[ i_shortcut ];         \
+    }                                                                         \
+    p_submodule->psz_object_name = p_module->psz_object_name;                 \
+    p_submodule->psz_program = p_module->psz_program;                         \
+    p_submodule->psz_capability = p_module->psz_capability;                   \
+    p_submodule->i_score = p_module->i_score;                                 \
+    p_submodule->i_cpu = p_module->i_cpu;                                     \
+    p_submodule->pf_activate = NULL;                                          \
+    p_submodule->pf_deactivate = NULL
+
+#define add_requirement( cap )                                                \
+    p_module->i_cpu |= CPU_CAPABILITY_##cap
+
+#define add_shortcut( shortcut )                                              \
+    p_submodule->pp_shortcuts[ i_shortcut ] = shortcut;                       \
+    i_shortcut++
+
+#define set_description( desc )                                               \
+    p_module->psz_longname = desc
+
+#define set_capability( cap, score )                                          \
+    p_submodule->psz_capability = cap;                                        \
+    p_submodule->i_score = score
+
+#define set_program( program )                                                \
+    p_submodule->psz_program = program
+
+#define set_callbacks( activate, deactivate )                                 \
+    p_submodule->pf_activate = activate;                                      \
+    p_submodule->pf_deactivate = deactivate
 
 /*
- * ActivateModule: this function is called before functions can be accessed,
+ * module_activate: this function is called before functions can be accessed,
  * we do allocation tasks here, and maybe additional stuff such as large
  * table allocation. Once ActivateModule is called we are almost sure the
  * module will be used.
  */
-#define MODULE_ACTIVATE_START                                                 \
-    int __VLC_SYMBOL( ActivateModule ) ( module_t *p_module )                 \
+#define module_activate( prototype )                                          \
+    __module_activate( prototype );                                           \
+    int __VLC_SYMBOL( module_activate ) ( module_t *p_module )                \
     {                                                                         \
         STORE_SYMBOLS;                                                        \
-        p_module->p_functions =                                               \
-          ( module_functions_t * )malloc( sizeof( module_functions_t ) );     \
-        if( p_module->p_functions == NULL )                                   \
-        {                                                                     \
-            return( -1 );                                                     \
-        }                                                                     \
         config_SetCallbacks( p_module->p_config, p_config );                  \
-        do {
-
-#define MODULE_ACTIVATE_STOP                                                  \
-        } while( 0 );                                                         \
-        return 0;                                                             \
-    }
+        return __module_activate( p_module );                                 \
+    }                                                                         \
+                                                                              \
+    static int __module_activate( prototype )
 
 /*
  * DeactivateModule: this function is called after we are finished with the
  * module. Everything that has been done in ActivateModule needs to be undone
  * here.
  */
-#define MODULE_DEACTIVATE_START                                               \
-    int __VLC_SYMBOL( DeactivateModule )( module_t *p_module )                \
+#define module_deactivate( prototype )                                        \
+    __module_deactivate( prototype );                                         \
+    int __VLC_SYMBOL( module_deactivate )( module_t *p_module )               \
     {                                                                         \
-        free( p_module->p_functions );                                        \
-        do {
-
-#define MODULE_DEACTIVATE_STOP                                                \
-        } while( 0 );                                                         \
+        int i_ret = __module_deactivate( p_module );                          \
         config_UnsetCallbacks( p_module->p_config );                          \
-        return 0;                                                             \
-    }
+        return i_ret;                                                         \
+    }                                                                         \
+                                                                              \
+    static int __module_deactivate( prototype )
+
index 7c88ddd..2d47af2 100644 (file)
@@ -4,7 +4,7 @@
  * modules.
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: netutils.h,v 1.21 2002/06/01 18:04:48 sam Exp $
+ * $Id: netutils.h,v 1.22 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Henri Fallon <henri@videolan.org>
@@ -33,8 +33,8 @@
 struct sockaddr_in;
 int   network_BuildAddr       ( struct sockaddr_in *, char *, int ); 
 
-#define network_ChannelJoin(a,b) __network_ChannelJoin(CAST_TO_VLC_OBJECT(a),b)
-#define network_ChannelCreate(a) __network_ChannelCreate(CAST_TO_VLC_OBJECT(a))
+#define network_ChannelJoin(a,b) __network_ChannelJoin(VLC_OBJECT(a),b)
+#define network_ChannelCreate(a) __network_ChannelCreate(VLC_OBJECT(a))
 VLC_EXPORT( int, __network_ChannelJoin,     ( vlc_object_t *, int ) );
 VLC_EXPORT( int, __network_ChannelCreate,   ( vlc_object_t * ) );
 
index 095efa9..ccf2f82 100644 (file)
@@ -4,7 +4,7 @@
  * of the reading.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: stream_control.h,v 1.9 2002/07/20 18:01:41 sam Exp $
+ * $Id: stream_control.h,v 1.10 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -43,8 +43,6 @@ struct stream_ctrl_t
 
     vlc_bool_t              b_mute;
     vlc_bool_t              b_grayscale;           /* use color or grayscale */
-    int                     i_smp; /* number of symmetrical threads to launch
-                                    * to decode the video | 0 == disabled    */
 };
 
 /* Possible status : */
index 4675daa..7759ce8 100644 (file)
@@ -5,7 +5,7 @@
  * thread, and destroy a previously opened video output thread.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: video_output.h,v 1.81 2002/07/20 18:01:41 sam Exp $
+ * $Id: video_output.h,v 1.82 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@via.ecp.fr>
@@ -47,8 +47,6 @@ typedef struct vout_chroma_t
 
     /* Plugin used and shortcuts to access its capabilities */
     module_t * p_module;
-    int  ( * pf_init )  ( vout_thread_t * );
-    void ( * pf_end )   ( vout_thread_t * );
 
 } vout_chroma_t;
 
@@ -102,10 +100,8 @@ struct vout_thread_t
 
     /* Plugin used and shortcuts to access its capabilities */
     module_t *   p_module;
-    int       ( *pf_create )     ( vout_thread_t * );
     int       ( *pf_init )       ( vout_thread_t * );
     void      ( *pf_end )        ( vout_thread_t * );
-    void      ( *pf_destroy )    ( vout_thread_t * );
     int       ( *pf_manage )     ( vout_thread_t * );
     void      ( *pf_render )     ( vout_thread_t *, picture_t * );
     void      ( *pf_display )    ( vout_thread_t *, picture_t * );
@@ -170,7 +166,7 @@ struct vout_thread_t
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
-#define vout_CreateThread(a,b,c,d,e) __vout_CreateThread(CAST_TO_VLC_OBJECT(a),b,c,d,e)
+#define vout_CreateThread(a,b,c,d,e) __vout_CreateThread(VLC_OBJECT(a),b,c,d,e)
 VLC_EXPORT( vout_thread_t *, __vout_CreateThread,   ( vlc_object_t *, int, int, u32, int ) );
 VLC_EXPORT( void,              vout_DestroyThread,  ( vout_thread_t * ) );
 
index 72dfa21..a9be580 100644 (file)
@@ -3,7 +3,7 @@
  * Collection of useful common types and macros definitions
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: vlc_common.h,v 1.12 2002/07/23 00:39:16 sam Exp $
+ * $Id: vlc_common.h,v 1.13 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@via.ecp.fr>
  *          Vincent Seguin <seguin@via.ecp.fr>
@@ -254,6 +254,9 @@ VLC_DECLARE_STRUCT(input_info_category_t)
     vlc_object_t ** pp_children;                         /* our children */ \
     volatile int    i_children;                                             \
                                                                             \
+    /* Private data */                                                      \
+    void *          p_private;                                              \
+                                                                            \
     /* Just a reminder so that people don't cast garbage */                 \
     int be_sure_to_add_VLC_COMMON_MEMBERS_to_struct;                        \
 
@@ -263,8 +266,8 @@ struct vlc_object_t
     VLC_COMMON_MEMBERS
 };
 
-/* CAST_TO_VLC_OBJECT: attempt at doing a clever cast */
-#define CAST_TO_VLC_OBJECT( x ) \
+/* VLC_OBJECT: attempt at doing a clever cast */
+#define VLC_OBJECT( x ) \
     ((vlc_object_t *)(x))+0*(x)->be_sure_to_add_VLC_COMMON_MEMBERS_to_struct
 
 /*****************************************************************************
index 792938e..218cfbb 100644 (file)
@@ -2,7 +2,7 @@
  * cpu.h: CPU type detection
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: vlc_cpu.h,v 1.2 2002/06/01 18:04:48 sam Exp $
+ * $Id: vlc_cpu.h,v 1.3 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -21,6 +21,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-#define CPUCapabilities(a) __CPUCapabilities(CAST_TO_VLC_OBJECT(a))
+#define CPUCapabilities(a) __CPUCapabilities(VLC_OBJECT(a))
 u32 __CPUCapabilities( vlc_object_t * );
 
index 1a6b537..319f6e6 100644 (file)
@@ -4,7 +4,7 @@
  * interface, such as message output.
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001, 2002 VideoLAN
- * $Id: vlc_messages.h,v 1.4 2002/07/20 18:01:42 sam Exp $
+ * $Id: vlc_messages.h,v 1.5 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Vincent Seguin <seguin@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -61,6 +61,8 @@ struct msg_bank_t
 {
     /* Message queue lock */
     vlc_mutex_t             lock;
+    vlc_bool_t              b_configured;
+    vlc_bool_t              b_overflow;
 
     /* Message queue */
     msg_item_t              msg[VLC_MSG_QSIZE];             /* message queue */
@@ -98,19 +100,19 @@ VLC_EXPORT( void, __msg_Dbg,    ( void *, const char *, ... ) );
 #ifdef HAVE_VARIADIC_MACROS
 
 #   define msg_Info( p_this, psz_format, args... ) \
-      __msg_Generic( CAST_TO_VLC_OBJECT(p_this), VLC_MSG_INFO, MODULE_STRING, \
+      __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_INFO, MODULE_STRING, \
                      psz_format, ## args )
 
 #   define msg_Err( p_this, psz_format, args... ) \
-      __msg_Generic( CAST_TO_VLC_OBJECT(p_this), VLC_MSG_ERR, MODULE_STRING, \
+      __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_ERR, MODULE_STRING, \
                      psz_format, ## args )
 
 #   define msg_Warn( p_this, psz_format, args... ) \
-      __msg_Generic( CAST_TO_VLC_OBJECT(p_this), VLC_MSG_WARN, MODULE_STRING, \
+      __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_WARN, MODULE_STRING, \
                      psz_format, ## args )
 
 #   define msg_Dbg( p_this, psz_format, args... ) \
-      __msg_Generic( CAST_TO_VLC_OBJECT(p_this), VLC_MSG_DBG, MODULE_STRING, \
+      __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_DBG, MODULE_STRING, \
                      psz_format, ## args )
 
 #else /* HAVE_VARIADIC_MACROS */
@@ -122,15 +124,15 @@ VLC_EXPORT( void, __msg_Dbg,    ( void *, const char *, ... ) );
 
 #endif /* HAVE_VARIADIC_MACROS */
 
-#define msg_Create(a) __msg_Create(CAST_TO_VLC_OBJECT(a))
-#define msg_Flush(a) __msg_Flush(CAST_TO_VLC_OBJECT(a))
-#define msg_Destroy(a) __msg_Destroy(CAST_TO_VLC_OBJECT(a))
+#define msg_Create(a) __msg_Create(VLC_OBJECT(a))
+#define msg_Flush(a) __msg_Flush(VLC_OBJECT(a))
+#define msg_Destroy(a) __msg_Destroy(VLC_OBJECT(a))
 void __msg_Create  ( vlc_object_t * );
 void __msg_Flush   ( vlc_object_t * );
 void __msg_Destroy ( vlc_object_t * );
 
-#define msg_Subscribe(a) __msg_Subscribe(CAST_TO_VLC_OBJECT(a))
-#define msg_Unsubscribe(a,b) __msg_Unsubscribe(CAST_TO_VLC_OBJECT(a),b)
+#define msg_Subscribe(a) __msg_Subscribe(VLC_OBJECT(a))
+#define msg_Unsubscribe(a,b) __msg_Unsubscribe(VLC_OBJECT(a),b)
 VLC_EXPORT( msg_subscription_t*, __msg_Subscribe, ( vlc_object_t * ) );
 VLC_EXPORT( void, __msg_Unsubscribe, ( vlc_object_t *, msg_subscription_t * ) );
 
index 8e1a5ed..63c3604 100644 (file)
@@ -2,7 +2,7 @@
  * vlc_objects.h: vlc_object_t definition.
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: vlc_objects.h,v 1.4 2002/06/07 14:59:40 sam Exp $
+ * $Id: vlc_objects.h,v 1.5 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -31,7 +31,7 @@
 #define VLC_OBJECT_DECODER    (-7)
 #define VLC_OBJECT_VOUT       (-8)
 #define VLC_OBJECT_AOUT       (-9)
-#define VLC_OBJECT_PRIVATE  (-666)
+#define VLC_OBJECT_GENERIC  (-666)
 
 /* Object search mode */
 #define FIND_PARENT         0x0001
@@ -40,6 +40,9 @@
 
 #define FIND_STRICT         0x0010
 
+/* Object cast */
+
+
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
@@ -58,35 +61,35 @@ VLC_EXPORT( void, __vlc_object_attach, ( vlc_object_t *, vlc_object_t * ) );
 VLC_EXPORT( void, __vlc_dumpstructure, ( vlc_object_t * ) );
 
 #define vlc_object_create(a,b) \
-    __vlc_object_create( CAST_TO_VLC_OBJECT(a), b )
+    __vlc_object_create( VLC_OBJECT(a), b )
 
 #define vlc_object_destroy(a) do { \
-    __vlc_object_destroy( CAST_TO_VLC_OBJECT(a) ); \
+    __vlc_object_destroy( VLC_OBJECT(a) ); \
     (a) = NULL; } while(0)
 
 #define vlc_object_find(a,b,c) \
-    __vlc_object_find( CAST_TO_VLC_OBJECT(a),b,c)
+    __vlc_object_find( VLC_OBJECT(a),b,c)
 
 #define vlc_object_yield(a) \
-    __vlc_object_yield( CAST_TO_VLC_OBJECT(a) )
+    __vlc_object_yield( VLC_OBJECT(a) )
 
 #define vlc_object_release(a) \
-    __vlc_object_release( CAST_TO_VLC_OBJECT(a) )
+    __vlc_object_release( VLC_OBJECT(a) )
 
 #define vlc_object_detach(a,b) \
-    __vlc_object_detach( CAST_TO_VLC_OBJECT(a), CAST_TO_VLC_OBJECT(b) )
+    __vlc_object_detach( VLC_OBJECT(a), VLC_OBJECT(b) )
 
 #define vlc_object_detach_all(a) \
-    __vlc_object_detach_all( CAST_TO_VLC_OBJECT(a) )
+    __vlc_object_detach_all( VLC_OBJECT(a) )
 
 #define vlc_object_attach(a,b) \
-    __vlc_object_attach( CAST_TO_VLC_OBJECT(a), CAST_TO_VLC_OBJECT(b) )
+    __vlc_object_attach( VLC_OBJECT(a), VLC_OBJECT(b) )
 
 #if 0
 #define vlc_object_setchild(a,b) \
-    __vlc_object_setchild( CAST_TO_VLC_OBJECT(a), CAST_TO_VLC_OBJECT(b) )
+    __vlc_object_setchild( VLC_OBJECT(a), VLC_OBJECT(b) )
 #endif
 
 #define vlc_dumpstructure(a) \
-    __vlc_dumpstructure( CAST_TO_VLC_OBJECT(a) )
+    __vlc_dumpstructure( VLC_OBJECT(a) )
 
index a906bd9..69ebec8 100644 (file)
@@ -2,7 +2,7 @@
  * vlc_playlist.h : Playlist functions
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001, 2002 VideoLAN
- * $Id: vlc_playlist.h,v 1.3 2002/07/20 18:01:42 sam Exp $
+ * $Id: vlc_playlist.h,v 1.4 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -54,7 +54,7 @@ struct playlist_t
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
-#define playlist_Create(a) __playlist_Create(CAST_TO_VLC_OBJECT(a))
+#define playlist_Create(a) __playlist_Create(VLC_OBJECT(a))
 playlist_t * __playlist_Create   ( vlc_object_t * );
 void           playlist_Destroy  ( playlist_t * );
 
index 977e879..fa2f94b 100644 (file)
@@ -3,8 +3,8 @@
 struct module_symbols_t
 {
     aout_fifo_t * (* __aout_CreateFifo_inner) ( vlc_object_t *, int, int, int, int, void * ) ;
-    char * (* config_GetHomeDir_inner) ( void ) ;
     char * (* __config_GetPsz_inner) (vlc_object_t *, const char *) ;
+    char * (* config_GetHomeDir_inner) ( void ) ;
     char * (* input_OffsetToTime_inner) ( input_thread_t *, char *, off_t ) ;
     char * (* mstrtime_inner) ( char *psz_buffer, mtime_t date ) ;
     const char * (* DecodeLanguage_inner) ( u16 ) ;
@@ -24,7 +24,16 @@ struct module_symbols_t
     int (* __config_LoadCmdLine_inner) ( vlc_object_t *, int *, char *[], vlc_bool_t ) ;
     int (* __config_LoadConfigFile_inner) ( vlc_object_t *, const char * ) ;
     int (* __config_SaveConfigFile_inner) ( vlc_object_t *, const char * ) ;
-    intf_thread_t * (* __intf_Create_inner) ( vlc_object_t * ) ;
+    int (* __intf_Eject_inner) ( vlc_object_t *, const char * ) ;
+    int (* __network_ChannelCreate_inner) ( vlc_object_t * ) ;
+    int (* __network_ChannelJoin_inner) ( vlc_object_t *, int ) ;
+    int (* __vlc_cond_destroy_inner) ( char *, int, vlc_cond_t * ) ;
+    int (* __vlc_cond_init_inner) ( vlc_object_t *, vlc_cond_t * ) ;
+    int (* __vlc_mutex_destroy_inner) ( char *, int, vlc_mutex_t * ) ;
+    int (* __vlc_mutex_init_inner) ( vlc_object_t *, vlc_mutex_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 (* 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 * ) ;
@@ -35,21 +44,12 @@ struct module_symbols_t
     int (* input_SetProgram_inner) ( input_thread_t *, pgrm_descriptor_t * ) ;
     int (* input_ToggleES_inner) ( input_thread_t *, es_descriptor_t *, vlc_bool_t ) ;
     int (* input_UnselectES_inner) ( input_thread_t *, es_descriptor_t * ) ;
-    int (* __intf_Eject_inner) ( vlc_object_t *, const char * ) ;
-    int (* __network_ChannelCreate_inner) ( vlc_object_t * ) ;
-    int (* __network_ChannelJoin_inner) ( vlc_object_t *, int ) ;
     int (* playlist_Add_inner) ( playlist_t *, const char *, int, int ) ;
     int (* playlist_Delete_inner) ( playlist_t *, int ) ;
-    int (* __vlc_cond_destroy_inner) ( char *, int, vlc_cond_t * ) ;
-    int (* __vlc_cond_init_inner) ( vlc_object_t *, vlc_cond_t * ) ;
-    int (* __vlc_mutex_destroy_inner) ( char *, int, vlc_mutex_t * ) ;
-    int (* __vlc_mutex_init_inner) ( vlc_object_t *, vlc_mutex_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 (* vout_ChromaCmp_inner) ( u32, u32 ) ;
+    intf_thread_t * (* __intf_Create_inner) ( vlc_object_t * ) ;
     module_config_t * (* config_FindConfig_inner) ( vlc_object_t *, const char *psz_name ) ;
-    module_t * (* __module_Need_inner) ( vlc_object_t *, int, const char *, void * ) ;
+    module_t * (* __module_Need_inner) ( vlc_object_t *, const char *, const char * ) ;
     msg_subscription_t* (* __msg_Subscribe_inner) ( vlc_object_t * ) ;
     mtime_t (* input_ClockGetTS_inner) ( input_thread_t *, pgrm_descriptor_t *, mtime_t ) ;
     mtime_t (* mdate_inner) ( void ) ;
@@ -69,17 +69,39 @@ struct module_symbols_t
     u32 (* UnalignedShowBits_inner) ( bit_stream_t *, unsigned int ) ;
     vlc_bool_t (* NextDataPacket_inner) ( decoder_fifo_t *, data_packet_t ** ) ;
     vlc_error_t (* intf_RunThread_inner) ( intf_thread_t * ) ;
-    void (* aout_DestroyFifo_inner) ( aout_fifo_t *p_fifo ) ;
     void (* BitstreamNextDataPacket_inner) ( bit_stream_t * ) ;
-    void (* config_Duplicate_inner) ( module_t *, module_config_t * ) ;
+    void (* CurrentPTS_inner) ( bit_stream_t *, mtime_t *, mtime_t * ) ;
+    void (* DecoderError_inner) ( decoder_fifo_t * p_fifo ) ;
+    void (* InitBitstream_inner) ( bit_stream_t *, decoder_fifo_t *, void ( * )( bit_stream_t *, vlc_bool_t ), void * p_callback_arg ) ;
+    void (* UnalignedRemoveBits_inner) ( bit_stream_t * ) ;
     void (* __config_PutFloat_inner) (vlc_object_t *, const char *, float) ;
     void (* __config_PutInt_inner) (vlc_object_t *, const char *, int) ;
     void (* __config_PutPsz_inner) (vlc_object_t *, const char *, const char *) ;
+    void (* __input_FDClose_inner) ( vlc_object_t * ) ;
+    void (* __input_FDNetworkClose_inner) ( vlc_object_t * ) ;
+    void (* __input_Seek_inner) ( vlc_object_t *, off_t, int ) ;
+    void (* __input_SetStatus_inner) ( vlc_object_t *, int ) ;
+    void (* __input_Tell_inner) ( vlc_object_t *, stream_position_t * ) ;
+    void (* __module_Unneed_inner) ( vlc_object_t *, module_t * ) ;
+    void (* __msg_Dbg_inner) ( void *, const char *, ... ) ;
+    void (* __msg_Err_inner) ( void *, const char *, ... ) ;
+    void (* __msg_Generic_inner) ( vlc_object_t *, int, const char *, const char *, ... ) ;
+    void (* __msg_Info_inner) ( void *, const char *, ... ) ;
+    void (* __msg_Unsubscribe_inner) ( vlc_object_t *, msg_subscription_t * ) ;
+    void (* __msg_Warn_inner) ( void *, const char *, ... ) ;
+    void (* __vlc_dumpstructure_inner) ( vlc_object_t * ) ;
+    void (* __vlc_object_attach_inner) ( vlc_object_t *, vlc_object_t * ) ;
+    void (* __vlc_object_destroy_inner) ( vlc_object_t * ) ;
+    void (* __vlc_object_detach_all_inner) ( vlc_object_t * ) ;
+    void (* __vlc_object_detach_inner) ( vlc_object_t *, vlc_object_t * ) ;
+    void (* __vlc_object_release_inner) ( vlc_object_t * ) ;
+    void (* __vlc_object_yield_inner) ( vlc_object_t * ) ;
+    void (* __vlc_thread_join_inner) ( vlc_object_t *, char *, int ) ;
+    void (* __vlc_thread_ready_inner) ( vlc_object_t * ) ;
+    void (* aout_DestroyFifo_inner) ( aout_fifo_t *p_fifo ) ;
+    void (* config_Duplicate_inner) ( module_t *, module_config_t * ) ;
     void (* config_SetCallbacks_inner) ( module_config_t *, module_config_t * ) ;
     void (* config_UnsetCallbacks_inner) ( module_config_t * ) ;
-    void (* CurrentPTS_inner) ( bit_stream_t *, mtime_t *, mtime_t * ) ;
-    void (* DecoderError_inner) ( decoder_fifo_t * p_fifo ) ;
-    void (* InitBitstream_inner) ( bit_stream_t *, decoder_fifo_t *, void ( * )( bit_stream_t *, vlc_bool_t ), void * p_callback_arg ) ;
     void (* input_AccessEnd_inner) ( input_thread_t * ) ;
     void (* input_AccessReinit_inner) ( input_thread_t * ) ;
     void (* input_BuffersEnd_inner) ( input_thread_t *, input_buffers_t * ) ;
@@ -87,46 +109,22 @@ struct module_symbols_t
     void (* input_DecodePES_inner) ( decoder_fifo_t *, pes_packet_t * ) ;
     void (* input_DelArea_inner) ( input_thread_t *, input_area_t * ) ;
     void (* input_DelES_inner) ( input_thread_t *, es_descriptor_t * ) ;
-    void (* input_DeletePacket_inner) ( input_buffers_t *, data_packet_t * ) ;
-    void (* input_DeletePES_inner) ( input_buffers_t *, pes_packet_t * ) ;
     void (* input_DelProgram_inner) ( input_thread_t *, pgrm_descriptor_t * ) ;
+    void (* input_DeletePES_inner) ( input_buffers_t *, pes_packet_t * ) ;
+    void (* input_DeletePacket_inner) ( input_buffers_t *, data_packet_t * ) ;
     void (* input_DemuxPS_inner) ( input_thread_t *, data_packet_t * ) ;
     void (* input_DemuxTS_inner) ( input_thread_t *, data_packet_t *, void(*) ( input_thread_t *, data_packet_t *, es_descriptor_t *, vlc_bool_t ) ) ;
     void (* input_DumpStream_inner) ( input_thread_t * ) ;
     void (* input_EndStream_inner) ( input_thread_t * ) ;
-    void (* input_FDClose_inner) ( input_thread_t * ) ;
-    void (* input_FDNetworkClose_inner) ( input_thread_t * ) ;
     void (* input_FDSeek_inner) ( input_thread_t *, off_t ) ;
     void (* input_GatherPES_inner) ( input_thread_t *, data_packet_t *, es_descriptor_t *, vlc_bool_t, vlc_bool_t ) ;
     void (* input_ParsePES_inner) ( input_thread_t *, es_descriptor_t * ) ;
     void (* input_ReleaseBuffer_inner) ( input_buffers_t *, data_buffer_t * ) ;
-    void (* __input_Seek_inner) ( vlc_object_t *, off_t, int ) ;
-    void (* __input_SetStatus_inner) ( vlc_object_t *, int ) ;
-    void (* __input_Tell_inner) ( vlc_object_t *, stream_position_t * ) ;
     void (* intf_Destroy_inner) ( intf_thread_t * ) ;
     void (* intf_StopThread_inner) ( intf_thread_t * ) ;
-    void (* module_Unneed_inner) ( module_t * ) ;
-    void (* __msg_Dbg_inner) ( void *, const char *, ... ) ;
-    void (* __msg_Err_inner) ( void *, const char *, ... ) ;
-    void (* __msg_Generic_inner) ( vlc_object_t *, int, const char *, const char *, ... ) ;
-    void (* __msg_Info_inner) ( void *, const char *, ... ) ;
-    void (* __msg_Unsubscribe_inner) ( vlc_object_t *, msg_subscription_t * ) ;
-    void (* __msg_Warn_inner) ( void *, const char *, ... ) ;
     void (* msleep_inner) ( mtime_t delay ) ;
     void (* mwait_inner) ( mtime_t date ) ;
     void (* playlist_Command_inner) ( playlist_t *, int, int ) ;
-    void (* UnalignedRemoveBits_inner) ( bit_stream_t * ) ;
-    void (* __vlc_dumpstructure_inner) ( vlc_object_t * ) ;
-    void (* __vlc_object_attach_inner) ( vlc_object_t *, vlc_object_t * ) ;
-    void * (* __vlc_object_create_inner) ( vlc_object_t *, int ) ;
-    void (* __vlc_object_destroy_inner) ( vlc_object_t * ) ;
-    void (* __vlc_object_detach_all_inner) ( vlc_object_t * ) ;
-    void (* __vlc_object_detach_inner) ( vlc_object_t *, vlc_object_t * ) ;
-    void * (* __vlc_object_find_inner) ( vlc_object_t *, int, int ) ;
-    void (* __vlc_object_release_inner) ( vlc_object_t * ) ;
-    void (* __vlc_object_yield_inner) ( vlc_object_t * ) ;
-    void (* __vlc_thread_join_inner) ( vlc_object_t *, char *, int ) ;
-    void (* __vlc_thread_ready_inner) ( vlc_object_t * ) ;
     void (* vout_AllocatePicture_inner) ( vout_thread_t *, picture_t *, int, int, u32 ) ;
     void (* vout_DatePicture_inner) ( vout_thread_t *, picture_t *, mtime_t ) ;
     void (* vout_DestroyPicture_inner) ( vout_thread_t *, picture_t * ) ;
@@ -137,17 +135,26 @@ struct module_symbols_t
     void (* vout_LinkPicture_inner) ( vout_thread_t *, picture_t * ) ;
     void (* vout_PlacePicture_inner) ( vout_thread_t *, int, int, int *, int *, int *, int * ) ;
     void (* vout_UnlinkPicture_inner) ( vout_thread_t *, picture_t * ) ;
+    void * (* __vlc_object_create_inner) ( vlc_object_t *, int ) ;
+    void * (* __vlc_object_find_inner) ( vlc_object_t *, int, int ) ;
     vout_thread_t * (* __vout_CreateThread_inner) ( vlc_object_t *, int, int, u32, int ) ;
 };
 
 #ifdef __PLUGIN__
-#   define __aout_CreateFifo p_symbols->__aout_CreateFifo_inner
-#   define aout_DestroyFifo p_symbols->aout_DestroyFifo_inner
 #   define BitstreamNextDataPacket p_symbols->BitstreamNextDataPacket_inner
-#   define config_Duplicate p_symbols->config_Duplicate_inner
-#   define config_FindConfig p_symbols->config_FindConfig_inner
+#   define CurrentPTS p_symbols->CurrentPTS_inner
+#   define DecodeLanguage p_symbols->DecodeLanguage_inner
+#   define DecoderError p_symbols->DecoderError_inner
+#   define GetLang_1 p_symbols->GetLang_1_inner
+#   define GetLang_2B p_symbols->GetLang_2B_inner
+#   define GetLang_2T p_symbols->GetLang_2T_inner
+#   define InitBitstream p_symbols->InitBitstream_inner
+#   define NextDataPacket p_symbols->NextDataPacket_inner
+#   define UnalignedGetBits p_symbols->UnalignedGetBits_inner
+#   define UnalignedRemoveBits p_symbols->UnalignedRemoveBits_inner
+#   define UnalignedShowBits p_symbols->UnalignedShowBits_inner
+#   define __aout_CreateFifo p_symbols->__aout_CreateFifo_inner
 #   define __config_GetFloat p_symbols->__config_GetFloat_inner
-#   define config_GetHomeDir p_symbols->config_GetHomeDir_inner
 #   define __config_GetInt p_symbols->__config_GetInt_inner
 #   define __config_GetPsz p_symbols->__config_GetPsz_inner
 #   define __config_LoadCmdLine p_symbols->__config_LoadCmdLine_inner
@@ -156,15 +163,49 @@ struct module_symbols_t
 #   define __config_PutInt p_symbols->__config_PutInt_inner
 #   define __config_PutPsz p_symbols->__config_PutPsz_inner
 #   define __config_SaveConfigFile p_symbols->__config_SaveConfigFile_inner
+#   define __input_FDClose p_symbols->__input_FDClose_inner
+#   define __input_FDNetworkClose p_symbols->__input_FDNetworkClose_inner
+#   define __input_Seek p_symbols->__input_Seek_inner
+#   define __input_SetStatus p_symbols->__input_SetStatus_inner
+#   define __input_Tell p_symbols->__input_Tell_inner
+#   define __intf_Create p_symbols->__intf_Create_inner
+#   define __intf_Eject p_symbols->__intf_Eject_inner
+#   define __module_Need p_symbols->__module_Need_inner
+#   define __module_Unneed p_symbols->__module_Unneed_inner
+#   define __msg_Dbg p_symbols->__msg_Dbg_inner
+#   define __msg_Err p_symbols->__msg_Err_inner
+#   define __msg_Generic p_symbols->__msg_Generic_inner
+#   define __msg_Info p_symbols->__msg_Info_inner
+#   define __msg_Subscribe p_symbols->__msg_Subscribe_inner
+#   define __msg_Unsubscribe p_symbols->__msg_Unsubscribe_inner
+#   define __msg_Warn p_symbols->__msg_Warn_inner
+#   define __network_ChannelCreate p_symbols->__network_ChannelCreate_inner
+#   define __network_ChannelJoin p_symbols->__network_ChannelJoin_inner
+#   define __vlc_cond_destroy p_symbols->__vlc_cond_destroy_inner
+#   define __vlc_cond_init p_symbols->__vlc_cond_init_inner
+#   define __vlc_dumpstructure p_symbols->__vlc_dumpstructure_inner
+#   define __vlc_mutex_destroy p_symbols->__vlc_mutex_destroy_inner
+#   define __vlc_mutex_init p_symbols->__vlc_mutex_init_inner
+#   define __vlc_object_attach p_symbols->__vlc_object_attach_inner
+#   define __vlc_object_create p_symbols->__vlc_object_create_inner
+#   define __vlc_object_destroy p_symbols->__vlc_object_destroy_inner
+#   define __vlc_object_detach p_symbols->__vlc_object_detach_inner
+#   define __vlc_object_detach_all p_symbols->__vlc_object_detach_all_inner
+#   define __vlc_object_find p_symbols->__vlc_object_find_inner
+#   define __vlc_object_release p_symbols->__vlc_object_release_inner
+#   define __vlc_object_yield p_symbols->__vlc_object_yield_inner
+#   define __vlc_thread_create p_symbols->__vlc_thread_create_inner
+#   define __vlc_thread_join p_symbols->__vlc_thread_join_inner
+#   define __vlc_thread_ready p_symbols->__vlc_thread_ready_inner
+#   define __vlc_threads_end p_symbols->__vlc_threads_end_inner
+#   define __vlc_threads_init p_symbols->__vlc_threads_init_inner
+#   define __vout_CreateThread p_symbols->__vout_CreateThread_inner
+#   define aout_DestroyFifo p_symbols->aout_DestroyFifo_inner
+#   define config_Duplicate p_symbols->config_Duplicate_inner
+#   define config_FindConfig p_symbols->config_FindConfig_inner
+#   define config_GetHomeDir p_symbols->config_GetHomeDir_inner
 #   define config_SetCallbacks p_symbols->config_SetCallbacks_inner
 #   define config_UnsetCallbacks p_symbols->config_UnsetCallbacks_inner
-#   define CurrentPTS p_symbols->CurrentPTS_inner
-#   define DecodeLanguage p_symbols->DecodeLanguage_inner
-#   define DecoderError p_symbols->DecoderError_inner
-#   define GetLang_1 p_symbols->GetLang_1_inner
-#   define GetLang_2B p_symbols->GetLang_2B_inner
-#   define GetLang_2T p_symbols->GetLang_2T_inner
-#   define InitBitstream p_symbols->InitBitstream_inner
 #   define input_AccessEnd p_symbols->input_AccessEnd_inner
 #   define input_AccessInit p_symbols->input_AccessInit_inner
 #   define input_AccessReinit p_symbols->input_AccessReinit_inner
@@ -181,15 +222,13 @@ struct module_symbols_t
 #   define input_DecodePES p_symbols->input_DecodePES_inner
 #   define input_DelArea p_symbols->input_DelArea_inner
 #   define input_DelES p_symbols->input_DelES_inner
-#   define input_DeletePacket p_symbols->input_DeletePacket_inner
-#   define input_DeletePES p_symbols->input_DeletePES_inner
 #   define input_DelProgram p_symbols->input_DelProgram_inner
+#   define input_DeletePES p_symbols->input_DeletePES_inner
+#   define input_DeletePacket p_symbols->input_DeletePacket_inner
 #   define input_DemuxPS p_symbols->input_DemuxPS_inner
 #   define input_DemuxTS p_symbols->input_DemuxTS_inner
 #   define input_DumpStream p_symbols->input_DumpStream_inner
 #   define input_EndStream p_symbols->input_EndStream_inner
-#   define input_FDClose p_symbols->input_FDClose_inner
-#   define input_FDNetworkClose p_symbols->input_FDNetworkClose_inner
 #   define input_FDNetworkRead p_symbols->input_FDNetworkRead_inner
 #   define input_FDRead p_symbols->input_FDRead_inner
 #   define input_FDSeek p_symbols->input_FDSeek_inner
@@ -200,8 +239,8 @@ struct module_symbols_t
 #   define input_InfoCategory p_symbols->input_InfoCategory_inner
 #   define input_InitStream p_symbols->input_InitStream_inner
 #   define input_NewBuffer p_symbols->input_NewBuffer_inner
-#   define input_NewPacket p_symbols->input_NewPacket_inner
 #   define input_NewPES p_symbols->input_NewPES_inner
+#   define input_NewPacket p_symbols->input_NewPacket_inner
 #   define input_OffsetToTime p_symbols->input_OffsetToTime_inner
 #   define input_ParsePES p_symbols->input_ParsePES_inner
 #   define input_ParsePS p_symbols->input_ParsePS_inner
@@ -209,65 +248,26 @@ struct module_symbols_t
 #   define input_ReadPS p_symbols->input_ReadPS_inner
 #   define input_ReadTS p_symbols->input_ReadTS_inner
 #   define input_ReleaseBuffer p_symbols->input_ReleaseBuffer_inner
-#   define __input_Seek p_symbols->__input_Seek_inner
 #   define input_SelectES p_symbols->input_SelectES_inner
 #   define input_SetProgram p_symbols->input_SetProgram_inner
-#   define __input_SetStatus p_symbols->__input_SetStatus_inner
 #   define input_ShareBuffer p_symbols->input_ShareBuffer_inner
 #   define input_SplitBuffer p_symbols->input_SplitBuffer_inner
-#   define __input_Tell p_symbols->__input_Tell_inner
 #   define input_ToggleES p_symbols->input_ToggleES_inner
 #   define input_UnselectES p_symbols->input_UnselectES_inner
-#   define __intf_Create p_symbols->__intf_Create_inner
 #   define intf_Destroy p_symbols->intf_Destroy_inner
-#   define __intf_Eject p_symbols->__intf_Eject_inner
 #   define intf_RunThread p_symbols->intf_RunThread_inner
 #   define intf_StopThread p_symbols->intf_StopThread_inner
 #   define mdate p_symbols->mdate_inner
-#   define __module_Need p_symbols->__module_Need_inner
-#   define module_Unneed p_symbols->module_Unneed_inner
-#   define __msg_Dbg p_symbols->__msg_Dbg_inner
-#   define __msg_Err p_symbols->__msg_Err_inner
-#   define __msg_Generic p_symbols->__msg_Generic_inner
-#   define __msg_Info p_symbols->__msg_Info_inner
-#   define __msg_Subscribe p_symbols->__msg_Subscribe_inner
-#   define __msg_Unsubscribe p_symbols->__msg_Unsubscribe_inner
-#   define __msg_Warn p_symbols->__msg_Warn_inner
 #   define msleep p_symbols->msleep_inner
 #   define mstrtime p_symbols->mstrtime_inner
 #   define mwait p_symbols->mwait_inner
-#   define __network_ChannelCreate p_symbols->__network_ChannelCreate_inner
-#   define __network_ChannelJoin p_symbols->__network_ChannelJoin_inner
-#   define NextDataPacket p_symbols->NextDataPacket_inner
 #   define playlist_Add p_symbols->playlist_Add_inner
 #   define playlist_Command p_symbols->playlist_Command_inner
 #   define playlist_Delete p_symbols->playlist_Delete_inner
-#   define UnalignedGetBits p_symbols->UnalignedGetBits_inner
-#   define UnalignedRemoveBits p_symbols->UnalignedRemoveBits_inner
-#   define UnalignedShowBits p_symbols->UnalignedShowBits_inner
-#   define __vlc_cond_destroy p_symbols->__vlc_cond_destroy_inner
-#   define __vlc_cond_init p_symbols->__vlc_cond_init_inner
-#   define __vlc_dumpstructure p_symbols->__vlc_dumpstructure_inner
-#   define __vlc_mutex_destroy p_symbols->__vlc_mutex_destroy_inner
-#   define __vlc_mutex_init p_symbols->__vlc_mutex_init_inner
-#   define __vlc_object_attach p_symbols->__vlc_object_attach_inner
-#   define __vlc_object_create p_symbols->__vlc_object_create_inner
-#   define __vlc_object_destroy p_symbols->__vlc_object_destroy_inner
-#   define __vlc_object_detach_all p_symbols->__vlc_object_detach_all_inner
-#   define __vlc_object_detach p_symbols->__vlc_object_detach_inner
-#   define __vlc_object_find p_symbols->__vlc_object_find_inner
-#   define __vlc_object_release p_symbols->__vlc_object_release_inner
-#   define __vlc_object_yield p_symbols->__vlc_object_yield_inner
-#   define __vlc_thread_create p_symbols->__vlc_thread_create_inner
-#   define __vlc_thread_join p_symbols->__vlc_thread_join_inner
-#   define __vlc_thread_ready p_symbols->__vlc_thread_ready_inner
-#   define __vlc_threads_end p_symbols->__vlc_threads_end_inner
-#   define __vlc_threads_init p_symbols->__vlc_threads_init_inner
 #   define vout_AllocatePicture p_symbols->vout_AllocatePicture_inner
 #   define vout_ChromaCmp p_symbols->vout_ChromaCmp_inner
 #   define vout_CreatePicture p_symbols->vout_CreatePicture_inner
 #   define vout_CreateSubPicture p_symbols->vout_CreateSubPicture_inner
-#   define __vout_CreateThread p_symbols->__vout_CreateThread_inner
 #   define vout_DatePicture p_symbols->vout_DatePicture_inner
 #   define vout_DestroyPicture p_symbols->vout_DestroyPicture_inner
 #   define vout_DestroySubPicture p_symbols->vout_DestroySubPicture_inner
index 31f8733..8a24b4a 100644 (file)
@@ -3,7 +3,7 @@
  * This header provides a portable threads implementation.
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: vlc_threads.h,v 1.7 2002/07/30 07:56:40 gbazin Exp $
+ * $Id: vlc_threads.h,v 1.8 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@via.ecp.fr>
@@ -191,19 +191,19 @@ VLC_EXPORT( void, __vlc_thread_join,   ( vlc_object_t *, char *, int ) );
  * vlc_threads_init: initialize threads system
  *****************************************************************************/
 #define vlc_threads_init( P_THIS )                                          \
-    __vlc_threads_init( CAST_TO_VLC_OBJECT(P_THIS) )
+    __vlc_threads_init( VLC_OBJECT(P_THIS) )
 
 /*****************************************************************************
  * vlc_threads_end: deinitialize threads system
  *****************************************************************************/
 #define vlc_threads_end( P_THIS )                                          \
-    __vlc_threads_end( CAST_TO_VLC_OBJECT(P_THIS) )
+    __vlc_threads_end( VLC_OBJECT(P_THIS) )
 
 /*****************************************************************************
  * vlc_mutex_init: initialize a mutex
  *****************************************************************************/
 #define vlc_mutex_init( P_THIS, P_MUTEX )                                   \
-    __vlc_mutex_init( CAST_TO_VLC_OBJECT(P_THIS), P_MUTEX )
+    __vlc_mutex_init( VLC_OBJECT(P_THIS), P_MUTEX )
 
 /*****************************************************************************
  * vlc_mutex_lock: lock a mutex
@@ -344,7 +344,7 @@ static inline int __vlc_mutex_unlock( char * psz_file, int i_line,
  * vlc_cond_init: initialize a condition
  *****************************************************************************/
 #define vlc_cond_init( P_THIS, P_COND )                                   \
-    __vlc_cond_init( CAST_TO_VLC_OBJECT(P_THIS), P_COND )
+    __vlc_cond_init( VLC_OBJECT(P_THIS), P_COND )
 
 /*****************************************************************************
  * vlc_cond_signal: start a thread on condition completion
@@ -731,21 +731,21 @@ static inline int __vlc_cond_wait( char * psz_file, int i_line,
  * vlc_thread_create: create a thread
  *****************************************************************************/
 #   define vlc_thread_create( P_THIS, PSZ_NAME, FUNC, WAIT )                \
-        __vlc_thread_create( CAST_TO_VLC_OBJECT(P_THIS), __FILE__, __LINE__, PSZ_NAME, (void * ( * ) ( void * ))FUNC, WAIT )
+        __vlc_thread_create( VLC_OBJECT(P_THIS), __FILE__, __LINE__, PSZ_NAME, (void * ( * ) ( void * ))FUNC, WAIT )
 
 /*****************************************************************************
  * vlc_thread_ready: tell the parent thread we were successfully spawned
  *****************************************************************************/
 #   define vlc_thread_ready( P_THIS )                                       \
-        __vlc_thread_ready( CAST_TO_VLC_OBJECT(P_THIS) )
+        __vlc_thread_ready( VLC_OBJECT(P_THIS) )
 
 /*****************************************************************************
  * vlc_thread_join: wait until a thread exits
  *****************************************************************************/
 #ifdef DEBUG
 #   define vlc_thread_join( P_THIS )                                        \
-        __vlc_thread_join( CAST_TO_VLC_OBJECT(P_THIS), __FILE__, __LINE__ ) 
+        __vlc_thread_join( VLC_OBJECT(P_THIS), __FILE__, __LINE__ ) 
 #else
 #   define vlc_thread_join( P_THIS )                                        \
-        __vlc_thread_join( CAST_TO_VLC_OBJECT(P_THIS), "(unknown)", 0 ) 
+        __vlc_thread_join( VLC_OBJECT(P_THIS), "(unknown)", 0 ) 
 #endif
index b08c430..36eca49 100644 (file)
@@ -4,7 +4,7 @@
  *   (http://liba52.sf.net/).
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: a52.c,v 1.21 2002/07/23 00:39:16 sam Exp $
+ * $Id: a52.c,v 1.22 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *      
@@ -63,8 +63,8 @@ static vlc_bool_t  b_liba52_initialized = 0;
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-static int  decoder_Probe  ( vlc_fourcc_t * );
-static int  decoder_Run    ( decoder_fifo_t * );
+static int  OpenDecoder    ( vlc_object_t * );
+static int  RunDecoder     ( decoder_fifo_t * );
 static int  DecodeFrame    ( a52_adec_thread_t * );
 static int  InitThread     ( a52_adec_thread_t * );
 static void EndThread      ( a52_adec_thread_t * );
@@ -74,16 +74,7 @@ static void               float2s16_2       ( float *, int16_t * );
 static inline int16_t     convert   ( int32_t );
 
 /*****************************************************************************
- * Capabilities
- *****************************************************************************/
-void _M( adec_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.dec.pf_probe = decoder_Probe;
-    p_function_list->functions.dec.pf_run   = decoder_Run;
-}
-
-/*****************************************************************************
- * Build configuration structure.
+ * Module descriptor
  *****************************************************************************/
 #define DYNRNG_TEXT N_("A/52 dynamic range compression")
 #define DYNRNG_LONGTEXT N_( \
@@ -93,38 +84,37 @@ void _M( adec_getfunctions )( function_list_t * p_function_list )
     "compression the playback will be more adapted to a movie theater or a " \
     "listening room.")
 
-MODULE_CONFIG_START
-ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
-ADD_BOOL    ( "a52-dynrng", 1, NULL, DYNRNG_TEXT, DYNRNG_LONGTEXT )
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("a52 ATSC A/52 aka AC-3 audio decoder module") )
-    ADD_CAPABILITY( DECODER, 60 )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    _M( adec_getfunctions )( &p_module->p_functions->dec );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+vlc_module_begin();
+    add_category_hint( N_("Miscellaneous"), NULL );
+    add_bool( "a52-dynrng", 1, NULL, DYNRNG_TEXT, DYNRNG_LONGTEXT );
+    set_description( _("a52 ATSC A/52 aka AC-3 audio decoder module") );
+    set_capability( "decoder", 60 );
+    set_callbacks( OpenDecoder, NULL );
+vlc_module_end();
 
 /*****************************************************************************
- * decoder_Probe: probe the decoder and return score
+ * OpenDecoder: probe the decoder and return score
  *****************************************************************************
  * Tries to launch a decoder and return score so that the interface is able
  * to choose.
  *****************************************************************************/
-static int decoder_Probe( vlc_fourcc_t *pi_type )
+static int OpenDecoder( vlc_object_t *p_this )
 {
-    return *pi_type == VLC_FOURCC('a','5','2',' ') ? 0 : -1;
+    decoder_fifo_t *p_fifo = (decoder_fifo_t*) p_this;
+    
+    if( p_fifo->i_fourcc != VLC_FOURCC('a','5','2',' ') )
+    {   
+        return VLC_EGENERIC;
+    }
+
+    p_fifo->pf_run = RunDecoder;
+    return VLC_SUCCESS;
 }
 
 /*****************************************************************************
- * decoder_Run: this function is called just after the thread is created
+ * RunDecoder: this function is called just after the thread is created
  *****************************************************************************/
-static int decoder_Run ( decoder_fifo_t *p_fifo )
+static int RunDecoder( decoder_fifo_t *p_fifo )
 {
     a52_adec_thread_t *p_a52_adec;
 
index a0b1822..9cbe2ed 100644 (file)
@@ -2,7 +2,7 @@
  * a52_system.c : A52 input module for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: a52_system.c,v 1.2 2002/07/23 00:39:16 sam Exp $
+ * $Id: a52_system.c,v 1.3 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>
  *
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-static void input_getfunctions( function_list_t * p_function_list );
-static int  Demux         ( struct input_thread_s * );
-static int  Init          ( struct input_thread_s * );
-static void End           ( struct input_thread_s * );
-
-
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("A52 input") )
-    ADD_CAPABILITY( DEMUX, 150 )
-    ADD_SHORTCUT( "a52sys" )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    input_getfunctions( &p_module->p_functions->demux );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+static int  Init  ( vlc_object_t * );
+static int  Demux ( input_thread_t * );
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * Module descriptor
  *****************************************************************************/
-static void input_getfunctions( function_list_t * p_function_list )
-{
-#define input p_function_list->functions.demux
-    input.pf_init             = Init;
-    input.pf_end              = End;
-    input.pf_demux            = Demux;
-    input.pf_rewind           = NULL;
-#undef input
-}
-
-/*
- * Data reading functions
- */
+vlc_module_begin();                                      
+    set_description( "A52 demuxer" );                       
+    set_capability( "demux", 150 );
+    set_callbacks( Init, NULL );
+    add_shortcut( "a52sys" );
+vlc_module_end();
 
 /*****************************************************************************
  * Init: initializes ES structures
  *****************************************************************************/
-static int Init( input_thread_t * p_input )
+static int Init( vlc_object_t * p_this )
 {
+    input_thread_t *    p_input = (input_thread_t *)p_this;
     es_descriptor_t *   p_es;
     byte_t *            p_peek;
 
@@ -100,6 +71,9 @@ static int Init( input_thread_t * p_input )
         p_input->i_bufsize = INPUT_DEFAULT_BUFSIZE;
     }
 
+    p_input->pf_demux = Demux;
+    p_input->pf_rewind = NULL;
+
     /* Have a peep at the show. */
     if( input_Peek( p_input, &p_peek, 2 ) < 2 )
     {
@@ -141,13 +115,6 @@ static int Init( input_thread_t * p_input )
     return( 0 );
 }
 
-/*****************************************************************************
- * End: frees unused data
- *****************************************************************************/
-static void End( input_thread_t * p_input )
-{
-}
-
 /*****************************************************************************
  * Demux: reads and demuxes data packets
  *****************************************************************************
index 79bcf77..ec8d2a8 100644 (file)
@@ -2,7 +2,7 @@
  * vout_aa.c: Aa video output display method for testing purposes
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: aa.c,v 1.8 2002/07/23 00:39:16 sam Exp $
+ * $Id: aa.c,v 1.9 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Sigmund Augdal <sigmunau@idi.ntnu.no>
  *
 #include <vlc/intf.h>
 
 /*****************************************************************************
- * Capabilities defined in the other files.
- *****************************************************************************/
-static void vout_getfunctions  ( function_list_t * p_function_list );
-
-/*****************************************************************************
- * Build configuration tree.
+ * Local prototypes
  *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("ASCII-art video output module") )
-    ADD_CAPABILITY( VOUT, 10 )
-    ADD_SHORTCUT( "aalib" )
-MODULE_INIT_STOP
+static int  Create    ( vlc_object_t * );
+static void Destroy   ( vlc_object_t * );
 
+static int  Init      ( vout_thread_t * );
+static void End       ( vout_thread_t * );
+static int  Manage    ( vout_thread_t * );
+static void Render    ( vout_thread_t *, picture_t * );
+static void Display   ( vout_thread_t *, picture_t * );
 
-MODULE_ACTIVATE_START
-    vout_getfunctions( &p_module->p_functions->vout );
-MODULE_ACTIVATE_STOP
-
+static void SetPalette     ( vout_thread_t *, u16 *, u16 *, u16 * );
 
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+/*****************************************************************************
+ * Module descriptor
+ *****************************************************************************/
+vlc_module_begin();
+    set_description( _("ASCII-art video output module") );
+    set_capability( "video output", 10 );
+    add_shortcut( "aalib" );
+    set_callbacks( Create, Destroy );
+vlc_module_end();
 
 /*****************************************************************************
  * vout_sys_t: aa video output method descriptor
@@ -76,40 +73,14 @@ struct vout_sys_t
 };
 
 /*****************************************************************************
- * Local prototypes
- *****************************************************************************/
-static int  vout_Create    ( vout_thread_t * );
-static int  vout_Init      ( vout_thread_t * );
-static void vout_End       ( vout_thread_t * );
-static void vout_Destroy   ( vout_thread_t * );
-static int  vout_Manage    ( vout_thread_t * );
-static void vout_Render    ( vout_thread_t *, picture_t * );
-static void vout_Display   ( vout_thread_t *, picture_t * );
-
-static void SetPalette     ( vout_thread_t *, u16 *, u16 *, u16 * );
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void vout_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.vout.pf_create     = vout_Create;
-    p_function_list->functions.vout.pf_init       = vout_Init;
-    p_function_list->functions.vout.pf_end        = vout_End;
-    p_function_list->functions.vout.pf_destroy    = vout_Destroy;
-    p_function_list->functions.vout.pf_manage     = vout_Manage;
-    p_function_list->functions.vout.pf_render     = vout_Render;
-    p_function_list->functions.vout.pf_display    = vout_Display;
-}
-
-/*****************************************************************************
- * vout_Create: allocates aa video thread output method
+ * Create: allocates aa video thread output method
  *****************************************************************************
  * This function allocates and initializes a aa vout method.
  *****************************************************************************/
-static int vout_Create( vout_thread_t *p_vout )
+static int Create( vlc_object_t *p_this )
 {
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
     /* Allocate structure */
     p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
     if( p_vout->p_sys == NULL )
@@ -127,6 +98,12 @@ static int vout_Create( vout_thread_t *p_vout )
         return( 1 );
     }
 
+    p_vout->pf_init = Init;
+    p_vout->pf_end = End;
+    p_vout->pf_manage = Manage;
+    p_vout->pf_render = Render;
+    p_vout->pf_display = Display;
+
     p_vout->p_sys->i_width = aa_imgwidth(p_vout->p_sys->aa_context);
     p_vout->p_sys->i_height = aa_imgheight(p_vout->p_sys->aa_context);
     aa_autoinitkbd( p_vout->p_sys->aa_context, 0 );
@@ -136,9 +113,9 @@ static int vout_Create( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * vout_Init: initialize aa video thread output method
+ * Init: initialize aa video thread output method
  *****************************************************************************/
-static int vout_Init( vout_thread_t *p_vout )
+static int Init( vout_thread_t *p_vout )
 {
     int i_index;
     picture_t *p_pic = NULL;
@@ -185,31 +162,33 @@ static int vout_Init( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * vout_End: terminate aa video thread output method
+ * End: terminate aa video thread output method
  *****************************************************************************/
-static void vout_End( vout_thread_t *p_vout )
+static void End( vout_thread_t *p_vout )
 {
     ;
 }
 
 /*****************************************************************************
- * vout_Destroy: destroy aa video thread output method
+ * Destroy: destroy aa video thread output method
  *****************************************************************************
  * Terminate an output method created by AaCreateOutputMethod
  *****************************************************************************/
-static void vout_Destroy( vout_thread_t *p_vout )
+static void Destroy( vlc_object_t *p_this )
 {
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
     aa_close( p_vout->p_sys->aa_context );
     free( p_vout->p_sys );
 }
 
 /*****************************************************************************
- * vout_Manage: handle aa events
+ * Manage: handle aa events
  *****************************************************************************
  * This function should be called regularly by video output thread. It manages
  * console events. It returns a non null value on error.
  *****************************************************************************/
-static int vout_Manage( vout_thread_t *p_vout )
+static int Manage( vout_thread_t *p_vout )
 {
     int event, x, y, b;
     event = aa_getevent( p_vout->p_sys->aa_context, 0 );
@@ -241,9 +220,9 @@ static int vout_Manage( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * vout_Render: render previously calculated output
+ * Render: render previously calculated output
  *****************************************************************************/
-static void vout_Render( vout_thread_t *p_vout, picture_t *p_pic )
+static void Render( vout_thread_t *p_vout, picture_t *p_pic )
 {
   aa_fastrender( p_vout->p_sys->aa_context, 0, 0,
                  aa_imgwidth( p_vout->p_sys->aa_context ),
@@ -251,9 +230,9 @@ static void vout_Render( vout_thread_t *p_vout, picture_t *p_pic )
 }
 
 /*****************************************************************************
- * vout_Display: displays previously rendered output
+ * Display: displays previously rendered output
  *****************************************************************************/
-static void vout_Display( vout_thread_t *p_vout, picture_t *p_pic )
+static void Display( vout_thread_t *p_vout, picture_t *p_pic )
 {
     /* No need to do anything, the fake direct buffers stay as they are */
     int i_width, i_height, i_x, i_y;
index 8f403fc..81417c6 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_adec.c: ac3 decoder module main file
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: ac3_adec.c,v 1.34 2002/07/23 00:39:16 sam Exp $
+ * $Id: ac3_adec.c,v 1.35 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Lespinasse <walken@zoy.org>
  *
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-static int  decoder_Probe     ( vlc_fourcc_t * );
-static int  decoder_Run       ( decoder_fifo_t * );
+static int  OpenDecoder       ( vlc_object_t * );
+static int  RunDecoder        ( decoder_fifo_t * );
 static int  InitThread        ( ac3dec_t * p_adec );
 static void EndThread         ( ac3dec_t * p_adec );
 static void BitstreamCallback ( bit_stream_t *p_bit_stream,
                                 vlc_bool_t b_new_pes );
 
 /*****************************************************************************
- * Capabilities
+ * Module descriptor
  *****************************************************************************/
-void _M( adec_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.dec.pf_probe = decoder_Probe;
-    p_function_list->functions.dec.pf_run   = decoder_Run;
-}
+vlc_module_begin();
+    add_category_hint( N_("Miscellaneous"), NULL );
+    add_module  ( "ac3-downmix", "downmix", NULL, NULL,
+                  N_("AC3 downmix module"), NULL );
+    add_module  ( "ac3-imdct", "imdct", NULL, NULL,
+                  N_("AC3 IMDCT module"), NULL );
+    set_description( _("software AC3 decoder") );
+    set_capability( "decoder", 50 );
+    set_callbacks( OpenDecoder, NULL );
+    add_shortcut( "ac3" );
+vlc_module_end();         
 
 /*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-/* Variable containing the AC3 downmix method */
-#define DOWNMIX_METHOD_VAR              "ac3-downmix"
-/* Variable containing the AC3 IMDCT method */
-#define IMDCT_METHOD_VAR                "ac3-imdct"
-
-MODULE_CONFIG_START
-ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL)
-ADD_MODULE  ( DOWNMIX_METHOD_VAR, MODULE_CAPABILITY_DOWNMIX, NULL, NULL,
-              N_("AC3 downmix module"), NULL )
-ADD_MODULE  ( IMDCT_METHOD_VAR, MODULE_CAPABILITY_IMDCT, NULL, NULL,
-              N_("AC3 IMDCT module"), NULL )
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("software AC3 decoder") )
-    ADD_CAPABILITY( DECODER, 50 )
-    ADD_SHORTCUT( "ac3" )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    _M( adec_getfunctions )( &p_module->p_functions->dec );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
-
-/*****************************************************************************
- * decoder_Probe: probe the decoder and return score
+ * OpenDecoder: probe the decoder and return score
  *****************************************************************************
  * Tries to launch a decoder and return score so that the interface is able 
  * to chose.
  *****************************************************************************/
-static int decoder_Probe( vlc_fourcc_t *pi_type )
+static int OpenDecoder( vlc_object_t *p_this )
 {
-    return *pi_type == VLC_FOURCC('a','5','2',' ') ? 0 : -1;
+    decoder_fifo_t *p_fifo = (decoder_fifo_t*) p_this;
+    
+    if( p_fifo->i_fourcc != VLC_FOURCC('a','5','2',' ') )
+    {   
+        return VLC_EGENERIC;
+    }
+
+    p_fifo->pf_run = RunDecoder;
+    return VLC_SUCCESS;
 }
 
 /*****************************************************************************
- * decoder_Run: this function is called just after the thread is created
+ * RunDecoder: this function is called just after the thread is created
  *****************************************************************************/
-static int decoder_Run ( decoder_fifo_t * p_fifo )
+static int RunDecoder( decoder_fifo_t *p_fifo )
 {
     ac3dec_t *   p_ac3dec;
     void *       p_orig;                          /* pointer before memalign */
@@ -246,57 +230,43 @@ static int InitThread( ac3dec_t * p_ac3dec )
     /*
      * Choose the best downmix module
      */
-#define DOWNMIX p_ac3dec->downmix
-    psz_name = config_GetPsz( p_ac3dec->p_fifo, DOWNMIX_METHOD_VAR );
-    DOWNMIX.p_module = module_Need( p_ac3dec->p_fifo,
-                                    MODULE_CAPABILITY_DOWNMIX, psz_name, NULL );
+    p_ac3dec->p_downmix = vlc_object_create( p_ac3dec->p_fifo,
+                                             sizeof( downmix_t ) );
+    p_ac3dec->p_downmix->psz_object_name = "downmix";
+
+    psz_name = config_GetPsz( p_ac3dec->p_downmix, "ac3-downmix" );
+    p_ac3dec->p_downmix->p_module =
+                    module_Need( p_ac3dec->p_downmix, "downmix", psz_name );
     if( psz_name ) free( psz_name );
 
-    if( DOWNMIX.p_module == NULL )
+    if( p_ac3dec->p_downmix->p_module == NULL )
     {
         msg_Err( p_ac3dec->p_fifo, "no suitable downmix module" );
+        vlc_object_destroy( p_ac3dec->p_downmix );
         return( -1 );
     }
 
-#define F DOWNMIX.p_module->p_functions->downmix.functions.downmix
-    DOWNMIX.pf_downmix_3f_2r_to_2ch     = F.pf_downmix_3f_2r_to_2ch;
-    DOWNMIX.pf_downmix_2f_2r_to_2ch     = F.pf_downmix_2f_2r_to_2ch;
-    DOWNMIX.pf_downmix_3f_1r_to_2ch     = F.pf_downmix_3f_1r_to_2ch;
-    DOWNMIX.pf_downmix_2f_1r_to_2ch     = F.pf_downmix_2f_1r_to_2ch;
-    DOWNMIX.pf_downmix_3f_0r_to_2ch     = F.pf_downmix_3f_0r_to_2ch;
-    DOWNMIX.pf_stream_sample_2ch_to_s16 = F.pf_stream_sample_2ch_to_s16;
-    DOWNMIX.pf_stream_sample_1ch_to_s16 = F.pf_stream_sample_1ch_to_s16;
-#undef F
-#undef DOWNMIX
-
     /*
      * Choose the best IMDCT module
      */
-    p_ac3dec->imdct = vlc_memalign( &p_ac3dec->imdct_orig,
-                                    16, sizeof(imdct_t) );
+    p_ac3dec->p_imdct = vlc_object_create( p_ac3dec->p_fifo,
+                                           sizeof( imdct_t ) );
     
-#define IMDCT p_ac3dec->imdct
-    psz_name = config_GetPsz( p_ac3dec->p_fifo, IMDCT_METHOD_VAR );
-    IMDCT->p_module = module_Need( p_ac3dec->p_fifo,
-                                   MODULE_CAPABILITY_IMDCT, psz_name, NULL );
+#define IMDCT p_ac3dec->p_imdct
+    psz_name = config_GetPsz( p_ac3dec->p_fifo, "ac3-imdct" );
+    p_ac3dec->p_imdct->p_module =
+                   module_Need( p_ac3dec->p_imdct, "imdct", psz_name );
     if( psz_name ) free( psz_name );
 
-    if( IMDCT->p_module == NULL )
+    if( p_ac3dec->p_imdct->p_module == NULL )
     {
         msg_Err( p_ac3dec->p_fifo, "no suitable IMDCT module" );
-        module_Unneed( p_ac3dec->downmix.p_module );
-        free( p_ac3dec->imdct_orig );
+        vlc_object_destroy( p_ac3dec->p_imdct );
+        module_Unneed( p_ac3dec->p_downmix, p_ac3dec->p_downmix->p_module );
+        vlc_object_destroy( p_ac3dec->p_downmix );
         return( -1 );
     }
 
-#define F IMDCT->p_module->p_functions->imdct.functions.imdct
-    IMDCT->pf_imdct_init    = F.pf_imdct_init;
-    IMDCT->pf_imdct_256     = F.pf_imdct_256;
-    IMDCT->pf_imdct_256_nol = F.pf_imdct_256_nol;
-    IMDCT->pf_imdct_512     = F.pf_imdct_512;
-    IMDCT->pf_imdct_512_nol = F.pf_imdct_512_nol;
-#undef F
-
     /* Initialize the ac3 decoder structures */
     p_ac3dec->samples = vlc_memalign( &p_ac3dec->samples_orig,
                                       16, 6 * 256 * sizeof(float) );
@@ -333,7 +303,7 @@ static int InitThread( ac3dec_t * p_ac3dec )
                                   16, 64 * sizeof(complex_t) );
 #undef IMDCT
 
-    _M( ac3_init )( p_ac3dec );
+    E_( ac3_init )( p_ac3dec );
 
     /*
      * Initialize the output properties
@@ -366,7 +336,7 @@ static void EndThread (ac3dec_t * p_ac3dec)
     }
 
     /* Free allocated structures */
-#define IMDCT p_ac3dec->imdct
+#define IMDCT p_ac3dec->p_imdct
     free( IMDCT->w_1_orig );
     free( IMDCT->w_64_orig );
     free( IMDCT->w_32_orig );
@@ -387,8 +357,11 @@ static void EndThread (ac3dec_t * p_ac3dec)
     free( p_ac3dec->samples_orig );
 
     /* Unlock the modules */
-    module_Unneed( p_ac3dec->downmix.p_module );
-    module_Unneed( p_ac3dec->imdct->p_module );
+    module_Unneed( p_ac3dec->p_downmix, p_ac3dec->p_downmix->p_module );
+    vlc_object_destroy( p_ac3dec->p_downmix );
+
+    module_Unneed( p_ac3dec->p_imdct, p_ac3dec->p_imdct->p_module );
+    vlc_object_destroy( p_ac3dec->p_imdct );
 
     /* Free what's left of the decoder */
     free( p_ac3dec->imdct_orig );
index 9bdbfab..4b13fc4 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_adec.h : ac3 decoder interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: ac3_adec.h,v 1.4 2002/06/01 12:31:58 sam Exp $
+ * $Id: ac3_adec.h,v 1.5 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Renaud Dartus <reno@videolan.org>
@@ -40,7 +40,7 @@ typedef struct ac3_sync_info_s {
 
 /**** ac3 decoder API - functions publically provided by the ac3 decoder ****/
 
-int _M( ac3_init )(ac3dec_t * p_ac3dec);
+int E_( ac3_init )(ac3dec_t * p_ac3dec);
 int ac3_sync_frame (ac3dec_t * p_ac3dec, ac3_sync_info_t * p_sync_info);
 int ac3_decode_frame (ac3dec_t * p_ac3dec, s16 * buffer);
 
@@ -394,7 +394,7 @@ struct ac3dec_s
 
     bit_allocate_t      bit_allocate;
     mantissa_t          mantissa;
-    downmix_t           downmix;
+    downmix_t *         p_downmix;
 
     /*
      * Output properties
@@ -403,7 +403,7 @@ struct ac3dec_s
 
     float *             samples;
     void *              samples_orig;             /* pointer before memalign */
-    imdct_t *           imdct;
+    imdct_t *           p_imdct;
     void *              imdct_orig;               /* pointer before memalign */
 };
 
index 38f0ddf..58c69d0 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_decoder.c: core ac3 decoder
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: ac3_decoder.c,v 1.8 2002/06/01 12:31:58 sam Exp $
+ * $Id: ac3_decoder.c,v 1.9 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Michel Lespinasse <walken@zoy.org>
 static const float cmixlev_lut[4] = { 0.707, 0.595, 0.500, 0.707 };
 static const float smixlev_lut[4] = { 0.707, 0.500, 0.0  , 0.500 };
 
-int _M( ac3_init )(ac3dec_t * p_ac3dec)
+int E_( ac3_init )(ac3dec_t * p_ac3dec)
 {
     p_ac3dec->mantissa.lfsr_state = 1;          /* dither_gen initialization */
-    _M( imdct_init )(p_ac3dec->imdct) ;
+    E_( imdct_init )(p_ac3dec->p_imdct) ;
     
     return 0;
 }
index a21ab06..bfa1e50 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_decoder.h : ac3 decoder interface
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: ac3_decoder.h,v 1.4 2002/04/23 23:44:36 fenrir Exp $
+ * $Id: ac3_decoder.h,v 1.5 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Renaud Dartus <reno@videolan.org>
@@ -35,7 +35,7 @@ typedef struct ac3_sync_info_s {
 
 /**** ac3 decoder API - functions publically provided by the ac3 decoder ****/
 
-int _M( ac3_init )(ac3dec_t * p_ac3dec);
+int E_( ac3_init )(ac3dec_t * p_ac3dec);
 int ac3_sync_frame (ac3dec_t * p_ac3dec, ac3_sync_info_t * p_sync_info);
 int ac3_decode_frame (ac3dec_t * p_ac3dec, s16 * buffer);
 
index 72af766..be486c7 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_imdct.c: ac3 DCT
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: ac3_imdct.c,v 1.9 2002/06/01 12:31:58 sam Exp $
+ * $Id: ac3_imdct.c,v 1.10 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Aaron Holtzman <aholtzma@engr.uvic.ca>
@@ -42,7 +42,7 @@
 #   define M_PI 3.14159265358979323846
 #endif
 
-void _M( imdct_init )(imdct_t * p_imdct)
+void E_( imdct_init )(imdct_t * p_imdct)
 {
     int i;
     float scale = 181.019;
@@ -69,11 +69,11 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
     /* test if dm in frequency is doable */
     if (!(doable = p_ac3dec->audblk.blksw[0]))
     {
-        do_imdct = p_ac3dec->imdct->pf_imdct_512;
+        do_imdct = p_ac3dec->p_imdct->pf_imdct_512;
     }
     else
     {
-        do_imdct = p_ac3dec->imdct->pf_imdct_256;
+        do_imdct = p_ac3dec->p_imdct->pf_imdct_256;
     }
 
     /* downmix in the frequency domain if all the channels
@@ -93,19 +93,19 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
         switch(p_ac3dec->bsi.acmod)
         {
             case 7:        /* 3/2 */
-                p_ac3dec->downmix.pf_downmix_3f_2r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
+                p_ac3dec->p_downmix->pf_downmix_3f_2r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
                 break;
             case 6:        /* 2/2 */
-                p_ac3dec->downmix.pf_downmix_2f_2r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
+                p_ac3dec->p_downmix->pf_downmix_2f_2r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
                 break;
             case 5:        /* 3/1 */
-                p_ac3dec->downmix.pf_downmix_3f_1r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
+                p_ac3dec->p_downmix->pf_downmix_3f_1r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
                 break;
             case 4:        /* 2/1 */
-                p_ac3dec->downmix.pf_downmix_2f_1r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
+                p_ac3dec->p_downmix->pf_downmix_2f_1r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
                 break;
             case 3:        /* 3/0 */
-                p_ac3dec->downmix.pf_downmix_3f_0r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
+                p_ac3dec->p_downmix->pf_downmix_3f_0r_to_2ch (p_ac3dec->samples, &p_ac3dec->dm_par);
                 break;
             case 2:
                 break;
@@ -114,17 +114,17 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
                     center = p_ac3dec->samples;
 //                else if (p_ac3dec->bsi.acmod == 0)
 //                  center = samples[ac3_config.dual_mono_ch_sel];
-                do_imdct(p_ac3dec->imdct, center, p_ac3dec->imdct->delay); /* no downmix*/
+                do_imdct(p_ac3dec->p_imdct, center, p_ac3dec->p_imdct->delay); /* no downmix*/
     
-                p_ac3dec->downmix.pf_stream_sample_1ch_to_s16 (buffer, center);
+                p_ac3dec->p_downmix->pf_stream_sample_1ch_to_s16 (buffer, center);
 
                 return;
                 break;
         }
 
-        do_imdct (p_ac3dec->imdct, p_ac3dec->samples, p_ac3dec->imdct->delay);
-        do_imdct (p_ac3dec->imdct, p_ac3dec->samples+256, p_ac3dec->imdct->delay+256);
-        p_ac3dec->downmix.pf_stream_sample_2ch_to_s16(buffer, p_ac3dec->samples, p_ac3dec->samples+256);
+        do_imdct (p_ac3dec->p_imdct, p_ac3dec->samples, p_ac3dec->p_imdct->delay);
+        do_imdct (p_ac3dec->p_imdct, p_ac3dec->samples+256, p_ac3dec->p_imdct->delay+256);
+        p_ac3dec->p_downmix->pf_stream_sample_2ch_to_s16(buffer, p_ac3dec->samples, p_ac3dec->samples+256);
 
     } else {
         /* imdct and then downmix
@@ -135,13 +135,13 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
             if (p_ac3dec->audblk.blksw[i])
             {
                 /* There is only a C function */
-                p_ac3dec->imdct->pf_imdct_256_nol( p_ac3dec->imdct,
-                     p_ac3dec->samples+256*i, p_ac3dec->imdct->delay1+256*i );
+                p_ac3dec->p_imdct->pf_imdct_256_nol( p_ac3dec->p_imdct,
+                     p_ac3dec->samples+256*i, p_ac3dec->p_imdct->delay1+256*i );
             }
             else
             {
-                p_ac3dec->imdct->pf_imdct_512_nol( p_ac3dec->imdct,
-                     p_ac3dec->samples+256*i, p_ac3dec->imdct->delay1+256*i );
+                p_ac3dec->p_imdct->pf_imdct_512_nol( p_ac3dec->p_imdct,
+                     p_ac3dec->samples+256*i, p_ac3dec->p_imdct->delay1+256*i );
             }
         }
 
@@ -154,13 +154,13 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
                 right = p_ac3dec->samples+2*256;
                 left_sur = p_ac3dec->samples+3*256;
                 right_sur = p_ac3dec->samples+4*256;
-                delay_left = p_ac3dec->imdct->delay;
-                delay_right = p_ac3dec->imdct->delay+256;
-                delay1_left = p_ac3dec->imdct->delay1;
-                delay1_center = p_ac3dec->imdct->delay1+256;
-                delay1_right = p_ac3dec->imdct->delay1+2*256;
-                delay1_sl = p_ac3dec->imdct->delay1+3*256;
-                delay1_sr = p_ac3dec->imdct->delay1+4*256;
+                delay_left = p_ac3dec->p_imdct->delay;
+                delay_right = p_ac3dec->p_imdct->delay+256;
+                delay1_left = p_ac3dec->p_imdct->delay1;
+                delay1_center = p_ac3dec->p_imdct->delay1+256;
+                delay1_right = p_ac3dec->p_imdct->delay1+2*256;
+                delay1_sl = p_ac3dec->p_imdct->delay1+3*256;
+                delay1_sr = p_ac3dec->p_imdct->delay1+4*256;
     
                 for (i = 0; i < 256; i++) {
                     left_tmp = p_ac3dec->dm_par.unit * *left++  + p_ac3dec->dm_par.clev * *center  + p_ac3dec->dm_par.slev * *left_sur++;
@@ -176,12 +176,12 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
                 right = p_ac3dec->samples+256;
                 left_sur = p_ac3dec->samples+2*256;
                 right_sur = p_ac3dec->samples+3*256;
-                delay_left = p_ac3dec->imdct->delay;
-                delay_right = p_ac3dec->imdct->delay+256;
-                delay1_left = p_ac3dec->imdct->delay1;
-                delay1_right = p_ac3dec->imdct->delay1+256;
-                delay1_sl = p_ac3dec->imdct->delay1+2*256;
-                delay1_sr = p_ac3dec->imdct->delay1+3*256;
+                delay_left = p_ac3dec->p_imdct->delay;
+                delay_right = p_ac3dec->p_imdct->delay+256;
+                delay1_left = p_ac3dec->p_imdct->delay1;
+                delay1_right = p_ac3dec->p_imdct->delay1+256;
+                delay1_sl = p_ac3dec->p_imdct->delay1+2*256;
+                delay1_sr = p_ac3dec->p_imdct->delay1+3*256;
     
                 for (i = 0; i < 256; i++) {
                     left_tmp = p_ac3dec->dm_par.unit * *left++  + p_ac3dec->dm_par.slev * *left_sur++;
@@ -197,12 +197,12 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
                 center = p_ac3dec->samples+256;
                 right = p_ac3dec->samples+2*256;
                 right_sur = p_ac3dec->samples+3*256;
-                delay_left = p_ac3dec->imdct->delay;
-                delay_right = p_ac3dec->imdct->delay+256;
-                delay1_left = p_ac3dec->imdct->delay1;
-                delay1_center = p_ac3dec->imdct->delay1+256;
-                delay1_right = p_ac3dec->imdct->delay1+2*256;
-                delay1_sl = p_ac3dec->imdct->delay1+3*256;
+                delay_left = p_ac3dec->p_imdct->delay;
+                delay_right = p_ac3dec->p_imdct->delay+256;
+                delay1_left = p_ac3dec->p_imdct->delay1;
+                delay1_center = p_ac3dec->p_imdct->delay1+256;
+                delay1_right = p_ac3dec->p_imdct->delay1+2*256;
+                delay1_sl = p_ac3dec->p_imdct->delay1+3*256;
     
                 for (i = 0; i < 256; i++) {
                     left_tmp = p_ac3dec->dm_par.unit * *left++  + p_ac3dec->dm_par.clev * *center  - p_ac3dec->dm_par.slev * *right_sur;
@@ -217,11 +217,11 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
                 left = p_ac3dec->samples;
                 right = p_ac3dec->samples+256;
                 right_sur = p_ac3dec->samples+2*256;
-                delay_left = p_ac3dec->imdct->delay;
-                delay_right = p_ac3dec->imdct->delay+256;
-                delay1_left = p_ac3dec->imdct->delay1;
-                delay1_right = p_ac3dec->imdct->delay1+256;
-                delay1_sl = p_ac3dec->imdct->delay1+2*256;
+                delay_left = p_ac3dec->p_imdct->delay;
+                delay_right = p_ac3dec->p_imdct->delay+256;
+                delay1_left = p_ac3dec->p_imdct->delay1;
+                delay1_right = p_ac3dec->p_imdct->delay1+256;
+                delay1_sl = p_ac3dec->p_imdct->delay1+2*256;
     
                 for (i = 0; i < 256; i++) {
                     left_tmp = p_ac3dec->dm_par.unit * *left++ - p_ac3dec->dm_par.slev * *right_sur;
@@ -236,11 +236,11 @@ void imdct (ac3dec_t * p_ac3dec, s16 * buffer)
                 left = p_ac3dec->samples;
                 center = p_ac3dec->samples+256;
                 right = p_ac3dec->samples+2*256;
-                delay_left = p_ac3dec->imdct->delay;
-                delay_right = p_ac3dec->imdct->delay+256;
-                delay1_left = p_ac3dec->imdct->delay1;
-                delay1_center = p_ac3dec->imdct->delay1+256;
-                delay1_right = p_ac3dec->imdct->delay1+2*256;
+                delay_left = p_ac3dec->p_imdct->delay;
+                delay_right = p_ac3dec->p_imdct->delay+256;
+                delay1_left = p_ac3dec->p_imdct->delay1;
+                delay1_center = p_ac3dec->p_imdct->delay1+256;
+                delay1_right = p_ac3dec->p_imdct->delay1+2*256;
 
                 for (i = 0; i < 256; i++) {
                     left_tmp = p_ac3dec->dm_par.unit * *left++  + p_ac3dec->dm_par.clev * *center;
index e6923ec..163d770 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_internals.h: needed by the ac3 decoder
  *****************************************************************************
  * Copyright (C) 2000 VideoLAN
- * $Id: ac3_internal.h,v 1.2 2002/04/23 23:44:36 fenrir Exp $
+ * $Id: ac3_internal.h,v 1.3 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Michel Lespinasse <walken@zoy.org>
  *
@@ -40,7 +40,7 @@ void bit_allocate (ac3dec_t *);
 int exponent_unpack (ac3dec_t *);
 
 /* ac3_imdct.c */
-void _M( imdct_init )(imdct_t * p_imdct);
+void E_( imdct_init )(imdct_t * p_imdct);
 void imdct (ac3dec_t * p_ac3dec, s16 * buffer);
 
 /* ac3_mantissa.c */
index 79791b5..58ba796 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_spdif.c: ac3 pass-through to external decoder with enabled soundcard
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: ac3_spdif.c,v 1.31 2002/07/23 00:39:16 sam Exp $
+ * $Id: ac3_spdif.c,v 1.32 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Stéphane Borel <stef@via.ecp.fr>
  *          Juha Yrjola <jyrjola@cc.hut.fi>
 #include "ac3_spdif.h"
 
 /****************************************************************************
- * Local Prototypes
+ * Local prototypes
  ****************************************************************************/
-static int  decoder_Probe     ( vlc_fourcc_t * );
-static int  decoder_Run       ( decoder_fifo_t * );
+static int  OpenDecoder    ( vlc_object_t * );
+static int  RunDecoder     ( decoder_fifo_t * );
+
 static int  InitThread        ( ac3_spdif_thread_t * );
 static void EndThread         ( ac3_spdif_thread_t * );
 static void BitstreamCallback ( bit_stream_t *, vlc_bool_t );
@@ -98,52 +99,41 @@ static const frame_size_t p_frame_size_code[64] =
 };
 
 /*****************************************************************************
- * Capabilities
+ * Module descriptor
  *****************************************************************************/
-void _M( adec_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.dec.pf_probe = decoder_Probe;
-    p_function_list->functions.dec.pf_run   = decoder_Run;
-}
-
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("SPDIF pass-through AC3 decoder") )
-    ADD_CAPABILITY( DECODER, 0 )
-    ADD_SHORTCUT( "pass_through" )
-    ADD_SHORTCUT( "pass" )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    _M( adec_getfunctions )( &p_module->p_functions->dec );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+vlc_module_begin();
+    set_description( _("SPDIF pass-through AC3 decoder") );
+    set_capability( "decoder", 0 );
+    set_callbacks( OpenDecoder, NULL );
+    add_shortcut( "pass_through" );
+    add_shortcut( "pass" );
+vlc_module_end();
 
 /*****************************************************************************
- * decoder_Probe: probe the decoder and return score
+ * OpenDecoder: probe the decoder and return score
  *****************************************************************************
  * Tries to launch a decoder and return score so that the interface is able 
  * to chose.
  *****************************************************************************/
-static int decoder_Probe( vlc_fourcc_t *pi_type )
-{
-    return( *pi_type == VLC_FOURCC('a','5','2',' ') ) ? 0 : -1;
-}
+static int OpenDecoder( vlc_object_t *p_this ) 
+{   
+    decoder_fifo_t *p_fifo = (decoder_fifo_t*) p_this;
 
+    if( p_fifo->i_fourcc != VLC_FOURCC('a','5','2',' ') )
+    {   
+        return VLC_EGENERIC; 
+    }
+
+    p_fifo->pf_run = RunDecoder;
+    return VLC_SUCCESS;
+}
 
 /****************************************************************************
- * decoder_Run: the whole thing
+ * RunDecoder: the whole thing
  ****************************************************************************
  * This function is called just after the thread is launched.
  ****************************************************************************/
-static int decoder_Run( decoder_fifo_t * p_fifo )
+static int RunDecoder( decoder_fifo_t *p_fifo )
 {
     ac3_spdif_thread_t *   p_spdif;
     mtime_t     i_frame_time;
index 9f6a32c..f09b09f 100644 (file)
@@ -2,7 +2,7 @@
  * file.c: file input (file: access plug-in)
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: file.c,v 1.7 2002/06/01 12:31:58 sam Exp $
+ * $Id: file.c,v 1.8 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
 #endif
 
 /*****************************************************************************
- * Local prototypes
+ * Open: open the file
  *****************************************************************************/
-static void input_getfunctions( function_list_t * );
-static int  FileOpen       ( input_thread_t * );
-
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-MODULE_INIT_START
-    SET_DESCRIPTION( _("Standard filesystem file reading") )
-    ADD_CAPABILITY( ACCESS, 50 )
-    ADD_SHORTCUT( "stream" )
-MODULE_INIT_STOP
-MODULE_ACTIVATE_START
-    input_getfunctions( &p_module->p_functions->access );
-MODULE_ACTIVATE_STOP
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void input_getfunctions( function_list_t * p_function_list )
-{
-#define input p_function_list->functions.access
-    input.pf_open             = FileOpen;
-    input.pf_read             = input_FDRead;
-    input.pf_close            = input_FDClose;
-    input.pf_set_program      = input_SetProgram;
-    input.pf_set_area         = NULL;
-    input.pf_seek             = input_FDSeek;
-#undef input
-}
-
-/*****************************************************************************
- * FileOpen: open the file
- *****************************************************************************/
-static int FileOpen( input_thread_t * p_input )
+static int Open( vlc_object_t *p_this )
 {
+    input_thread_t *    p_input = (input_thread_t *)p_this;
     char *              psz_name = p_input->psz_name;
     int                 i_stat;
     struct stat         stat_info;                                              
@@ -103,6 +63,11 @@ static int FileOpen( input_thread_t * p_input )
         return( -1 );
     }
 
+    p_input->pf_read = input_FDRead;
+    p_input->pf_set_program = input_SetProgram;
+    p_input->pf_set_area = NULL;
+    p_input->pf_seek = input_FDSeek;
+
     vlc_mutex_lock( &p_input->stream.stream_lock );
 
     if( *p_input->psz_access && !strncmp( p_input->psz_access, "stream", 7 ) )
@@ -173,3 +138,14 @@ static int FileOpen( input_thread_t * p_input )
 
     return( 0 );
 }
+
+/*****************************************************************************
+ * Module descriptor
+ *****************************************************************************/
+vlc_module_begin();
+    set_description( _("Standard filesystem file reading") );
+    set_capability( "access", 50 );
+    add_shortcut( "stream" );
+    set_callbacks( Open, __input_FDClose );
+vlc_module_end();
index 22be538..4fcce9b 100644 (file)
@@ -2,7 +2,7 @@
  * http.c: HTTP access plug-in
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: http.c,v 1.18 2002/07/25 21:53:53 sigmunau Exp $
+ * $Id: http.c,v 1.19 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-static void input_getfunctions( function_list_t * );
-static int  HTTPOpen       ( input_thread_t * );
-static void HTTPClose      ( input_thread_t * );
-static int  HTTPSetProgram ( input_thread_t *, pgrm_descriptor_t * );  
-static void HTTPSeek       ( input_thread_t *, off_t );
+static int  Open       ( vlc_object_t * );
+static void Close      ( vlc_object_t * );
 
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-MODULE_INIT_START
-    SET_DESCRIPTION( _("HTTP access plug-in") )
-    ADD_CAPABILITY( ACCESS, 0 )
-    ADD_SHORTCUT( "http4" )
-    ADD_SHORTCUT( "http6" )
-MODULE_INIT_STOP
-MODULE_ACTIVATE_START
-    input_getfunctions( &p_module->p_functions->access );
-MODULE_ACTIVATE_STOP
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+static int  SetProgram ( input_thread_t *, pgrm_descriptor_t * );  
+static void Seek       ( input_thread_t *, off_t );
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * Module descriptor
  *****************************************************************************/
-static void input_getfunctions( function_list_t * p_function_list )
-{
-#define input p_function_list->functions.access
-    input.pf_open             = HTTPOpen;
-    input.pf_read             = input_FDNetworkRead;
-    input.pf_close            = HTTPClose;
-    input.pf_set_program      = HTTPSetProgram;
-    input.pf_set_area         = NULL;
-    input.pf_seek             = HTTPSeek;
-#undef input
-}
+vlc_module_begin();
+    set_description( _("HTTP access module") );
+    set_capability( "access", 0 );
+    add_shortcut( "http4" );
+    add_shortcut( "http6" );
+    set_callbacks( Open, Close );
+vlc_module_end();
 
 /*****************************************************************************
  * _input_socket_t: private access plug-in data, modified to add private
@@ -124,14 +99,13 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
     char *              psz_return_alpha;
 
     /* Find an appropriate network module */
-    p_network = module_Need( p_input, MODULE_CAPABILITY_NETWORK,
-                             p_access_data->psz_network,
-                             &p_access_data->socket_desc );
+    p_input->p_private = (void*) &p_access_data->socket_desc;
+    p_network = module_Need( p_input, "network", p_access_data->psz_network );
     if( p_network == NULL )
     {
         return( -1 );
     }
-    module_Unneed( p_network );
+    module_Unneed( p_input, p_network );
 
     p_access_data->_socket.i_handle = p_access_data->socket_desc.i_handle;
 
@@ -166,7 +140,9 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
 
     /* Prepare the input thread for reading. */ 
     p_input->i_bufsize = INPUT_DEFAULT_BUFSIZE;
-    /* FIXME: we shouldn't have to do that ! */
+
+    /* FIXME: we shouldn't have to do that ! It's UGLY but mandatory because
+     * input_FillBuffer assumes p_input->pf_read exists */
     p_input->pf_read = input_FDNetworkRead;
 
     while( !input_FillBuffer( p_input ) )
@@ -270,10 +246,11 @@ static int HTTPConnect( input_thread_t * p_input, off_t i_tell )
 }
 
 /*****************************************************************************
- * HTTPOpen: parse URL and open the remote file at the beginning
+ * Open: parse URL and open the remote file at the beginning
  *****************************************************************************/
-static int HTTPOpen( input_thread_t * p_input )
+static int Open( vlc_object_t *p_this )
 {
+    input_thread_t *    p_input = (input_thread_t *)p_this;
     _input_socket_t *   p_access_data;
     char *              psz_name = strdup(p_input->psz_name);
     char *              psz_parser = psz_name;
@@ -459,6 +436,11 @@ static int HTTPOpen( input_thread_t * p_input )
     msg_Dbg( p_input, "opening server=%s port=%d path=%s",
                       psz_server_addr, i_server_port, psz_path );
 
+    p_input->pf_read = input_FDNetworkRead;
+    p_input->pf_set_program = SetProgram;
+    p_input->pf_set_area = NULL;
+    p_input->pf_seek = Seek;
+
     vlc_mutex_lock( &p_input->stream.stream_lock );
     p_input->stream.b_pace_control = 1;
     p_input->stream.b_seekable = 1;
@@ -484,10 +466,11 @@ static int HTTPOpen( input_thread_t * p_input )
 }
 
 /*****************************************************************************
- * HTTPClose: free unused data structures
+ * Close: free unused data structures
  *****************************************************************************/
-static void HTTPClose( input_thread_t * p_input )
+static void Close( vlc_object_t *p_this )
 {
+    input_thread_t *  p_input = (input_thread_t *)p_this;
     _input_socket_t * p_access_data = 
         (_input_socket_t *)p_input->p_access_data;
 
@@ -496,18 +479,18 @@ static void HTTPClose( input_thread_t * p_input )
 }
 
 /*****************************************************************************
- * HTTPSetProgram: do nothing
+ * SetProgram: do nothing
  *****************************************************************************/
-static int HTTPSetProgram( input_thread_t * p_input,
-                           pgrm_descriptor_t * p_program )
+static int SetProgram( input_thread_t * p_input,
+                       pgrm_descriptor_t * p_program )
 {
     return( 0 );
 }
 
 /*****************************************************************************
- * HTTPSeek: close and re-open a connection at the right place
+ * Seek: close and re-open a connection at the right place
  *****************************************************************************/
-static void HTTPSeek( input_thread_t * p_input, off_t i_pos )
+static void Seek( input_thread_t * p_input, off_t i_pos )
 {
     _input_socket_t *   p_access_data = p_input->p_access_data;
     close( p_access_data->_socket.i_handle );
index e5a50bc..279e4ee 100644 (file)
@@ -2,7 +2,7 @@
  * udp.c: raw UDP access plug-in
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: udp.c,v 1.11 2002/06/01 12:31:58 sam Exp $
+ * $Id: udp.c,v 1.12 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-static void input_getfunctions( function_list_t * );
-static int  UDPOpen       ( input_thread_t * );
+static int  Open       ( vlc_object_t * );
 
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor
  *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-MODULE_INIT_START
-    SET_DESCRIPTION( _("Raw UDP access plug-in") )
-    ADD_CAPABILITY( ACCESS, 0 )
-    ADD_SHORTCUT( "udpstream" )
-    ADD_SHORTCUT( "udp4" )
-    ADD_SHORTCUT( "udp6" )
-MODULE_INIT_STOP
-MODULE_ACTIVATE_START
-    input_getfunctions( &p_module->p_functions->access );
-MODULE_ACTIVATE_STOP
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+vlc_module_begin();
+    set_description( _("raw UDP access module") );
+    set_capability( "access", 0 );
+    add_shortcut( "udpstream" );
+    add_shortcut( "udp4" );
+    add_shortcut( "udp6" );
+    set_callbacks( Open, __input_FDNetworkClose );
+vlc_module_end();
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * Open: open the socket
  *****************************************************************************/
-static void input_getfunctions( function_list_t * p_function_list )
-{
-#define input p_function_list->functions.access
-    input.pf_open             = UDPOpen;
-    input.pf_read             = input_FDNetworkRead;
-    input.pf_close            = input_FDNetworkClose;
-    input.pf_set_program      = input_SetProgram;
-    input.pf_set_area         = NULL;
-    input.pf_seek             = NULL;
-#undef input
-}
-
-/*****************************************************************************
- * UDPOpen: open the socket
- *****************************************************************************/
-static int UDPOpen( input_thread_t * p_input )
+static int Open( vlc_object_t *p_this )
 {
+    input_thread_t *    p_input = (input_thread_t *)p_this;
     input_socket_t *    p_access_data;
     module_t *          p_network;
     char *              psz_network = "";
@@ -217,6 +192,11 @@ static int UDPOpen( input_thread_t * p_input )
         }
     }
 
+    p_input->pf_read = input_FDNetworkRead;
+    p_input->pf_set_program = input_SetProgram;
+    p_input->pf_set_area = NULL;
+    p_input->pf_seek = NULL;
+
     vlc_mutex_lock( &p_input->stream.stream_lock );
     p_input->stream.b_pace_control = 0;
     p_input->stream.b_seekable = 0;
@@ -248,14 +228,14 @@ static int UDPOpen( input_thread_t * p_input )
     socket_desc.i_server_port = i_server_port;
 
     /* Find an appropriate network module */
-    p_network = module_Need( p_input, MODULE_CAPABILITY_NETWORK,
-                             psz_network, &socket_desc );
+    p_input->p_private = (void*) &socket_desc;
+    p_network = module_Need( p_input, "network", psz_network );
     free(psz_name);
     if( p_network == NULL )
     {
         return( -1 );
     }
-    module_Unneed( p_network );
+    module_Unneed( p_input, p_network );
     
     p_access_data = p_input->p_access_data = malloc( sizeof(input_socket_t) );
     if( p_access_data == NULL )
index 5d01c03..7f0b82c 100644 (file)
@@ -2,7 +2,7 @@
  * alsa.c : alsa plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: alsa.c,v 1.20 2002/07/20 18:01:42 sam Exp $
+ * $Id: alsa.c,v 1.21 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Henri Fallon <henri@videolan.org> - Original Author
  *          Jeffrey Baker <jwbaker@acm.org> - Port to ALSA 1.0 API
 #include <alsa/asoundlib.h>
 
 /*****************************************************************************
- * Capabilities defined in the other files.
+ * Local prototypes
  *****************************************************************************/
-static void aout_getfunctions( function_list_t * p_function_list );
-static int  aout_Open        ( aout_thread_t * );
-static int  aout_SetFormat   ( aout_thread_t * );
-static void aout_HandleXrun  ( aout_thread_t *);
-static int  aout_GetBufInfo  ( aout_thread_t *, int i_buffer_limit );
-static void aout_Play        ( aout_thread_t *, byte_t *buffer, int i_size );
-static void aout_Close       ( aout_thread_t * );
+static int  Open         ( vlc_object_t * );
+static void Close        ( vlc_object_t * );
+
+static int  SetFormat    ( aout_thread_t * );
+static int  GetBufInfo   ( aout_thread_t *, int );
+static void Play         ( aout_thread_t *, byte_t *, int );
+
+static void HandleXrun   ( aout_thread_t *);
 
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor
  *****************************************************************************/
-MODULE_CONFIG_START
-    ADD_CATEGORY_HINT( N_("Device"), NULL )
-    ADD_STRING( "alsa-device", NULL, NULL, N_("Name"), NULL )
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("ALSA audio module") )
-    ADD_CAPABILITY( AOUT, 50 )
-MODULE_INIT_STOP
-    
-MODULE_ACTIVATE_START
-    aout_getfunctions( &p_module->p_functions->aout );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+vlc_module_begin();
+    add_category_hint( N_("Device"), NULL );
+    add_string( "alsa-device", NULL, NULL, N_("Name"), NULL );
+    set_description( _("ALSA audio module") );
+    set_capability( "audio output", 50 );
+    set_callbacks( Open, Close );
+vlc_module_end();
 
 /*****************************************************************************
  * Preamble
@@ -95,25 +87,14 @@ struct aout_sys_t
 };
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void aout_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.aout.pf_open = aout_Open;
-    p_function_list->functions.aout.pf_setformat = aout_SetFormat;
-    p_function_list->functions.aout.pf_getbufinfo = aout_GetBufInfo;
-    p_function_list->functions.aout.pf_play = aout_Play;
-    p_function_list->functions.aout.pf_close = aout_Close;
-}
-
-/*****************************************************************************
- * aout_Open : creates a handle and opens an alsa device
+ * Open: create a handle and open an alsa device
  *****************************************************************************
  * This function opens an alsa device, through the alsa API
  *****************************************************************************/
-static int aout_Open( aout_thread_t *p_aout )
+static int Open( vlc_object_t *p_this )
 {
+    aout_thread_t *p_aout = (aout_thread_t *)p_this;
+
     /* Allows user to choose which ALSA device to use */
     char  psz_alsadev[128];
     char *psz_device, *psz_userdev;
@@ -127,6 +108,10 @@ static int aout_Open( aout_thread_t *p_aout )
         return -1;
     }
 
+    p_aout->pf_setformat = SetFormat;
+    p_aout->pf_getbufinfo = GetBufInfo;
+    p_aout->pf_play = Play;
+
     /* Read in ALSA device preferences from configuration */
     psz_userdev = config_GetPsz( p_aout, "alsa-device" );
 
@@ -179,12 +164,12 @@ static int aout_Open( aout_thread_t *p_aout )
 }
 
 /*****************************************************************************
- * aout_SetFormat : sets the alsa output format
+ * SetFormat : sets the alsa output format
  *****************************************************************************
  * This function prepares the device, sets the rate, format, the mode
  * ( "play as soon as you have data" ), and buffer information.
  *****************************************************************************/
-static int aout_SetFormat( aout_thread_t *p_aout )
+static int SetFormat( aout_thread_t *p_aout )
 {
     int i_rv;
     int i_format;
@@ -317,12 +302,12 @@ static int aout_SetFormat( aout_thread_t *p_aout )
 }
 
 /*****************************************************************************
- * aout_HandleXrun : reprepare the output
+ * HandleXrun : reprepare the output
  *****************************************************************************
  * When buffer gets empty, the driver goes in "Xrun" state, where it needs
  * to be reprepared before playing again
  *****************************************************************************/
-static void aout_HandleXrun(aout_thread_t *p_aout)
+static void HandleXrun(aout_thread_t *p_aout)
 {
     int i_rv;
 
@@ -339,14 +324,14 @@ static void aout_HandleXrun(aout_thread_t *p_aout)
 
 
 /*****************************************************************************
- * aout_BufInfo: buffer status query
+ * BufInfo: buffer status query
  *****************************************************************************
  * This function returns the number of used byte in the queue.
  * It also deals with errors : indeed if the device comes to run out
  * of data to play, it switches to the "underrun" status. It has to
  * be flushed and re-prepared
  *****************************************************************************/
-static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
+static int GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
 {
     snd_pcm_status_t *p_status;
     int i_alsa_get_status_returns;
@@ -366,7 +351,7 @@ static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
     switch( snd_pcm_status_get_state( p_status ) )
     {
         case SND_PCM_STATE_XRUN :
-            aout_HandleXrun( p_aout );
+            HandleXrun( p_aout );
             break;
 
         case SND_PCM_STATE_OPEN:
@@ -384,11 +369,11 @@ static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
 }
 
 /*****************************************************************************
- * aout_Play : plays a sample
+ * Play : plays a sample
  *****************************************************************************
  * Plays a sample using the snd_pcm_writei function from the alsa API
  *****************************************************************************/
-static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
+static void Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 {
     snd_pcm_uframes_t tot_frames;
     snd_pcm_uframes_t frames_left;
@@ -415,10 +400,11 @@ static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 }
 
 /*****************************************************************************
- * aout_Close : close the Alsa device
+ * Close: close the Alsa device
  *****************************************************************************/
-static void aout_Close( aout_thread_t *p_aout )
+static void Close( vlc_object_t *p_this )
 {
+    aout_thread_t *p_aout = (aout_thread_t *)p_this;
     int i_close_returns;
 
     i_close_returns = snd_pcm_close( p_aout->p_sys->p_alsa_handle );
index 42eba24..80e12b4 100644 (file)
@@ -46,51 +46,30 @@ struct aout_sys_t
 };
 
 /*****************************************************************************
- * Local prototypes.
+ * Local prototypes
  *****************************************************************************/
-static void aout_getfunctions ( function_list_t * );
-static int  aout_Open         ( aout_thread_t * );
-static int  aout_SetFormat    ( aout_thread_t * );
-static int  aout_GetBufInfo   ( aout_thread_t *, int );
-static void aout_Play         ( aout_thread_t *, byte_t *, int );
-static void aout_Close        ( aout_thread_t * );
+static int  Open         ( vlc_object_t * );
+static void Close        ( vlc_object_t * );
 
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("aRts audio module") )
-    ADD_CAPABILITY( AOUT, 50 )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    aout_getfunctions( &p_module->p_functions->aout );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+static int  SetFormat    ( aout_thread_t * );
+static int  GetBufInfo   ( aout_thread_t *, int );
+static void Play         ( aout_thread_t *, byte_t *, int );
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * Module descriptor
  *****************************************************************************/
-static void aout_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.aout.pf_open = aout_Open;
-    p_function_list->functions.aout.pf_setformat = aout_SetFormat;
-    p_function_list->functions.aout.pf_getbufinfo = aout_GetBufInfo;
-    p_function_list->functions.aout.pf_play = aout_Play;
-    p_function_list->functions.aout.pf_close = aout_Close;
-}
+vlc_module_begin();
+   set_description( _("aRts audio module") );
+   set_capability( "audio output", 50 );
+   set_callbacks( Open, Close );
+vlc_module_end();
 
 /*****************************************************************************
- * aout_Open: initialize arts connection to server
+ * Open: initialize arts connection to server
  *****************************************************************************/
-static int aout_Open( aout_thread_t *p_aout )
+static int Open( vlc_object_t *p_this )
 {
+    aout_thread_t *p_aout = (aout_thread_t *)p_this;
     int i_err = 0;
 
     /* Allocate structure */
@@ -110,6 +89,10 @@ static int aout_Open( aout_thread_t *p_aout )
         return(-1);
     }
 
+    p_aout->pf_setformat = SetFormat;
+    p_aout->pf_getbufinfo = GetBufInfo;
+    p_aout->pf_play = Play;
+
     p_aout->p_sys->stream =
         arts_play_stream( p_aout->i_rate, 16, p_aout->i_channels, "vlc" );
 
@@ -117,9 +100,9 @@ static int aout_Open( aout_thread_t *p_aout )
 }
 
 /*****************************************************************************
- * aout_SetFormat: set the output format
+ * SetFormat: set the output format
  *****************************************************************************/
-static int aout_SetFormat( aout_thread_t *p_aout )
+static int SetFormat( aout_thread_t *p_aout )
 {
    /*Not ready*/ 
 /*    p_aout->i_latency = esd_get_latency(i_fd);*/
@@ -131,20 +114,20 @@ static int aout_SetFormat( aout_thread_t *p_aout )
 }
 
 /*****************************************************************************
- * aout_GetBufInfo: buffer status query
+ * GetBufInfo: buffer status query
  *****************************************************************************/
-static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
+static int GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
 {
     /* arbitrary value that should be changed */
     return( i_buffer_limit );
 }
 
 /*****************************************************************************
- * aout_Play: play a sound samples buffer
+ * Play: play a sound samples buffer
  *****************************************************************************
  * This function writes a buffer of i_length bytes in the socket
  *****************************************************************************/
-static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
+static void Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 {
     int i_err = arts_write( p_aout->p_sys->stream, buffer, i_size );
 
@@ -155,10 +138,12 @@ static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 }
 
 /*****************************************************************************
- * aout_Close: close the Esound socket
+ * Close: close the Esound socket
  *****************************************************************************/
-static void aout_Close( aout_thread_t *p_aout )
+static void Close( vlc_object_t *p_this )
 {
+    aout_thread_t *p_aout = (aout_thread_t *)p_this;
+
     arts_close_stream( p_aout->p_sys->stream );
     free( p_aout->p_sys );
 }
index ca91d6a..ed5bd7e 100644 (file)
@@ -2,7 +2,7 @@
  * avi.c : AVI file Stream input module for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: avi.c,v 1.32 2002/07/23 00:39:16 sam Exp $
+ * $Id: avi.c,v 1.33 2002/07/31 20:56:50 sam Exp $
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  * 
  * This program is free software; you can redistribute it and/or modify
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-static void input_getfunctions( function_list_t * );
-static int  AVIDemux         ( input_thread_t * );
-static int  AVIInit          ( input_thread_t * );
-static void AVIEnd           ( input_thread_t * );
+static int    AVIInit   ( vlc_object_t * );
+static void __AVIEnd    ( vlc_object_t * );
+static int    AVIDemux  ( input_thread_t * );
 
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( "RIFF-AVI Stream input" )
-    ADD_CAPABILITY( DEMUX, 150 )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    input_getfunctions( &p_module->p_functions->demux );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+#define AVIEnd(a) __AVIEnd(VLC_OBJECT(a))
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * Module descriptor
  *****************************************************************************/
-static void input_getfunctions( function_list_t * p_function_list )
-{
-#define input p_function_list->functions.demux
-    input.pf_init             = AVIInit;
-    input.pf_end              = AVIEnd;
-    input.pf_demux            = AVIDemux;
-    input.pf_rewind           = NULL;
-#undef input
-}
-
+vlc_module_begin();
+    set_description( "RIFF-AVI demuxer" );
+    set_capability( "demux", 150 );
+    set_callbacks( AVIInit, __AVIEnd );
+vlc_module_end();
 
 /*****************************************************************************
  * Some usefull functions to manipulate memory 
@@ -544,8 +521,9 @@ static void __AVI_UpdateIndexOffset( input_thread_t *p_input )
 /*****************************************************************************
  * AVIEnd: frees unused data
  *****************************************************************************/
-static void AVIEnd( input_thread_t *p_input )
+static void __AVIEnd ( vlc_object_t * p_this )
 {   
+    input_thread_t *    p_input = (input_thread_t *)p_this;
     int i;
     demux_data_avi_file_t *p_avi_demux;
     p_avi_demux = (demux_data_avi_file_t*)p_input->p_demux_data  ; 
@@ -580,8 +558,9 @@ static void AVIEnd( input_thread_t *p_input )
 /*****************************************************************************
  * AVIInit: check file and initializes AVI structures
  *****************************************************************************/
-static int AVIInit( input_thread_t *p_input )
-{
+static int AVIInit( vlc_object_t * p_this )
+{   
+    input_thread_t *    p_input = (input_thread_t *)p_this;
     riffchunk_t *p_riff,*p_hdrl,*p_movi;
     riffchunk_t *p_avih;
     riffchunk_t *p_strl,*p_strh,*p_strf;
@@ -589,6 +568,8 @@ static int AVIInit( input_thread_t *p_input )
     es_descriptor_t *p_es = NULL; /* for not warning */
     int i;
 
+    p_input->pf_demux = AVIDemux;
+
     if( !( p_input->p_demux_data = 
                     p_avi_demux = malloc( sizeof(demux_data_avi_file_t) ) ) )
     {
@@ -1039,7 +1020,7 @@ static int __AVI_SeekAndGetChunk( input_thread_t  *p_input,
                                   AVIStreamInfo_t *p_info )
 {
     pes_packet_t *p_pes;
-    int i_length;
+    int i_length, i_ret;
     
     i_length = __MIN( p_info->p_index[p_info->i_idxposc].i_length 
                         - p_info->i_idxposb,
@@ -1049,10 +1030,9 @@ static int __AVI_SeekAndGetChunk( input_thread_t  *p_input,
                       (off_t)p_info->p_index[p_info->i_idxposc].i_pos + 
                             p_info->i_idxposb + 8);
 
-    if( __AVI_GetDataInPES( p_input, 
-                            &p_pes, 
-                            i_length , 
-                            0) != i_length )
+    i_ret = __AVI_GetDataInPES( p_input, &p_pes, i_length , 0);
+
+    if( i_ret != i_length )
     {
         return( 0 );
     }
@@ -1532,6 +1512,7 @@ static pes_packet_t *AVI_ReadStreamBytesInPES(  input_thread_t  *p_input,
     {
         return( NULL );
     }
+fprintf(stderr, "blah ibyte %i\n", i_byte);
     if( !( p_data = input_NewPacket( p_input->p_method_data, i_byte ) ) )
     {
         input_DeletePES( p_input->p_method_data, p_pes );
index 3fdfa9d..26e9f24 100644 (file)
@@ -2,7 +2,7 @@
  * aout_beos.cpp: BeOS audio output
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: aout_beos.cpp,v 1.25 2002/07/20 18:01:42 sam Exp $
+ * $Id: aout_beos.cpp,v 1.26 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
 #include <malloc.h>
 #include <string.h>
 
-extern "C"
-{
 #include <vlc/vlc.h>
 #include <vlc/aout.h>
-}
 
 /*****************************************************************************
  * aout_sys_t: BeOS audio output method descriptor
@@ -58,37 +55,20 @@ struct aout_sys_t
     int i_buffer_pos;
 };
 
-extern "C"
-{
-
 /*****************************************************************************
  * Local prototypes.
  *****************************************************************************/
-static int     aout_Open        ( aout_thread_t *p_aout );
-static int     aout_SetFormat   ( aout_thread_t *p_aout );
-static int     aout_GetBufInfo  ( aout_thread_t *p_aout, int i_buffer_info );
-static void    aout_Play        ( aout_thread_t *p_aout,
-                                  byte_t *buffer, int i_size );
-static void    aout_Close       ( aout_thread_t *p_aout );
+static int     SetFormat   ( aout_thread_t * );
+static int     GetBufInfo  ( aout_thread_t *, int );
+static void    Play        ( aout_thread_t *, byte_t *, int );
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * OpenAudio: opens a BPushGameSound
  *****************************************************************************/
-void _M( aout_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.aout.pf_open = aout_Open;
-    p_function_list->functions.aout.pf_setformat = aout_SetFormat;
-    p_function_list->functions.aout.pf_getbufinfo = aout_GetBufInfo;
-    p_function_list->functions.aout.pf_play = aout_Play;
-    p_function_list->functions.aout.pf_close = aout_Close;
-}
+int E_(OpenAudio) ( vlc_object_t *p_this )
+{       
+    aout_thread_t * p_aout = (aout_thread_t *)p_this;
 
-/*****************************************************************************
- * aout_Open: opens a BPushGameSound
- *****************************************************************************/
-static int aout_Open( aout_thread_t *p_aout )
-{
     /* Allocate structure */
     p_aout->p_sys = (aout_sys_t*) malloc( sizeof( aout_sys_t ) );
     if( p_aout->p_sys == NULL )
@@ -114,6 +94,10 @@ static int aout_Open( aout_thread_t *p_aout )
     p_aout->p_sys->p_format->buffer_size = 4*8192;
     p_aout->p_sys->i_buffer_pos = 0;
 
+    p_aout->pf_setformat = SetFormat;
+    p_aout->pf_getbufinfo = GetBufInfo;
+    p_aout->pf_play = Play;
+
     /* Allocate BPushGameSound */
     p_aout->p_sys->p_sound = new BPushGameSound( 8192,
                                                  p_aout->p_sys->p_format,
@@ -143,17 +127,17 @@ static int aout_Open( aout_thread_t *p_aout )
 }
 
 /*****************************************************************************
- * aout_SetFormat: sets the dsp output format
+ * SetFormat: sets the dsp output format
  *****************************************************************************/
-static int aout_SetFormat( aout_thread_t *p_aout )
+static int SetFormat( aout_thread_t *p_aout )
 {
     return( 0 );
 }
 
 /*****************************************************************************
- * aout_GetBufInfo: buffer status query
+ * GetBufInfo: buffer status query
  *****************************************************************************/
-static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
+static int GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
 {
     /* Each value is 4 bytes long (stereo signed 16 bits) */
     int i_hard_pos = 4 * p_aout->p_sys->p_sound->CurrentPosition();
@@ -168,11 +152,11 @@ static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
 }
 
 /*****************************************************************************
- * aout_Play: plays a sound samples buffer
+ * Play: plays a sound samples buffer
  *****************************************************************************
  * This function writes a buffer of i_length bytes in the dsp
  *****************************************************************************/
-static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
+static void Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 {
     int i_newbuf_pos;
 
@@ -202,10 +186,12 @@ static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 }
 
 /*****************************************************************************
- * aout_Close: closes the dsp audio device
+ * CloseAudio: closes the dsp audio device
  *****************************************************************************/
-static void aout_Close( aout_thread_t *p_aout )
-{
+void E_(CloseAudio) ( vlc_object_t *p_this )
+{       
+    aout_thread_t * p_aout = (aout_thread_t *)p_this;
+
     p_aout->p_sys->p_sound->UnlockCyclic();
     p_aout->p_sys->p_sound->StopPlaying( );
     delete p_aout->p_sys->p_sound;
@@ -213,5 +199,3 @@ static void aout_Close( aout_thread_t *p_aout )
     free( p_aout->p_sys );
 }
 
-} /* extern "C" */
-
index f983b30..af0387d 100644 (file)
@@ -2,7 +2,7 @@
  * beos.cpp : BeOS plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: beos.cpp,v 1.19 2002/06/01 12:31:58 sam Exp $
+ * $Id: beos.cpp,v 1.20 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
 
 #include <vlc/vlc.h>
 
-extern "C"
-{
 /*****************************************************************************
- * Capabilities defined in the other files.
+ * External prototypes
  *****************************************************************************/
-void _M( aout_getfunctions )( function_list_t * p_function_list );
-void _M( vout_getfunctions )( function_list_t * p_function_list );
-void _M( intf_getfunctions )( function_list_t * p_function_list );
+int  E_(OpenIntf)     ( vlc_object_t * );
+void E_(CloseIntf)    ( vlc_object_t * );
 
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("BeOS standard API module") )
-    ADD_CAPABILITY( INTF, 100 )
-    ADD_CAPABILITY( VOUT, 100 )
-    ADD_CAPABILITY( AOUT, 100 )
-MODULE_INIT_STOP
+int  E_(OpenAudio)    ( vlc_object_t * );
+void E_(CloseAudio)   ( vlc_object_t * );
 
-MODULE_ACTIVATE_START
-    _M( aout_getfunctions )( &p_module->p_functions->aout );
-    _M( vout_getfunctions )( &p_module->p_functions->vout );
-    _M( intf_getfunctions )( &p_module->p_functions->intf );
-MODULE_ACTIVATE_STOP
+int  E_(OpenVideo)    ( vlc_object_t * );
+void E_(CloseVideo)   ( vlc_object_t * );
 
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+/*****************************************************************************
+ * Module descriptor
+ *****************************************************************************/
+vlc_module_begin();
+    set_description( _("BeOS standard API module") );
+    add_submodule();
+        set_capability( "interface", 100 );
+        set_callbacks( E_(OpenIntf), E_(CloseIntf) );
+    add_submodule();                                     
+        set_capability( "video output", 100 );
+        set_callbacks( E_(OpenVideo), E_(CloseVideo) );
+    add_submodule();
+        set_capability( "audio output", 100 );
+        set_callbacks( E_(OpenAudio), E_(CloseAudio) );
+vlc_module_end();
 
-} /* extern "C" */
index 5d729a4..9e7c5ca 100644 (file)
@@ -2,7 +2,7 @@
  * intf_beos.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: intf_beos.cpp,v 1.43 2002/07/23 12:42:17 tcastley Exp $
+ * $Id: intf_beos.cpp,v 1.44 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
 #include "intf_vlc_wrapper.h"
 #include "InterfaceWindow.h"
 
-extern "C"
-{
-
-/*****************************************************************************
- * Local prototypes.
- *****************************************************************************/
-static int  intf_Open      ( intf_thread_t *p_intf );
-static void intf_Close     ( intf_thread_t *p_intf );
-static void intf_Run       ( intf_thread_t *p_intf );
-
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * Local prototype
  *****************************************************************************/
-void _M( intf_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.intf.pf_open  = intf_Open;
-    p_function_list->functions.intf.pf_close = intf_Close;
-    p_function_list->functions.intf.pf_run   = intf_Run;
-}
+static void Run       ( intf_thread_t *p_intf );
 
 /*****************************************************************************
- * intf_Open: initialize interface
+ * OpenIntf: initialize interface
  *****************************************************************************/
-static int intf_Open( intf_thread_t *p_intf )
-{
+int E_(OpenIntf) ( vlc_object_t *p_this )
+{   
+    intf_thread_t *p_intf = (intf_thread_t*) p_this;     
     BScreen *screen;
     screen = new BScreen();
     BRect rect = screen->Frame();
@@ -83,6 +68,7 @@ static int intf_Open( intf_thread_t *p_intf )
 //    p_intf->p_sys->p_sub = msg_Subscribe( p_intf );
     p_intf->p_sys->p_input = NULL;
 
+    p_intf->pf_run = Run;
 
     /* Create the interface window */
     p_intf->p_sys->p_window =
@@ -99,10 +85,12 @@ static int intf_Open( intf_thread_t *p_intf )
 }
 
 /*****************************************************************************
- * intf_Close: destroy dummy interface
+ * CloseIntf: destroy interface
  *****************************************************************************/
-static void intf_Close( intf_thread_t *p_intf )
+void E_(CloseIntf) ( vlc_object_t *p_this )
 {
+    intf_thread_t *p_intf = (intf_thread_t*) p_this;
+
     if( p_intf->p_sys->p_input )
     {
         vlc_object_release( p_intf->p_sys->p_input );
@@ -120,9 +108,9 @@ static void intf_Close( intf_thread_t *p_intf )
 
 
 /*****************************************************************************
- * intf_Run: event loop
+ * Run: event loop
  *****************************************************************************/
-static void intf_Run( intf_thread_t *p_intf )
+static void Run( intf_thread_t *p_intf )
 {
     while( !p_intf->b_die )
     {
@@ -153,5 +141,3 @@ static void intf_Run( intf_thread_t *p_intf )
     
 }
 
-} /* extern "C" */
-
index 3902254..bb7724f 100644 (file)
@@ -2,7 +2,7 @@
  * vout_beos.cpp: beos video output display method
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: vout_beos.cpp,v 1.64 2002/07/28 01:46:26 tcastley Exp $
+ * $Id: vout_beos.cpp,v 1.65 2002/07/31 20:56:50 sam Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -460,46 +460,26 @@ void VLCView::Draw(BRect updateRect)
       FillRect(updateRect);
 }
 
-
-extern "C"
-{
-
 /*****************************************************************************
  * Local prototypes
  *****************************************************************************/
-static int  vout_Create     ( vout_thread_t * );
-static int  vout_Init       ( vout_thread_t * );
-static void vout_End        ( vout_thread_t * );
-static void vout_Destroy    ( vout_thread_t * );
-static int  vout_Manage     ( vout_thread_t * );
-static void vout_Display    ( vout_thread_t *, picture_t * );
-static void vout_Render     ( vout_thread_t *, picture_t * );
+static int  Init       ( vout_thread_t * );
+static void End        ( vout_thread_t * );
+static int  Manage     ( vout_thread_t * );
+static void Display    ( vout_thread_t *, picture_t * );
 
 static int  BeosOpenDisplay ( vout_thread_t *p_vout );
 static void BeosCloseDisplay( vout_thread_t *p_vout );
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-void _M( vout_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.vout.pf_create     = vout_Create;
-    p_function_list->functions.vout.pf_init       = vout_Init;
-    p_function_list->functions.vout.pf_end        = vout_End;
-    p_function_list->functions.vout.pf_destroy    = vout_Destroy;
-    p_function_list->functions.vout.pf_manage     = vout_Manage;
-    p_function_list->functions.vout.pf_display    = vout_Display;
-    p_function_list->functions.vout.pf_render     = vout_Render;
-}
-
-/*****************************************************************************
- * vout_Create: allocates BeOS video thread output method
+ * OpenVideo: allocates BeOS video thread output method
  *****************************************************************************
  * This function allocates and initializes a BeOS vout method.
  *****************************************************************************/
-int vout_Create( vout_thread_t *p_vout )
+int E_(OpenVideo) ( vlc_object_t *p_this )
 {
+    vout_thread_t * p_vout = (vout_thread_t *)p_this;
+
     /* Allocate structure */
     p_vout->p_sys = (vout_sys_t*) malloc( sizeof( vout_sys_t ) );
     if( p_vout->p_sys == NULL )
@@ -511,13 +491,19 @@ int vout_Create( vout_thread_t *p_vout )
     p_vout->p_sys->i_height = p_vout->render.i_height;
     p_vout->p_sys->source_chroma = p_vout->render.i_chroma;
 
+    p_vout->pf_init = Init;
+    p_vout->pf_end = End;
+    p_vout->pf_manage = NULL;
+    p_vout->pf_render = NULL;
+    p_vout->pf_display = Display;
+
     return( 0 );
 }
 
 /*****************************************************************************
- * vout_Init: initialize BeOS video thread output method
+ * Init: initialize BeOS video thread output method
  *****************************************************************************/
-int vout_Init( vout_thread_t *p_vout )
+int Init( vout_thread_t *p_vout )
 {
     int i_index;
     picture_t *p_pic;
@@ -583,50 +569,32 @@ int vout_Init( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * vout_End: terminate BeOS video thread output method
+ * End: terminate BeOS video thread output method
  *****************************************************************************/
-void vout_End( vout_thread_t *p_vout )
+void End( vout_thread_t *p_vout )
 {
     BeosCloseDisplay( p_vout );
 }
 
 /*****************************************************************************
- * vout_Destroy: destroy BeOS video thread output method
+ * CloseVideo: destroy BeOS video thread output method
  *****************************************************************************
  * Terminate an output method created by DummyCreateOutputMethod
  *****************************************************************************/
-void vout_Destroy( vout_thread_t *p_vout )
+void E_(CloseVideo) ( vlc_object_t *p_this )
 {
-    free( p_vout->p_sys );
-}
+    vout_thread_t * p_vout = (vout_thread_t *)p_this;
 
-/*****************************************************************************
- * vout_Manage: handle BeOS events
- *****************************************************************************
- * This function should be called regularly by video output thread. It manages
- * console events. It returns a non null value on error.
- *****************************************************************************/
-int vout_Manage( vout_thread_t *p_vout )
-{
-                          
-    return( 0 );
-}
-
-/*****************************************************************************
- * vout_Render: render previously calculated output
- *****************************************************************************/
-void vout_Render( vout_thread_t *p_vout, picture_t *p_pic )
-{
-    ;
+    free( p_vout->p_sys );
 }
 
 /*****************************************************************************
- * vout_Display: displays previously rendered output
+ * Display: displays previously rendered output
  *****************************************************************************
  * This function send the currently rendered image to BeOS image, waits until
  * it is displayed and switch the two rendering buffers, preparing next frame.
  *****************************************************************************/
-void vout_Display( vout_thread_t *p_vout, picture_t *p_pic )
+void Display( vout_thread_t *p_vout, picture_t *p_pic )
 {
     VideoWindow * p_win = p_vout->p_sys->p_window;
 
@@ -683,6 +651,3 @@ static void BeosCloseDisplay( vout_thread_t *p_vout )
     p_win = NULL;
 }
 
-
-
-} /* extern "C" */
index 573b861..f6676eb 100644 (file)
@@ -2,7 +2,7 @@
  * i420_rgb.c : YUV to bitmap RGB conversion module for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: i420_rgb.c,v 1.10 2002/07/23 00:39:16 sam Exp $
+ * $Id: i420_rgb.c,v 1.11 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
 /*****************************************************************************
  * Local and extern prototypes.
  *****************************************************************************/
-static void chroma_getfunctions ( function_list_t * p_function_list );
-
-static int  chroma_Init         ( vout_thread_t * );
-static void chroma_End          ( vout_thread_t * );
+static int  Activate   ( vlc_object_t * );
+static void Deactivate ( vlc_object_t * );
 
 #if defined (MODULE_NAME_IS_chroma_i420_rgb)
 static void SetGammaTable       ( int *pi_table, double f_gamma );
@@ -52,48 +50,30 @@ static void Set8bppPalette      ( vout_thread_t *, u8 * );
 #endif
 
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor.
  *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
+vlc_module_begin();
 #if defined (MODULE_NAME_IS_chroma_i420_rgb)
-    SET_DESCRIPTION( _("I420,IYUV,YV12 to "
-                       "RGB,RV15,RV16,RV24,RV32 conversions") )
-    ADD_CAPABILITY( CHROMA, 80 )
+    set_description( _("I420,IYUV,YV12 to "
+                       "RGB,RV15,RV16,RV24,RV32 conversions") );
+    set_capability( "chroma", 80 );
 #elif defined (MODULE_NAME_IS_chroma_i420_rgb_mmx)
-    SET_DESCRIPTION( _( "MMX I420,IYUV,YV12 to "
-                        "RV15,RV16,RV24,RV32 conversions") )
-    ADD_CAPABILITY( CHROMA, 100 )
-    ADD_REQUIREMENT( MMX )
+    set_description( _( "MMX I420,IYUV,YV12 to "
+                        "RV15,RV16,RV24,RV32 conversions") );
+    set_capability( "chroma", 100 );
+    add_requirement( MMX );
 #endif
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    chroma_getfunctions( &p_module->p_functions->chroma );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void chroma_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.chroma.pf_init = chroma_Init;
-    p_function_list->functions.chroma.pf_end  = chroma_End;
-}
+    set_callbacks( Activate, Deactivate );
+vlc_module_end();
 
 /*****************************************************************************
- * chroma_Init: allocate a chroma function
+ * Activate: allocate a chroma function
  *****************************************************************************
  * This function allocates and initializes a chroma function
  *****************************************************************************/
-static int chroma_Init( vout_thread_t *p_vout )
+static int Activate( vlc_object_t *p_this )
 {
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
 #if defined (MODULE_NAME_IS_chroma_i420_rgb)
     size_t i_tables_size;
 #endif
@@ -112,20 +92,20 @@ static int chroma_Init( vout_thread_t *p_vout )
             {
 #if defined (MODULE_NAME_IS_chroma_i420_rgb)
                 case VLC_FOURCC('R','G','B','2'):
-                    p_vout->chroma.pf_convert = _M( I420_RGB8 );
+                    p_vout->chroma.pf_convert = E_(I420_RGB8);
                     break;
 #endif
                 case VLC_FOURCC('R','V','1','5'):
-                    p_vout->chroma.pf_convert = _M( I420_RGB15 );
+                    p_vout->chroma.pf_convert = E_(I420_RGB15);
                     break;
 
                 case VLC_FOURCC('R','V','1','6'):
-                    p_vout->chroma.pf_convert = _M( I420_RGB16 );
+                    p_vout->chroma.pf_convert = E_(I420_RGB16);
                     break;
 
                 case VLC_FOURCC('R','V','2','4'):
                 case VLC_FOURCC('R','V','3','2'):
-                    p_vout->chroma.pf_convert = _M( I420_RGB32 );
+                    p_vout->chroma.pf_convert = E_(I420_RGB32);
                     break;
 
                 default:
@@ -214,12 +194,14 @@ static int chroma_Init( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * chroma_End: free the chroma function
+ * Deactivate: free the chroma function
  *****************************************************************************
  * This function frees the previously allocated chroma function
  *****************************************************************************/
-static void chroma_End( vout_thread_t *p_vout )
+static void Deactivate( vlc_object_t *p_this )
 {
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
 #if defined (MODULE_NAME_IS_chroma_i420_rgb)
     free( p_vout->chroma.p_sys->p_base );
 #endif
index ed99d36..dacf1b4 100644 (file)
@@ -2,7 +2,7 @@
  * i420_rgb.h : YUV to bitmap RGB conversion module for vlc
  *****************************************************************************
  * Copyright (C) 2000 VideoLAN
- * $Id: i420_rgb.h,v 1.7 2002/07/20 18:01:42 sam Exp $
+ * $Id: i420_rgb.h,v 1.8 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -45,11 +45,11 @@ struct chroma_sys_t
  * Prototypes
  *****************************************************************************/
 #ifdef MODULE_NAME_IS_chroma_i420_rgb
-void _M( I420_RGB8 ) ( vout_thread_t *, picture_t *, picture_t * );
+void E_(I420_RGB8) ( vout_thread_t *, picture_t *, picture_t * );
 #endif
-void _M( I420_RGB15 )( vout_thread_t *, picture_t *, picture_t * );
-void _M( I420_RGB16 )( vout_thread_t *, picture_t *, picture_t * );
-void _M( I420_RGB32 )( vout_thread_t *, picture_t *, picture_t * );
+void E_(I420_RGB15)( vout_thread_t *, picture_t *, picture_t * );
+void E_(I420_RGB16)( vout_thread_t *, picture_t *, picture_t * );
+void E_(I420_RGB32)( vout_thread_t *, picture_t *, picture_t * );
 
 /*****************************************************************************
  * CONVERT_*_PIXEL: pixel conversion macros
index b56087c..972a541 100644 (file)
@@ -2,7 +2,7 @@
  * i420_rgb16.c : YUV to bitmap RGB conversion module for vlc
  *****************************************************************************
  * Copyright (C) 2000 VideoLAN
- * $Id: i420_rgb16.c,v 1.9 2002/07/23 00:39:16 sam Exp $
+ * $Id: i420_rgb16.c,v 1.10 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -50,8 +50,8 @@ static void SetOffset( int, int, int, int, vlc_bool_t *, int *, int * );
  *  - input: 2 lines (2 Y lines, 1 U/V line)
  *  - output: 1 line
  *****************************************************************************/
-void _M( I420_RGB15 )( vout_thread_t *p_vout, picture_t *p_src,
-                                              picture_t *p_dest )
+void E_(I420_RGB15)( vout_thread_t *p_vout, picture_t *p_src,
+                                            picture_t *p_dest )
 {
     /* We got this one from the old arguments */
     u16 *p_pic = (u16*)p_dest->p->p_pixels;
@@ -178,8 +178,8 @@ void _M( I420_RGB15 )( vout_thread_t *p_vout, picture_t *p_src,
  *  - input: 2 lines (2 Y lines, 1 U/V line)
  *  - output: 1 line
  *****************************************************************************/
-void _M( I420_RGB16 )( vout_thread_t *p_vout, picture_t *p_src,
-                                              picture_t *p_dest )
+void E_(I420_RGB16)( vout_thread_t *p_vout, picture_t *p_src,
+                                            picture_t *p_dest )
 {
     /* We got this one from the old arguments */
     u16 *p_pic = (u16*)p_dest->p->p_pixels;
@@ -306,8 +306,8 @@ void _M( I420_RGB16 )( vout_thread_t *p_vout, picture_t *p_src,
  *  - input: 2 lines (2 Y lines, 1 U/V line)
  *  - output: 1 line
  *****************************************************************************/
-void _M( I420_RGB32 )( vout_thread_t *p_vout, picture_t *p_src,
-                                              picture_t *p_dest )
+void E_(I420_RGB32)( vout_thread_t *p_vout, picture_t *p_src,
+                                            picture_t *p_dest )
 {
     /* We got this one from the old arguments */
     u32 *p_pic = (u32*)p_dest->p->p_pixels;
index cb6ce37..4a292ef 100644 (file)
@@ -2,7 +2,7 @@
  * i420_rgb8.c : YUV to bitmap RGB conversion module for vlc
  *****************************************************************************
  * Copyright (C) 2000 VideoLAN
- * $Id: i420_rgb8.c,v 1.7 2002/07/23 00:39:16 sam Exp $
+ * $Id: i420_rgb8.c,v 1.8 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
@@ -39,8 +39,7 @@ static void SetOffset( int, int, int, int, vlc_bool_t *, int *, int * );
 /*****************************************************************************
  * I420_RGB8: color YUV 4:2:0 to RGB 8 bpp
  *****************************************************************************/
-void _M( I420_RGB8 )( vout_thread_t *p_vout, picture_t *p_src,
-                                             picture_t *p_dest )
+void E_(I420_RGB8)( vout_thread_t *p_vout, picture_t *p_src, picture_t *p_dest )
 {
     /* We got this one from the old arguments */
     u8 *p_pic = (u8*)p_dest->p->p_pixels;
index 69fd4f4..67f6d7e 100644 (file)
@@ -2,7 +2,7 @@
  * i420_ymga.c : YUV to YUV conversion module for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: i420_ymga.c,v 1.7 2002/07/23 00:39:16 sam Exp $
+ * $Id: i420_ymga.c,v 1.8 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
 /*****************************************************************************
  * Local and extern prototypes.
  *****************************************************************************/
-static void chroma_getfunctions ( function_list_t * p_function_list );
-
-static int  chroma_Init         ( vout_thread_t *p_vout );
-static void chroma_End          ( vout_thread_t *p_vout );
-
-static void I420_YMGA           ( vout_thread_t *, picture_t *, picture_t * );
+static int  Activate   ( vlc_object_t * );
+static void I420_YMGA  ( vout_thread_t *, picture_t *, picture_t * );
 
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor
  *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
+vlc_module_begin();
 #if defined (MODULE_NAME_IS_chroma_i420_ymga)
-    SET_DESCRIPTION( _("conversions from " SRC_FOURCC " to " DEST_FOURCC) )
-    ADD_CAPABILITY( CHROMA, 80 )
+    set_description( _("conversions from " SRC_FOURCC " to " DEST_FOURCC) );
+    set_capability( "chroma", 80 );
 #elif defined (MODULE_NAME_IS_chroma_i420_ymga_mmx)
-    SET_DESCRIPTION( _("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) )
-    ADD_CAPABILITY( CHROMA, 100 )
-    ADD_REQUIREMENT( MMX )
+    set_description( _("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) );
+    set_capability( "chroma", 100 );
+    add_requirement( MMX );
 #endif
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    chroma_getfunctions( &p_module->p_functions->chroma );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+    set_callbacks( Activate, NULL );
+vlc_module_end();
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void chroma_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.chroma.pf_init = chroma_Init;
-    p_function_list->functions.chroma.pf_end  = chroma_End;
-}
-
-/*****************************************************************************
- * chroma_Init: allocate a chroma function
+ * Activate: allocate a chroma function
  *****************************************************************************
  * This function allocates and initializes a chroma function
  *****************************************************************************/
-static int chroma_Init( vout_thread_t *p_vout )
+static int Activate( vlc_object_t *p_this )
 {
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
     if( p_vout->render.i_width & 1 || p_vout->render.i_height & 1 )
     {
         return -1;
@@ -113,16 +92,6 @@ static int chroma_Init( vout_thread_t *p_vout )
     return 0; 
 }
 
-/*****************************************************************************
- * chroma_End: free the chroma function
- *****************************************************************************
- * This function frees the previously allocated chroma function
- *****************************************************************************/
-static void chroma_End( vout_thread_t *p_vout )
-{
-    ;
-}
-
 /* Following functions are local */
 
 /*****************************************************************************
index 6447750..34c3fbb 100644 (file)
@@ -2,7 +2,7 @@
  * i420_yuy2.c : YUV to YUV conversion module for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: i420_yuy2.c,v 1.10 2002/07/23 00:39:16 sam Exp $
+ * $Id: i420_yuy2.c,v 1.11 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
 /*****************************************************************************
  * Local and extern prototypes.
  *****************************************************************************/
-static void chroma_getfunctions ( function_list_t * p_function_list );
-
-static int  chroma_Init         ( vout_thread_t *p_vout );
-static void chroma_End          ( vout_thread_t *p_vout );
+static int  Activate ( vlc_object_t * );
 
 static void I420_YUY2           ( vout_thread_t *, picture_t *, picture_t * );
 static void I420_YVYU           ( vout_thread_t *, picture_t *, picture_t * );
@@ -64,49 +61,32 @@ static unsigned long long i_80w;
 #endif
 
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor.
  *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
+vlc_module_begin();
 #if defined (MODULE_NAME_IS_chroma_i420_yuy2)
-    SET_DESCRIPTION( _("conversions from " SRC_FOURCC " to " DEST_FOURCC) )
-    ADD_CAPABILITY( CHROMA, 80 )
+    set_description( _("conversions from " SRC_FOURCC " to " DEST_FOURCC) );
+    set_capability( "chroma", 80 );
 #elif defined (MODULE_NAME_IS_chroma_i420_yuy2_mmx)
-    SET_DESCRIPTION( _("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) )
-    ADD_CAPABILITY( CHROMA, 100 )
-    ADD_REQUIREMENT( MMX )
+    set_description( _("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) );
+    set_capability( "chroma", 100 );
+    add_requirement( MMX );
     /* Initialize MMX-specific constants */
     i_00ffw = 0x00ff00ff00ff00ff;
     i_80w   = 0x0000000080808080;
 #endif
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    chroma_getfunctions( &p_module->p_functions->chroma );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void chroma_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.chroma.pf_init = chroma_Init;
-    p_function_list->functions.chroma.pf_end  = chroma_End;
-}
+    set_callbacks( Activate, NULL );
+vlc_module_end();
 
 /*****************************************************************************
- * chroma_Init: allocate a chroma function
+ * Activate: allocate a chroma function
  *****************************************************************************
  * This function allocates and initializes a chroma function
  *****************************************************************************/
-static int chroma_Init( vout_thread_t *p_vout )
+static int Activate( vlc_object_t *p_this )
 {
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
     if( p_vout->render.i_width & 1 || p_vout->render.i_height & 1 )
     {
         return -1;
@@ -160,16 +140,6 @@ static int chroma_Init( vout_thread_t *p_vout )
     return 0;
 }
 
-/*****************************************************************************
- * chroma_End: free the chroma function
- *****************************************************************************
- * This function frees the previously allocated chroma function
- *****************************************************************************/
-static void chroma_End( vout_thread_t *p_vout )
-{
-    ;
-}
-
 /* Following functions are local */
 
 /*****************************************************************************
index 4e69291..3daac62 100644 (file)
@@ -2,7 +2,7 @@
  * i422_yuy2.c : YUV to YUV conversion module for vlc
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: i422_yuy2.c,v 1.7 2002/07/23 00:39:16 sam Exp $
+ * $Id: i422_yuy2.c,v 1.8 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Samuel Hocevar <sam@zoy.org>
  *
 /*****************************************************************************
  * Local and extern prototypes.
  *****************************************************************************/
-static void chroma_getfunctions ( function_list_t * p_function_list );
-
-static int  chroma_Init         ( vout_thread_t *p_vout );
-static void chroma_End          ( vout_thread_t *p_vout );
+static int  Activate ( vlc_object_t * );
 
 static void I422_YUY2           ( vout_thread_t *, picture_t *, picture_t * );
 static void I422_YVYU           ( vout_thread_t *, picture_t *, picture_t * );
@@ -58,46 +55,29 @@ static void I422_Y211           ( vout_thread_t *, picture_t *, picture_t * );
 #endif
 
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor
  *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
+vlc_module_begin();
 #if defined (MODULE_NAME_IS_chroma_i422_yuy2)
-    SET_DESCRIPTION( _("conversions from " SRC_FOURCC " to " DEST_FOURCC) )
-    ADD_CAPABILITY( CHROMA, 80 )
+    set_description( _("conversions from " SRC_FOURCC " to " DEST_FOURCC) );
+    set_capability( "chroma", 80 );
 #elif defined (MODULE_NAME_IS_chroma_i422_yuy2_mmx)
-    SET_DESCRIPTION( _("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) )
-    ADD_CAPABILITY( CHROMA, 100 )
-    ADD_REQUIREMENT( MMX )
+    set_description( _("MMX conversions from " SRC_FOURCC " to " DEST_FOURCC) );
+    set_capability( "chroma", 100 );
+    add_requirement( MMX );
 #endif
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    chroma_getfunctions( &p_module->p_functions->chroma );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void chroma_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.chroma.pf_init = chroma_Init;
-    p_function_list->functions.chroma.pf_end  = chroma_End;
-}
+    set_callbacks( Activate, NULL );
+vlc_module_end();
 
 /*****************************************************************************
- * chroma_Init: allocate a chroma function
+ * Activate: allocate a chroma function
  *****************************************************************************
  * This function allocates and initializes a chroma function
  *****************************************************************************/
-static int chroma_Init( vout_thread_t *p_vout )
+static int Activate( vlc_object_t *p_this )
 {
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
     if( p_vout->render.i_width & 1 || p_vout->render.i_height & 1 )
     {
         return -1;
@@ -149,16 +129,6 @@ static int chroma_Init( vout_thread_t *p_vout )
     return 0; 
 }
 
-/*****************************************************************************
- * chroma_End: free the chroma function
- *****************************************************************************
- * This function frees the previously allocated chroma function
- *****************************************************************************/
-static void chroma_End( vout_thread_t *p_vout )
-{
-    ;
-}
-
 /* Following functions are local */
 
 /*****************************************************************************
index d15fc3a..2ae8349 100644 (file)
@@ -2,7 +2,7 @@
  * cinepak.c: cinepak video decoder 
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: cinepak.c,v 1.4 2002/07/23 17:19:02 fenrir Exp $
+ * $Id: cinepak.c,v 1.5 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
 #include "vdec_ext-plugins.h"
 #include "cinepak.h"
 
-/*
+/*****************************************************************************
  * Local prototypes
- */
-static int      decoder_Probe   ( vlc_fourcc_t * );
-static int      decoder_Run     ( decoder_fifo_t * );
+ *****************************************************************************/
+static int      OpenDecoder     ( vlc_object_t * );
+static int      RunDecoder      ( decoder_fifo_t * );
 static int      InitThread      ( videodec_thread_t * );
 static void     EndThread       ( videodec_thread_t * );
 static void     DecodeThread    ( videodec_thread_t * );
 
-
-/*****************************************************************************
- * Capabilities
- *****************************************************************************/
-void _M( vdec_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.dec.pf_probe = decoder_Probe;
-    p_function_list->functions.dec.pf_run   = decoder_Run;
-}
-
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor
  *****************************************************************************/
-
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( "Cinepak Video Decoder" )
-    ADD_CAPABILITY( DECODER, 70 )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    _M( vdec_getfunctions )( &p_module->p_functions->dec );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
+vlc_module_begin();
+    set_description( "Cinepak video decoder" );
+    set_capability( "decoder", 70 );
+    set_callbacks( OpenDecoder, NULL );
+vlc_module_end();
 
 /*****************************************************************************
- * decoder_Probe: probe the decoder and return score
+ * OpenDecoder: probe the decoder and return score
  *****************************************************************************
  * Tries to launch a decoder and return score so that the interface is able 
  * to chose.
  *****************************************************************************/
-static int decoder_Probe( vlc_fourcc_t *pi_type )
+static int OpenDecoder( vlc_object_t *p_this )
 {
-    switch(  *pi_type )
+    decoder_fifo_t *p_fifo = (decoder_fifo_t*) p_this;
+    
+    switch( p_fifo->i_fourcc )
     {
-        case( VLC_FOURCC('c','v','i','d') ):
-        case( VLC_FOURCC('C','V','I','D') ):
-            return( 0);
-        default:
-            return( -1 );
+        case VLC_FOURCC('c','v','i','d'):
+        case VLC_FOURCC('C','V','I','D'):
+            p_fifo->pf_run = RunDecoder;
+            return VLC_SUCCESS;
     }
+
+    return VLC_EGENERIC;
 }
 
 /*****************************************************************************
- * decoder_Run: this function is called just after the thread is created
+ * RunDecoder: this function is called just after the thread is created
  *****************************************************************************/
-static int decoder_Run ( decoder_fifo_t * p_fifo )
-{
+static int RunDecoder( decoder_fifo_t *p_fifo )
+{   
     videodec_thread_t   *p_vdec;
     int b_error;
     
index c0b2838..4d5a6dd 100644 (file)
@@ -2,7 +2,7 @@
  * aout_directx.c: Windows DirectX audio output method
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: aout_directx.c,v 1.25 2002/07/20 18:01:42 sam Exp $
+ * $Id: aout_directx.c,v 1.26 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -93,11 +93,9 @@ struct aout_sys_t
 /*****************************************************************************
  * Local prototypes.
  *****************************************************************************/
-static int     aout_Open        ( aout_thread_t * );
-static int     aout_SetFormat   ( aout_thread_t * );
-static int     aout_GetBufInfo  ( aout_thread_t *, int );
-static void    aout_Play        ( aout_thread_t *, byte_t *, int );
-static void    aout_Close       ( aout_thread_t * );
+static int     SetFormat   ( aout_thread_t * );
+static int     GetBufInfo  ( aout_thread_t *, int );
+static void    Play        ( aout_thread_t *, byte_t *, int );
 
 /* local functions */
 static int  DirectxCreateSecondaryBuffer ( aout_thread_t * );
@@ -106,29 +104,17 @@ static int  DirectxInitDSound            ( aout_thread_t * );
 static void DirectSoundThread            ( notification_thread_t * );
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-void _M( aout_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.aout.pf_open = aout_Open;
-    p_function_list->functions.aout.pf_setformat = aout_SetFormat;
-    p_function_list->functions.aout.pf_getbufinfo = aout_GetBufInfo;
-    p_function_list->functions.aout.pf_play = aout_Play;
-    p_function_list->functions.aout.pf_close = aout_Close;
-}
-
-/*****************************************************************************
- * aout_Open: open the audio device
+ * OpenAudio: open the audio device
  *****************************************************************************
  * This function opens and setups Direct Sound.
  *****************************************************************************/
-static int aout_Open( aout_thread_t *p_aout )
+int E_(OpenAudio) ( vlc_object_t *p_this )
 {
+    aout_thread_t * p_aout = (aout_thread_t *)p_this;
     HRESULT dsresult;
     DSBUFFERDESC dsbuffer_desc;
 
-    msg_Dbg( p_aout, "aout_Open" );
+    msg_Dbg( p_aout, "Open" );
 
    /* Allocate structure */
     p_aout->p_sys = malloc( sizeof( aout_sys_t ) );
@@ -148,6 +134,9 @@ static int aout_Open( aout_thread_t *p_aout )
     p_aout->p_sys->l_data_played_from_beginning = 0;
     vlc_mutex_init( p_aout, &p_aout->p_sys->buffer_lock );
 
+    p_aout->pf_setformat = SetFormat;
+    p_aout->pf_getbufinfo = GetBufInfo;
+    p_aout->pf_play = Play;
 
     /* Initialise DirectSound */
     if( DirectxInitDSound( p_aout ) )
@@ -201,19 +190,19 @@ static int aout_Open( aout_thread_t *p_aout )
 }
 
 /*****************************************************************************
- * aout_SetFormat: reset the audio device and sets its format
+ * SetFormat: reset the audio device and sets its format
  *****************************************************************************
  * This functions set a new audio format.
  * For this we need to close the current secondary buffer and create another
  * one with the desired format.
  *****************************************************************************/
-static int aout_SetFormat( aout_thread_t *p_aout )
+static int SetFormat( aout_thread_t *p_aout )
 {
     HRESULT       dsresult;
     WAVEFORMATEX  *p_waveformat;
     unsigned long i_size_struct;
 
-    msg_Dbg( p_aout, "aout_SetFormat" );
+    msg_Dbg( p_aout, "SetFormat" );
 
     /* Set the format of Direct Sound primary buffer */
 
@@ -272,19 +261,19 @@ static int aout_SetFormat( aout_thread_t *p_aout )
 }
 
 /*****************************************************************************
- * aout_GetBufInfo: buffer status query
+ * GetBufInfo: buffer status query
  *****************************************************************************
  * returns the number of bytes in the audio buffer that have not yet been
  * sent to the sound device.
  *****************************************************************************/
-static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
+static int GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
 {
     long l_play_position, l_notused, l_result;
     HRESULT dsresult;
 
     if( p_aout->p_sys->b_buffer_underflown )
     {
-        msg_Warn( p_aout, "aout_GetBufInfo underflow" );
+        msg_Warn( p_aout, "GetBufInfo underflow" );
         return( i_buffer_limit );
     }
 
@@ -292,7 +281,7 @@ static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
                                                  &l_play_position, &l_notused);
     if( dsresult != DS_OK )
     {
-        msg_Warn( p_aout, "aout_GetBufInfo cannot get current pos" );
+        msg_Warn( p_aout, "GetBufInfo cannot get current pos" );
         return( i_buffer_limit );
     }
 
@@ -302,18 +291,18 @@ static int aout_GetBufInfo( aout_thread_t *p_aout, int i_buffer_limit )
                   + p_aout->p_sys->l_write_position);
 
 #if 0
-    msg_Dbg( p_aout, "aout_GetBufInfo: %i", i_result);
+    msg_Dbg( p_aout, "GetBufInfo: %i", i_result);
 #endif
     return l_result;
 }
 
 /*****************************************************************************
- * aout_Play: play a sound buffer
+ * Play: play a sound buffer
  *****************************************************************************
  * This function writes a buffer of i_length bytes
  * Don't forget that DirectSound buffers are circular buffers.
  *****************************************************************************/
-static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
+static void Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
 {
     VOID            *p_write_position, *p_start_buffer;
     long            l_bytes1, l_bytes2, l_play_position;
@@ -336,7 +325,7 @@ static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
             p_aout->p_sys->l_write_position = 0; 
         }
 
-        msg_Warn( p_aout, "aout_Play underflow" );
+        msg_Warn( p_aout, "Play underflow" );
         /* reinitialise the underflow detection counters */
         p_aout->p_sys->b_buffer_underflown = 0;
         p_aout->p_sys->l_data_written_from_beginning = 0;
@@ -382,7 +371,7 @@ static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
     }
     if( dsresult != DS_OK )
     {
-        msg_Warn( p_aout, "aout_Play cannot lock buffer" );
+        msg_Warn( p_aout, "Play cannot lock buffer" );
         vlc_mutex_unlock( &p_aout->p_sys->buffer_lock );
         return;
     }
@@ -420,19 +409,20 @@ static void aout_Play( aout_thread_t *p_aout, byte_t *buffer, int i_size )
     }
     if( dsresult != DS_OK )
     {
-        msg_Warn( p_aout, "aout_Play cannot play buffer" );
+        msg_Warn( p_aout, "Play cannot play buffer" );
         return;
     }
 
 }
 
 /*****************************************************************************
- * aout_Close: close the audio device
+ * CloseAudio: close the audio device
  *****************************************************************************/
-static void aout_Close( aout_thread_t *p_aout )
+void E_(CloseAudio) ( vlc_object_t *p_this )
 {
+    aout_thread_t * p_aout = (aout_thread_t *)p_this;
 
-    msg_Dbg( p_aout, "aout_Close" );
+    msg_Dbg( p_aout, "Close" );
 
     /* kill the position notification thread, if any */
     vlc_object_detach_all( p_aout->p_sys->p_notif );
@@ -742,7 +732,7 @@ static void DirectSoundThread( notification_thread_t *p_notif )
         }
         if( dsresult != DS_OK )
         {
-            msg_Warn( p_notif, "aout_Play cannot lock buffer" );
+            msg_Warn( p_notif, "Play cannot lock buffer" );
             vlc_mutex_unlock( &p_aout->p_sys->buffer_lock );
             return;
         }
index 76284e0..f2c68e8 100644 (file)
@@ -2,7 +2,7 @@
  * directx.c : Windows DirectX plugin for vlc
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: directx.c,v 1.11 2002/06/01 12:31:58 sam Exp $
+ * $Id: directx.c,v 1.12 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *      
 #include <vlc/vlc.h>
 
 /*****************************************************************************
- * Capabilities defined in the other files.
+ * External prototypes
  *****************************************************************************/
-void _M( aout_getfunctions )( function_list_t * p_function_list );
-void _M( vout_getfunctions )( function_list_t * p_function_list );
+int  E_(OpenVideo)    ( vlc_object_t * );
+void E_(CloseVideo)   ( vlc_object_t * );
+
+int  E_(OpenAudio)    ( vlc_object_t * );
+void E_(CloseAudio)   ( vlc_object_t * );
 
 /*****************************************************************************
- * Building configuration tree
+ * Module descriptor
  *****************************************************************************/
 #define HW_YUV_TEXT N_("use hardware YUV->RGB conversions")
 #define HW_YUV_LONGTEXT N_( \
@@ -49,27 +52,24 @@ void _M( vout_getfunctions )( function_list_t * p_function_list );
     "more hardware acceleration (like rescaling or YUV->RGB conversions). " \
     "This option doesn't have any effect when using overlays." )
 
-MODULE_CONFIG_START
-ADD_CATEGORY_HINT( N_("Video"), NULL )
-ADD_BOOL ( "directx-hw-yuv", 1, NULL, HW_YUV_TEXT, HW_YUV_LONGTEXT )
-ADD_BOOL ( "directx-use-sysmem", 0, NULL, SYSMEM_TEXT, SYSMEM_LONGTEXT )
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("DirectX extension module") )
-    ADD_CAPABILITY( AOUT, 150 )
-    ADD_CAPABILITY( VOUT, 150 )
-MODULE_INIT_STOP
+vlc_module_begin();
+    add_category_hint( N_("Video"), NULL );
+    add_bool( "directx-hw-yuv", 1, NULL, HW_YUV_TEXT, HW_YUV_LONGTEXT );
+    add_bool( "directx-use-sysmem", 0, NULL, SYSMEM_TEXT, SYSMEM_LONGTEXT );
+    set_description( _("DirectX extension module") )
+    add_submodule();
+        set_capability( "video output", 150 );
+        set_callbacks( E_(OpenVideo), E_(CloseVideo) );
+    add_submodule();
+        set_capability( "audio output", 150 );
+        set_callbacks( E_(OpenAudio), E_(CloseAudio) );
+vlc_module_end();
 
-MODULE_ACTIVATE_START
-    _M( aout_getfunctions )( &p_module->p_functions->aout );
-    _M( vout_getfunctions )( &p_module->p_functions->vout );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
+#if 0 /* FIXME */
     /* check if we registered a window class because we need to
      * unregister it */
     WNDCLASS wndclass;
     if( GetClassInfo( GetModuleHandle(NULL), "VLC DirectX", &wndclass ) )
         UnregisterClass( "VLC DirectX", GetModuleHandle(NULL) );
-MODULE_DEACTIVATE_STOP
+#endif
+
index fcab2c8..dcc46dc 100644 (file)
@@ -2,7 +2,7 @@
  * vout_directx.c: Windows DirectX video output display method
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: vout_directx.c,v 1.41 2002/07/29 19:07:00 gbazin Exp $
+ * $Id: vout_directx.c,v 1.42 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -60,13 +60,10 @@ DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x
 /*****************************************************************************
  * Local prototypes.
  *****************************************************************************/
-static int  vout_Create    ( vout_thread_t * );
-static void vout_Destroy   ( vout_thread_t * );
-static int  vout_Init      ( vout_thread_t * );
-static void vout_End       ( vout_thread_t * );
-static int  vout_Manage    ( vout_thread_t * );
-static void vout_Render    ( vout_thread_t *, picture_t * );
-static void vout_Display   ( vout_thread_t *, picture_t * );
+static int  Init      ( vout_thread_t * );
+static void End       ( vout_thread_t * );
+static int  Manage    ( vout_thread_t * );
+static void Display   ( vout_thread_t *, picture_t * );
 
 static int  NewPictureVec  ( vout_thread_t *, picture_t *, int );
 static void FreePictureVec ( vout_thread_t *, picture_t *, int );
@@ -85,27 +82,14 @@ static void DirectXGetDDrawCaps   ( vout_thread_t *p_vout );
 static int  DirectXGetSurfaceDesc ( picture_t *p_pic );
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-void _M( vout_getfunctions )( function_list_t * p_function_list )
-{
-    p_function_list->functions.vout.pf_create     = vout_Create;
-    p_function_list->functions.vout.pf_init       = vout_Init;
-    p_function_list->functions.vout.pf_end        = vout_End;
-    p_function_list->functions.vout.pf_destroy    = vout_Destroy;
-    p_function_list->functions.vout.pf_manage     = vout_Manage;
-    p_function_list->functions.vout.pf_render     = vout_Render;
-    p_function_list->functions.vout.pf_display    = vout_Display;
-}
-
-/*****************************************************************************
- * vout_Create: allocate DirectX video thread output method
+ * OpenVideo: allocate DirectX video thread output method
  *****************************************************************************
  * This function allocates and initialize the DirectX vout method.
  *****************************************************************************/
-static int vout_Create( vout_thread_t *p_vout )
+int E_(OpenVideo) ( vlc_object_t *p_this )
 {
+    vout_thread_t * p_vout = (vout_thread_t *)p_this;
+
     /* Allocate structure */
     p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
     if( p_vout->p_sys == NULL )
@@ -115,6 +99,12 @@ static int vout_Create( vout_thread_t *p_vout )
     }
 
     /* Initialisations */
+    p_vout->pf_init = Init;
+    p_vout->pf_end = End;
+    p_vout->pf_manage = Manage;
+    p_vout->pf_render = NULL;
+    p_vout->pf_display = Display;
+
     p_vout->p_sys->p_ddobject = NULL;
     p_vout->p_sys->p_display = NULL;
     p_vout->p_sys->p_current_surface = NULL;
@@ -182,18 +172,18 @@ static int vout_Create( vout_thread_t *p_vout )
     return 0;
 
  error:
-    vout_Destroy( p_vout );
+    Destroy( p_vout );
     return 1;
 
 }
 
 /*****************************************************************************
- * vout_Init: initialize DirectX video thread output method
+ * Init: initialize DirectX video thread output method
  *****************************************************************************
  * This function create the directx surfaces needed by the output thread.
  * It is called at the beginning of the thread.
  *****************************************************************************/
-static int vout_Init( vout_thread_t *p_vout )
+static int Init( vout_thread_t *p_vout )
 {
     int i_chroma_backup;
 
@@ -268,25 +258,27 @@ static int vout_Init( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * vout_End: terminate Sys video thread output method
+ * End: terminate Sys video thread output method
  *****************************************************************************
- * Terminate an output method created by vout_Create.
+ * Terminate an output method created by Create.
  * It is called at the end of the thread.
  *****************************************************************************/
-static void vout_End( vout_thread_t *p_vout )
+static void End( vout_thread_t *p_vout )
 {
     FreePictureVec( p_vout, p_vout->p_picture, I_OUTPUTPICTURES );
     return;
 }
 
 /*****************************************************************************
- * vout_Destroy: destroy Sys video thread output method
+ * CloseVideo: destroy Sys video thread output method
  *****************************************************************************
- * Terminate an output method created by vout_Create
+ * Terminate an output method created by Create
  *****************************************************************************/
-static void vout_Destroy( vout_thread_t *p_vout )
-{
-    msg_Dbg( p_vout, "vout_Destroy" );
+void E_(CloseVideo) ( vlc_object_t *p_this )
+{   
+    vout_thread_t * p_vout = (vout_thread_t *)p_this;
+    
+    msg_Dbg( p_vout, "CloseVideo" );
 
     DirectXCloseDisplay( p_vout );
     DirectXCloseDDraw( p_vout );
@@ -315,12 +307,12 @@ static void vout_Destroy( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * vout_Manage: handle Sys events
+ * Manage: handle Sys events
  *****************************************************************************
  * This function should be called regularly by the video output thread.
  * It returns a non null value if an error occured.
  *****************************************************************************/
-static int vout_Manage( vout_thread_t *p_vout )
+static int Manage( vout_thread_t *p_vout )
 {
     WINDOWPLACEMENT window_placement;
 
@@ -412,20 +404,12 @@ static int vout_Manage( vout_thread_t *p_vout )
 }
 
 /*****************************************************************************
- * vout_Render: render previously calculated output
- *****************************************************************************/
-static void vout_Render( vout_thread_t *p_vout, picture_t *p_pic )
-{
-    ;
-}
-
-/*****************************************************************************
- * vout_Display: displays previously rendered output
+ * Display: displays previously rendered output
  *****************************************************************************
  * This function sends the currently rendered image to the display, wait until
  * it is displayed and switch the two rendering buffers, preparing next frame.
  *****************************************************************************/
-static void vout_Display( vout_thread_t *p_vout, picture_t *p_pic )
+static void Display( vout_thread_t *p_vout, picture_t *p_pic )
 {
     HRESULT dxresult;
 
@@ -828,7 +812,7 @@ static int DirectXCreateSurface( vout_thread_t *p_vout,
  *****************************************************************************
  * This function is used to move or resize an overlay surface on the screen.
  * Ususally the overlay is moved by the user and thus, by a move or resize
- * event (in vout_Manage).
+ * event (in Manage).
  *****************************************************************************/
 void DirectXUpdateOverlay( vout_thread_t *p_vout )
 {
index 33723b4..190a266 100644 (file)
@@ -1,3 +1,3 @@
 downmix_SOURCES = downmix.c ac3_downmix_c.c
-downmixsse_SOURCES = downmixsse.c ac3_downmix_sse.c
-downmix3dn_SOURCES = downmix3dn.c ac3_downmix_3dn.c
+downmixsse_SOURCES = downmix.c ac3_downmix_sse.c
+downmix3dn_SOURCES = downmix.c ac3_downmix_3dn.c
index 3559636..7543da3 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_downmix_3dn.c: accelerated 3D Now! ac3 downmix functions
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: ac3_downmix_3dn.c,v 1.11 2002/06/01 12:31:58 sam Exp $
+ * $Id: ac3_downmix_3dn.c,v 1.12 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Renaud Dartus <reno@videolan.org>
  *
@@ -30,7 +30,7 @@
 
 static const float sqrt2_3dn __asm__ ("sqrt2_3dn") = 0.7071068;
 
-void _M( downmix_3f_2r_to_2ch ) (float * samples, dm_par_t * dm_par)
+void E_( downmix_3f_2r_to_2ch ) (float * samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -76,7 +76,7 @@ void _M( downmix_3f_2r_to_2ch ) (float * samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -115,7 +115,7 @@ void _M( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -159,7 +159,7 @@ void _M( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -196,7 +196,7 @@ void _M( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -233,7 +233,7 @@ void _M( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( stream_sample_1ch_to_s16 ) (s16 *s16_samples, float *left)
+void E_( stream_sample_1ch_to_s16 ) (s16 *s16_samples, float *left)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -268,7 +268,7 @@ void _M( stream_sample_1ch_to_s16 ) (s16 *s16_samples, float *left)
     : "a" (s16_samples), "c" (left));
 }
 
-void _M( stream_sample_2ch_to_s16 ) (s16 *s16_samples, float *left, float *right)
+void E_( stream_sample_2ch_to_s16 ) (s16 *s16_samples, float *left, float *right)
 {
 
     __asm__ __volatile__ (
index 75311db..40c891d 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_downmix_c.c: ac3 downmix functions in C
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: ac3_downmix_c.c,v 1.5 2002/06/01 12:31:58 sam Exp $
+ * $Id: ac3_downmix_c.c,v 1.6 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Renaud Dartus <reno@videolan.org>
  *          Aaron Holtzman <aholtzma@engr.uvic.ca>
@@ -31,7 +31,7 @@
 
 #include "ac3_downmix.h"
 
-void _M( downmix_3f_2r_to_2ch ) (float *samples, dm_par_t *dm_par)
+void E_( downmix_3f_2r_to_2ch ) (float *samples, dm_par_t *dm_par)
 {
     int i;
     float *left, *right, *center, *left_sur, *right_sur;
@@ -51,7 +51,7 @@ void _M( downmix_3f_2r_to_2ch ) (float *samples, dm_par_t *dm_par)
     }
 }
 
-void _M( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t *dm_par)
+void E_( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t *dm_par)
 {
     int i;
     float *left, *right, *left_sur, *right_sur;
@@ -70,7 +70,7 @@ void _M( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t *dm_par)
     }
 }
 
-void _M( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t *dm_par)
+void E_( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t *dm_par)
 {
     int i;
     float *left, *right, *center, *right_sur;
@@ -90,7 +90,7 @@ void _M( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t *dm_par)
 }
 
 
-void _M( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t *dm_par)
+void E_( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t *dm_par)
 {
     int i;
     float *left, *right, *right_sur;
@@ -109,7 +109,7 @@ void _M( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t *dm_par)
 }
 
 
-void _M( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t *dm_par)
+void E_( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t *dm_par)
 {
     int i;
     float *left, *right, *center;
@@ -128,7 +128,7 @@ void _M( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t *dm_par)
 }
 
 
-void _M( stream_sample_2ch_to_s16 ) (s16 *out_buf, float *left, float *right)
+void E_( stream_sample_2ch_to_s16 ) (s16 *out_buf, float *left, float *right)
 {
     int i;
     for (i=0; i < 256; i++) {
@@ -138,7 +138,7 @@ void _M( stream_sample_2ch_to_s16 ) (s16 *out_buf, float *left, float *right)
 }
 
 
-void _M( stream_sample_1ch_to_s16 ) (s16 *out_buf, float *center)
+void E_( stream_sample_1ch_to_s16 ) (s16 *out_buf, float *center)
 {
     int i;
     float tmp;
index 305cdb4..870225f 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_downmix_common.h: ac3 downmix functions headers
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: ac3_downmix_common.h,v 1.1 2001/05/15 16:19:42 sam Exp $
+ * $Id: ac3_downmix_common.h,v 1.2 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Renaud Dartus <reno@videolan.org>
  *          Aaron Holtzman <aholtzma@engr.uvic.ca>
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-void _M( downmix_3f_2r_to_2ch )     ( float *, dm_par_t * );
-void _M( downmix_2f_2r_to_2ch )     ( float *, dm_par_t * );
-void _M( downmix_3f_1r_to_2ch )     ( float *, dm_par_t * );
-void _M( downmix_2f_1r_to_2ch )     ( float *, dm_par_t * );
-void _M( downmix_3f_0r_to_2ch )     ( float *, dm_par_t * );
-void _M( stream_sample_2ch_to_s16 ) ( s16 *, float *, float * );
-void _M( stream_sample_1ch_to_s16 ) ( s16 *, float * );
+void E_( downmix_3f_2r_to_2ch )     ( float *, dm_par_t * );
+void E_( downmix_2f_2r_to_2ch )     ( float *, dm_par_t * );
+void E_( downmix_3f_1r_to_2ch )     ( float *, dm_par_t * );
+void E_( downmix_2f_1r_to_2ch )     ( float *, dm_par_t * );
+void E_( downmix_3f_0r_to_2ch )     ( float *, dm_par_t * );
+void E_( stream_sample_2ch_to_s16 ) ( s16 *, float *, float * );
+void E_( stream_sample_1ch_to_s16 ) ( s16 *, float * );
 
index 585c0c4..60a6d9d 100644 (file)
@@ -2,7 +2,7 @@
  * ac3_downmix_sse.c: accelerated SSE ac3 downmix functions
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: ac3_downmix_sse.c,v 1.11 2002/06/01 12:31:58 sam Exp $
+ * $Id: ac3_downmix_sse.c,v 1.12 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Renaud Dartus <reno@videolan.org>
  *          Aaron Holtzman <aholtzma@engr.uvic.ca>
@@ -31,7 +31,7 @@
 
 static const float sqrt2_sse __asm__ ("sqrt2_sse") __attribute__ ((aligned (16))) = 0.7071068;
 
-void _M( downmix_3f_2r_to_2ch ) (float * samples, dm_par_t * dm_par)
+void E_( downmix_3f_2r_to_2ch ) (float * samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -76,7 +76,7 @@ void _M( downmix_3f_2r_to_2ch ) (float * samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -114,7 +114,7 @@ void _M( downmix_2f_2r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -157,7 +157,7 @@ void _M( downmix_3f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -193,7 +193,7 @@ void _M( downmix_2f_1r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
 
-void _M( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t * dm_par)
+void E_( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t * dm_par)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -229,7 +229,7 @@ void _M( downmix_3f_0r_to_2ch ) (float *samples, dm_par_t * dm_par)
     : "a" (samples), "c" (dm_par));
 }
     
-void _M( stream_sample_1ch_to_s16 ) (s16 *s16_samples, float *left)
+void E_( stream_sample_1ch_to_s16 ) (s16 *s16_samples, float *left)
 {
     __asm__ __volatile__ (
     ".align 16\n"
@@ -268,7 +268,7 @@ void _M( stream_sample_1ch_to_s16 ) (s16 *s16_samples, float *left)
     : "a" (s16_samples), "c" (left));
 }
 
-void _M( stream_sample_2ch_to_s16 ) (s16 *s16_samples, float *left, float *right)
+void E_( stream_sample_2ch_to_s16 ) (s16 *s16_samples, float *left, float *right)
 {
     __asm__ __volatile__ (
     ".align 16\n"
index fb29253..70df34c 100644 (file)
@@ -2,7 +2,7 @@
  * downmix.c : AC3 downmix module
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: downmix.c,v 1.9 2002/06/01 12:31:58 sam Exp $
+ * $Id: downmix.c,v 1.10 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Renaud Dartus <reno@via.ecp.fr>
  *
 #include "ac3_downmix_common.h"
 
 /*****************************************************************************
- * Local and extern prototypes.
+ * Module initializer
  *****************************************************************************/
-static void downmix_getfunctions( function_list_t * p_function_list );
-
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("AC3 downmix module") )
-    ADD_CAPABILITY( DOWNMIX, 50 )
-    ADD_SHORTCUT( "c" )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    downmix_getfunctions( &p_module->p_functions->downmix );
-MODULE_ACTIVATE_STOP
+static int Open ( vlc_object_t *p_this )
+{
+    downmix_t *p_downmix = (downmix_t *)p_this;
 
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+    p_downmix->pf_downmix_3f_2r_to_2ch = E_( downmix_3f_2r_to_2ch );
+    p_downmix->pf_downmix_3f_1r_to_2ch = E_( downmix_3f_1r_to_2ch );
+    p_downmix->pf_downmix_2f_2r_to_2ch = E_( downmix_2f_2r_to_2ch );
+    p_downmix->pf_downmix_2f_1r_to_2ch = E_( downmix_2f_1r_to_2ch );
+    p_downmix->pf_downmix_3f_0r_to_2ch = E_( downmix_3f_0r_to_2ch );
+    p_downmix->pf_stream_sample_2ch_to_s16 = E_( stream_sample_2ch_to_s16 );
+    p_downmix->pf_stream_sample_1ch_to_s16 = E_( stream_sample_1ch_to_s16 );
 
-/* Following functions are local */
+    return VLC_SUCCESS;
+}
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
+ * Module descriptor
  *****************************************************************************/
-static void downmix_getfunctions( function_list_t * p_function_list )
-{
-#define F p_function_list->functions.downmix
-    F.pf_downmix_3f_2r_to_2ch = _M( downmix_3f_2r_to_2ch );
-    F.pf_downmix_3f_1r_to_2ch = _M( downmix_3f_1r_to_2ch );
-    F.pf_downmix_2f_2r_to_2ch = _M( downmix_2f_2r_to_2ch );
-    F.pf_downmix_2f_1r_to_2ch = _M( downmix_2f_1r_to_2ch );
-    F.pf_downmix_3f_0r_to_2ch = _M( downmix_3f_0r_to_2ch );
-    F.pf_stream_sample_2ch_to_s16 = _M( stream_sample_2ch_to_s16 );
-    F.pf_stream_sample_1ch_to_s16 = _M( stream_sample_1ch_to_s16 );
-#undef F
-}
+vlc_module_begin();
+#ifdef MODULE_NAME_IS_downmix
+    set_description( _("AC3 downmix module") );
+    set_capability( "downmix", 50 );
+    add_shortcut( "c" );
+#elif defined( MODULE_NAME_IS_downmixsse )
+    set_description( _("SSE AC3 downmix module") );
+    set_capability( "downmix", 200 );
+    add_shortcut( "sse" );
+#elif defined( MODULE_NAME_IS_downmix3dn )
+    set_description( _("3D Now! AC3 downmix module") );
+    set_capability( "downmix", 200 );
+    add_shortcut( "3dn" );
+    add_shortcut( "3dnow" );
+#endif
+    set_callbacks( Open, NULL );
+vlc_module_end();
 
diff --git a/plugins/downmix/downmix3dn.c b/plugins/downmix/downmix3dn.c
deleted file mode 100644 (file)
index 463d95c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*****************************************************************************
- * downmix3dn.c : accelerated 3D Now! AC3 downmix module
- *****************************************************************************
- * Copyright (C) 1999-2001 VideoLAN
- * $Id: downmix3dn.c,v 1.10 2002/06/01 12:31:58 sam Exp $
- *
- * Authors: Renaud Dartus <reno@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#include <stdlib.h>
-#include <string.h>
-
-#include <vlc/vlc.h>
-
-#include "ac3_downmix.h"
-#include "ac3_downmix_common.h"
-
-/*****************************************************************************
- * Local and extern prototypes.
- *****************************************************************************/
-static void downmix_getfunctions( function_list_t * p_function_list );
-
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("3D Now! AC3 downmix module") )
-    ADD_CAPABILITY( DOWNMIX, 200 )
-    ADD_REQUIREMENT( 3DNOW )
-    ADD_SHORTCUT( "3dn" )
-    ADD_SHORTCUT( "3dnow" )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    downmix_getfunctions( &p_module->p_functions->downmix );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
-/* Following functions are local */
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void downmix_getfunctions( function_list_t * p_function_list )
-{
-#define F p_function_list->functions.downmix
-    F.pf_downmix_3f_2r_to_2ch = _M( downmix_3f_2r_to_2ch );
-    F.pf_downmix_3f_1r_to_2ch = _M( downmix_3f_1r_to_2ch );
-    F.pf_downmix_2f_2r_to_2ch = _M( downmix_2f_2r_to_2ch );
-    F.pf_downmix_2f_1r_to_2ch = _M( downmix_2f_1r_to_2ch );
-    F.pf_downmix_3f_0r_to_2ch = _M( downmix_3f_0r_to_2ch );
-    F.pf_stream_sample_2ch_to_s16 = _M( stream_sample_2ch_to_s16 );
-    F.pf_stream_sample_1ch_to_s16 = _M( stream_sample_1ch_to_s16 );
-#undef F
-}
-
diff --git a/plugins/downmix/downmixsse.c b/plugins/downmix/downmixsse.c
deleted file mode 100644 (file)
index a2651e9..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*****************************************************************************
- * downmixsse.c : accelerated SSE AC3 downmix module
- *****************************************************************************
- * Copyright (C) 1999-2001 VideoLAN
- * $Id: downmixsse.c,v 1.10 2002/06/01 12:31:58 sam Exp $
- *
- * Authors: Renaud Dartus <reno@via.ecp.fr>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#include <stdlib.h>
-#include <string.h>
-
-#include <vlc/vlc.h>
-
-#include "ac3_downmix.h"
-#include "ac3_downmix_common.h"
-
-/*****************************************************************************
- * Local and extern prototypes.
- *****************************************************************************/
-static void downmix_getfunctions( function_list_t * p_function_list );
-
-/*****************************************************************************
- * Build configuration tree.
- *****************************************************************************/
-MODULE_CONFIG_START
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("SSE AC3 downmix module") )
-    ADD_CAPABILITY( DOWNMIX, 200 )
-    ADD_REQUIREMENT( SSE )
-    ADD_SHORTCUT( "sse" )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    downmix_getfunctions( &p_module->p_functions->downmix );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
-
-/* Following functions are local */
-
-/*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void downmix_getfunctions( function_list_t * p_function_list )
-{
-#define F p_function_list->functions.downmix
-    F.pf_downmix_3f_2r_to_2ch = _M( downmix_3f_2r_to_2ch );
-    F.pf_downmix_3f_1r_to_2ch = _M( downmix_3f_1r_to_2ch );
-    F.pf_downmix_2f_2r_to_2ch = _M( downmix_2f_2r_to_2ch );
-    F.pf_downmix_2f_1r_to_2ch = _M( downmix_2f_1r_to_2ch );
-    F.pf_downmix_3f_0r_to_2ch = _M( downmix_3f_0r_to_2ch );
-    F.pf_stream_sample_2ch_to_s16 = _M( stream_sample_2ch_to_s16 );
-    F.pf_stream_sample_1ch_to_s16 = _M( stream_sample_1ch_to_s16 );
-#undef F
-}
-
index d338dfb..2b2701e 100644 (file)
@@ -2,7 +2,7 @@
  * dsp.c : OSS /dev/dsp module for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: dsp.c,v 1.18 2002/07/20 18:01:42 sam Exp $
+ * $Id: dsp.c,v 1.19 2002/07/31 20:56:51 sam Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -61,60 +61,36 @@ struct aout_sys_t
 };
 
 /*****************************************************************************
- * Local prototypes.
+ * Local prototypes
  *****************************************************************************/
-static void aout_getfunctions ( function_list_t * );
-static int  aout_Open         ( aout_thread_t * );
-static int  aout_SetFormat    ( aout_thread_t * );
-static int  aout_GetBufInfo   ( aout_thread_t *, int );
-static void aout_Play         ( aout_thread_t *, byte_t *, int );
-static void aout_Close        ( aout_thread_t * );
+static int  Open         ( vlc_object_t * );
+static void Close        ( vlc_object_t * );
 
-/*****************************************************************************
- * Capabilities defined in the other files.
- *****************************************************************************/
+static int  SetFormat    ( aout_thread_t * );
+static int  GetBufInfo   ( aout_thread_t *, int );
+static void Play         ( aout_thread_t *, byte_t *, int );
 
 /*****************************************************************************
- * Build configuration tree.
+ * Module descriptor
  *****************************************************************************/
-MODULE_CONFIG_START
-ADD_CATEGORY_HINT( N_("Miscellaneous"), NULL )
-ADD_FILE  ( "dspdev", "/dev/dsp", NULL, N_("OSS dsp device"), NULL )
-MODULE_CONFIG_STOP
-
-MODULE_INIT_START
-    SET_DESCRIPTION( _("Linux OSS /dev/dsp module") )
-    ADD_CAPABILITY( AOUT, 100 )
-MODULE_INIT_STOP
-
-MODULE_ACTIVATE_START
-    aout_getfunctions( &p_module->p_functions->aout );
-MODULE_ACTIVATE_STOP
-
-MODULE_DEACTIVATE_START
-MODULE_DEACTIVATE_STOP
+vlc_module_begin();
+    add_category_hint( N_("Miscellaneous"), NULL );
+    add_file( "dspdev", "/dev/dsp", NULL, N_("OSS dsp device"), NULL );
+    set_description( _("Linux OSS /dev/dsp module") );
+    set_capability( "audio output", 100 );
+    set_callbacks( Open, Close );
+vlc_module_end();
 
 /*****************************************************************************
- * Functions exported as capabilities. They are declared as static so that
- * we don't pollute the namespace too much.
- *****************************************************************************/
-static void aout_getfunctions( function_list_t * p_function_list )
-{
-    p_function_list->functions.aout.pf_open = aout_Open;
-    p_function_list->functions.aout.pf_setformat = aout_SetFormat;
-    p_function_list->functions.aout.pf_getbufinfo = aout_GetBufInfo;
-    p_function_list->functions.aout.pf_play = aout_Play;
-    p_function_list->functions.aout.pf_close = aout_Close;
-}
-
-/*****************************************************************************
- * aout_Open: opens the audio device (the digital sound processor)
+ * Open: opens the audio device (the digital sound processor)
  *****************************************************************************
  * This function opens the dsp as a usual non-blocking write-only file, and
  * modifies the p_aout->p_sys->i_fd with the file's descriptor.
  *****************************************************************************/
-static int aout_Open( aout_thread_t *p_aout )
+static int Open( vlc_object_t *p_this )
 {
+    aout_thread_t *p_aout = (aout_thread_t *)p_this;
+
     /* Allocate structure */
     p_aout->p_sys = malloc( sizeof( aout_sys_t ) );
     if( p_aout->p_sys == NULL )
@@ -131,6 +107,10 @@ static int aout_Open( aout_thread_t *p_aout )
         return( -1 );
     }
 
+    p_aout->pf_setformat = SetFormat;
+    p_aout->pf_getbufinfo = GetBufInfo;
+    p_aout->pf_play = Play;
+
     /* Open the sound device */
     if( (p_aout->p_sys->i_fd = open( p_aout->p_sys->psz_device, O_WRONLY ))
         < 0 )
@@