2005-05-05 Wim Taymans <wim@fluendo.com>
+ * gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_chain),
+ (gst_audio_convert_caps_remove_format_info),
+ (gst_audio_convert_setcaps), (gst_audio_convert_fixate),
+ (gst_audio_convert_change_state), (gst_audio_convert_channels):
+ * gst/videotestsrc/gstvideotestsrc.c:
+ (gst_videotestsrc_src_negotiate), (gst_videotestsrc_src_link),
+ (gst_videotestsrc_parse_caps), (gst_videotestsrc_src_accept_caps),
+ (gst_videotestsrc_setcaps), (gst_videotestsrc_activate),
+ (gst_videotestsrc_init), (gst_videotestsrc_loop):
+ Don't ignore _push() return values.
+ Make sure no processing is done when shutting down.
+ Videotestsrc pad activation fix.
+
+2005-05-05 Wim Taymans <wim@fluendo.com>
+
* gst/adder/Makefile.am:
* gst/adder/gstadder.c: (gst_adder_setcaps),
(gst_adder_class_init), (gst_adder_init),
gst_audio_convert_chain (GstPad * pad, GstBuffer * buf)
{
GstAudioConvert *this;
+ GstFlowReturn ret;
this = GST_AUDIO_CONVERT (GST_OBJECT_PARENT (pad));
* - convert rate and channels
* - convert back to output format
*/
+ GST_STREAM_LOCK (pad);
buf = gst_audio_convert_buffer_to_default_format (this, buf);
-
buf = gst_audio_convert_channels (this, buf);
-
buf = gst_audio_convert_buffer_from_default_format (this, buf);
- return gst_pad_push (this->src, buf);
+ ret = gst_pad_push (this->src, buf);
+
+ GST_STREAM_UNLOCK (pad);
+
+ return ret;
}
static GstCaps *
switch (GST_STATE_TRANSITION (element)) {
case GST_STATE_PAUSED_TO_READY:
+ GST_STREAM_LOCK (this->sink);
this->convert_internal = NULL;
gst_audio_convert_unset_matrix (this);
+ GST_STREAM_UNLOCK (this->sink);
break;
default:
break;
result = TRUE;
break;
+ default:
+ result = FALSE;
+ break;
}
return result;
}
videotestsrc->n_frames++;
videotestsrc->running_time += GST_BUFFER_DURATION (outbuf);
- gst_pad_push (pad, outbuf);
+ if (gst_pad_push (pad, outbuf) != GST_FLOW_OK)
+ goto need_pause;
+
return;
need_pause: