From 5ae7119d11ba959c23cdaf57ebf61aeb06b77253 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Tue, 11 May 2010 12:06:10 +0200 Subject: [PATCH] avimux: check that pads have been negotiated Also set fcc_handler field in audio stream header. Fixes #618351. --- gst/avi/gstavimux.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c index 23ea4802d1..a0e6b80604 100644 --- a/gst/avi/gstavimux.c +++ b/gst/avi/gstavimux.c @@ -934,6 +934,7 @@ gst_avi_mux_audsink_set_caps (GstPad * pad, GstCaps * vscaps) if (!avipad->auds.format) goto refuse_caps; + avipad->parent.hdr.fcc_handler = avipad->auds.format; gst_avi_mux_audsink_set_fields (avimux, avipad); gst_object_unref (avimux); @@ -2069,6 +2070,9 @@ gst_avi_mux_do_one_buffer (GstAviMux * avimux) if (!avipad->collect) continue; + if (!avipad->hdr.fcc_handler) + goto not_negotiated; + buffer = gst_collect_pads_peek (avimux->collect, avipad->collect); if (!buffer) continue; @@ -2097,6 +2101,14 @@ gst_avi_mux_do_one_buffer (GstAviMux * avimux) gst_pad_push_event (avimux->srcpad, gst_event_new_eos ()); return GST_FLOW_UNEXPECTED; } + + /* ERRORS */ +not_negotiated: + { + GST_ELEMENT_ERROR (avimux, CORE, NEGOTIATION, (NULL), + ("pad %s not negotiated", GST_PAD_NAME (avipad->collect->pad))); + return GST_FLOW_NOT_NEGOTIATED; + } } static GstFlowReturn