lavr: mix front center channel as indicated in the ATSC A/52 specification.

When mixing 3 front channels into 2, the center channel is mixed into left and right with the center mix level, not -3dB.
This commit is contained in:
Tim Walker 2014-01-15 00:18:19 +00:00
parent c0c45188e5
commit 76a75c523c

View File

@ -126,8 +126,13 @@ int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout,
/* mix front center to front left/right */
if (unaccounted & AV_CH_FRONT_CENTER) {
if ((out_layout & AV_CH_LAYOUT_STEREO) == AV_CH_LAYOUT_STEREO) {
matrix[FRONT_LEFT ][FRONT_CENTER] += M_SQRT1_2;
matrix[FRONT_RIGHT][FRONT_CENTER] += M_SQRT1_2;
if ((in_layout & AV_CH_LAYOUT_STEREO) == AV_CH_LAYOUT_STEREO) {
matrix[FRONT_LEFT ][FRONT_CENTER] += center_mix_level;
matrix[FRONT_RIGHT][FRONT_CENTER] += center_mix_level;
} else {
matrix[FRONT_LEFT ][FRONT_CENTER] += M_SQRT1_2;
matrix[FRONT_RIGHT][FRONT_CENTER] += M_SQRT1_2;
}
} else
return AVERROR_PATCHWELCOME;
}