f166c9d234
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> |
||
---|---|---|
docs | ||
ext/libav | ||
hooks | ||
scripts | ||
tests | ||
.gitignore | ||
.gitlab-ci.yml | ||
AUTHORS | ||
ChangeLog | ||
COPYING | ||
gst-libav.doap | ||
meson.build | ||
meson_options.txt | ||
NEWS | ||
README.md | ||
RELEASE |
gst-libav
This module contains a GStreamer plugin for using the encoders, decoders, muxers, and demuxers provided by FFmpeg. It is called gst-libav for historical reasons.
Plugin Dependencies and Licenses
GStreamer is developed under the terms of the LGPL-2.1 (see COPYING file for details), and that includes the code in this repository.
However, this repository depends on FFmpeg, which can be built in the following
modes using various ./configure
switches: LGPL-2.1, LGPL-3, GPL, or non-free.
This can mean, for example, that if you are distributing an application which has a non-GPL compatible license (like a closed-source application) with GStreamer, you have to make sure not to build FFmpeg with GPL code enabled.
Overall, when using plugins that link to GPL libraries, GStreamer is for all practical reasons under the GPL itself.
The above recommendations are not legal advice, and you are responsible for ensuring that you meet your licensing obligations.