This try to avoid vlc_object_find() as much as possible.
This is conservative, because where there is no associated parent input, we'll try to find in certain cases the parent input. This will probably be
removed later on. Because yes, there is not necessarily a parent input for access and demux, especially if created from stream_UrlNew().
Updated 20090507 with:
- migrate to VLC_TS_INVALID
- fix coding style
- use generic handling of DEMUX_SET_TIME
- don't add +1 to dts/pts
- zero point hack while VLC_TS_INVALID = 0
Signed-off-by: David Flynn <davidf@rd.bbc.co.uk>
Signed-off-by: Laurent Aimar <fenrir@videolan.org>
The record access_filter will become useless as soon as all demuxers that can
support it will be modified.
The record support is half done. I will also add es_out_t record functionnalities,
and a way to selected one of them if both are supported.
* Meaning, that when created objects gets a refcount to 1.
* Destroying is instantaneous and we don't have to poll for a few secondss or so to wait until the object's refcount reach 0.
* We now track vlc_object_t's mem leaks when libvlc_global is released (Hard error for now, so they don't get unoticed)
* We fail hard if an object is released with a refcount of 1 without being detached from its parent and its children, to make sure such cases don't go unoticed.
(make test or make check still pass after that one. VLC is known to leak one object when no module is loaded, this must be fixed).
Missing some cases that I could not test.
Also ffmpeg/chroma.c is locked, so I can but leave it broken.
Fix is for the remaining modules is obvious and the issue is easy to detect.
if the demuxer has not set them.
Added a demux2 control DEMUX_HAS_UNSUPPORTED_META.
A demuxer should return true only when the format support extra meta
data (id3/ap2/...) but it does not read them itself. The input will then
call a "meta reader" (demuxer modifications on the way).
Use decoder_GetInputAttachment to get attachment from a decoder module.
You need to release the memory with vlc_input_attachment_Delete.
Untested...
modules/playlist/* cosmetic.
* Headers in include must contain the structures and prototypes needed
by the plugins and should be named vlc_*.
* Headers in include/vlc must contain the structures and prototypes
needed by external libvlc clients
* Moved and renamed some things in headers.
- Removed vlc_cpu.h, vlc_error.h (merged in vlc_common)
- Removed snapshot.h (merged in vlc_vout.h)
- Removed vlc_spu.h (merged in vlc_osd.h)
- Removed intf_eject.h and vlc_interaction.h (merged in vlc_interface)
- Moved all internal headers to src
- Merged vlc_video.h and video_output.h and move private things to src
- Removed vlc/intf.h, vlc/aout.h, vlc/vout.h, vlc/decoder.h and vlc/input.h
(meta headers for use in modules, and often implying too large
dependencies)
* Removed some useless dependencies
* Unexported a bunch of functions and structures used only in src/
(--> Still some work here)
* Finally made input_thread_t and input_source_t (mostly) private.
Added input_GetItem to fetch the input_item of an input_thread
* Cleaned up deprecated entries in vlc_symbols.h and bumped up symbol
prefix
This commit has a 99% probability of breaking the build, 0.1% of killing
your cat and 0% of getting you hot chicks.
Won't work for many things (only those for which metadata can be gotten during initialization).
Processing is done asynchronously, use playlist_PreparseEnqueue to add an item to the queue.
* demux, access: change the prototype of access2_New/demux2_New.
* control: implemented all INPUT_GET/SET.
* src/input/*.c: removed old functions, move some of them.
If "strict" is true and a module name is provided then module_Need() will only look for the specified module
If "strict" is false, then module_Need() will first look for the specified module and if it wasn't found, will continue with the other modules with the same "capability".
* include/vlc_video.h: new video_frame_format_t structure which defines the properties of a video frame.
* include/vlc/decoder.h: include vlc_codec.h
* src/misc/objects.c: added VLC_OBJECT_PACKETIZER and VLC_OBJECT_ENCODER object types.
* modules/stream_out/transcode.c, modules/codec/theora.c: experimental theora video encoder.
* src/input/*: some cleanup.
the playlist. but use FIND_PARENT. vlc_object_find with FIND_ANYWHERE
use p_obj->p_vlc as a starting point and that doesn't work as playlist
is detach from vlc before vout is destroyed by the decoders (when
shutting down) Perhaps vlc_object_find should be fixing to find the
root object, but I'm not sure.
* src/input/* : move subtitle handling from avi to input. Now subs
should works with all file types _BUT_ won't be in synch if the demuxer
doesn't implement a _precise_ DEMUX_GET_TIME. So only .avi, .mp4 will
be ok. Others could works if perfectly cbr.
Now Subtitle track is only selected when specified by sub-file
option.(auto-dectected file is always added but not selected by default)
Btw, the code could support multiple subs files, but I don't know how
to pass multiple filenames, any ideas ?
* demux/mpeg/mpga.c : play with es_out_t. I'm investigating for now so
don't use that elsewhere.