functions to plugins.
* ./bootstrap: enhanced the project file generation for plugins; we now
parse makefiles to make this easier.
* ./modules/**/Modules.am: reworked a few makefiles so that they are more
easily parsed.
directory because the two project files are starting to diverge.
* ./evc/vlc.c: created a specific vlc.c file for Windows CE.
* ./src/misc/messages.c: as WinCE doesn't have stdout or stderr, the message
queue outputs to a logfile (until we have a proper interface).
yet so there's little that can be tested, but threads work at least.
* ./src/extras/libc.c: renamed strndup.c to libc.c because a few other
libc functions were added (strcasecmp, atof, getenv...).
we now use the I64Fx familly of macros to print 64 bits numbers (x being
replaced by d,i,o,u,x or X).
eg: msg_Dbg( p_this, "sample is "I64Fi" late", ll_time );
* src/misc/messages.c: got rid of ConvertPrintfFormatString().
which are a generic use of the realloc/memmove/index++ scheme we use for
dynamic arrays.
* ./src/misc/variables.c: properly free the choice list upon variable
destruction.
int16_t) instead of our custom types (s8, u8, s16) and you are encouraged
to use these types from now. Of course the old types are still available
for backward compatibility.
* ./include/vlc/vlc.h: changed the naming conventions for libvlc. Now
exported functions start with VLC_ instead of vlc_ to avoid conflicts.
* ./include/vlc/vlc.h: removed the vlc_object_t, vlc_list_t, vlc_error_t
and vlc_t types; they are now internal types only.
* ./include/vlc/vlc.h: merged the reentrant and non-reentrant libvlc
calls. In non-reentrant mode, we just use 0 as the first argument. In
reentrant mode, we use an object's ID. (see below)
Internal changes:
* ./src/libvlc.c, ./src/misc/objects.c: instead of manipulating vlc_object_t
pointers, we manipulate their i_object_id. When needed, an object is
retrieved using vlc_object_get (I hope the lookup isn't too expensive,
that's why I designed the pp_objects layout to allow log2(n) seeks).
* ./src/misc/objects.c: activated the per-object variable storage. Unused
yet, unless you want to try "getfoo" and "setfoo blablah" in vlc -I rc.
* ./include/vlc_objects.h: moved the vlc_object_t and vlc_list_t definitions
here.
Misc:
* ./src/vlc.c, ./mozilla/vlcshell.cpp: removed inclusion of config.h in
code portions not part of libvlc; it was just required for the
COPYRIGHT_MESSAGE string which is now available from VLC_Version().
p_libvlc, and each p_vlc is a child of p_libvlc. Reasons for this are:
o the module bank and the message bank only need to be initialized once,
which gives faster loads when multiple instances of libvlc are used,
o we allow the possibility of different p_vlc sharing objects, for
instance the audio output,
o the CPU detection is only done once.
This patch is not polished yet, but I cannot do any intensive tests for
the moment because of a bug somewhere that leaves audio output objects
lying here and there which needs to be investigated first. The current
major issue is that the module bank is no longer freed.
(see my last mail).
* aout: Rewrote our whole lock policy. The output thread now doesn't require
the mixer_lock, which might avoid delays. We will also be able to change
the filter pipelines at runtime.
* ALL : Added a priority argument to vlc_thread_create(), so that audio
and input threads can run with a higher real-time priority, on systems
allowing you to use priorities.
* Audio and video should now _always_ be perfectly in sync.
* Changes in a52.c (end_date management) must be ported to other codecs,
otherwise mixer errors will appear.
* Audio output plug-in can now tell whether they can handle a little
clock drift (for instance, inserting zeroes after a pause).
vlc_object_find() but returns a list of _all_ the matching objects. Only
works with FIND_ANYWHERE at the moment.
* ./modules/gui/gtk/preferences.c, ./modules/gui/kde/preferences.cpp,
./modules/gui/win32/preferences.cpp: the module lists in the preferences
menus work again.
* ./src/misc/objects.c: added a missing sizeof that caused crashes because
the reindexing of the global object array was incomplete.
* ./include/modules_inner.h: propagated the module long description to its
submodules.
only have one parent, because I don't want to deal with cycles, and each
created object is indexed in a global array. This feature is unused yet,
but it will speed up vlc_object_find(FIND_ANYWHERE).
* ./debian/rules: activated the faad codec.
* ./doc/fortunes.txt: new fortune cookies.
* ./modules/codec/mpeg_video/headers.c: reduced the use of attach/detach.
* ./modules/audio_output/oss.c: fixed two compilation warnings.
demux plugins (ps, ts, but also dvd*).
* ./src/input/mpeg_system.c: removed MPEG-related stuff from the vlc core.
* ./src/misc/modules.c: max recursion level is now 5.
* ./modules/access/dvdplay/es.c: fixed a buffer overflow.
* include/input_ext-intf.h: killed p_es->b_audio, since i_cat already fills
its purpose.
* include/input_ext-intf.h: killed p_es->i_type in favour of p_es->i_fourcc.
* include/video.h: killed p_pic->p_plane->b_margin; now i_visible_pitch is
always valid.
* ./src/libvlc.h: replaced --mpeg-adec and --ac3-adec with --codec; see
vlc --help for more information.
* include/video.h: removed fourcc values which should _not_ be global
(thanks fenrir for convincing me).
* ALL: video output plugins use the VLC_FOURCC macro to build their fourccs.
* ./plugins/beos/InterfaceWindow.cpp: removed the last remaining call to
input_ChangeES.
Things I'm not sure about and need comments:
- I used "mpga" and "mpgv" for MPEG (1+2) audio and video fourcc values.
- I also introduced "spu ", "lpcm" and "ac3 ".
- I removed for instance "MP4_GetCodec" because it wasn't really
used except for the description string. I hope this change did not
break anything really important.
- fenrir, I must have broken a lot of things you wrote. Sorry in advance.
* ./src/libvlc.c, ./include/vlc/vlc.h: created reentrant versions of the
libvlc API.
* ./src/vlc.c: vlc uses the non-reentrant libvlc functions.
* ./mozilla/vlcplugin.c: the mozilla plugin uses the reentrant functions.
* ./debian/*: created packages for libvlc0-dev.
* ./doc/vlc-howto.sgml : Fixed typos ;
* ./include/vlc_common.h : Greatly simplified ntoh*, and U??_AT macros are
now alignment-safe ;
* ./STATUS : New file indicating who's working on what. Please keep it
up-to-date ;
* ./MAINTAINERS : New file indicating who has knowledge on which parts.
* ./src/interface/interface.c: interfaces are no longer attached only to
p_vlc.
* ./src/libvlc.c, ./src/misc/modules.c, ./src/playlist/playlist.c,
./src/input/input.c: improvements in the playlist handling (not quite that
yet though).
(ported from v0_4_1_branch)
* ./configure.in, ./plugins/mpeg_system/mpeg_ts.c: fixed libdvbpsi handling.
* ./src/misc/configuration.c: fixed the --nofoo option handling.
* ./src/interface/main.c: fixed two compilation warnings under Solaris.
As for video output 4, this breaks almost everything, but I'll slowly
do what remains to be fixed during the weekend.
Changes in vlc:
===============
* vlc is now a very small program (20 lines) which uses the libvlc API;
it is quite simple for the moment but can be extended in the future.
* interfaces, decoders, video outputs, etc. are now almost the same
objects (yes, I know, this is C++ redone in C) and are structured in
a tree. More about this later, but basically it allows the following
nice features:
- several interfaces
- several playlists with several outputs
- input plugins spawning helper interfaces (will be used for DVD menus)
- anything spawning anything; I swear there are useful uses for this!
* libvlc can be used in other programs; I'm currently writing a Mozilla
plugin for my employer.
Things currently broken:
========================
* most interfaces, most ports
* the playlist handling (almost finished rewriting this though). This means
no file can be played from the GUI, you need to use the commandline. This
also means it segfaults at EOF, when exiting the program, and it sometimes
refuses to open a file when asked to.