| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/142>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add xwma tested with the media
b8edfb1e970ed7892f35b34a1ef36fee_wma.wav
from this ticket:
http://trac.ffmpeg.org/ticket/9358
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/138>
|
|
|
|
|
|
|
| |
Enable sending NAL units to the decoder without having to first
group them in a frame (an AU).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/66>
|
|
|
|
|
|
|
|
| |
When doing subframe decoding, handle_frame will be called multiple
times, so the DECODE_ONLY flag gets re-set when it shouldn't. Instead,
let's create our own flag to track this.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/66>
|
|
|
|
|
|
|
| |
Although avcodec_align_dimensions2() only copies 4 ints, it expects
a buffer of at least AV_NUM_DATA_POINTERS (8) ints.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/134>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/133>
|
|
|
|
|
|
|
|
|
| |
Failure to do this would cause the decoders to constantly request a new
bufferpool thinking the height had changed ... whereas it hadn't.
Fixes #95
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/131>
|
|
|
|
|
|
|
| |
This has been unimplemented and non-functional for years
and was deprecated with FFmpeg 4.4.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/126>
|
|
|
|
|
|
|
|
|
|
| |
Direct access to avstream->index_entries was removed
in favour of the newly added avformat_index_get_entry()
and friends.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/85
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/127>
|
|
|
|
|
|
|
| |
Some plugins register an empty long_name field. Check for this
before calling strcmp to avoid a crash.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/114>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/124>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We only support up to 64 channels in GStreamer with a specific layout so
it's safe to assume a NONE layout in this case.
Also the arrays of channel positions are allocated everywhere with 64
elements so don't try setting more than 64 to NONE as that will cause
stack corruptions and similar memory safety issues.
Thanks to Natalie Silvanovich for reporting this issue.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/92
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/120>
|
|
|
|
|
|
|
|
|
| |
Otherwise, some h.264 streams (particularly with cropping information)
may cause memory corruption after a renegotiation to a smaller size when
decoded and then ffmpeg writes past the end of the buffer.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/80
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/110>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Scenario is this:
1. libav receives enough data to want a buffer with get_buffer2()
which wants a buffer pool with a certain format, say Y42B but does
not negotiate and therefore GstVideoDecoder does not have any output
state configured
2. A gap event is received which GstVideoDecoder wants to forward. It
needs caps to forward the gap event so attempts to negotiate with some
default information which chooses e.g. I420 and overwrites the
previously configured bufferpool decided on by get_buffer2()
3. There is a mismatch between what ensure_internal_pool() check for
consistency and what decide_allocation() sets when overriding the
internal pool with the downstream pool.
4. FFMpeg then requests a Y42B buffer from an I420 pool and predictably
crashes writing past the contents of the buffer
This is fixed by keeping track of the internal pool states correctly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/116>
|
|
|
|
|
|
|
| |
Not yet supported in FFmpeg, so we temporarily rely on the parser
setting the correct buffer flags for us.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/115>
|
|
|
|
|
|
|
|
|
| |
... and call finish_frame() so that baseclass can reset internal
status. Otherwise baseclass will keep holding the status for
decoding failed frame which will result in outputting buffer with
wrong timestamp.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/112>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/111>
|
|
|
|
|
|
|
|
|
|
|
| |
The check seems to be to present to verify that the decoded frame
matches the format we expect. The actual check for the layout of the
frame was being performed against the context instead.
The check fails at least for avdec_aptx_hd, where the AVCodecContext has
the sample format set to AV_SAMPLE_FMT_NONE.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/107>
|
|
|
|
|
|
|
|
|
|
| |
Since the commit https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/22b25b3ea5c,
ffmpeg will not clear draning flag for encoder by avcodec_flush_buffers() API
by default. Allowed case is only if encoder has AV_CODEC_CAP_ENCODER_FLUSH
capability flag. If it's not supported, we should re-open encoding
session, otherwise ffmpeg encoder will keep returning AVERROR_EOF
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/99>
|
|
|
|
|
|
|
|
| |
input again
This is already done in all other codec elements.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/97>
|
|
|
|
|
|
|
|
| |
Same behaviour as for avviddec now. FFmpeg will return AVERROR_EOF when it's
completely drained but we should not return that here or otherwise
upstream will receive EOS and not forward us more data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/97>
|
|
|
|
|
|
|
| |
AVERROR_EOF means that it's fully drained, but it doesn't
mean that that end of stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/90>
|
|
|
|
|
|
|
|
| |
audiodecoder baseclass implementation is expecting that
finish_subframe() is followed by finish_frame() in order clear
its internal state related to subframe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/90>
|
|
|
|
|
|
|
| |
It might be useful for upstream to know that draining/finishing didn't
succeed, and why.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/90>
|
|
|
|
|
|
|
| |
It might be useful for upstream to know that draining/finishing didn't
succeed, and why.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/90>
|
|
|
|
|
|
|
|
|
|
|
| |
When sucessfully finishing out frames (or finishing configuration), we must make
sure we don't override any failing GstFlowReturn that might have been detected
previously.
Failure to do this would result in not propagating not-linked, flushing,
etc...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/90>
|
|
|
|
|
|
| |
This now works with not so recent ffmpeg.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/88>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/89>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/86>
|
|
|
|
|
|
|
| |
We examined the output buffer, instead of the input buffer, for
existence of cc meta.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/83>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Following discussion in
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1396#note_556068
While it is technically possible to store multiple closed caption metas
in the same buffer, we don't currently do that anywhere and for
H264/MPEG2 both parts have to be stored in the same packet, and also the
number of CC bytes you can store per frame is rather limited. This
restriction might be relaxed later once we figured out how to do it
without breaking things.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/82>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/81>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/79>
|
|
|
|
| |
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/76>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The discovered frame rate is only available on the AVStream
itself. Updating the temporary context framerate before
building caps from it seems like a pretty non-intrusive approach.
Fixes #75
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/74>
|
|
|
|
|
|
|
|
|
| |
Documentation for AVCodecContext::time_base:
> decoding: the use of this field for decoding is deprecated.
> Use framerate instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/74>
|
|
|
|
|
|
| |
Move G_BEGIN_DECLS below includes and add missing include
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/71>
|
|
|
|
|
|
| |
otherwise we get incomplete colorimetry that video-info complains about
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/70>
|
|
|
|
|
|
|
|
|
|
|
| |
Without this fix, running the command below will get an error randomly.
Example:
gst-launch-1.0 videotestsrc ! vp9enc ! avmux_ivf ! fakesink
ERROR: pipeline doesn't want to preroll.
0:00:02.388528491 30148 0x5601b424a370 ERROR libav :0::
Tag [1]V[0][0] incompatible with output codec id '167' (VP90)
|
|
|
|
| |
See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594
|
|
|
|
|
| |
Otherwise videotestsrc ! avenc_libx265 ! fakesink
outputs `Unsupported multiview mode - no mapping in libav`
|
|
|
|
| |
about H264/H265/AAC
|
|
|
|
|
| |
Otherwise we don't know yet whether we'll have extradata/codec_data, so
can't decide on the stream-format yet.
|
|
|
|
| |
Besides vp8, ff_ivf_muxer supports VP9 and AV1
|
|
|
|
|
|
| |
if no codec_data is provided
This fixes output of the above formats from demuxers.
|
|
|
|
|
| |
Some demuxers make use of it in various ways, for example the HLS
demuxer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the `max-threads` property is not specified, GStreamer defaults to
the amount of CPU threads in the system.
The number of threads used in avdec has a direct impact on the latency
of the decoder, which is of as many frames as threads. Therefore, big
numbers of threads can make latency levels that can be problematic in
some applications.
For this reason, ffmpeg emits a warning when more than 16 threads are
requested.
This patch limits the default number of threads to 16. This affects only
computers with more than 16 CPU threads when using avviddec without
setting `max-threads`.
|