gstreamer/ext/libav
Matthew Waters f166c9d234 viddec: don't configure and incorrect buffer pool when receiving a gap event
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>
2021-02-17 03:13:21 +00:00
..
gstav.c gstav: Use libavcodec util function for version check 2019-04-29 16:02:05 +00:00
gstav.h libav: Fix symbol redefine build error 2018-07-19 12:21:01 +01:00
gstavauddec.c avauddec: Drain decoder on decoding failure 2020-12-29 16:27:30 +00:00
gstavauddec.h avauddec: fix decoding of APE and Cook audio 2019-03-04 11:54:15 +00:00
gstavaudenc.c avaudenc/avvidenc: Reopen encoding session if it's required 2020-10-06 19:21:36 +09:00
gstavaudenc.h avaudenc/avvidenc: Reopen encoding session if it's required 2020-10-06 19:21:36 +09:00
gstavcfg.c gstavcfg.c: fix max->min typo in limits and implict double conversion 2020-08-04 18:56:45 +03:00
gstavcfg.h avaudenc: install options generically 2018-07-13 00:53:27 +02:00
gstavcodecmap.c codec map: Add a mapping for the OKI ADPCM variant. 2020-12-14 11:09:35 +02:00
gstavcodecmap.h avcodecmap: Remove unused GstFFMpegCompliance type 2020-05-31 10:03:17 +03:00
gstavdeinterlace.c plugins: uddate gst_type_mark_as_plugin_api() calls 2020-06-06 00:43:02 +02:00
gstavdemux.c avdemux: update the context we use to determine stream's caps 2020-05-27 16:34:10 +02:00
gstavmux.c avmux: zero-initialize packets 2020-06-20 00:36:48 +00:00
gstavprotocol.c avprotocol: fix leak in error code paths 2018-01-13 11:54:25 +00:00
gstavprotocol.h avprotocol: Don't use GST_LOG_OBJECT() and friends on an arbitrary struct that is not a GObject 2016-12-02 14:19:46 +02:00
gstavutils.c Remove all uses of AVPicture 2018-07-13 00:53:26 +02:00
gstavutils.h avaudenc/avvidenc: Reopen encoding session if it's required 2020-10-06 19:21:36 +09:00
gstavviddec.c viddec: don't configure and incorrect buffer pool when receiving a gap event 2021-02-17 03:13:21 +00:00
gstavviddec.h gstlibav: minor fixes for header files 2020-05-09 19:09:41 +00:00
gstavvidenc.c avaudenc/avvidenc: Reopen encoding session if it's required 2020-10-06 19:21:36 +09:00
gstavvidenc.h avaudenc/avvidenc: Reopen encoding session if it's required 2020-10-06 19:21:36 +09:00
meson.build docs: Port to hotdoc 2019-05-13 17:00:00 -04:00