* commit 'fc6a3ef40d34ce8443ae57c2452f3f273d7d4891':
audio_mix: fix zeroing output channels in certain cases
Merged-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -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; \ |