vp8decoder: Fix resolution change handling

Do not store resolution in set_format() so that resolution change
can be detected on keyframe as intended.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3928
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7710>
This commit is contained in:
Seungha Yang 2024-10-22 23:41:13 +09:00 committed by GStreamer Marge Bot
parent 8f5dca9611
commit 7f9be72e72

View file

@ -115,6 +115,9 @@ gst_vp8_decoder_start (GstVideoDecoder * decoder)
gst_vp8_parser_init (&priv->parser); gst_vp8_parser_init (&priv->parser);
priv->wait_keyframe = TRUE; priv->wait_keyframe = TRUE;
priv->had_sequence = FALSE;
priv->width = 0;
priv->height = 0;
priv->output_queue = priv->output_queue =
gst_vec_deque_new_for_struct (sizeof (GstVp8DecoderOutputFrame), 1); gst_vec_deque_new_for_struct (sizeof (GstVp8DecoderOutputFrame), 1);
@ -217,9 +220,6 @@ gst_vp8_decoder_set_format (GstVideoDecoder * decoder,
self->input_state = gst_video_codec_state_ref (state); self->input_state = gst_video_codec_state_ref (state);
priv->width = GST_VIDEO_INFO_WIDTH (&state->info);
priv->height = GST_VIDEO_INFO_HEIGHT (&state->info);
query = gst_query_new_latency (); query = gst_query_new_latency ();
if (gst_pad_peer_query (GST_VIDEO_DECODER_SINK_PAD (self), query)) if (gst_pad_peer_query (GST_VIDEO_DECODER_SINK_PAD (self), query))
gst_query_parse_latency (query, &priv->is_live, NULL, NULL); gst_query_parse_latency (query, &priv->is_live, NULL, NULL);