mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 18:21:04 +00:00
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
This commit is contained in:
parent
374552a720
commit
7729f4ce81
1 changed files with 7 additions and 3 deletions
|
@ -157,8 +157,6 @@ gst_wavenc_init (GstWavEnc * wavenc)
|
||||||
|
|
||||||
wavenc->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
|
wavenc->srcpad = gst_pad_new_from_static_template (&src_factory, "src");
|
||||||
gst_pad_use_fixed_caps (wavenc->srcpad);
|
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);
|
gst_element_add_pad (GST_ELEMENT (wavenc), wavenc->srcpad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,7 +356,10 @@ gst_wavenc_push_header (GstWavEnc * wavenc)
|
||||||
|
|
||||||
/* seek to beginning of file */
|
/* seek to beginning of file */
|
||||||
gst_segment_init (&segment, GST_FORMAT_BYTES);
|
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",
|
GST_DEBUG_OBJECT (wavenc, "writing header, meta_size=%u, audio_size=%u",
|
||||||
wavenc->meta_length, wavenc->audio_length);
|
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)) {
|
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 */
|
/* starting a file, means we have to finish it properly */
|
||||||
wavenc->finished_properly = FALSE;
|
wavenc->finished_properly = FALSE;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue