summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ext/flac/gstflacdec.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c
index 405a6b73..2e04b749 100644
--- a/ext/flac/gstflacdec.c
+++ b/ext/flac/gstflacdec.c
@@ -997,6 +997,17 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame,
guint j, i;
GstClockTime next;
+ /* if a DEFAULT segment is configured, don't send samples past the end
+ * of the segment */
+ if (flacdec->segment.format == GST_FORMAT_DEFAULT &&
+ flacdec->segment.stop != -1 &&
+ flacdec->segment.last_stop > 0 &&
+ flacdec->segment.last_stop + samples > flacdec->segment.stop) {
+ samples = flacdec->segment.stop - flacdec->segment.last_stop;
+ GST_DEBUG_OBJECT (flacdec,
+ "clipping last buffer to %d samples because of segment", samples);
+ }
+
switch (depth) {
case 8:
width = 8;