check AVCodecContext->sample_fmt against AVCodec->sample_fmts[] to ensure
that the encoder supports the specified sample format. Error out if it doesn't.
Previously, it would continue and output garbage. Fixes issue 2587.
(cherry picked from commit 2cfa2d925808e6cc6fb7a7c133b7cb7622afd37e)
As a side effect of the last commit, avcodec_open() now calls it automatically,
so there is no longer any need for clients to call it.
Instead they should set AVCodecContext.thread_count.
avcodec_thread_free() is deprecated, and will be removed from avcodec.h at the
next MAJOR libavcodec bump.
Rename the functions to ff_thread_init/free, since they are now internal.
Wrappers are provided to maintain API compatibility.
Also allow qmin/qmax to go up to 69 (the current max value for libx264). This
will have to increase when we add 9/10-bit support.
(cherry picked from commit c7ac200d15e3240972d269df768068f0e3bb9c2f)
Due to being pants-on-head retarded, libavcodec defaults this to zero, which
results in broken output. This didn't affect ffmpeg.c, which sets it itself,
but caused problems for other calling apps using VBV.
(cherry picked from commit f7f8120fb9a06b5d7fbf5add48a0d8464319a332)
Fix emu_edge_v_extend_15 to be <128 bytes on Win64, by being more strict
on the size of registers and which registers are being used for operations
where multiple are available. This fixes segfaults in emulated_edge()
function calls on Win64.
(cherry picked from commit 17cf7c68ed26a4cb3c7adf7488a38c2e19118918)
oggdec: Fix incorrect assumption about header/data interleaving
Currently (since the data_offset fix) the ogg demuxer assumes that
after the first non-header packets in any stream no more header packets
will follow.
This is not guaranteed, so change the code back again to wait until it
has finished the headers for all streams before returning from ogg_get_headers.
François Revol [Tue, 8 Feb 2011 21:09:44 +0000 (21:09 +0000)]
Fix HOSTLIBS on Haiku
Haiku does not have a separate libm, so do not try to link to it.
Signed-off-by: François Revol <revol@free.fr> Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit f59c4bd625839dbe1e099c6a8b38988108883623)
This cleanup patch updates the developer documentation with respect to
the migration to the git scm.
(cherry picked from commit 87800dc2bf8f2724a99e51bb079ad7fb4b9dfd3b)
Stefan Kost [Tue, 8 Feb 2011 12:16:49 +0000 (14:16 +0200)]
logging: downgrade recoverable errors to warnings
In all 3 cases, the decoding continues and thus a warning would be sufficient.
Helps application that catch them with own log handers to handle them
accordingly.
matroskadec: add generic element length validation.
This validate the length of a mkv element directly after reading
it.
This has the advantage that it is easy to add new limits and makes
it less likely to forget to add checks and also avoids issues like
bits of the length value above the first 32 being ignored because
the parsing functions only takes an int.
Previously discussed in the "mkv 0-byte integer parsing" thread.
Change int64_t into a int, which caused this compiler warning:
libavformat/oggparseskeleton.c:64: warning: passing argument 2 of ‘av_reduce’ from incompatible pointer type
(cherry picked from commit 69ff14920429c9e128a8bcf65ce3f4b4aa93f3d1)
Anton Khirnov [Sun, 6 Feb 2011 09:59:54 +0000 (10:59 +0100)]
avidec: simplify read_gab2_sub
Use avio functions instead of bytestream ones (also drops dependency on
lavc and removes a bunch of warnings).
Drop custom version of avio_get_str16 and use that instead.
Nicolas George [Fri, 4 Feb 2011 18:12:38 +0000 (19:12 +0100)]
Non-blocking protocol: TCP
Signed-off-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit ad3cffb68f9c77e140660a8ae7d43c8606208178)
Nicolas George [Fri, 4 Feb 2011 18:12:37 +0000 (19:12 +0100)]
Non-blocking protocol: core wrapper functions
Signed-off-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 90441276e4f661c6aec5e4d2c5718cde1ff1946d)
Nicolas George [Fri, 4 Feb 2011 18:12:36 +0000 (19:12 +0100)]
Non-blocking protocols: flag and documentation
Signed-off-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit fe174fc8fc4bbdb050014a945de7eb9b28ba358e)
James Zern [Sat, 5 Feb 2011 02:29:46 +0000 (18:29 -0800)]
cmdutils: fix codec-specific options from preset
Using a preset file caused the address of a stack variable to be stored
in opt_names/values. This change causes the strings to be dup'd then
freed in uninit_opts.
Martin Storsjö [Fri, 4 Feb 2011 10:04:19 +0000 (12:04 +0200)]
rtpenc_chain: Don't copy the time_base back to the caller
If required, the caller can do this itself. ff_write_chained rescales
timestamps as necessary, and all current callers of rtpenc_chain
use ff_write_chained, making this timebase copy unnecessary.
Martin Storsjö [Fri, 4 Feb 2011 10:04:15 +0000 (12:04 +0200)]
libavformat: Use avcodec_copy_context for chained muxers
This avoids having the chained AVStream->codec point to the same
AVCodecContext owned by the outer AVStream. The downside is that
changes to the AVCodecContext made after calling av_write_header
cannot be detected automatically within the chained muxer.
This avoids having to manually unlink the chained AVStream->codec
by setting it to null before freeing the chained muxer via generic
freeing functions.
Make avfilter_graph_free() free not only the internal structures, but
also the allocated graph, and set the graph pointer to NULL for
increased safety.
Nicolas George [Wed, 2 Feb 2011 17:45:44 +0000 (18:45 +0100)]
TCP: factor the poll() call
Signed-off-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 51b317d2e921f489de7fb72a7f5f05d3039fa1cb)
Nicolas George [Wed, 2 Feb 2011 20:54:14 +0000 (21:54 +0100)]
Set pkt_pts in avcodec_default_reget_buffer()
This was missed when pkt_pts was first added.
Signed-off-by: Nicolas George <nicolas.george@normalesup.org> Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 62ecd3635a1329c49bc3b97ba84ad4d53d847163)
Martin Storsjö [Wed, 2 Feb 2011 09:08:01 +0000 (11:08 +0200)]
rtsp: Don't store RTSPStream in AVStream->priv_data
For mpegts in RTP, there isn't a direct mapping between RTSPStreams
and AVStreams, and the RTSPStream isn't ever stored in
AVStream->priv_data, which was earlier leaked. The fix for this
leak, in ea7f080749d68a431226ce196014da38761a0d82, lead to
double frees for other, normal RTP streams.
This patch avoids storing RTSPStreams in AVStream->priv_data, thus
avoiding the double free. The RTSPStreams are always available via
RTSPState->rtsp_streams anyway.
Tested with MS-RTSP, RealRTSP, DSS and mpegts/RTP.
Justin Ruggles [Wed, 2 Feb 2011 18:23:59 +0000 (18:23 +0000)]
ac3enc: Change EXP_DIFF_THRESHOLD to 500.
This patch changes the exponent difference threshold in the exponent
strategy decision function of the AC-3 encoder. I tested lowering in
increments of 100. From 1000 down to 500 generally increased in quality
with each step, but 400 was generally much worse.