| Index: media/base/channel_mixer.cc
|
| diff --git a/media/base/channel_mixer.cc b/media/base/channel_mixer.cc
|
| index 4c5179b40a80e579c11a864617c6c8cf610bc0ba..ef1bd5c096e96421f2fc6c02fce1ea3a3f57fa42 100644
|
| --- a/media/base/channel_mixer.cc
|
| +++ b/media/base/channel_mixer.cc
|
| @@ -38,20 +38,18 @@ static void ValidateLayout(ChannelLayout layout) {
|
| // Symmetry allows simplifying the matrix building code by allowing us to
|
| // assume that if one channel of a pair exists, the other will too.
|
| if (channel_count > 1) {
|
| - DCHECK((ChannelOrder(layout, LEFT) >= 0 &&
|
| - ChannelOrder(layout, RIGHT) >= 0) ||
|
| - (ChannelOrder(layout, SIDE_LEFT) >= 0 &&
|
| - ChannelOrder(layout, SIDE_RIGHT) >= 0) ||
|
| - (ChannelOrder(layout, BACK_LEFT) >= 0 &&
|
| - ChannelOrder(layout, BACK_RIGHT) >= 0) ||
|
| - (ChannelOrder(layout, LEFT_OF_CENTER) >= 0 &&
|
| - ChannelOrder(layout, RIGHT_OF_CENTER) >= 0))
|
| - << "Non-symmetric channel layout encountered.";
|
| + // Assert that LEFT exists if and only if RIGHT exists, and so on.
|
| + DCHECK_EQ(ChannelOrder(layout, LEFT) >= 0,
|
| + ChannelOrder(layout, RIGHT) >= 0);
|
| + DCHECK_EQ(ChannelOrder(layout, SIDE_LEFT) >= 0,
|
| + ChannelOrder(layout, SIDE_RIGHT) >= 0);
|
| + DCHECK_EQ(ChannelOrder(layout, BACK_LEFT) >= 0,
|
| + ChannelOrder(layout, BACK_RIGHT) >= 0);
|
| + DCHECK_EQ(ChannelOrder(layout, LEFT_OF_CENTER) >= 0,
|
| + ChannelOrder(layout, RIGHT_OF_CENTER) >= 0);
|
| } else {
|
| DCHECK_EQ(layout, CHANNEL_LAYOUT_MONO);
|
| }
|
| -
|
| - return;
|
| }
|
|
|
| class MatrixBuilder {
|
| @@ -96,19 +94,18 @@ class MatrixBuilder {
|
|
|
| // Helper methods for managing unaccounted input channels.
|
| void AccountFor(Channels ch);
|
| - bool IsUnaccounted(Channels ch);
|
| + bool IsUnaccounted(Channels ch) const;
|
|
|
| // Helper methods for checking if |ch| exists in either |input_layout_| or
|
| // |output_layout_| respectively.
|
| - bool HasInputChannel(Channels ch);
|
| - bool HasOutputChannel(Channels ch);
|
| + bool HasInputChannel(Channels ch) const;
|
| + bool HasOutputChannel(Channels ch) const;
|
|
|
| // Helper methods for updating |matrix_| with the proper value for
|
| // mixing |input_ch| into |output_ch|. MixWithoutAccounting() does not
|
| // remove the channel from |unaccounted_inputs_|.
|
| void Mix(Channels input_ch, Channels output_ch, float scale);
|
| - void MixWithoutAccounting(Channels input_ch, Channels output_ch,
|
| - float scale);
|
| + void MixWithoutAccounting(Channels input_ch, Channels output_ch, float scale);
|
|
|
| DISALLOW_COPY_AND_ASSIGN(MatrixBuilder);
|
| };
|
| @@ -219,8 +216,8 @@ bool MatrixBuilder::CreateTransformationMatrix(
|
| // Mix back LR into: side LR || back center || front LR || front center.
|
| if (IsUnaccounted(BACK_LEFT)) {
|
| if (HasOutputChannel(SIDE_LEFT)) {
|
| - // If we have side LR, mix back LR into side LR, but instead if the input
|
| - // doesn't have side LR (but output does) copy back LR to side LR.
|
| + // If the input has side LR, mix back LR into side LR, but instead if the
|
| + // input doesn't have side LR (but output does) copy back LR to side LR.
|
| float scale = HasInputChannel(SIDE_LEFT) ? kEqualPowerScale : 1;
|
| Mix(BACK_LEFT, SIDE_LEFT, scale);
|
| Mix(BACK_RIGHT, SIDE_RIGHT, scale);
|
| @@ -242,8 +239,8 @@ bool MatrixBuilder::CreateTransformationMatrix(
|
| // Mix side LR into: back LR || back center || front LR || front center.
|
| if (IsUnaccounted(SIDE_LEFT)) {
|
| if (HasOutputChannel(BACK_LEFT)) {
|
| - // If we have back LR, mix side LR into back LR, but instead if the input
|
| - // doesn't have back LR (but output does) copy side LR to back LR.
|
| + // If the input has back LR, mix side LR into back LR, but instead if the
|
| + // input doesn't have back LR (but output does) copy side LR to back LR.
|
| float scale = HasInputChannel(BACK_LEFT) ? kEqualPowerScale : 1;
|
| Mix(SIDE_LEFT, BACK_LEFT, scale);
|
| Mix(SIDE_RIGHT, BACK_RIGHT, scale);
|
| @@ -284,7 +281,7 @@ bool MatrixBuilder::CreateTransformationMatrix(
|
| }
|
| }
|
|
|
| - // Mix LR of center into: front center || front LR.
|
| + // Mix LR of center into: front LR || front center.
|
| if (IsUnaccounted(LEFT_OF_CENTER)) {
|
| if (HasOutputChannel(LEFT)) {
|
| // Mix LR of center into front LR.
|
| @@ -297,7 +294,7 @@ bool MatrixBuilder::CreateTransformationMatrix(
|
| }
|
| }
|
|
|
| - // Mix LFE into: front LR || front center.
|
| + // Mix LFE into: front center || front LR.
|
| if (IsUnaccounted(LFE)) {
|
| if (!HasOutputChannel(CENTER)) {
|
| // Mix LFE into front LR.
|
| @@ -373,16 +370,16 @@ void MatrixBuilder::AccountFor(Channels ch) {
|
| unaccounted_inputs_.begin(), unaccounted_inputs_.end(), ch));
|
| }
|
|
|
| -bool MatrixBuilder::IsUnaccounted(Channels ch) {
|
| +bool MatrixBuilder::IsUnaccounted(Channels ch) const {
|
| return std::find(unaccounted_inputs_.begin(), unaccounted_inputs_.end(),
|
| ch) != unaccounted_inputs_.end();
|
| }
|
|
|
| -bool MatrixBuilder::HasInputChannel(Channels ch) {
|
| +bool MatrixBuilder::HasInputChannel(Channels ch) const {
|
| return ChannelOrder(input_layout_, ch) >= 0;
|
| }
|
|
|
| -bool MatrixBuilder::HasOutputChannel(Channels ch) {
|
| +bool MatrixBuilder::HasOutputChannel(Channels ch) const {
|
| return ChannelOrder(output_layout_, ch) >= 0;
|
| }
|
|
|
|
|