avaudenc/avvidenc: Reopen encoding session if it's required
authorSeungha Yang <seungha@centricular.com>
Mon, 5 Oct 2020 18:47:42 +0000 (03:47 +0900)
committerSeungha Yang <seungha@centricular.com>
Tue, 6 Oct 2020 10:21:36 +0000 (19:21 +0900)
commit89bb244ab9fe57645c8da2ac7b267a0469048e4e
treeb84136be1f683fd0d5b774133ff0a37ca5ca849e
parente30cef412942f945fe13e5d819fdddcf6915fd53
avaudenc/avvidenc: Reopen encoding session if it's required

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>
ext/libav/gstavaudenc.c
ext/libav/gstavaudenc.h
ext/libav/gstavutils.h
ext/libav/gstavvidenc.c
ext/libav/gstavvidenc.h