From 7eeeca8c27c2fc21bc332c201c630b0ac5dfdd65 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 2 Nov 2007 17:23:43 +0000 Subject: gst/law/mulaw-decode.*: Calculate outgoing buffer duration if incoming buffer didn't have a valid duration. Original commit message from CVS: * gst/law/mulaw-decode.c: (mulawdec_sink_setcaps), (gst_mulawdec_chain): * gst/law/mulaw-decode.h: Calculate outgoing buffer duration if incoming buffer didn't have a valid duration. --- ChangeLog | 8 ++++++++ gst/law/mulaw-decode.c | 9 ++++++++- gst/law/mulaw-decode.h | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 3be84fe5..c26c75c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-11-02 Edward Hervey + + * gst/law/mulaw-decode.c: (mulawdec_sink_setcaps), + (gst_mulawdec_chain): + * gst/law/mulaw-decode.h: + Calculate outgoing buffer duration if incoming buffer didn't have a + valid duration. + 2007-10-30 Wim Taymans * gst/qtdemux/qtdemux.c: (gst_qtdemux_activate_segment), diff --git a/gst/law/mulaw-decode.c b/gst/law/mulaw-decode.c index 20ccb523..d7a858e4 100644 --- a/gst/law/mulaw-decode.c +++ b/gst/law/mulaw-decode.c @@ -73,6 +73,9 @@ mulawdec_sink_setcaps (GstPad * pad, GstCaps * caps) "signed", G_TYPE_BOOLEAN, TRUE, "rate", G_TYPE_INT, rate, "channels", G_TYPE_INT, channels, NULL); + mulawdec->rate = rate; + mulawdec->channels = channels; + return TRUE; } @@ -163,7 +166,11 @@ gst_mulawdec_chain (GstPad * pad, GstBuffer * buffer) GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DISCONT); GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buffer); - GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (buffer); + if (GST_BUFFER_DURATION (outbuf) == GST_CLOCK_TIME_NONE) + GST_BUFFER_DURATION (outbuf) = gst_util_uint64_scale_int (GST_SECOND, + mulaw_size * 2, 2 * mulawdec->rate * mulawdec->channels); + else + GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (buffer); gst_buffer_set_caps (outbuf, mulawdec->srccaps); mulaw_decode (mulaw_data, linear_data, mulaw_size); diff --git a/gst/law/mulaw-decode.h b/gst/law/mulaw-decode.h index ee1a14d4..df441892 100644 --- a/gst/law/mulaw-decode.h +++ b/gst/law/mulaw-decode.h @@ -43,6 +43,9 @@ struct _GstMuLawDec { GstPad *sinkpad,*srcpad; GstCaps *srccaps; + + gint rate; + gint channels; }; struct _GstMuLawDecClass { -- cgit