diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2002-06-09 12:26:32 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2002-06-09 12:26:32 +0000 |
commit | 1d77cd3e78bd1a26c7bdfc34f4fc3f3a734bfd7b (patch) | |
tree | b488c56dd81cd753e7210a377dd03bbf0643a537 | |
parent | 51ce4737e262b9e7c4f6b8274fb4c1190166e8be (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.c | 13 |
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 { |