Browse code

Merge commit 'fc6a3ef40d34ce8443ae57c2452f3f273d7d4891'

* commit 'fc6a3ef40d34ce8443ae57c2452f3f273d7d4891':
audio_mix: fix zeroing output channels in certain cases

Merged-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2014/01/04 10:16:30
Showing 1 changed files
... ...
@@ -559,9 +559,12 @@ static void reduce_matrix(AudioMix *am, const double *matrix, int stride)
559 559
         if (zero) {
560 560
             am->output_zero[o] = 1;
561 561
             am->out_matrix_channels--;
562
+            if (o < am->in_channels)
563
+                am->in_matrix_channels--;
562 564
         }
563 565
     }
564
-    if (am->out_matrix_channels == 0) {
566
+    if (am->out_matrix_channels == 0 || am->in_matrix_channels == 0) {
567
+        am->out_matrix_channels = 0;
565 568
         am->in_matrix_channels = 0;
566 569
         return;
567 570
     }
... ...
@@ -683,7 +686,7 @@ int ff_audio_mix_set_matrix(AudioMix *am, const double *matrix, int stride)
683 683
                                      am->in_matrix_channels;                \
684 684
         for (i = 0, i0 = 0; i < am->in_channels; i++) {                     \
685 685
             double v;                                                       \
686
-            if (am->input_skip[i])                                          \
686
+            if (am->input_skip[i] || am->output_zero[i])                    \
687 687
                 continue;                                                   \
688 688
             v = matrix[o * stride + i];                                     \
689 689
             am->matrix_## type[o0][i0] = expr;                              \