From 7729f4ce81580df72e03e509966651eebb092d81 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 2 Oct 2014 10:10:11 +0300 Subject: [PATCH] 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 44fc4b6..e56cec0 100644 --- a/gst/wavenc/gstwavenc.c +++ b/gst/wavenc/gstwavenc.c @@ -157,8 +157,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); } @@ -358,7 +356,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); @@ -960,6 +961,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; -- 2.7.4