opusenc: only use mono streams for > 2 channels
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 25 Nov 2011 14:00:18 +0000 (14:00 +0000)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 25 Nov 2011 15:31:59 +0000 (15:31 +0000)
I'm getting odd results with packing streams into stereo
streams, and using only mono streams is enough in all cases.

ext/opus/gstopusenc.c
ext/opus/gstopusheader.c

index a926bbd..c6604c2 100644 (file)
@@ -544,7 +544,7 @@ gst_opus_enc_setup (GstOpusEnc * enc)
 
   enc->state =
       opus_multistream_encoder_create (enc->sample_rate, enc->n_channels,
-      (enc->n_channels + 1) / 2, enc->n_channels / 2, trivial_mapping,
+      enc->n_channels, 0, trivial_mapping,
       enc->audio_or_voip ? OPUS_APPLICATION_AUDIO : OPUS_APPLICATION_VOIP,
       &error);
   if (!enc->state || error != OPUS_OK)
index 1aa3b0d..42df7b3 100644 (file)
@@ -44,8 +44,8 @@ gst_opus_enc_create_id_buffer (gint nchannels, gint sample_rate,
   gst_byte_writer_put_uint16_le (&bw, 0);       /* output gain */
   gst_byte_writer_put_uint8 (&bw, channel_mapping_family);
   if (channel_mapping_family > 0) {
-    gst_byte_writer_put_uint8 (&bw, (nchannels + 1) / 2);
-    gst_byte_writer_put_uint8 (&bw, nchannels / 2);
+    gst_byte_writer_put_uint8 (&bw, nchannels);
+    gst_byte_writer_put_uint8 (&bw, 0);
     gst_byte_writer_put_data (&bw, channel_mapping, nchannels);
   }