=== release 1.24.9 === 2024-10-30 20:33:30 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.9 2024-09-26 15:48:54 +0300 Sebastian Dröge * ext/libav/gstavviddec.c: avviddec: Unlock video decoder stream lock temporarily while finishing frames Temporarily release the video decoder stream lock so that other threads can continue decoding (e.g. call get_frame()) while data is being pushed downstream. At this point it is locked twice, we release one, and then the base class releases the last one just before pushing the data. Part-of: 2024-09-19 12:12:53 +0200 Tim-Philipp Müller * meson.build: Back to development after 1.24.8 Part-of: === release 1.24.8 === 2024-09-19 12:01:21 +0200 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.8 2024-08-21 12:33:28 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.7 === release 1.24.7 === 2024-08-21 12:25:15 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.7 2024-08-21 11:05:11 +0300 Sebastian Dröge * ext/libav/gstavprotocol.c: avdemux: Never return 0 from read function Instead return AVERROR_EOF. The read function must never ever return 0 according to the documentation, and in practice this leads to infinite loops. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3369 Part-of: 2024-08-15 11:42:47 +0300 Sebastian Dröge * ext/libav/gstavdemux.c: avdemux: Fix deadlock when serialized events are received from upstream while opening Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3657 Part-of: 2023-07-09 23:21:16 +0200 Jesper Jensen * ext/libav/gstavprotocol.c: avprotocol: Return EOF when stream is out of data According to the ffmpeg documentation[1] the read_packet function should never return 0. ffmpegdata_peek returns 0 when the stream is EOF causing us to fail detecting EOF and never close the pipeline, continually spinning on more data. ffmpeg instead wants an AVERROR_EOF code for to signal EOF. Part-of: 2024-07-29 16:48:02 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.6 === release 1.24.6 === 2024-07-29 16:41:37 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.6 2024-07-12 17:09:15 +0200 Ruben Gonzalez * ext/libav/gstavcodecmap.c: * ext/libav/gstavcodecmap.h: * ext/libav/gstavmux.c: avmux: Fix crash when muxer doesn't get codecid gst_ffmpeg_formatid_get_codecids from gst_ffmpegmux_base_init to gst_ffmpegmux_base_init FFmpeg 7.0 included new muxer rcwt for Raw Captions with Time (RCWT). Commit [1]. GStreamer couldn't get sink caps for muxer it. Calling gst_ffmpeg_formatid_get_codecids in gst_ffmpegmux_register to avoid create muxer without pad templates. [1] https://github.com/FFmpeg/FFmpeg/commit/3525544e48 Part-of: 2024-07-16 20:49:13 +0900 Seungha Yang * ext/libav/gstavauddec.c: avauddec: Fix crash on stop() GstFFMpegAudDec.context can be nullptr if decoder got closed without opening new context. Note that we don't need to clear AVCodecContext.extradata there since avcodec_free_context() will do clear the data if needed. Part-of: 2024-05-01 18:05:35 +0300 Sebastian Dröge * docs/gst_plugins_cache.json: * ext/libav/gstavcodecmap.c: typefind: Add typefinders for formats that were previously available via ffmpeg Co-Authored-By: Matthew Waters Part-of: 2024-05-01 17:02:38 +0300 Sebastian Dröge * ext/libav/gstavvidenc.c: * ext/libav/gstavvidenc.h: avvidenc: Make sure to pass always increasing PTS to the encoder All MPEG1/2/4-based encoders at least are ignoring input frames if backwards PTS or PTS that are equal to the previous one are passed in. Part-of: 2024-05-01 16:50:30 +0300 Sebastian Dröge * ext/libav/gstavviddec.c: avviddec: Only use 2 ticks per frame if decoding interlaced video Part-of: 2024-05-01 16:39:00 +0300 Sebastian Dröge * ext/libav/gstavvidenc.c: avvidenc: Set the DTS to 0 if it is negative, not the PTS Part-of: 2024-05-01 16:32:16 +0300 Sebastian Dröge * ext/libav/gstavvidenc.c: avvidenc: Only use 2 ticks per frame if encoding interlaced video Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3518 Part-of: 2024-05-01 14:12:25 +0300 Sebastian Dröge * ext/libav/gstavmux.c: avmux: Reset input context to NULL after closing in the muxer Part-of: 2024-05-01 14:10:59 +0300 Sebastian Dröge * ext/libav/gstavdemux.c: avdemux: Fix leak of demuxer input context in error cases Also simplify context lifetime management a bit. Part-of: 2024-05-01 13:56:56 +0300 Sebastian Dröge * ext/libav/gstav.c: * ext/libav/gstav.h: * ext/libav/gstavauddec.c: * ext/libav/gstavauddec.h: * ext/libav/gstavaudenc.c: * ext/libav/gstavaudenc.h: * ext/libav/gstavcfg.c: * ext/libav/gstavdeinterlace.c: * ext/libav/gstavviddec.c: * ext/libav/gstavviddec.h: * ext/libav/gstavvidenc.c: * ext/libav/gstavvidenc.h: libav: Update AVCodecContext lifetime to work properly with ffmpeg 7 avcodec_close() is deprecated and it's not supported anymore to re-open a codec, so we only ever allocate the codec in set_format() now and always free it after usage. As part of this, also fix various memory leaks in related code paths. Part-of: 2024-05-14 10:27:36 +0200 Edward Hervey * ext/libav/gstavviddec.c: avviddec: Rename variables and fuse function * gst_ffmpegviddec_frame() is the only caller of gst_ffmpegviddec_video_frame() and has the same signature. Just move the checks into a single function and use that. * Make it clear which frames are the input and output ones in gst_ffmpegviddec_video_frame() to make issues like the one fixed in the previous commit more obvious. Part-of: 2024-05-01 12:24:08 +0300 Sebastian Dröge * ext/libav/gstavprotocol.c: libav: Fix signature of avprotocol write function for ffmpeg 7 Part-of: 2024-04-02 10:17:56 +0300 Sebastian Dröge * ext/libav/gstavdemux.c: avdemux: Remove typefinder implementation Direct access to AVInputFormat::read_probe() is not possible anymore with ffmpeg 7.0, and the usefulness of this typefinder seems limited anyway. An alternative implementation around av_probe_input_format3() or similar would be possible but it would be going over all possible ffmpeg probes at once. Having a typefinder here means that basically every application will load the gst-libav plugin when typefinding is necessary, which has unnecessary performance impacts. If a typefinder from here was indeed missing from typefindfunctions in gst-plugins-base then it would be better to add it there directly. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3378 Part-of: 2024-06-20 13:02:19 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.5 === release 1.24.5 === 2024-06-20 12:54:15 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.5 2024-05-29 13:51:27 +0300 Tim-Philipp Müller * meson.build: Back to development after 1.24.4 === release 1.24.4 === 2024-05-29 13:44:50 +0300 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.4 2024-05-14 09:52:30 +0200 Edward Hervey * ext/libav/gstavviddec.c: avvidec: Fix dropping wrong "ghost" frames This fixes the code regarding dropping "ghost frames", that is to say input frames which ended up not producing any decoded frame. The iteration itself makes sense.. but it was stopping at the "input" frame and not the decoded frame we just got back. When dealing with I-frame codecs, ffmpeg will decode frames in separate frames, so there is no guarantee that they are decoding in order. Fixes playback issues with such codecs Part-of: 2024-04-30 00:36:59 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.3 Part-of: === release 1.24.3 === 2024-04-30 00:15:23 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.3 2024-03-12 12:14:57 -0400 U. Artie Eoff * ext/libav/gstavcfg.c: libav: guard dropped AV_OPT_TYPE_CHANNEL_LAYOUT The FF_API_OLD_CHANNEL_LAYOUT api was dropped in upstream: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/65ddc7498824 Part-of: 2024-03-12 12:04:01 -0400 U. Artie Eoff * ext/libav/gstavviddec.c: * ext/libav/gstavvidenc.c: libav: guard dropped AV_CODEC_ID_AYUV api The FF_API_AYUV_CODECID api was dropped in upstream: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/9ee59b63f5ea Part-of: 2024-04-10 00:04:02 +0100 Tim-Philipp Müller * meson.build: Back to development after 1.24.2 === release 1.24.2 === 2024-04-09 21:48:55 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.2 2024-04-05 02:28:53 +0900 Seungha Yang * ext/libav/gstavviddec.c: avviddec: Fix AVPacket leak av_packet_unref() does not release allocated memory. av_packet_free() is the correct free function. Part-of: 2024-03-22 01:38:06 +0100 Tim-Philipp Müller * meson.build: Back to development === release 1.24.1 === 2024-03-21 21:47:53 +0100 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.1 2024-03-14 13:30:24 +0100 Piotr Brzeziński * ext/libav/gstavaudenc.c: avaudenc: Avoid double-freeing frame's extended data This occured when attempting to encode 16 channel audio, would crash on the first buffer. We only need to store ext_data, old ext_data_array (frame->extended_data) is already freed by `av_frame_unref`. Part-of: 2024-03-12 12:18:50 +0100 Piotr Brzeziński * docs/gst_plugins_cache.json: * ext/libav/gstavcodecmap.c: avcodecmap: Increase max AAC channels to 16 This is the maximum amount supported by aacenc. 8-channel output fully works. 16-channel also encodes fine, but codec-utils isn't able to parse its channel config, so output level will not be shown in caps. For that to work, GASpecificConfig parsing needs to be implemented. It's not a critical issue and can be worked on at a later date. Part-of: 2024-03-08 10:53:16 +0100 Edward Hervey * ext/libav/gstavviddec.c: avviddec: Fix how we get back the codec frame With the new copy_opaque system, the corresponding frame is stored in the picture opaque ref. This also handles the case where the "regular" opaque might be empty in the case of "DECODE_ONLY" frames, since it that field is set in `get_buffer2()` which might not be called for those frames Part-of: 2024-03-08 10:50:25 +0100 Edward Hervey * ext/libav/gstavviddec.c: avviddec: Improve debug statements Add SFN to better track what is going on Part-of: 2024-03-07 20:45:45 +0900 Seungha Yang * ext/libav/gstavviddec.c: avviddec: Fix interlaced mode detection Fixing regression introduced by the commit b46559102bf5934986da20f895920401dcc28237 Part-of: 2024-03-05 13:45:27 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.24.0 === 2024-03-04 23:51:42 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.24.0 2024-02-26 09:27:40 +0100 Edward Hervey * RELEASE: docs: Use Discourse and Matrix as prefered communication channels Part of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6220 === release 1.23.90 === 2024-02-23 18:20:11 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.23.90 2024-02-23 11:00:36 +0200 Sebastian Dröge * meson.build: libav: Don't add `-Werror=deprecated-declarations` It will fail the build for anybody who has an older FFmpeg version than 6.1 and doesn't use the FFmpeg subproject. Part-of: 2024-02-22 23:13:53 +0900 Seungha Yang * ext/libav/gstavviddec.c: avviddec: Fix crash with FFmpeg n6.0 FFmpeg version 6.0 has an AV_CODEC_FLAG_COPY_OPAQUE related bug. See https://github.com/FFmpeg/FFmpeg/commit/a3bf63c26e6197a9b6e490538667368530a9dcd3 Part-of: 2024-02-15 16:38:53 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.23.2 === 2024-02-15 15:37:17 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.23.2 2024-02-08 15:50:43 +0100 Edward Hervey * docs/gst_plugins_cache.json: * ext/libav/gstavauddec.c: * ext/libav/gstavdemux.c: musepack: Prefer using FFmpeg musepack decoder/demuxer * Bump the rank of the musepack v7/v8 FFmpeg demuxers to SECONDARY * Bump the rank of the musepack v7/v8 FFmpeg audio decoders to SECONDARY * Demote the rank of the musepackdec element to MARGINAL This is for two reasons: * The musepack library is no longer maintained, whereas the FFmpeg implementation can/will receive fixes * The `musepackdec` implementation was a all-in-one "parsing and decoding" blob which doesn't play nicely with decodebin3 and others Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3033 Part-of: 2024-02-06 18:09:02 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.23.1 === 2024-02-06 16:37:19 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * gst-libav.doap: * meson.build: Release 1.23.1 2024-01-28 11:15:01 +0000 Tim-Philipp Müller * meson.build: meson: bump Meson requirement to >= 1.1 for all modules Part-of: 2024-01-17 17:24:49 +0100 Edward Hervey * ext/libav/gstavauddec.c: avauddec: Use proper version guard Just like we do with avviddec Part-of: 2023-08-14 23:19:01 -0300 L. E. Segovia * meson.build: meson: Ensure FFmpeg deprecated APIs are rejected Part-of: 2024-01-14 15:47:15 -0300 L. E. Segovia * ext/libav/gstavviddec.c: * ext/libav/gstavvidenc.c: libav: Port deprecated AVFrame fields to flags Part-of: 2024-01-14 15:46:17 -0300 L. E. Segovia * ext/libav/gstavaudenc.c: * ext/libav/gstavcodecmap.c: * ext/libav/gstavviddec.c: * ext/libav/gstavvidenc.c: libav: Port AVCodecContext.ticks_per_frame to AV_CODEC_PROP_FIELDS Part-of: 2023-08-14 23:17:59 -0300 L. E. Segovia * ext/libav/gstavviddec.c: libav: Port reordered_opaque usage to ref-counted opaque_ref Instead of passing along the system frame number, we pass along a reference to the GstVideoCodecFrame. In order for all internal cleanup to happen properly, this also requires switching to the proper AVPacket creation/destruction methods (av_packet_alloc() and av_packet_unref()) Fixes #2568 Co-authored-by: Edward Hervey Part-of: 2023-08-14 22:32:19 -0300 L. E. Segovia * ext/libav/gstavauddec.c: libav: Port frame counting to frame_num Part-of: 2023-08-14 22:28:00 -0300 L. E. Segovia * ext/libav/gstavauddec.c: * ext/libav/gstavaudenc.c: * ext/libav/gstavcodecmap.c: * ext/libav/gstavcodecmap.h: * ext/libav/gstavdemux.c: libav: Port channel layout and counting to AVChannelLayout Fixes #2833 Co-authored-by: Edward Hervey Part-of: 2023-11-04 10:59:39 +0000 Philippe Normand * ext/libav/gstavviddec.c: avviddec: Calculate latency only for fixed framerate The framerate was checked correctly in _negotiate, but not in _set_format. Also fix loss of precision in _negotiate when calculating the framerate. Fixes #3093 Co-authored-by: Sebastian Dröge Part-of: 2023-11-17 01:01:36 +0900 Seungha Yang * ext/libav/gstavviddec.c: avviddec: Unlock stream lock while waiting for decoded frame FFmpeg might request buffer from other threads, it will result in deadlock Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2558 Part-of: 2023-11-02 00:03:28 +0900 Seungha Yang * meson.build: meson: Fix MSVC build with GST_DISABLE_GST_DEBUG MSVC does not understand Wno-unused Part-of: 2023-10-22 08:06:29 +0300 Jordan Petridis * meson.build: meson: Fix typo Part-of: 2020-07-10 12:16:35 +0300 Jordan Petridis * docs/gst_plugins_cache.json: ci: switch the Fedora base image to f34 Part-of: 2023-10-19 08:34:56 +0200 Guillaume Desmottes * docs/gst_plugins_cache.json: * ext/libav/gstavcfg.c: libav: expose fake booleans properties as enums Some ffmpeg options claims to be booleans but are actually 3-values enums with -1 as default instead of 1 or 0. Handle those using a custom enum so we keep the same defaults as ffmpeg and users can properly configure them if they need to. See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3035 for an actual example of this problem. The GStreamer element was automatically enabling a non-default option, leading to strange behavior in the AAC encoder. Fix #3035 Part-of: 2023-09-21 08:43:19 +1200 Chris Wiggins * docs/gst_plugins_cache.json: * ext/libav/gstavcodecmap.c: avcodecmap: Add MxPEG codec ID Part-of: 2023-07-05 18:46:25 -0600 Olivier Crête * scripts/gen-changelog.py: gst-omx: Retire the whole package The OpenMAX standard is long dead and even the Raspberry Pi OS no longer supports it. Part-of: 2023-07-12 09:27:22 +0530 Nirbheek Chauhan * tests/check/meson.build: meson: Always use forward slashes in defines with paths Fixes the following build failure on MSYS2: ``` ../subprojects/gstreamer/tests/check/elements/filesrc.c: In function 'test_seeking': ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: error: incomplete universal character name \U 107 | g_object_set (G_OBJECT (src), "location", TESTFILE, NULL); | ^ ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\A' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\s' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g' ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\c' ``` Due to: `-DTESTFILE=\"C:\\Users\\Administrator\[...]` https://gitlab.freedesktop.org/nirbheek/gstreamer/-/jobs/45317733 Part-of: 2023-02-05 11:15:44 +0100 Carlos Rafael Giani * docs/gst_plugins_cache.json: * ext/libav/gstavcodecmap.c: * ext/libav/gstavdemux.c: libav: Integrate FFmpeg's DSD support with GstDsd caps Code is partially based on the DSD of Robert Tiemann : https://gitlab.freedesktop.org/rtiemann/gstreamer/-/tree/dsd Part-of: 2023-05-15 08:57:43 +0200 Edward Hervey * ext/libav/gstavviddec.c: avvidec: Fix more deprecated symbol We only used these fields for debugging anyway Part-of: 2023-05-15 08:49:06 +0200 Edward Hervey * ext/libav/gstavviddec.c: avvidec: Fix usage of deprecated field Since ffmpeg 6.0 frame_num is used instead of frame_number Part-of: 2023-03-07 14:05:54 +0100 Stéphane Cerveau * tests/meson.build: gstreamer-full: add full static support Allow a project to use gstreamer-full as a static library and link to create a binary without dependencies. Introduce the option 'gst-full-target-type' to select the build type, dynamic(default) or static. In gstreamer-full/static build configuration gstreamer (gst.c) needs the symbol gst_init_static_plugins which is defined in gstreamer-full. All the tests and examples are linking with gstreamer but the symbol gst_init_static_plugins is only defined in the gstreamer-full library. gstreamer-full can not be built first as it needs to know what plugins will be built. One option would be to build all the examples and tests after gstreamer-full as the tools. Disable tools build in subprojects too as it will be built at the end of build process. Part-of: 2023-05-12 09:50:04 +0300 Sebastian Dröge * ext/libav/gstavviddec.c: avviddec: Temporarily unlock stream lock while flushing buffers This can call into the decoder again from other threads and try to take the stream lock from there, which would cause a deadlock. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2558 Part-of: 2022-11-08 17:31:36 -0500 U. Artie Eoff * docs/gst_plugins_cache.json: * ext/libav/gstav.c: * ext/libav/gstav.h: * ext/libav/gstavvidcmp.c: * ext/libav/meson.build: gst-libav: add avvideocompare element The avvideocompare element compares two incoming video buffers using the specified comparison method (e.g. ssim or psnr). The first video buffer is passthrough, unchanged. The comparison is calculated by using libav's ssim or psnr filters. Part-of: 2023-03-23 10:32:09 +0100 Stéphane Cerveau * ext/libav/gstavmux.c: libav: set the frame rate values in ffmpeg stream context To avoid a default value to be used in mux.c+304, give the frame rate detected from the caps. Fix IVF header. Part-of: 2023-03-22 12:52:08 +0100 Stéphane Cerveau * docs/gst_plugins_cache.json: * ext/libav/gstavcodecmap.c: libav: add av1 to gst_ffmpeg_caps_to_codecid Restrict the stream-format to obu-stream and the alignment to "tu" and "frame" as "obu" is not properly supported by libav. Part-of: 2023-03-19 15:35:29 -0300 Thibault Saunier * docs/meson.build: doc: Avoid shelling out to hotdoc to generate plugins config files Part-of: 2023-04-19 12:54:45 -0400 U. Artie Eoff * docs/gst_plugins_cache.json: * ext/libav/gstavcodecmap.c: gst-libav: map P010, VUYA, Y410, P012, Y212, and Y412 P010 has been around for a long time. VUYX introduced in: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/cc5a5c986047d38b53c0f12a227b04487624e7cb P012, Y212, XV30 (Y410), and XV36 (Y412) introduced in: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/d75c4693fef51e8f0a1b88798530f4c5147ea906 Part-of: 2023-04-10 18:06:17 +0100 Tim-Philipp Müller * ext/libav/gstavmux.c: avmux: fix element leak Fixes #2473 Part-of: 2023-04-10 17:59:21 +0100 Tim-Philipp Müller * ext/libav/gstavdeinterlace.c: avdeinterlace: fix element leak Fixes #2473 Part-of: 2023-03-22 15:48:18 +0100 Tobias Rapp * docs/gst_plugins_cache.json: * ext/libav/gstavcodecmap.c: gst-libav: Update codec mapping for FFVHuff video Replaces the ad-hoc type string 'video/x-gst-av-ffvhuff' with 'video/x-ffvhuff' for the avdec_ffvhuff and avenc_ffvhuff elements. Related to #2389. Part-of: 2023-03-15 18:59:56 +0000 Tim-Philipp Müller * ext/libav/gstavcodecmap.c: * ext/libav/gstavdemux.c: * ext/libav/gstavviddec.c: gst-libav: re-indent with GNU indent 2.2.12 Part-of: 2023-03-14 14:27:39 -0400 Nicolas Dufresne * ext/libav/gstavviddec.c: avviddec: Drop decoder stream lock when calling send_packet This is already done for every other calls to send_packet. The deadlock occures since FFMPeg 6.0. The decoder tries to get a buffer from a thread during the draining process, and blocks trying to get the video decoder stream lock already heald by the drain function. Fixes #2383 Part-of: 2023-02-28 14:00:26 +0200 Sebastian Dröge * ext/libav/gstavauddec.c: * ext/libav/gstavviddec.c: ffmpeg: avauddec/avviddec: Free packet side data after usage As we don't use proper refcounting with AVPacket we have to manage this ourselves. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2006 Part-of: 2023-02-13 17:02:01 -0500 U. Artie Eoff * ext/libav/gstavviddec.c: avviddec: change AV_CODEC_CAP_AUTO_THREADS->AV_CODEC_CAP_OTHER_THREADS This fixes a compile error with recent upstream FFmpeg. The AV_CODEC_CAP_AUTO_THREADS was deprecated and renamed to AV_CODEC_CAP_OTHER_THREADS in FFmpeg upstream commit 7d09579190de (lavc 58.132.100). The AV_CODEC_CAP_AUTO_THREADS was finally removed in FFmpeg upstream commit 10c9a0874cb3 (lavc 59.63.100). Part-of: 2023-01-24 20:19:06 +0000 Tim-Philipp Müller * ext/libav/gstavaudenc.c: * ext/libav/gstavviddec.c: * ext/libav/gstavvidenc.c: gst-libav: drop use of GSlice allocator Part-of: 2023-01-24 15:38:20 +0200 Sebastian Dröge * ext/libav/gstavvidenc.c: avvidenc: Don't take ffmpeg timestamps verbatim but only use them to calculate DTS The ffmpeg timestamps are inaccurate and only in framerate granularity. To avoid generating inaccurate output timestamps, especially with variable framerate streams, only use the ffmpeg timestamps for calculating the DTS. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1544 again. Part-of: 2023-01-24 15:28:17 +0200 Sebastian Dröge * ext/libav/gstavcodecmap.c: * ext/libav/gstavvidenc.c: Revert "avvidenc: Set timebase in the ffmpeg context to nanoseconds and set framerate" This reverts commit 50db59449e9cdb637c5f0c1b7c5dccd582fac4ee. This broke the MPEG-1 video encoder as it requires the framerate to be used for the timebase. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1734 Part-of: 2023-01-23 23:04:53 +0000 Tim-Philipp Müller * meson.build: Back to development Part-of: === release 1.22.0 ===