From 7d1ce173830af4c35c654569a232728139dd517e Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Thu, 25 Aug 2005 17:20:02 +0000 Subject: check/: add a test for audioconvert Original commit message from CVS: * check/Makefile.am: * check/elements/audioconvert.c: (setup_audioconvert), (cleanup_audioconvert), (get_int_caps), (verify_convert), (GST_START_TEST), (audioconvert_suite), (main): add a test for audioconvert * gst/audioresample/gstaudioresample.c: * gst/audioresample/gstaudioresample.h: set DURATION so that TIMESTAMP(a) + DURATION(a) == TIMESTAMP(b); note that for buffers of 1/3 sec this means DURATION(c) is one nanosecond more than for a and b --- gst/audioresample/gstaudioresample.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'gst/audioresample/gstaudioresample.c') diff --git a/gst/audioresample/gstaudioresample.c b/gst/audioresample/gstaudioresample.c index cbbfe81a..02537075 100644 --- a/gst/audioresample/gstaudioresample.c +++ b/gst/audioresample/gstaudioresample.c @@ -395,14 +395,20 @@ static GstFlowReturn GST_LOG_OBJECT (audioresample, "resample gave me %d bytes or %d samples", outsize, outsamples); + GST_BUFFER_OFFSET (outbuf) = audioresample->offset; GST_BUFFER_TIMESTAMP (outbuf) = audioresample->offset * GST_SECOND / audioresample->o_rate; - GST_BUFFER_DURATION (outbuf) = - outsamples * GST_SECOND / audioresample->o_rate; - GST_BUFFER_OFFSET (outbuf) = audioresample->offset; + audioresample->offset += outsamples; GST_BUFFER_OFFSET_END (outbuf) = audioresample->offset; + /* we calculate DURATION as the difference between "next" timestamp + * and current timestamp so we ensure a contiguous stream, instead of + * having rounding errors. */ + GST_BUFFER_DURATION (outbuf) = + audioresample->offset * GST_SECOND / audioresample->o_rate - + GST_BUFFER_TIMESTAMP (outbuf); + /* check for possible mem corruption */ if (outsize > GST_BUFFER_SIZE (outbuf)) { /* this is an error that when it happens, would need fixing in the -- cgit v1.2.1