Note that the input coded buffer is now only freed if the decoding
returns a decoded frame, or the buffer has been entirely consumed
(see *pp_block = NULL).
Re-license almost all the playback modules to LGPLv2.1+ with
authorization from their respective contributors (230+)
This includes:
- access, codec, packetizers, demux
- audio filters, audio mixers, audio output
- video filters, video chroma, video output
- text renderers
- XML parser
- ARM NEON and SSE2 optimisations (mostly for chromas and filters)
Some modules are not concerned:
- BDA and DShow access modules because Manol Manolov is AWOL
- Real RTSP, because it is derived from Xine
- x264 and t140 because they are encoders only
- DLL Loader, because it is derived from MPlayer
- DTS packetizer, because Jon Lech Johansen is AWOL
- Shine and WMAfixed, because they are derived from Rockbox
- Real demuxer, as it is derived from MPlayer and Wang Bo is AWOL
- MPC demuxer, as Yavor Doganov is AWOL
- Tivo demuxer, because it is derived from an MPlayer fork
- Playlist demuxer, (WPL and ZPL parts missing), because suheaven is AWOL
- iOS audio output and video display, because author refuses the license change
- Equalizer and compressor, because Ronald Wright is AWOL
- Mono, Headphone and Dolby, because author refuses the license change
- hqdn3d and yadif, because they are from MPlayer/libavfilter
- remoteosd, because it derives from RealVNC code
- MMX optimisations, because Ollie Lho, from SiS, is AWOL
- Rotate, because it depends on GPL motion
Nota Bene:
- Some modules depend on GPL-only libraries, a LGPL module does not mean
that the resulting binary module will be LGPL.
Libraries affected would include liba52, libdvdcss, libdvdnav, libdvdread,
faad2, libdca, libmad, libmpeg2, libpostproc, SRC, sid, zvbi and probably others.
Threading does not currently work with some codec profiles and is thus
not suited as default. Threading is also known to deadlock in certain
circumstances, such as if no data is ever received (a rather common
scenario with network or DVB reception).
Fixed avcodec version should be checked before this is re-enabled.
Acked-by: Ilkka Ollakka <ileoo@videolan.org>
The configuration system cannot store both a static list and a dynamic
one (and AFAIK, it never could). It only makes to use either a static
list or a callback.
Obsolete "ffmpeg" prefix
Use "avformat" or "avcodec" prefix
avio has no options (yet)
switcher uses "sout-switcher" prefix
Use "sout-avformat" for muxer
Avoid repeating the same implementation several times:
incorrectly (switcher and mux didn't lock)
redundantly (avcodec_register_all can be called several times)
Move libavXXX init at the top of a few functions, just in case.
Check uses of vlc_avcodec_(un)lock and factorize
We can only use it at application level
Just use the default libav* callback instead which prints to stderr
We might want to set libav* verbosity with av_log_set_level()
This allows specifying the libavcodec decoder/encoder by name
Useful in case there are more than one codec per fourcc
Example: ffvp8 / libvpx decoders for VP8
Tested on current libav and ffmpeg @ 25846 svn revision playback only.
No need to bump current lavc/lavf requirements (52.25.0 and 52.45.0), as
all the "new" functions used arrived earlier than abovementioned
versions were published.
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Changing the choice list of a configuration item is not thread-safe.
Plus it does not make much sense to use a strict choice list if the
choices change dynamically.
If ever needed, we can invent a suggestions list system later, just
like we already do for SD plugins enumeration.
Additionally, enable delayed opening for AAC which fixes decoding
of media where we rely on decoder configuration being supplied by
the packetizer instead of the container.
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>