| Index: webrtc/audio/utility/audio_frame_operations_unittest.cc
|
| diff --git a/webrtc/audio/utility/audio_frame_operations_unittest.cc b/webrtc/audio/utility/audio_frame_operations_unittest.cc
|
| index 36377bd02d8e0db830e7a8353521703908cfc5d1..e3c2d628035621e31aa0ac9107f82c8acdfbfd2c 100644
|
| --- a/webrtc/audio/utility/audio_frame_operations_unittest.cc
|
| +++ b/webrtc/audio/utility/audio_frame_operations_unittest.cc
|
| @@ -27,6 +27,19 @@ class AudioFrameOperationsTest : public ::testing::Test {
|
| AudioFrame frame_;
|
| };
|
|
|
| +void SetFrameData(int16_t ch1,
|
| + int16_t ch2,
|
| + int16_t ch3,
|
| + int16_t ch4,
|
| + AudioFrame* frame) {
|
| + for (size_t i = 0; i < frame->samples_per_channel_ * 4; i += 4) {
|
| + frame->data_[i] = ch1;
|
| + frame->data_[i + 1] = ch2;
|
| + frame->data_[i + 2] = ch3;
|
| + frame->data_[i + 3] = ch4;
|
| + }
|
| +}
|
| +
|
| void SetFrameData(AudioFrame* frame, int16_t left, int16_t right) {
|
| for (size_t i = 0; i < frame->samples_per_channel_ * 2; i += 2) {
|
| frame->data_[i] = left;
|
| @@ -145,6 +158,104 @@ TEST_F(AudioFrameOperationsTest, StereoToMonoDoesNotWrapAround) {
|
| VerifyFramesAreEqual(mono_frame, frame_);
|
| }
|
|
|
| +TEST_F(AudioFrameOperationsTest, QuadToMonoFailsWithBadParameters) {
|
| + frame_.num_channels_ = 1;
|
| + EXPECT_EQ(-1, AudioFrameOperations::QuadToMono(&frame_));
|
| + frame_.num_channels_ = 2;
|
| + EXPECT_EQ(-1, AudioFrameOperations::QuadToMono(&frame_));
|
| +}
|
| +
|
| +TEST_F(AudioFrameOperationsTest, QuadToMonoSucceeds) {
|
| + frame_.num_channels_ = 4;
|
| + SetFrameData(4, 2, 6, 8, &frame_);
|
| + AudioFrame temp_frame;
|
| + temp_frame.CopyFrom(frame_);
|
| + EXPECT_EQ(0, AudioFrameOperations::QuadToMono(&frame_));
|
| +
|
| + AudioFrame mono_frame;
|
| + mono_frame.samples_per_channel_ = 320;
|
| + mono_frame.num_channels_ = 1;
|
| + SetFrameData(&mono_frame, 5);
|
| + VerifyFramesAreEqual(mono_frame, frame_);
|
| +}
|
| +
|
| +TEST_F(AudioFrameOperationsTest, QuadToMonoBufferSucceeds) {
|
| + AudioFrame target_frame;
|
| + frame_.num_channels_ = 4;
|
| + SetFrameData(4, 2, 6, 8, &frame_);
|
| +
|
| + target_frame.num_channels_ = 1;
|
| + target_frame.samples_per_channel_ = frame_.samples_per_channel_;
|
| +
|
| + AudioFrameOperations::QuadToMono(frame_.data_, frame_.samples_per_channel_,
|
| + target_frame.data_);
|
| + AudioFrame mono_frame;
|
| + mono_frame.samples_per_channel_ = 320;
|
| + mono_frame.num_channels_ = 1;
|
| + SetFrameData(&mono_frame, 5);
|
| + VerifyFramesAreEqual(mono_frame, target_frame);
|
| +}
|
| +
|
| +TEST_F(AudioFrameOperationsTest, QuadToMonoDoesNotWrapAround) {
|
| + frame_.num_channels_ = 4;
|
| + SetFrameData(-32768, -32768, -32768, -32768, &frame_);
|
| + EXPECT_EQ(0, AudioFrameOperations::QuadToMono(&frame_));
|
| +
|
| + AudioFrame mono_frame;
|
| + mono_frame.samples_per_channel_ = 320;
|
| + mono_frame.num_channels_ = 1;
|
| + SetFrameData(&mono_frame, -32768);
|
| + VerifyFramesAreEqual(mono_frame, frame_);
|
| +}
|
| +
|
| +TEST_F(AudioFrameOperationsTest, QuadToStereoFailsWithBadParameters) {
|
| + frame_.num_channels_ = 1;
|
| + EXPECT_EQ(-1, AudioFrameOperations::QuadToStereo(&frame_));
|
| + frame_.num_channels_ = 2;
|
| + EXPECT_EQ(-1, AudioFrameOperations::QuadToStereo(&frame_));
|
| +}
|
| +
|
| +TEST_F(AudioFrameOperationsTest, QuadToStereoSucceeds) {
|
| + frame_.num_channels_ = 4;
|
| + SetFrameData(4, 2, 6, 8, &frame_);
|
| + EXPECT_EQ(0, AudioFrameOperations::QuadToStereo(&frame_));
|
| +
|
| + AudioFrame stereo_frame;
|
| + stereo_frame.samples_per_channel_ = 320;
|
| + stereo_frame.num_channels_ = 2;
|
| + SetFrameData(&stereo_frame, 3, 7);
|
| + VerifyFramesAreEqual(stereo_frame, frame_);
|
| +}
|
| +
|
| +TEST_F(AudioFrameOperationsTest, QuadToStereoBufferSucceeds) {
|
| + AudioFrame target_frame;
|
| + frame_.num_channels_ = 4;
|
| + SetFrameData(4, 2, 6, 8, &frame_);
|
| +
|
| + target_frame.num_channels_ = 2;
|
| + target_frame.samples_per_channel_ = frame_.samples_per_channel_;
|
| +
|
| + AudioFrameOperations::QuadToStereo(frame_.data_, frame_.samples_per_channel_,
|
| + target_frame.data_);
|
| + AudioFrame stereo_frame;
|
| + stereo_frame.samples_per_channel_ = 320;
|
| + stereo_frame.num_channels_ = 2;
|
| + SetFrameData(&stereo_frame, 3, 7);
|
| + VerifyFramesAreEqual(stereo_frame, target_frame);
|
| +}
|
| +
|
| +TEST_F(AudioFrameOperationsTest, QuadToStereoDoesNotWrapAround) {
|
| + frame_.num_channels_ = 4;
|
| + SetFrameData(-32768, -32768, -32768, -32768, &frame_);
|
| + EXPECT_EQ(0, AudioFrameOperations::QuadToStereo(&frame_));
|
| +
|
| + AudioFrame stereo_frame;
|
| + stereo_frame.samples_per_channel_ = 320;
|
| + stereo_frame.num_channels_ = 2;
|
| + SetFrameData(&stereo_frame, -32768, -32768);
|
| + VerifyFramesAreEqual(stereo_frame, frame_);
|
| +}
|
| +
|
| TEST_F(AudioFrameOperationsTest, SwapStereoChannelsSucceedsOnStereo) {
|
| SetFrameData(&frame_, 0, 1);
|
|
|
|
|