From a037f132716e8bd7126cbd446be6b608185af460 Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Tue, 7 Jun 2016 17:22:01 +1000 Subject: [PATCH] vtdec: always drain in ::negotiate Move calling gst_vtdec_push_frames_if_needed from ::set_format to ::negotiate so that we always drain even when renegotiation is triggered by downstream. --- sys/applemedia/vtdec.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c index 5ebd340332..5f8882f712 100644 --- a/sys/applemedia/vtdec.c +++ b/sys/applemedia/vtdec.c @@ -230,6 +230,8 @@ gst_vtdec_negotiate (GstVideoDecoder * decoder) gboolean output_textures; vtdec = GST_VTDEC (decoder); + if (vtdec->session) + gst_vtdec_push_frames_if_needed (vtdec, TRUE, FALSE); templcaps = gst_pad_get_pad_template_caps (GST_VIDEO_DECODER_SRC_PAD (decoder)); peercaps = gst_pad_peer_query_caps (GST_VIDEO_DECODER_SRC_PAD (vtdec), NULL); @@ -279,10 +281,8 @@ gst_vtdec_negotiate (GstVideoDecoder * decoder) "negotiated output format %" GST_PTR_FORMAT " previous %" GST_PTR_FORMAT, output_state->caps, prevcaps); - if (vtdec->session) { - gst_vtdec_push_frames_if_needed (vtdec, TRUE, FALSE); + if (vtdec->session) gst_vtdec_invalidate_session (vtdec); - } err = gst_vtdec_create_session (vtdec, format, TRUE); if (err == noErr) { @@ -357,9 +357,6 @@ gst_vtdec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state) return TRUE; } - if (vtdec->session) - gst_vtdec_push_frames_if_needed (vtdec, TRUE, FALSE); - gst_video_info_from_caps (&vtdec->video_info, state->caps); if (!gst_vtdec_compute_reorder_queue_length (vtdec, cm_format,