summaryrefslogtreecommitdiff
path: root/ext
Commit message (Collapse)AuthorAgeFilesLines
* avcodecmap: Add support for GBRA_10LE/BESebastian Dröge2021-09-181-0/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/142>
* avdemux: add xwma supportStéphane Cerveau2021-08-091-0/+6
| | | | | | | | | | | | 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>
* avviddec: Enable subframe decoding for H.264Olivier Crête2021-07-082-0/+45
| | | | | | | 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>
* avviddec: Split allocation tracking from decode-only-nessOlivier Crête2021-07-071-2/+18
| | | | | | | | 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>
* avviddec: Fix size of linesize parameterDoug Nazar2021-06-031-1/+1
| | | | | | | 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>
* avmux: Blacklist ttml subtitlesDoug Nazar2021-04-291-0/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/133>
* avviddec: Take into account coded_height for poolEdward Hervey2021-04-241-2/+5
| | | | | | | | | 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>
* avviddec: deprecated debug-mv property to match deprecation in FFmpegTim-Philipp Müller2021-04-132-12/+11
| | | | | | | 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>
* avdemux: fix build with FFmpeg 4.4Tim-Philipp Müller2021-04-131-0/+4
| | | | | | | | | | 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>
* avmux: fix segfault when a plugin's long_name is NULLNicholas Jackson2021-03-161-3/+5
| | | | | | | 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>
* Hook up audio/x-xma: xmaversion: [1,2] to AV_CODEC_ID_XMA[1,2]Jade Macho2021-03-151-0/+30
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/124>
* avcodecmap: Don't try converting channel layouts with more than 64 channelsSebastian Dröge2021-03-151-2/+2
| | | | | | | | | | | | | | | 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>
* avviddec: take the maximum of the height/coded_heightMatthew Waters2021-02-171-1/+1
| | | | | | | | | 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>
* viddec: don't configure and incorrect buffer pool when receiving a gap eventMatthew Waters2021-02-171-0/+14
| | | | | | | | | | | | | | | | | | | | | 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>
* avviddec: Support for alternate-field interlacingVivia Nikolaidou2021-02-031-27/+94
| | | | | | | 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>
* avauddec: Drain decoder on decoding failureSeungha Yang2020-12-291-5/+11
| | | | | | | | | ... 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>
* codec map: Add a mapping for the OKI ADPCM variant.Jan Schmidt2020-12-141-0/+6
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/111>
* avauddec: Check planar-ness of frame rather than contextArun Raghavan2020-10-271-1/+1
| | | | | | | | | | | 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>
* avaudenc/avvidenc: Reopen encoding session if it's requiredSeungha Yang2020-10-065-1/+99
| | | | | | | | | | 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>
* avvidenc: Call avcodec_flush_buffers() after draining to allow accepting new ↵Sebastian Dröge2020-10-011-0/+1
| | | | | | | | input again This is already done in all other codec elements. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/97>
* avauddec/audenc/videnc: Don't return GST_FLOW_EOS when drainingSebastian Dröge2020-09-304-2/+26
| | | | | | | | 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>
* avviddec: Don't return GST_FLOW_EOS from drain()/finish()Seungha Yang2020-09-161-0/+8
| | | | | | | 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>
* avauddec: Ensure finish_subframe() and finish_frame() are pairedSeungha Yang2020-09-151-7/+18
| | | | | | | | 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>
* avauddec: Forward flow returns from draining instead of assuming OKSebastian Dröge2020-09-141-9/+10
| | | | | | | 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>
* avviddec: Forward flow returns from draining instead of assuming OKSebastian Dröge2020-09-141-4/+7
| | | | | | | 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>
* avauddec: Avoid dropping non-OK flow returnEdward Hervey2020-09-141-1/+4
| | | | | | | | | | | 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>
* avcodecmap: Enable 24 bit WMA Lossless decodingOlivier Crête2020-09-091-2/+1
| | | | | | This now works with not so recent ffmpeg. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/88>
* Update for gst_video_transfer_function_*() function renamingSebastian Dröge2020-09-072-2/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/89>
* gstavcfg.c: fix max->min typo in limits and implict double conversionJordan Petridis2020-08-041-2/+7
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/86>
* avviddec: Fix typo that duplicated closed caption metaVivia Nikolaidou2020-07-071-1/+1
| | | | | | | 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>
* gstavviddec: Only allow a single closed caption metaVivia Nikolaidou2020-07-031-16/+4
| | | | | | | | | | | | | | 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>
* avauddec: fix buffer leak when send packet failedMatej Knopp2020-06-301-5/+6
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/81>
* avcodecmap: Add support for SpeedHQ video codecSebastian Dröge2020-06-261-0/+30
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/79>
* avmux: zero-initialize packetsMathieu Duponchelle2020-06-201-4/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/76>
* plugins: uddate gst_type_mark_as_plugin_api() callsMathieu Duponchelle2020-06-064-7/+7
|
* plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin typesSebastian Dröge2020-05-314-0/+12
|
* avcodecmap: Remove unused GstFFMpegCompliance typeSebastian Dröge2020-05-313-65/+1
|
* avdemux: update the context we use to determine stream's capsMathieu Duponchelle2020-05-271-0/+4
| | | | | | | | | | 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>
* avcodecmap: use framerate instead of time_base when decodingMathieu Duponchelle2020-05-271-2/+2
| | | | | | | | | 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>
* gstlibav: minor fixes for header filesMatej Knopp2020-05-093-4/+5
| | | | | | Move G_BEGIN_DECLS below includes and add missing include Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/71>
* gstavviddec: only set range when actually reported by avcodecMatej Knopp2020-05-091-1/+3
| | | | | | otherwise we get incomplete colorimetry that video-info complains about Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/70>
* avmux: avoid to use unintialized variableHaihao Xiang2020-04-151-0/+1
| | | | | | | | | | | 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)
* avviddec: Update for video-hdr struct changeSeungha Yang2020-04-011-56/+45
| | | | See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594
* avvidenc: handle GST_VIDEO_MULTIVIEW_MODE_MONOJulien Isorce2020-01-271-0/+3
| | | | | Otherwise videotestsrc ! avenc_libx265 ! fakesink outputs `Unsupported multiview mode - no mapping in libav`
* avcodecmap: Add some more comments about the assumptions in the ffmpeg code ↵Sebastian Dröge2020-01-241-2/+8
| | | | about H264/H265/AAC
* avdemux: Only set stream-format for H264/H265/AAC when we have a contextSebastian Dröge2020-01-241-5/+5
| | | | | Otherwise we don't know yet whether we'll have extradata/codec_data, so can't decide on the stream-format yet.
* avivf_mux: support VP9 and AV1Haihao Xiang2020-01-241-0/+18
| | | | Besides vp8, ff_ivf_muxer supports VP9 and AV1
* avcodecmap: Set AAC/H264/H265 stream-format for demuxer/encoder situations ↵Sebastian Dröge2020-01-241-2/+25
| | | | | | if no codec_data is provided This fixes output of the above formats from demuxers.
* avdemux: Pass the URI from the URI query to avformat_open_input()Sebastian Dröge2020-01-231-1/+26
| | | | | Some demuxers make use of it in various ways, for example the HLS demuxer.
* gstavviddec: Limit default number of decoder threadsAlicia Boya García2019-12-191-1/+2
| | | | | | | | | | | | | | | | | 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`.