opusenc: do not cause the decoder to apply the channel mapping again
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 25 Nov 2011 12:40:31 +0000 (12:40 +0000)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 25 Nov 2011 15:31:59 +0000 (15:31 +0000)
Since we already reorder channels, we do not want to write that
reordering in the header, or the decoder will do it again.

ext/opus/gstopusenc.c

index 6dad531..11ddcc1 100644 (file)
@@ -532,13 +532,17 @@ gst_opus_enc_set_format (GstAudioEncoder * benc, GstAudioInfo * info)
 static gboolean
 gst_opus_enc_setup (GstOpusEnc * enc)
 {
-  int error = OPUS_OK;
+  int error = OPUS_OK, n;
+  guint8 trivial_mapping[256];
 
   GST_DEBUG_OBJECT (enc, "setup");
 
+  for (n = 0; n < 256; ++n)
+    trivial_mapping[n] = n;
+
   enc->state =
       opus_multistream_encoder_create (enc->sample_rate, enc->n_channels,
-      (enc->n_channels + 1) / 2, enc->n_channels / 2, enc->channel_mapping,
+      (enc->n_channels + 1) / 2, enc->n_channels / 2, trivial_mapping,
       enc->audio_or_voip ? OPUS_APPLICATION_AUDIO : OPUS_APPLICATION_VOIP,
       &error);
   if (!enc->state || error != OPUS_OK)