summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* avcodecmap: Don't try converting channel layouts with more than 64 channels1.16Sebastian 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/122>
* Release 1.16.31.16.3Tim-Philipp Müller2020-10-216-63/+517
|
* Update docsTim-Philipp Müller2020-10-211-1/+1
|
* Automatic update of common submoduleTim-Philipp Müller2020-10-201-0/+0
| | | | From 59cb678 to a825d27
* avaudenc/avvidenc: Reopen encoding session if it's requiredSeungha Yang2020-10-145-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/104>
* avvidenc: Call avcodec_flush_buffers() after draining to allow accepting new ↵Sebastian Dröge2020-10-141-0/+1
| | | | | | | | input again This is already done in all other codec elements. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/103>
* avauddec/audenc/videnc: Don't return GST_FLOW_EOS when drainingSebastian Dröge2020-10-144-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/103>
* avviddec: Don't return GST_FLOW_EOS from drain()/finish()Seungha Yang2020-10-141-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/94>
* avauddec: Ensure finish_subframe() and finish_frame() are pairedSeungha Yang2020-10-141-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/94>
* avauddec: Forward flow returns from draining instead of assuming OKSebastian Dröge2020-10-141-8/+11
| | | | | | | 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/94>
* avviddec: Forward flow returns from draining instead of assuming OKSebastian Dröge2020-10-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/94>
* avauddec: Avoid dropping non-OK flow returnEdward Hervey2020-10-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/94>
* gstavviddec: Limit default number of decoder threadsAlicia Boya García2020-09-281-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`. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/93>
* avauddec: fix buffer leak when send packet failedMatej Knopp2020-09-251-5/+6
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/92>
* avauddec: Ensure drain even if codec has not delay capabilitiesYeongjin Jeong2020-09-251-19/+10
| | | | | | | There are decoders that need to be drained if they work on multi-threads, even if AV_CODEC_CAP_DELAY is not set. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/91>
* avviddec: Ensure drain even if codec has not delay capabilitiesYeongjin Jeong2020-09-251-17/+8
| | | | | | | There are decoders that need to be drained if they work on multi-threads, even if AV_CODEC_CAP_DELAY is not set. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/91>
* Release 1.16.21.16.2Tim-Philipp Müller2019-12-036-21/+259
|
* Update docsTim-Philipp Müller2019-12-031-1/+1
|
* avvidenc: Fix error propagationEdward Hervey2019-11-291-1/+1
| | | | | Instead of returning the default return value (GST_FLOW_OK), actually return an error one (res vs ret).
* avdemux: Fix segmentation fault if long_name is NULLKevin JOLY2019-11-171-3/+8
| | | | | | Some plugins (like libcdio) registers empty long_name field. Calling strncmp on this field leads to a segmentation fault. Signed-off-by: Kevin Joly <joly.kevin25@gmail.com>
* avviddec: Fix huge leak caused by circular referenceSeungha Yang2019-10-291-11/+5
| | | | | | | | | AVBufferRef -> GstFFMpegVideoDecVideoFrame -> GstVideoCodecFrame -> AVBufferRef Instead of holding additional ref there, set read-only which would not be reused by ff_reget_buffer() Fixes: https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/63
* avviddec: Enforce allocate new AVFrame per input frameSeungha Yang2019-10-241-0/+16
| | | | | | | | | | | ... if ffmpeg would reuse the allocated AVBuffer. Reused AVFrame by the ffmpeg seems to break our decoding flow since the reused AVFrame holds the initial opaque data (GstVideoCodecFrame in this case), so we couldn't trace the our in/out frames. To enforce get_buffer() call per output frame, hold another reference to the AVBuffer in order to mark the AVBuffer as not writable. Fixes: https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/62
* Release 1.16.11.16.1Tim-Philipp Müller2019-09-236-18/+434
|
* Update docsTim-Philipp Müller2019-09-231-1/+1
|
* docs: don't include the type hierarchyRoss Burton2019-09-101-5/+0
| | | | | | | | | | gtk-doc can't generate a type hierarchy when scanning gst-libav, and gtk-doc 1.30 onwards doesn't write a file if there is no type hierarchy (unlike previous releases, which wrote an empty file). This results in the build failing with gtk-doc 1.30 onwards, so remove the type hierarchy section from the documentation as it doesn't serve any purpose. Fixes https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/57
* avvidenc: Correctly signal interlaced input to ffmpeg when the input caps ↵Sebastian Dröge2019-08-071-2/+5
| | | | | | are interlaced Regression from 1e4529ced2dadbfed4ac10d639a45dbcb0660129
* avvidenc: Also set the repeat_pict flag correctly and take the TFF flag from ↵Sebastian Dröge2019-08-071-2/+5
| | | | caps if available
* autotools: add bcrypt to win32 libsChristoph Reiter2019-08-061-1/+1
| | | | | | | | | | | The included libav requires it now. Otherwise the builds fails with: CCLD libgstlibav.la build-i686-w64-mingw32/gst-libs/ext/.libs/libavutil.a(random_seed.o): In function `av_get_random_seed': gst-libav-1.16.0/gst-libs/ext/libav/libavutil/random_seed.c:126: undefined reference to `BCryptOpenAlgorithmProvider@16' gst-libav-1.16.0/gst-libs/ext/libav/libavutil/random_seed.c:129: undefined reference to `BCryptGenRandom@16' gst-libav-1.16.0/gst-libs/ext/libav/libavutil/random_seed.c:130: undefined reference to `BCryptCloseAlgorithmProvider@8' collect2.exe: error: ld returned 1 exit status
* gstav: Use libavcodec util function for version checkYeongjin Jeong2019-08-061-1/+1
| | | | | | The version of libavutil is printed in the log instead of libavcodec because avutil_version() returns LIBAVUTIL_VERSION_INT. This can be confusing, so we should be replace it with avcodec_version().
* ci: use template from 1.16 branchTim-Philipp Müller2019-05-021-1/+1
|
* Release 1.16.01.16.0Tim-Philipp Müller2019-04-196-88/+227
|
* Update docsTim-Philipp Müller2019-04-191-1/+1
|
* libav: Update to ffmpeg n4.1.3Sebastian Dröge2019-04-121-0/+0
|
* Release 1.15.901.15.90Tim-Philipp Müller2019-04-116-48/+141
|
* Update docsTim-Philipp Müller2019-04-112-103/+103
|
* avcfg: Override type of bitrate property from int64 to intSebastian Dröge2019-04-091-5/+16
| | | | | | | | | | | See https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/41#note_142808 The switch to the new ffmpeg property system changed the type of the bitrate property from int to int64, which potentially breaks many existing applications at runtime as properties are usually set via g_object_set(). As such, override the type to int until GStreamer 2.0.
* avviddec: do not add 708 caption meta if already existsAaron Boxer2019-04-011-5/+28
| | | | | (this is only used for CEA 708 raw data). another element such as mpegvideoparse may have already added the meta.
* avvidenc: pass Closed Caption metadata to libavMathieu Duponchelle2019-03-231-0/+21
|
* avauddec: fix decoding of APE and Cook audioTim-Philipp Müller2019-03-042-20/+15
| | | | | | | | | | | | | | | | | | | .. and other formats where ffmpeg gives us multiple subframes per input frame. Since we now support non-interleaved audio, we can't just concat buffers any more. Also, audio metas won't be combined when buffers are merged, so when we push out the combined buffer we'll look at the meta describing only the first subframe and think it covers the whole frame leading to stutter/gaps in the output. We could fix this by copying the output data into a new buffer when we merge buffers, but that's suboptimal, so let's add some API to GstAudioDecoder to push out subframes and use that instead. https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/49
* Back to developmentTim-Philipp Müller2019-03-045-11/+11
|
* Release 1.15.21.15.2Tim-Philipp Müller2019-02-266-102/+265
|
* Update docsTim-Philipp Müller2019-02-261-1/+1
|
* avdemux: fix negative pts if start_time is bigger than the tsGuillaume Desmottes2019-02-211-2/+8
| | | | | | | | | | The start time is supposed to be the ts of the first frame. FFmpeg uses fractions to represent timestamps and the start time may use a different base than the frame pts. So we may end up having the start time bigger than the pts because of rounding when converting to gst ts. See https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/51 for details.
* configure: Only disable dxva2 onceSebastian Dröge2019-02-121-1/+1
|
* Update to ffmpeg n4.1.1Sebastian Dröge2019-02-121-0/+0
|
* Release 1.15.11.15.1Tim-Philipp Müller2019-01-176-59/+1616
|
* Update docsTim-Philipp Müller2019-01-174-1283/+65865
|
* avcfg: Fix AVOptionRanges leakSeungha Yang2019-01-131-4/+6
| | | | It must be freed with av_opt_freep_ranges as documented.
* Automatic update of common submoduleThibault Saunier2018-12-051-0/+0
| | | | From ed78bee to 59cb678
* libav: Update to ffmpeg n4.1Sebastian Dröge2018-11-151-0/+0
|