when closing a networking stream instead of input_FDClose(). It is due
to WIN32 because we have to call closesocket() instead of close() to
close the socket. The problem was : windows did not leave the multicast
group when closing the socket.
* input_ext-plugins.c : where is located the function
* *.h : function declaration
* udp.c, http.c : these modules now call input_FDNetworkClose()
* include/common.h, src/misc/modules_plugin.h: export the 3 new functions.
* plugins/dvd/dvd_es.c, plugins/dvd/dvd_summary.c, plugins/dvdread/input_dvdread.c: adapted DecodeLanguage calls to the new behaviour.
* plugins/mpeg_system/mpeg_ts.c: ISO-639-2 descriptors handling.
options callbacks.
They don't take any argument for the moment, but this will change when
I'm finished with my other vlc changes. There is a little problem: the
Gtk+ interface keeps calling Put***Variable each time we click on "Apply"
or "Save". I think it should only call it once. Is there a way to fix
this? Gildas? lool? :-)
* ./include/video.h: moved vout_CopyPicture out of the way, an inline
function did not make sense here.
* ./include/video.h: moved vout_ChromaCmp out of the way.
* ./plugins/avi/fourcc.h, ./include/video.h: merged these two files into
video.h.
* ./include/os_specific.h: this file is now always included.
* ./include/debug.h: removed this file which was almost useless, and moved
ASSERT to common.h.
* ./include/common.h: fixed vlc_memalign and changed its prototype to
follow posix_memalign's.
module.
* added a --zoom <float> config option.
* added a call to RestoreCPUState() in InitIDCT() in idct_sparse.h so that the
FPU is still available after a call to InitIDCT().
* deactivate stream buffering when logging to a file.
* ./src/interface/main.c: we now set LC_CTYPE to get the right charset.
* ./src/misc/configuration.c: lots of simplifications in the code.
* ./po/vlc/pot: updated translations.
* ./configure.in: disabled SSE plugins when using mingw32.
* ./src/misc/configuration.c: disabled the AltiVec warning message on the
PowerPC platform because it was misleading.
* ./plugins/win32/Makefile: intfwin.so can be built using commandline.
* ./configure.in, ./include/threads.h, ./include/common.h: a custom defs.h
file isn't needed for the intfwin plugin anymore.
* ./INSTALL.win32: updated compilation instructions for the intfwin plugin.
memalign doesn't exist.
void *vlc_memalign( size_t align, size_t size, void **pp_orig )
where the return value is the aligned pointer and *pp_orig is the pointer
that has to be freed afterwards.
the arithmetic I'm doing on the pointer to align it is not portable to
64bits architectures. If someone knows how to something portable, please
tell me ( and no I don't want to do if(sizeof(void *) == blabla) ).
Other little problem, I was planning to use posix_memalign by default in
the wrapper implementation but it doesn't work (someone can tell me what
I'm doing wrong ?)
* re-enabled the sse plugins on win32 as we don't have anymore alignment
issues.
* fixed typo in vout_directx.c
be subject to race conditions as it is using SignalObjectAndWait() from the
Win32 API.
As this should be somehow slower than the old method (still used on Win9x),
you can specify that you want to use the old method with the "fast_pthread"
config option.
* Added a new p_main_sys global variable. This variable is a pointer to an
OS specific structure which is defined in *_specific.h. This structure can
be filled by the already existing System_Init() function and is a nice
way to avoid too many #ifdefs.
To build the plugin, follow the instructions in INSTALL-win32.txt
* Known bugs:
- subtitles don't work
- a crash occurs when the user exits by pressing 'q' in the vout
- when moving the slider, position in the stream updates even if
the slider isn't released yet
* TODO list:
- clean code in menu.cpp
- adapt lool's enhancements of the Gtk+ preferences box
- write drag-and-drop stuff
- and of course, fix known bugs :)
* For those of you who can't wait till the next release to test the win32
interface, binary files are available here:
http://www.via.ecp.fr/~ipkiss/intfwin/vlc.zip
Enjoy!
configuration options (only from the gtk/gnome interface for now). The config
file will be saved as ~/.VideoLan/vlc
It's not quite yet finished (well there are a few small details to sort out),
but I'm going away for the week-end and I wanted to commit this before so you
can all have a play with it :)
at run-time from the configuration data contained in each plugin.
* config_PutPszVariable and config_GetPszVariable are now thread safe.
* Few modifications/optimizations to the config module.
* Got rid of all the _VAR macros in config.h
This is the first version of the GTK configuration interface. There are still
a few raw corners and a fews things left to do, but it basically does what
I wanted.
Constructive comments like it sucks or it smells rotten fish are of course
very welcome. And if there are GTK gurus out there, please don't hesitate to
add your touch.
I also started to add usefull comments to the configuration options but I'm not
really good at this kind of thing so if people want to help, they can finish
the job. For this look at all the *_LONGTEXT macros at the top of main.c
(PS: Translations will also be appreciated but not right now as the interface
will likely change again in the few coming days)
for BT ;
* --6 and --4 options to force IPv6 or IPv4 (FIXME: it should be -6 and
-4 but I don't know how to do it with the new configuration module) ;
* Channel manager now uses a socket from the network plug-in and is more
portable (and probably broken, too :) ;
* input_ReadPS and input_ReadTS are now in mpeg_system.c to be more
easily reused by plug-ins other than mpeg_ps and mpeg_ts.
That's all for tonight.
- Major rewrite of the buffer core functions
- Modularity of access plugins (file, udp, http)
- Modularity of network stack (ipv4, soon ipv6)
- Autodetection of the type of stream
And a new killing feature : HTTP streams are now seekable.
Please note that dvd, dvdread and vcd plug-ins are broken and thus disabled.
Two other parts will follow soon:
- config file implementation
- gtk configuration interface.
This part won't change much for end-users as these changes are mostly
internal, you will however notice that the command line interface has
changed. It will maybe be less user-friendly as I almost removed the
short options but it shouldn't a big problem when the config file is
implemented.
What as changed is that it is really easy now to add configuration
options to vlc. Plugins can also implement configuration options. All
you have to do is to declare a MODULE_CONFIG section in your plugin.
If you want to know more about this look at configuration.h and for some
example: main.c, dsp.c or xvideo.c
It would be nice if every developper could now start using configuration
options in there plugins and also enhance old plugins.
That's it, now let's hope I didn't break too many things ;-)
* All intf_*Msg functions now write to stderr.
* Implemented a message queue interface plugins can subscribe to.
* Wrote the logger interface plugin. Usage:
vlc -I logger:filename.log
* Lots of fixes in the SPU renderer.
of the real _Init or _Create functions. That's 1000 lines of code gained.
* ./src/misc/modules.c: we try not to keep the global lock in module_Need,
which should speed up output spawning.
* ./plugins/dummy/input_dummy.c: fixed vlc:quit command.
* ./plugins/gtk/gtk_playlist.c: compilation fix.
* ./plugins/macosx/*: preliminary fixes for the vout4 port.
Notes on the *_Probe eradication:
o I probably broke the DirectX video output, because of the "must init and
run in the same thread" issue. I'll fix this ASAP.
o Subtitles are broken (or at least, pretty ugly) in RGB mode.
o The input plugins still have *_Probe functions. This will disappear when
meuuh is finished with the access plugins.
o The decoder plugins still have *_Probe functions. This is probably not
going to change, it looks OK to me.
already a system macro under MacOS X.
* ./plugins/dummy/dummy.c: fixed vlc:loop, vlc:quit, etc. entries.
* ./plugins/glide/glide.c: activated double buffering.
* ./plugins/mga/xmga.c: started writing an xmga plugin; doesn't work yet.
* ./src/input/input.c: fixed the input memory leak, and the insane thread
spawning we got with vlc:loop.
* ./src/misc/intf_eject.c: disc ejection routine courtesy of Julien Blache,
currently Linux-only.
the chroma_i420_ymga module instead. This introduces a slight
performance issue as we now need to memcpy() the Y plane, but I have
some vout4 enhancements on their way which make this point moot.
* ./debian/changelog: imported official Debian changelog.
* ./debian/control: activated the vlc-mad and vlc-arts packages; package
builds should now work again.
* ./plugins/dvd/dvd.c: solved a symbol resolution issue when vlc was
compiled without libdvdcss which overflowed the return stack.
* ./plugins/ggi/ggi.c: ported the GGI plugin to vout4.
* ./plugins/glide/glide.c: ported the Glide plugin to vout4 (untested).
* ./src/input/input.c: prepared everything for multi-input mode; since
no interface is yet prepared to handle this, I changed them so that
they just use the first available input for now. This may break other
things, but I promise I'll eventually repair everything :-)
* ./src/video_output/vout_pictures.c et al.: vout4 now automatically
detects when two chroma formats are the same, such as UYVY/Y422, or
roughly equivalent, such as I420/YV12. Plugins need not worry about
conversion anymore.
* ./MODULES: added a short description of each module. Maybe we should
add more details to make this file really useful.
* ./doc/bugreport-howto.txt: wishful thinking...
* ./Makefile: added a workaround for the fact that .c files don't depend
on <videolan/vlc.h>.
* ./plugins/memcpy/memcpy.c: all memcpy modules are now built from the same
single file.
* ./src/interface/main.c: added the --nommx, --no3dnow, --nommxext, --nosse
and --noaltivec options to vlc.
* ./configure.in: removed the --disable-mmx option, now useless because
of the vlc --no* options.
* ./src/interface/main.c: fixed a crash caused by the memcpy module
being released too early.
* ./include/video.h: more vout4 changes, including margin support, more
FOURCC formats recognized, transparent support of identical or almost
identical FOURCC formats.
* ./include/video_output.h: added a vout_Render function to video output
modules which is to be executed before vout_Display.
* ./include/common.h: this header is back.
* ./plugins/chroma/i420_rgb.c: planar YUV 4:2:0 to packed RGB conversion
functions, mostly taken from vout3's yuv functions, but heavily modified
to use FAST_MEMCPY and to handle image dimensions which are not multiples
of 16. Not all functions have been written yet, though.
* ./plugins/chroma/i420_yuy2.c: planar YUV 4:2:0 to packed YUV conversion
functions, various targets such as 4:2:2 YUYV, YVYU, UYVY, or 2:1:1 YUYV,
with accelerated MMX versions.
* ./plugins/chroma/i422_yuy2.c: same as i420_yuy2.c but takes planar YUV
4:2:2 pictures in input. With accelerated MMX versions as well. This plugin
makes it possible to display 4:2:2 files on most video cards without the
quality loss of 4:2:0 downsampling.
* ./plugins/filter/*: thanks to the vout_Render function, all filters now
output their data perfectly in sync.
* ./plugins/dvdread/Makefile: fix to prevent unnecessary target rebuilds.
* ./plugins/sdl/vout_sdl.c: support for YV12, UYVY, YUY2 and YVYU overlays.
* ./plugins/x11/xcommon.c: support for I420, YV12, YUY2 and Y211 overlays.
* Removed duplicate function checks from configure.in.
* Added extra magic to Makefile.modules so that the module Makefiles
are now ridiculously simple. And I mean *simple*. Check it! This will
make a possible switch to full autoconf/automake a lot easier.
* Added the vlc version name to the plugin symbols, to be sure we only load
plugins with the same version number. A nasty consequence is that you
need to rebuild your tree after midnight if you are using a CVS tree :-)
* Got rid of modules_export.h by #defining exported functions in the same
header as their prototype.
* Added modules_inner.h and other commonly used .h files to common.h so
there are less and less files to include, and renamed common.h to
<videolan/vlc.h>.
* First modifications to the module handling system towards my ultimate
goal to get rid of the *_Probe functions. Got rid of TestMethod and
TestCPU, as well as src/misc/tests.c.
* Wrote the chroma plugin handling functions. No YUV functions have been
ported yet because it'ls a lot of work, but the core system works, I
tried it with a naive yv12->rgb16 plugin (which will disappear when the
real functions are ready).
* Made a lot of functions in dvd_summary.c one-liners to avoid wasting
too many output lines.
* Fixed a segfault in input_dvd.c:DVDInit.
* Added a fixfiles.sh script in plugins/gtk to be run after Glade has
generated its C files.
* Did some work on the KDE interface to make it suck a bit less. It still
segfaults, but at least it runs and it looks less ugly.
* RGB SDL rendering works again, though in 16bpp only.
* Made plugins/vcd/linux_cdrom_tools.c independent of any vlc structure
so that it'll be easily put in a library. Maybe libdvdcss?
* Fixed VCD date display.
* Merged vout_xvideo.c, vout_x11.c and vout_common.c into xcommon.c.
* Wrote non-Shm XVideo output.
* Made X11 output work again. Still pretty unstable, only works for 16bpp.
* Additional french translation in po/fr.po. Any taker for the rest?
* Fixed a segfault in video_output.c when the allocated pictures were
not direct buffers.
* If $DISPLAY isn't set, don't try to run the Gtk+ interface.
* Replaced 48x48 .xpm images with 32x32 ones to conform to Debian policy
(Closes Debian bug #126939).
* Removed the automatic ./configure launch when running `make all' for
the first time.
Stuff currently more broken than it ought to be:
* The wall filter. Being fixed.
* x11 and sdl plugins for depth != 16bpp.
* Software YUV.
* gvlc, gnome-vlc, kvlc shortcuts. Use --intf instead for the moment.
in all decoders. Called it DecoderError() instead.
* All decoders enter DecoderError() in case of error, even if they
haven't allocated all their data. This prevents the input from getting
stuck if a decoder has failed its initialization.
* Namespace fixes through the decoder files.
* Prevent two SDL video outputs or audio outputs to be spawned at the
same time to avoid ugly crashes.
* The SDL plugin now says whether we are using software or hardware YUV
in its window title.
* We now stop at the first ':' when looking for a module name, to easily
pass information to the modules. Possible example: --vout sdl:software,
implementation of such an option is left as an exercise.
* Merged filter_bob and filter_bob422 into filter_bob. Use --filter bob
to deinterlace 422 into 420 as well.
* Factorized code common to most filters and the video output, optimized
a few filters by aligning data and reading 64 bits at a time.
* Two new absolutely useless, CPU-eating, resource-wasting, but fun
filters: enjoy `transform', which performs flips and 90� rotations, and
`distort', which performs animated image effects (currently only a naive
sine wave is implemented). Usage examples:
--filter transform:hflip
--filter transform:vflip
--filter transform:90
--filter transform:180
--filter transform:270
--filter distort:wave
calculated!), but worth a try. Use the following flags:
"--filter invert" for inverse video
"--filter bob" for BOB deinterlacing
* Fixed a potential segfault if the subtitle stream was encountered
before the video stream.
* Misc vout4 fixes.