summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2002-06-09 12:26:32 +0000
committerWim Taymans <wim.taymans@gmail.com>2002-06-09 12:26:32 +0000
commit1d77cd3e78bd1a26c7bdfc34f4fc3f3a734bfd7b (patch)
treeb488c56dd81cd753e7210a377dd03bbf0643a537
parent51ce4737e262b9e7c4f6b8274fb4c1190166e8be (diff)
push the dicont right before pushing the new buffer
Original commit message from CVS: push the dicont right before pushing the new buffer
-rw-r--r--ext/mad/gstmad.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/ext/mad/gstmad.c b/ext/mad/gstmad.c
index 43fbac70..de333843 100644
--- a/ext/mad/gstmad.c
+++ b/ext/mad/gstmad.c
@@ -54,6 +54,7 @@ struct _GstMad {
guint64 total_samples; /* the number of samples since the sync point */
gboolean restart;
+ gboolean need_discont;
/* info */
struct mad_header header;
@@ -255,6 +256,7 @@ gst_mad_init (GstMad *mad)
mad->vbr_average = 0;
mad->vbr_rate = 0;
mad->restart = FALSE;
+ mad->need_discont = FALSE;
GST_FLAG_SET (mad, GST_ELEMENT_EVENT_AWARE);
}
@@ -679,7 +681,6 @@ gst_mad_chain (GstPad *pad, GstBuffer *buffer)
gint64 value = GST_EVENT_DISCONT_OFFSET (event, i).value;
gint64 time;
GstFormat format;
- GstEvent *new_event;
/* see how long the input bytes take */
format = GST_FORMAT_TIME;
@@ -691,10 +692,9 @@ gst_mad_chain (GstPad *pad, GstBuffer *buffer)
}
mad->base_time = time;
+ mad->need_discont = TRUE;
gst_event_free (event);
- new_event = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME, time, NULL);
- gst_pad_event_default (pad, new_event);
break;
}
}
@@ -822,6 +822,13 @@ gst_mad_chain (GstPad *pad, GstBuffer *buffer)
}
if (GST_PAD_IS_CONNECTED (mad->srcpad)) {
+ if (mad->need_discont) {
+ GstEvent *discont;
+
+ discont = gst_event_new_discontinuous (FALSE, GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (outbuffer), NULL);
+ gst_pad_push (mad->srcpad, GST_BUFFER (discont));
+ mad->need_discont = FALSE;
+ }
gst_pad_push (mad->srcpad, outbuffer);
}
else {