a52dec: trigger renegotiation upon changed stream channels
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Thu, 17 May 2012 10:40:05 +0000 (12:40 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Thu, 17 May 2012 11:08:55 +0000 (13:08 +0200)
Fixes #675451

ext/a52dec/gsta52dec.c

index 290ae47670d3053a0dadfb35ffa98858580c6ece..e9e1e3a4d9d17b9464d4cec5c1afe4ffc99430b7 100644 (file)
@@ -491,11 +491,16 @@ gst_a52dec_handle_frame (GstAudioDecoder * bdec, GstBuffer * buffer)
   /* update stream information, renegotiate or re-streaminfo if needed */
   need_reneg = FALSE;
   if (a52dec->sample_rate != sample_rate) {
+    GST_DEBUG_OBJECT (a52dec, "sample rate changed");
     need_reneg = TRUE;
     a52dec->sample_rate = sample_rate;
   }
 
   if (flags) {
+    if (a52dec->stream_channels != (flags & (A52_CHANNEL_MASK | A52_LFE))) {
+      GST_DEBUG_OBJECT (a52dec, "stream channel flags changed, marking update");
+      a52dec->flag_update = TRUE;
+    }
     a52dec->stream_channels = flags & (A52_CHANNEL_MASK | A52_LFE);
   }