| Index: webrtc/modules/utility/source/audio_frame_operations_unittest.cc
 | 
| diff --git a/webrtc/modules/utility/source/audio_frame_operations_unittest.cc b/webrtc/modules/utility/source/audio_frame_operations_unittest.cc
 | 
| deleted file mode 100644
 | 
| index 8f83e051ee19ffc8af6f8533532bc4c926be1f2b..0000000000000000000000000000000000000000
 | 
| --- a/webrtc/modules/utility/source/audio_frame_operations_unittest.cc
 | 
| +++ /dev/null
 | 
| @@ -1,369 +0,0 @@
 | 
| -/*
 | 
| - *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
 | 
| - *
 | 
| - *  Use of this source code is governed by a BSD-style license
 | 
| - *  that can be found in the LICENSE file in the root of the source
 | 
| - *  tree. An additional intellectual property rights grant can be found
 | 
| - *  in the file PATENTS.  All contributing project authors may
 | 
| - *  be found in the AUTHORS file in the root of the source tree.
 | 
| - */
 | 
| -
 | 
| -#include "webrtc/base/checks.h"
 | 
| -#include "webrtc/modules/include/module_common_types.h"
 | 
| -#include "webrtc/modules/utility/include/audio_frame_operations.h"
 | 
| -#include "webrtc/test/gtest.h"
 | 
| -
 | 
