From ad136cb2c5f9654ae87d2419f6f9fd31def29f3a Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Thu, 5 May 2022 00:49:27 +0900 Subject: [PATCH] h265decoder: Fix for unhandled low-delay decoding case Baseclass calls get_preferred_output_delay() in a chain of sequence header parsing and then new_sequence() is called with required DPB size (includes render-delay) information. Thus latency query should happen before the sequence header parsing for subclass to report required render-delay accordingly via get_preferred_output_delay() method. (e.g., zero delay in case of live pipeline) This commit is to fix wrong liveness signalling in case of upstream packetized format. Part-of: --- .../gst-libs/gst/codecs/gsth265decoder.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 97a5922b16..1a0eac39be 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gsth265decoder.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gsth265decoder.c @@ -1007,6 +1007,12 @@ gst_h265_decoder_set_format (GstVideoDecoder * decoder, self->input_state = gst_video_codec_state_ref (state); + priv->is_live = FALSE; + query = gst_query_new_latency (); + if (gst_pad_peer_query (GST_VIDEO_DECODER_SINK_PAD (self), query)) + gst_query_parse_latency (query, &priv->is_live, NULL, NULL); + gst_query_unref (query); + if (state->caps) { GstH265DecoderFormat format; GstH265DecoderAlign align; @@ -1061,12 +1067,6 @@ gst_h265_decoder_set_format (GstVideoDecoder * decoder, gst_buffer_unmap (state->codec_data, &map); } - priv->is_live = FALSE; - query = gst_query_new_latency (); - if (gst_pad_peer_query (GST_VIDEO_DECODER_SINK_PAD (self), query)) - gst_query_parse_latency (query, &priv->is_live, NULL, NULL); - gst_query_unref (query); - return TRUE; }