summaryrefslogtreecommitdiff
path: root/gst-libs/gst/codecs
diff options
context:
space:
mode:
authorSeungha Yang <seungha@centricular.com>2021-03-28 16:11:23 +0900
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-04-07 19:32:29 +0000
commit771326a0fb292ae86882cc2dfe160409674ef3ea (patch)
tree4ae6b3a514f875d1ed75be025553f34e36a88908 /gst-libs/gst/codecs
parent24eda30bd7bed0500b20ea87d1f1f11e4271c658 (diff)
downloadgstreamer-plugins-bad-771326a0fb292ae86882cc2dfe160409674ef3ea.tar.gz
codecs: vp9decoder: Don't check codec change with show_existing_frame
Show existing frame will zero frame_type value but it doesn't mean it's keyframe. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112>
Diffstat (limited to 'gst-libs/gst/codecs')
-rw-r--r--gst-libs/gst/codecs/gstvp9decoder.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gst-libs/gst/codecs/gstvp9decoder.c b/gst-libs/gst/codecs/gstvp9decoder.c
index f6d14ab88..e38ff4e74 100644
--- a/gst-libs/gst/codecs/gstvp9decoder.c
+++ b/gst-libs/gst/codecs/gstvp9decoder.c
@@ -297,7 +297,8 @@ gst_vp9_decoder_handle_frame (GstVideoDecoder * decoder,
goto unmap_and_error;
}
- if (priv->wait_keyframe && frame_hdr.frame_type != GST_VP9_KEY_FRAME) {
+ if (priv->wait_keyframe && (frame_hdr.frame_type != GST_VP9_KEY_FRAME
+ || frame_hdr.show_existing_frame)) {
GST_DEBUG_OBJECT (self, "Drop frame before initial keyframe");
gst_buffer_unmap (in_buf, &map);
@@ -307,6 +308,7 @@ gst_vp9_decoder_handle_frame (GstVideoDecoder * decoder,
}
if (frame_hdr.frame_type == GST_VP9_KEY_FRAME &&
+ !frame_hdr.show_existing_frame &&
!gst_vp9_decoder_check_codec_change (self, &frame_hdr)) {
GST_ERROR_OBJECT (self, "codec change error");
goto unmap_and_error;