From 270ca09961fb56f9b4186f9e9a89b086ee4d31f7 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Thu, 6 Apr 2023 19:40:12 +0900 Subject: [PATCH] h265decoder: Fix for latency report when src caps is not configured Depending on subclass, negotiation might not happen on new_sequence() Fixing regression introduced by the commit 4a4823b9728fbb944e05d89e0fee681ab5b33e25 Part-of: --- .../gst-libs/gst/codecs/gsth265decoder.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gsth265decoder.c b/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gsth265decoder.c index 201cc6b8c5..70f0be9a31 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gsth265decoder.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gsth265decoder.c @@ -363,17 +363,19 @@ gst_h265_decoder_set_latency (GstH265Decoder * self, const GstH265SPS * sps, guint frames_delay; caps = gst_pad_get_current_caps (GST_VIDEO_DECODER_SRC_PAD (self)); - if (!caps) - return; + if (!caps && self->input_state) + caps = gst_caps_ref (self->input_state->caps); - structure = gst_caps_get_structure (caps, 0); - if (gst_structure_get_fraction (structure, "framerate", &fps_n, &fps_d)) { - if (fps_n == 0) { - /* variable framerate: see if we have a max-framerate */ - gst_structure_get_fraction (structure, "max-framerate", &fps_n, &fps_d); + if (caps) { + structure = gst_caps_get_structure (caps, 0); + if (gst_structure_get_fraction (structure, "framerate", &fps_n, &fps_d)) { + if (fps_n == 0) { + /* variable framerate: see if we have a max-framerate */ + gst_structure_get_fraction (structure, "max-framerate", &fps_n, &fps_d); + } } + gst_caps_unref (caps); } - gst_caps_unref (caps); /* if no fps or variable, then 25/1 */ if (fps_n == 0) {