location by any module.
* added a OSD config option to the Video options. this will allow you to disable
the messages printed by OSDMessage. Subtitles will still be shown however.
* src/audio_output/intf.c: volumeSet sets the intf-change variable.
* modules/gui/macosx/vout.m: fix the modifier detection.
* created a variable "key-pressed" in p_vlc that can be used to
report or read key presses
* allways try to start hotkeys interface in the background
configure.ac, modules/control/Modules.am, modules/control/hotkeys.c:
* a new control module that reads keypresses from "key-pressed" and
performs an action depending on what is asosiated with this key.
Also uses nice on screen messages to indicate what action was performed
modules/video_filter/filter_common.h:
* removed code to pass old style key reporting through filters
modules/video_output/x11/xcommon.c:
* report key-presses through the new mechanism. Incomplete, I need help
with this.
+ updated libebml/libmatroska detection as matroska headers no longer
include ebml headers directly. Hope you upgraded it - if not, you'll
have to set your CFLAGS accordingly.
+ on BeOS, libmkv_plugin.so has to be linked to libstdc++
modules/control/http.c:
+ fix for gcc != 3
* gui/beos: removed not really used STARTED_S, and NOT_STARTED_S input
state.
* gui/wxwindows: use 'position' and 'time' variables -> seek improved
for avi and mp4 and accurate time display :)
* modules/control/ntservice.c: added a --ntservice-extraintf option to allow the service to spawn additionnal interfaces.
* include/audio_output.h, modules/audio_output/directx.c: added support for 3F2R audio output in addition to 3F2R/LFE (5.1).
* Allow the user to remap the actions.
* Improved the strings (please check)
* Prevent 0 seconds seeks
* share/http/*.html
* partial HTML validation fixes
* Improved the look
* src/stream_output/announce.c
* minor fixes (thanks sam)
* src/input/input.c: parses the input options list before spawning the input and create object variables for these options. Options are of the form "[no[-]]foo[=bar]" where foo is the option name and bar is its value.
* src/input/input.c, src/input/input_dec.c: use the object var api to get the value of the "sout", "sout-video" and "sout-audio" options.
* src/libvlc.c: extended the command line parser to parse input options. Input options must always follow the input they apply to and begin with a ':'.
All these changes allow you to specify input specific options.
eg: ./vlc --no-sout-audio yourvideo.mpeg :sout=udp/http::8080 :sout-audio yourvideo2.mpeg
Here the ":sout" option will only apply to yourvideo.mpeg.
"--no-sout-audio" will be a global option so will apply to yourvideo2.mpeg but the global behaviour is overriden by ":sout-audio" for yourvideo.mpeg.
TODO: - the interfaces need to be modified to benefit from the new playlist_Add() api.
- only "sout", "sout-video", "sout-audio" implemented for now. To make it work with other options, we need to get rid of all the config_GetFoo() and replace them with var_Create()/var_Change()/var_Get().
include/video_output.h: added some members needed by text renderer modules
src/video_output/video_output.c: load and unload text renderer module when needed
src/video_output/video_text.c: implemented some functions to show text on the video
include/osd.h: exported the functions to show text
modules/misc/Modules.am, module/misc/freetype.c: new text renderer module, largly based on the old osdtext module.
modules/video_filter/Modules.am, modules/video_filter/osd_text.c: removed the osdtext module
configure.ac: changes "osdtext" to "freetype" some places
modules/codec/spudec/*: when iconv is available, use it to convert textual subtitles from the encoding given by --sub-encoding to utf8. Use new code to render subtitles
modules/control/lirc/lirc.c: use new code to give feedback on buttons pressed. untested.
modules/demux/util/sub.c: remove all traces of the ugly old osdtext module
modules/misc/dummy/*: added a "text renderer" submodule in the dummy module
src/misc/modules.c: included osd.h as it seems to be needed to export symbols
final notes: you need to give a proper value to --freetype-font. This should be the path to a font file freetype2 can handle (almost any format afaik) with a unicode translation table in it. Windows ttf files will do. In linux at least openoffice distributes some fonts that work. I think macosx and beos also has useable fonts.
There is no more hardcoded html page. The interface recursively parse a
directory, exporting all files. All .htm/.html are parsed, and special
macro are used. I will commit somes samples pages in share/http and I
hope documentations.
TODO: - (re)implement access control in httpd (but in a useable way).
- clean login/password management. (for now .access protects
a whole directory).
- doc ;)
compiles cleanly (to build the medicacontrol.so library you need to cd to
that directory and "make medicacontrol.so") but untested.
* src/playlist/playlist.c: Mostly harmless fix to playlist.c suggested by
Olivier.
+ New build system, using recursive makefiles. Due to the amount of code
in VLC, this had become unavoidable.
+ Removed the check for OS X's stack size, since our automake targets are
a lot less hungry now.
+ Ditto for Solaris's sed.
+ Since automake-1.6 is faster than 1.7, use it first if both are present.
* m4/vlc.m4:
+ New AX_ADD_CPPFLAGS, AX_ADD_CFLAGS, AX_ADD_CXXFLAGS, AX_ADD_OBJCFLAGS
and AX_ADD_LDFLAGS macros that do all the magic to detect possible
modules and register their flags.
+ New AX_ADD_BUILTINS and AX_ADD_PLUGINS macros.
+ Some magic to generate vlc-config.
* configure.ac:
+ Moved most code to the AX_ADD_* macros.
+ Explicitely added all target Makefiles.
* modules/**/Modules.am:
+ Path to sources are now relative to Modules.am's directory level.
- added another argument to var_Change().
- added a VLC_VAR_SETTEXT and VLC_VAR_GETTEXT method to var_Change()
that are used to set/get a friendly name to an object variable.
- added VLC_VAR_CHOICESCOUNT to var_Change() to be able to retrieve
the number of availabel choices without having to get their value
as well.
- VLC_VAR_ADDCHOICE uses the extra var_Change() argument to assign
a friendly name to the choice value.
- VLC_VAR_GETCHOICES retrieves the choices values and their friendly
names.
* modules/gui/wxwindows/*: first step in implementing menu auto-generation in the wxWindows interface.
render text on the video
include/osd.h: some constants useful when interfacing with the osd module
configure.ac.in: check for freetype2, enabled the osdtext module by default
Makefile.am: added osd.h, please check that this is correct
lirc.c: modified to provide feedback when buttons are pressed.
Look at the Feedback() function in lirc.c to see how this module can be used
Don't include io.h on win32 when not necessary.
A few build fixes for MSVC.
* src/misc/win32_specific.c: try to load winsock2 instead of winsock1 when
present.
to allow using the spdif output by default if available.
* modules/misc/dummy/*: on win32 added a quiet mode that doesn't display
a dos command box.
* modules/control/rc/rc.c: on win32 enabled the echo mode and the
backspace key.
* modules/codec/mpeg_audio.c: fixed a sync bug.
indicate wether it is an "advanced" option or not. The goal with this is to
hide the user from all the strange options that very seldom needs to be
changed. added an extra argument to all the add_* macros to indicate wether
the item is advanced or not.
* src/libvlc.h: added an "show advanced options" config option default
disabled
* src/libvlc.c: the advanced options are not listed by vlc --help and
friends unless --advanced is used
* modules/gtk/preferences.c: the gtk/gnome preferences dialog don't show
advanced options unless advanced is set
all: set the advanced flag to VLC_FALSE or VLC_TRUE for all options, by
using some common sense. Please check and correct
note: All interfaces should still work like they used to, see the change in
modules/gtk/preferences.c to find out how to "hide" options.
second note: I think I've changed all the modules, but I could not test
everyone for compilation, expect some broken modules (the fix is to add ",
VLC_TRUE" as last argument to the add_* I forgot)
fullscreen and a nice debug message when you draw a clockwise square. Video
output modules needs to be modified for this to work, but it should be minor
in modules supporting dvd navigation.
btw: it should be easy to add new gestures, ideas appreciated
audio output. Consequently, the first argument can be any vlc_object_t.
* modules/gui/macosx/*: greatly simplified volume functions ; you can now
call aout_Volume* even when there is no audio output, and the volume
will be saved for later use.
"interface" variable to "dvdplay" (Closes: #178, #210, and probably a
bunch of others).
* ./src/interface/interface.c: added a safety check to circumvent the bug,
allowing a smooth upgrade.
socket descriptors so we don't use it anymore on this platform. Right now we only do a blocking call to
read() although it should be possible to have a fully functionnal interface by using the PeekConsoleInput()
call (someone willing to investigate this ?).
* modules/access/dvdplay/intf.c: allow keyboard naviagation in dvd-menus,
by reading the key-pressed variable
* modules/control/lirc/lirc.c: allow navigation with remote control by
faking keypresses (closes#38). I think the remotes for dvdplayers usually
have buttons for "root menu" and "title menu". Whould this be easily
implemented in vlc?
vlc_object_get() now increments the refcount of the object so you'll need to release
the object at some point.
* src/misc/variables.c, ALL: var_Change() with VLC_VAR_GETLIST now returns a vlc_value_t
which points to a vlc_list_t.
warnings than real ones.
* audio output: New intf-change variable to know when audio-channels
and audio-device have changed.
* video output: New intf-change variable and vout_VarCallback, to know
when video-device has changed (OS X port).
* modules/gui/macosx/*: Menus for audio channels, implemented volume
management, added a menu for screen selection.
- got rid of the VLC_VAR_COMMAND variable type and introduced the VLC_VAR_ISCOMMAND flag
instead. This simplifies things and avoid the strange command variables behaviour. Command
variables will now trigger their callback on var_Set() like any other variables (look in
modules/control/rc/rc.c for an example).
- Renamed the VLC_VAR_ISLIST flag into VLC_VAR_HASCHOICE.
- Added a new VLC_VAR_VOID variable type. This can be useful in conjunction with
VLC_VAR_ISCOMMAND for instance.
and is replaced by two members : i_physical_channels and i_original_channels.
i_physical_channels describes the channels which are effectively present
in the stream (at the current point of the aout pipeline), whereas
i_original_channels represents the channels we used to constitute the
stream. For instance a mono stream (FRONT_CENTER) may emanate from a
FRONT_LEFT channel of a STEREO stream.
Additionally, this contains hooks to dynamically select the audio device
and the channels configuration. In order to do that, all aout plugins,
and all interface plug-ins need to be adapted. Currently only SDL
(partially OSS) and the rc interface have been adapted, please use them
as a guide. Other aout plug-ins have been temporarily disabled.
IMPORTANT : if you need a working sound output, DO NOT UPDATE YOUR TREE
for several days until we fix that.
* modules/misc/network/ipv4.c: Fixed a long-standing segfault when saving
preferences and asking for multicast.
* ./include/main.h: removed p_vlc->i_status because it was not sufficient
to represent all the possible states of p_vlc; each part should be tested
separately upon destruction.
* ./src/misc/objects.c: fixed a signed/unsigned bug that prevented creation
of VLC_OBJECT_GENERIC objects.
* ./src/misc/variables.c: added the VLC_VAR_COMMAND type which is simply a
variable that stores a function pointer, and calls it when var_Get is
called for it. The function argument is taken in val.psz_string.
* ./src/misc/objects.c: vlc_dumpstructure and vlc_liststructure are no longer
exported to the rest of the program; instead, they're VLC_VAR_COMMAND vars
("tree" and "list").
* ./modules/control/rc/rc.c: moved a few commands to VLC_VAR_COMMAND vars.
* ./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().
* configure.ac.in: use -mms-bitfields instead of -fnative-struct for
mingw32 gcc-3.x.
* include/interface.h, modules/misc/dummy/interface.c, modules/misc/logger/logger.c,
modules/control/rc/rc.c: Display message on Win32 explaining how to get
back to the GUI mode.
* src/misc/threads.c, include/vlc_threads_funcs.h: ignore the
win9x-cv-method config option on WinNT when fast-mutex is not enabled.
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.
gtk_main() in its own thread, and does nothing on subsequent calls. This
ensures that gtk_main is only running once.
* ./modules/gui/familiar/*, modules/gui/gtk/*: the familiar, gtk and gnome
modules are now fully reentrant thanks to their use of the gtk_main module.
* ./src/libvlc.c: implemented vlc_set(), a wrapper for config_Put* available
to external programs.
* ./src/libvlc.c: removed vlc_stop() and vlc_end(), everything is now done
by vlc_destroy().
* ./modules/control/rc/rc.c: implemented a few new functions. For instance,
run "vlc -I rc" and then type "intf gtk" or "intf gnome". You can even
launch several of them. "segfault" works, too.
waveout, directx, qnx, beos, win32, macosx, and the AltiVec modules.
* ALL: removed mention of AC3 in favour of A52.
* ./configure.in, ./Makefile*: modules can now be built deeper than 1
directory. As a consequence, the build is even slower (but I'm fixing
this) and make clean doesn't work anymore.