From e394ad4b9b1ff0fa31a4903a8f07b6fc7bdb455d Mon Sep 17 00:00:00 2001 From: Sebastian Dröge Date: Thu, 2 Oct 2014 10:10:11 +0300 Subject: wavenc: Send CAPS event after the pad was activated Otherwise the CAPS event will be dropped and we never configure any caps at all, leading to weird behaviour in many situations. Especially header rewriting is not going to work if a capsfilter is after wavenc. https://bugzilla.gnome.org/show_bug.cgi?id=737735 --- gst/wavenc/gstwavenc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gst/wavenc/gstwavenc.c b/gst/wavenc/gstwavenc.c index 9f62fc7ac..29bfad41a 100644 --- a/gst/wavenc/gstwavenc.c +++ b/gst/wavenc/gstwavenc.c @@ -197,8 +197,6 @@ gst_wavenc_init (GstWavEnc * wavenc) wavenc->srcpad = gst_pad_new_from_static_template (&src_factory, "src"); gst_pad_use_fixed_caps (wavenc->srcpad); - gst_pad_set_caps (wavenc->srcpad, - gst_static_pad_template_get_caps (&src_factory)); gst_element_add_pad (GST_ELEMENT (wavenc), wavenc->srcpad); } @@ -264,7 +262,10 @@ gst_wavenc_push_header (GstWavEnc * wavenc) /* seek to beginning of file */ gst_segment_init (&segment, GST_FORMAT_BYTES); - gst_pad_push_event (wavenc->srcpad, gst_event_new_segment (&segment)); + if (!gst_pad_push_event (wavenc->srcpad, gst_event_new_segment (&segment))) { + GST_WARNING_OBJECT (wavenc, "Seek to the beginning failed"); + return GST_FLOW_ERROR; + } GST_DEBUG_OBJECT (wavenc, "writing header, meta_size=%u, audio_size=%u", wavenc->meta_length, wavenc->audio_length); @@ -854,6 +855,9 @@ gst_wavenc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) } if (G_UNLIKELY (!wavenc->sent_header)) { + gst_pad_set_caps (wavenc->srcpad, + gst_static_pad_template_get_caps (&src_factory)); + /* starting a file, means we have to finish it properly */ wavenc->finished_properly = FALSE; -- cgit v1.2.3