speexdec: use correct sample size in conversions
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 18 Sep 2009 09:45:06 +0000 (11:45 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 18 Sep 2009 12:46:38 +0000 (14:46 +0200)
ext/speex/gstspeexdec.c

index 4dd0c0a..7494227 100644 (file)
@@ -218,7 +218,7 @@ speex_dec_convert (GstPad * pad,
     case GST_FORMAT_TIME:
       switch (*dest_format) {
         case GST_FORMAT_BYTES:
-          scale = sizeof (float) * dec->header->nb_channels;
+          scale = 2 * dec->header->nb_channels;
         case GST_FORMAT_DEFAULT:
           *dest_value =
               gst_util_uint64_scale_int (scale * src_value, dec->header->rate,
@@ -232,7 +232,7 @@ speex_dec_convert (GstPad * pad,
     case GST_FORMAT_DEFAULT:
       switch (*dest_format) {
         case GST_FORMAT_BYTES:
-          *dest_value = src_value * sizeof (float) * dec->header->nb_channels;
+          *dest_value = src_value * 2 * dec->header->nb_channels;
           break;
         case GST_FORMAT_TIME:
           *dest_value =
@@ -247,11 +247,11 @@ speex_dec_convert (GstPad * pad,
     case GST_FORMAT_BYTES:
       switch (*dest_format) {
         case GST_FORMAT_DEFAULT:
-          *dest_value = src_value / (sizeof (float) * dec->header->nb_channels);
+          *dest_value = src_value / (2 * dec->header->nb_channels);
           break;
         case GST_FORMAT_TIME:
           *dest_value = gst_util_uint64_scale_int (src_value, GST_SECOND,
-              dec->header->rate * sizeof (float) * dec->header->nb_channels);
+              dec->header->rate * 2 * dec->header->nb_channels);
           break;
         default:
           res = FALSE;