summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@centricular.com>2021-04-24 10:04:23 +0200
committerEdward Hervey <bilboed@bilboed.com>2021-04-24 10:07:31 +0200
commit75fb364bf435d80a51f1ecba6afc999b5f36292e (patch)
treeb7493e92ae6c06800f1a80a11cbeb4eedb81b18d
parent672f1caf85493a830e9a81af974e6386580031a6 (diff)
downloadgst-libav-75fb364bf435d80a51f1ecba6afc999b5f36292e.tar.gz
avviddec: Take into account coded_height for pool
Failure to do this would cause the decoders to constantly request a new bufferpool thinking the height had changed ... whereas it hadn't. Fixes #95 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/131>
-rw-r--r--ext/libav/gstavviddec.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
index 6f94b87..8530033 100644
--- a/ext/libav/gstavviddec.c
+++ b/ext/libav/gstavviddec.c
@@ -790,7 +790,8 @@ gst_ffmpegviddec_ensure_internal_pool (GstFFMpegVidDec * ffmpegdec,
/* Remember pool size so we can detect changes */
ffmpegdec->pool_width = picture->width;
- ffmpegdec->pool_height = picture->height;
+ ffmpegdec->pool_height =
+ MAX (picture->height, ffmpegdec->context->coded_height);
ffmpegdec->pool_format = picture->format;
ffmpegdec->pool_info = info;
}
@@ -2203,7 +2204,9 @@ gst_ffmpegviddec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
gst_object_unref (ffmpegdec->internal_pool);
ffmpegdec->internal_pool = gst_object_ref (pool);
ffmpegdec->pool_width = GST_VIDEO_INFO_WIDTH (&state->info);
- ffmpegdec->pool_height = GST_VIDEO_INFO_HEIGHT (&state->info);
+ ffmpegdec->pool_height =
+ MAX (GST_VIDEO_INFO_HEIGHT (&state->info),
+ ffmpegdec->context->coded_height);
ffmpegdec->pool_info = state->info;
gst_structure_free (config);
goto done;