valve: Correctly set the DISCONT flag after dropping buffers

This commit is contained in:
Olivier Crête 2010-09-30 16:22:04 -04:00
parent 18ed4bafb9
commit 0af7cc8ba7

View file

@ -190,18 +190,19 @@ gst_valve_chain (GstPad * pad, GstBuffer * buffer)
GST_OBJECT_LOCK (valve);
drop = valve->drop;
if (!drop && valve->discont) {
buffer = gst_buffer_make_metadata_writable (buffer);
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
valve->discont = FALSE;
}
GST_OBJECT_UNLOCK (valve);
if (drop)
if (drop) {
gst_buffer_unref (buffer);
else
valve->discont = TRUE;
} else {
if (valve->discont) {
buffer = gst_buffer_make_metadata_writable (buffer);
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
}
ret = gst_pad_push (valve->srcpad, buffer);
}
/* Ignore errors if "drop" was changed while the thread was blocked