| -namespace webrtc {
 | 
| -namespace {
 | 
| -
 | 
| -class AudioFrameOperationsTest : public ::testing::Test {
 | 
| - protected:
 | 
| -  AudioFrameOperationsTest() {
 | 
| -    // Set typical values.
 | 
| -    frame_.samples_per_channel_ = 320;
 | 
| -    frame_.num_channels_ = 2;
 | 
| -  }
 | 
| -
 | 
| -  AudioFrame frame_;
 | 
| -};
 | 
| -
 | 
| -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;
 | 
| -    frame->data_[i + 1] = right;
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void SetFrameData(AudioFrame* frame, int16_t data) {
 | 
| -  for (size_t i = 0; i < frame->samples_per_channel_; i++) {
 | 
| -    frame->data_[i] = data;
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void VerifyFramesAreEqual(const AudioFrame& frame1, const AudioFrame& frame2) {
 | 
| -  EXPECT_EQ(frame1.num_channels_, frame2.num_channels_);
 | 
| -  EXPECT_EQ(frame1.samples_per_channel_,
 | 
| -            frame2.samples_per_channel_);
 | 
| -  for (size_t i = 0; i < frame1.samples_per_channel_ * frame1.num_channels_;
 | 
| -      i++) {
 | 
| -    EXPECT_EQ(frame1.data_[i], frame2.data_[i]);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void InitFrame(AudioFrame* frame, size_t channels, size_t samples_per_channel,
 | 
| -               int16_t left_data, int16_t right_data) {
 | 
| -  RTC_DCHECK(frame);
 | 
| -  RTC_DCHECK_GE(2, channels);
 | 
| -  RTC_DCHECK_GE(AudioFrame::kMaxDataSizeSamples,
 | 
| -                samples_per_channel * channels);
 | 
| -  frame->samples_per_channel_ = samples_per_channel;
 | 
| -  frame->num_channels_ = channels;
 | 
| -  if (channels == 2) {
 | 
| -    SetFrameData(frame, left_data, right_data);
 | 
| -  } else if (channels == 1) {
 | 
| -    SetFrameData(frame, left_data);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -int16_t GetChannelData(const AudioFrame& frame, size_t channel, size_t index) {
 | 
| -  RTC_DCHECK_LT(channel, frame.num_channels_);
 | 
| -  RTC_DCHECK_LT(index, frame.samples_per_channel_);
 | 
| -  return frame.data_[index * frame.num_channels_ + channel];
 | 
| -}
 | 
| -
 | 
| -void VerifyFrameDataBounds(const AudioFrame& frame, size_t channel, int16_t max,
 | 
| -                           int16_t min) {
 | 
| -  for (size_t i = 0; i < frame.samples_per_channel_; ++i) {
 | 
| -    int16_t s = GetChannelData(frame, channel, i);
 | 
| -    EXPECT_LE(min, s);
 | 
| -    EXPECT_GE(max, s);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MonoToStereoFailsWithBadParameters) {
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::MonoToStereo(&frame_));
 | 
| -
 | 
| -  frame_.samples_per_channel_ = AudioFrame::kMaxDataSizeSamples;
 | 
| -  frame_.num_channels_ = 1;
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::MonoToStereo(&frame_));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MonoToStereoSucceeds) {
 | 
| -  frame_.num_channels_ = 1;
 | 
| -  SetFrameData(&frame_, 1);
 | 
| -  AudioFrame temp_frame;
 | 
| -  temp_frame.CopyFrom(frame_);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::MonoToStereo(&frame_));
 | 
| -
 | 
| -  AudioFrame stereo_frame;
 | 
| -  stereo_frame.samples_per_channel_ = 320;
 | 
| -  stereo_frame.num_channels_ = 2;
 | 
| -  SetFrameData(&stereo_frame, 1, 1);
 | 
| -  VerifyFramesAreEqual(stereo_frame, frame_);
 | 
| -
 | 
| -  SetFrameData(&frame_, 0);
 | 
| -  AudioFrameOperations::MonoToStereo(temp_frame.data_,
 | 
| -                                     frame_.samples_per_channel_,
 | 
| -                                     frame_.data_);
 | 
| -  frame_.num_channels_ = 2;  // Need to set manually.
 | 
| -  VerifyFramesAreEqual(stereo_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, StereoToMonoFailsWithBadParameters) {
 | 
| -  frame_.num_channels_ = 1;
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::StereoToMono(&frame_));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, StereoToMonoSucceeds) {
 | 
| -  SetFrameData(&frame_, 4, 2);
 | 
| -  AudioFrame temp_frame;
 | 
| -  temp_frame.CopyFrom(frame_);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::StereoToMono(&frame_));
 | 
| -
 | 
| -  AudioFrame mono_frame;
 | 
| -  mono_frame.samples_per_channel_ = 320;
 | 
| -  mono_frame.num_channels_ = 1;
 | 
| -  SetFrameData(&mono_frame, 3);
 | 
| -  VerifyFramesAreEqual(mono_frame, frame_);
 | 
| -
 | 
| -  SetFrameData(&frame_, 0);
 | 
| -  AudioFrameOperations::StereoToMono(temp_frame.data_,
 | 
| -                                     frame_.samples_per_channel_,
 | 
| -                                     frame_.data_);
 | 
| -  frame_.num_channels_ = 1;  // Need to set manually.
 | 
| -  VerifyFramesAreEqual(mono_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, StereoToMonoDoesNotWrapAround) {
 | 
| -  SetFrameData(&frame_, -32768, -32768);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::StereoToMono(&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, SwapStereoChannelsSucceedsOnStereo) {
 | 
| -  SetFrameData(&frame_, 0, 1);
 | 
| -
 | 
| -  AudioFrame swapped_frame;
 | 
| -  swapped_frame.samples_per_channel_ = 320;
 | 
| -  swapped_frame.num_channels_ = 2;
 | 
| -  SetFrameData(&swapped_frame, 1, 0);
 | 
| -
 | 
| -  AudioFrameOperations::SwapStereoChannels(&frame_);
 | 
| -  VerifyFramesAreEqual(swapped_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, SwapStereoChannelsFailsOnMono) {
 | 
| -  frame_.num_channels_ = 1;
 | 
| -  // Set data to "stereo", despite it being a mono frame.
 | 
| -  SetFrameData(&frame_, 0, 1);
 | 
| -
 | 
| -  AudioFrame orig_frame;
 | 
| -  orig_frame.CopyFrom(frame_);
 | 
| -  AudioFrameOperations::SwapStereoChannels(&frame_);
 | 
| -  // Verify that no swap occurred.
 | 
| -  VerifyFramesAreEqual(orig_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteDisabled) {
 | 
| -  SetFrameData(&frame_, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, false, false);
 | 
| -
 | 
| -  AudioFrame muted_frame;
 | 
| -  muted_frame.samples_per_channel_ = 320;
 | 
| -  muted_frame.num_channels_ = 2;
 | 
| -  SetFrameData(&muted_frame, 1000, -1000);
 | 
| -  VerifyFramesAreEqual(muted_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteEnabled) {
 | 
| -  SetFrameData(&frame_, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, true, true);
 | 
| -
 | 
| -  AudioFrame muted_frame;
 | 
| -  muted_frame.samples_per_channel_ = 320;
 | 
| -  muted_frame.num_channels_ = 2;
 | 
| -  SetFrameData(&muted_frame, 0, 0);
 | 
| -  VerifyFramesAreEqual(muted_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -// Verify that *beginning* to mute works for short and long (>128) frames, mono
 | 
| -// and stereo. Beginning mute should yield a ramp down to zero.
 | 
| -TEST_F(AudioFrameOperationsTest, MuteBeginMonoLong) {
 | 
| -  InitFrame(&frame_, 1, 228, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, false, true);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  EXPECT_EQ(1000, GetChannelData(frame_, 0, 99));
 | 
| -  EXPECT_EQ(992, GetChannelData(frame_, 0, 100));
 | 
| -  EXPECT_EQ(7, GetChannelData(frame_, 0, 226));
 | 
| -  EXPECT_EQ(0, GetChannelData(frame_, 0, 227));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteBeginMonoShort) {
 | 
| -  InitFrame(&frame_, 1, 93, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, false, true);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  EXPECT_EQ(989, GetChannelData(frame_, 0, 0));
 | 
| -  EXPECT_EQ(978, GetChannelData(frame_, 0, 1));
 | 
| -  EXPECT_EQ(10, GetChannelData(frame_, 0, 91));
 | 
| -  EXPECT_EQ(0, GetChannelData(frame_, 0, 92));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteBeginStereoLong) {
 | 
| -  InitFrame(&frame_, 2, 228, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, false, true);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  VerifyFrameDataBounds(frame_, 1, 0, -1000);
 | 
| -  EXPECT_EQ(1000, GetChannelData(frame_, 0, 99));
 | 
| -  EXPECT_EQ(-1000, GetChannelData(frame_, 1, 99));
 | 
| -  EXPECT_EQ(992, GetChannelData(frame_, 0, 100));
 | 
| -  EXPECT_EQ(-992, GetChannelData(frame_, 1, 100));
 | 
| -  EXPECT_EQ(7, GetChannelData(frame_, 0, 226));
 | 
| -  EXPECT_EQ(-7, GetChannelData(frame_, 1, 226));
 | 
| -  EXPECT_EQ(0, GetChannelData(frame_, 0, 227));
 | 
| -  EXPECT_EQ(0, GetChannelData(frame_, 1, 227));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteBeginStereoShort) {
 | 
| -  InitFrame(&frame_, 2, 93, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, false, true);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  VerifyFrameDataBounds(frame_, 1, 0, -1000);
 | 
| -  EXPECT_EQ(989, GetChannelData(frame_, 0, 0));
 | 
| -  EXPECT_EQ(-989, GetChannelData(frame_, 1, 0));
 | 
| -  EXPECT_EQ(978, GetChannelData(frame_, 0, 1));
 | 
| -  EXPECT_EQ(-978, GetChannelData(frame_, 1, 1));
 | 
| -  EXPECT_EQ(10, GetChannelData(frame_, 0, 91));
 | 
| -  EXPECT_EQ(-10, GetChannelData(frame_, 1, 91));
 | 
| -  EXPECT_EQ(0, GetChannelData(frame_, 0, 92));
 | 
| -  EXPECT_EQ(0, GetChannelData(frame_, 1, 92));
 | 
| -}
 | 
| -
 | 
| -// Verify that *ending* to mute works for short and long (>128) frames, mono
 | 
| -// and stereo. Ending mute should yield a ramp up from zero.
 | 
| -TEST_F(AudioFrameOperationsTest, MuteEndMonoLong) {
 | 
| -  InitFrame(&frame_, 1, 228, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, true, false);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  EXPECT_EQ(7, GetChannelData(frame_, 0, 0));
 | 
| -  EXPECT_EQ(15, GetChannelData(frame_, 0, 1));
 | 
| -  EXPECT_EQ(1000, GetChannelData(frame_, 0, 127));
 | 
| -  EXPECT_EQ(1000, GetChannelData(frame_, 0, 128));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteEndMonoShort) {
 | 
| -  InitFrame(&frame_, 1, 93, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, true, false);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  EXPECT_EQ(10, GetChannelData(frame_, 0, 0));
 | 
| -  EXPECT_EQ(21, GetChannelData(frame_, 0, 1));
 | 
| -  EXPECT_EQ(989, GetChannelData(frame_, 0, 91));
 | 
| -  EXPECT_EQ(999, GetChannelData(frame_, 0, 92));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteEndStereoLong) {
 | 
| -  InitFrame(&frame_, 2, 228, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, true, false);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  VerifyFrameDataBounds(frame_, 1, 0, -1000);
 | 
| -  EXPECT_EQ(7, GetChannelData(frame_, 0, 0));
 | 
| -  EXPECT_EQ(-7, GetChannelData(frame_, 1, 0));
 | 
| -  EXPECT_EQ(15, GetChannelData(frame_, 0, 1));
 | 
| -  EXPECT_EQ(-15, GetChannelData(frame_, 1, 1));
 | 
| -  EXPECT_EQ(1000, GetChannelData(frame_, 0, 127));
 | 
| -  EXPECT_EQ(-1000, GetChannelData(frame_, 1, 127));
 | 
| -  EXPECT_EQ(1000, GetChannelData(frame_, 0, 128));
 | 
| -  EXPECT_EQ(-1000, GetChannelData(frame_, 1, 128));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, MuteEndStereoShort) {
 | 
| -  InitFrame(&frame_, 2, 93, 1000, -1000);
 | 
| -  AudioFrameOperations::Mute(&frame_, true, false);
 | 
| -  VerifyFrameDataBounds(frame_, 0, 1000, 0);
 | 
| -  VerifyFrameDataBounds(frame_, 1, 0, -1000);
 | 
| -  EXPECT_EQ(10, GetChannelData(frame_, 0, 0));
 | 
| -  EXPECT_EQ(-10, GetChannelData(frame_, 1, 0));
 | 
| -  EXPECT_EQ(21, GetChannelData(frame_, 0, 1));
 | 
| -  EXPECT_EQ(-21, GetChannelData(frame_, 1, 1));
 | 
| -  EXPECT_EQ(989, GetChannelData(frame_, 0, 91));
 | 
| -  EXPECT_EQ(-989, GetChannelData(frame_, 1, 91));
 | 
| -  EXPECT_EQ(999, GetChannelData(frame_, 0, 92));
 | 
| -  EXPECT_EQ(-999, GetChannelData(frame_, 1, 92));
 | 
| -}
 | 
| -
 | 
| -// TODO(andrew): should not allow negative scales.
 | 
| -TEST_F(AudioFrameOperationsTest, DISABLED_ScaleFailsWithBadParameters) {
 | 
| -  frame_.num_channels_ = 1;
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, frame_));
 | 
| -
 | 
| -  frame_.num_channels_ = 3;
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, frame_));
 | 
| -
 | 
| -  frame_.num_channels_ = 2;
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::Scale(-1.0, 1.0, frame_));
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, -1.0, frame_));
 | 
| -}
 | 
| -
 | 
| -// TODO(andrew): fix the wraparound bug. We should always saturate.
 | 
| -TEST_F(AudioFrameOperationsTest, DISABLED_ScaleDoesNotWrapAround) {
 | 
| -  SetFrameData(&frame_, 4000, -4000);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::Scale(10.0, 10.0, frame_));
 | 
| -
 | 
| -  AudioFrame clipped_frame;
 | 
| -  clipped_frame.samples_per_channel_ = 320;
 | 
| -  clipped_frame.num_channels_ = 2;
 | 
| -  SetFrameData(&clipped_frame, 32767, -32768);
 | 
| -  VerifyFramesAreEqual(clipped_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, ScaleSucceeds) {
 | 
| -  SetFrameData(&frame_, 1, -1);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::Scale(2.0, 3.0, frame_));
 | 
| -
 | 
| -  AudioFrame scaled_frame;
 | 
| -  scaled_frame.samples_per_channel_ = 320;
 | 
| -  scaled_frame.num_channels_ = 2;
 | 
| -  SetFrameData(&scaled_frame, 2, -3);
 | 
| -  VerifyFramesAreEqual(scaled_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -// TODO(andrew): should fail with a negative scale.
 | 
| -TEST_F(AudioFrameOperationsTest, DISABLED_ScaleWithSatFailsWithBadParameters) {
 | 
| -  EXPECT_EQ(-1, AudioFrameOperations::ScaleWithSat(-1.0, frame_));
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, ScaleWithSatDoesNotWrapAround) {
 | 
| -  frame_.num_channels_ = 1;
 | 
| -  SetFrameData(&frame_, 4000);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(10.0, frame_));
 | 
| -
 | 
| -  AudioFrame clipped_frame;
 | 
| -  clipped_frame.samples_per_channel_ = 320;
 | 
| -  clipped_frame.num_channels_ = 1;
 | 
| -  SetFrameData(&clipped_frame, 32767);
 | 
| -  VerifyFramesAreEqual(clipped_frame, frame_);
 | 
| -
 | 
| -  SetFrameData(&frame_, -4000);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(10.0, frame_));
 | 
| -  SetFrameData(&clipped_frame, -32768);
 | 
| -  VerifyFramesAreEqual(clipped_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -TEST_F(AudioFrameOperationsTest, ScaleWithSatSucceeds) {
 | 
| -  frame_.num_channels_ = 1;
 | 
| -  SetFrameData(&frame_, 1);
 | 
| -  EXPECT_EQ(0, AudioFrameOperations::ScaleWithSat(2.0, frame_));
 | 
| -
 | 
| -  AudioFrame scaled_frame;
 | 
| -  scaled_frame.samples_per_channel_ = 320;
 | 
| -  scaled_frame.num_channels_ = 1;
 | 
| -  SetFrameData(&scaled_frame, 2);
 | 
| -  VerifyFramesAreEqual(scaled_frame, frame_);
 | 
| -}
 | 
| -
 | 
| -}  // namespace
 | 
| -}  // namespace webrtc
 | 
| 
 |