Index: media/cast/audio_sender/audio_encoder_unittest.cc |
diff --git a/media/cast/audio_sender/audio_encoder_unittest.cc b/media/cast/audio_sender/audio_encoder_unittest.cc |
deleted file mode 100644 |
index 60d242c946ff672c00491ab2359d065e82e7f8cc..0000000000000000000000000000000000000000 |
--- a/media/cast/audio_sender/audio_encoder_unittest.cc |
+++ /dev/null |
@@ -1,241 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <stdint.h> |
- |
-#include <sstream> |
-#include <string> |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "media/base/audio_bus.h" |
-#include "media/base/media.h" |
-#include "media/cast/audio_sender/audio_encoder.h" |
-#include "media/cast/cast_environment.h" |
-#include "media/cast/test/fake_single_thread_task_runner.h" |
-#include "media/cast/test/utility/audio_utility.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace media { |
-namespace cast { |
- |
-static const int kNumChannels = 2; |
- |
-namespace { |
- |
-class TestEncodedAudioFrameReceiver { |
- public: |
- explicit TestEncodedAudioFrameReceiver(transport::Codec codec) |
- : codec_(codec), frames_received_(0), rtp_lower_bound_(0) {} |
- virtual ~TestEncodedAudioFrameReceiver() {} |
- |
- int frames_received() const { return frames_received_; } |
- |
- void SetCaptureTimeBounds(const base::TimeTicks& lower_bound, |
- const base::TimeTicks& upper_bound) { |
- lower_bound_ = lower_bound; |
- upper_bound_ = upper_bound; |
- } |
- |
- void FrameEncoded(scoped_ptr<transport::EncodedFrame> encoded_frame) { |
- EXPECT_EQ(encoded_frame->dependency, transport::EncodedFrame::KEY); |
- EXPECT_EQ(static_cast<uint8>(frames_received_ & 0xff), |
- encoded_frame->frame_id); |
- EXPECT_EQ(encoded_frame->frame_id, encoded_frame->referenced_frame_id); |
- // RTP timestamps should be monotonically increasing and integer multiples |
- // of the fixed frame size. |
- EXPECT_LE(rtp_lower_bound_, encoded_frame->rtp_timestamp); |
- rtp_lower_bound_ = encoded_frame->rtp_timestamp; |
- // Note: In audio_encoder.cc, 100 is the fixed audio frame rate. |
- const int kSamplesPerFrame = kDefaultAudioSamplingRate / 100; |
- EXPECT_EQ(0u, encoded_frame->rtp_timestamp % kSamplesPerFrame); |
- EXPECT_TRUE(!encoded_frame->data.empty()); |
- |
- EXPECT_LE(lower_bound_, encoded_frame->reference_time); |
- lower_bound_ = encoded_frame->reference_time; |
- EXPECT_GT(upper_bound_, encoded_frame->reference_time); |
- |
- ++frames_received_; |
- } |
- |
- private: |
- const transport::Codec codec_; |
- int frames_received_; |
- uint32 rtp_lower_bound_; |
- base::TimeTicks lower_bound_; |
- base::TimeTicks upper_bound_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestEncodedAudioFrameReceiver); |
-}; |
- |
-struct TestScenario { |
- const int64* durations_in_ms; |
- size_t num_durations; |
- |
- TestScenario(const int64* d, size_t n) |
- : durations_in_ms(d), num_durations(n) {} |
- |
- std::string ToString() const { |
- std::ostringstream out; |
- for (size_t i = 0; i < num_durations; ++i) { |
- if (i > 0) |
- out << ", "; |
- out << durations_in_ms[i]; |
- } |
- return out.str(); |
- } |
-}; |
- |
-} // namespace |
- |
-class AudioEncoderTest : public ::testing::TestWithParam<TestScenario> { |
- public: |
- AudioEncoderTest() { |
- InitializeMediaLibraryForTesting(); |
- testing_clock_ = new base::SimpleTestTickClock(); |
- testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
- } |
- |
- virtual void SetUp() { |
- task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_); |
- cast_environment_ = |
- new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_).Pass(), |
- task_runner_, |
- task_runner_, |
- task_runner_); |
- } |
- |
- virtual ~AudioEncoderTest() {} |
- |
- void RunTestForCodec(transport::Codec codec) { |
- const TestScenario& scenario = GetParam(); |
- SCOPED_TRACE(::testing::Message() << "Durations: " << scenario.ToString()); |
- |
- CreateObjectsForCodec(codec); |
- |
- // Note: In audio_encoder.cc, 10 ms is the fixed frame duration. |
- const base::TimeDelta frame_duration = |
- base::TimeDelta::FromMilliseconds(10); |
- |
- for (size_t i = 0; i < scenario.num_durations; ++i) { |
- const bool simulate_missing_data = scenario.durations_in_ms[i] < 0; |
- const base::TimeDelta duration = base::TimeDelta::FromMilliseconds( |
- std::abs(scenario.durations_in_ms[i])); |
- receiver_->SetCaptureTimeBounds( |
- testing_clock_->NowTicks() - frame_duration, |
- testing_clock_->NowTicks() + duration); |
- if (simulate_missing_data) { |
- task_runner_->RunTasks(); |
- testing_clock_->Advance(duration); |
- } else { |
- audio_encoder_->InsertAudio(audio_bus_factory_->NextAudioBus(duration), |
- testing_clock_->NowTicks()); |
- task_runner_->RunTasks(); |
- testing_clock_->Advance(duration); |
- } |
- } |
- |
- DVLOG(1) << "Received " << receiver_->frames_received() |
- << " frames for this test run: " << scenario.ToString(); |
- } |
- |
- private: |
- void CreateObjectsForCodec(transport::Codec codec) { |
- audio_bus_factory_.reset( |
- new TestAudioBusFactory(kNumChannels, |
- kDefaultAudioSamplingRate, |
- TestAudioBusFactory::kMiddleANoteFreq, |
- 0.5f)); |
- |
- receiver_.reset(new TestEncodedAudioFrameReceiver(codec)); |
- |
- audio_encoder_.reset(new AudioEncoder( |
- cast_environment_, |
- kNumChannels, |
- kDefaultAudioSamplingRate, |
- kDefaultAudioEncoderBitrate, |
- codec, |
- base::Bind(&TestEncodedAudioFrameReceiver::FrameEncoded, |
- base::Unretained(receiver_.get())))); |
- } |
- |
- base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
- scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
- scoped_ptr<TestAudioBusFactory> audio_bus_factory_; |
- scoped_ptr<TestEncodedAudioFrameReceiver> receiver_; |
- scoped_ptr<AudioEncoder> audio_encoder_; |
- scoped_refptr<CastEnvironment> cast_environment_; |
- |
- DISALLOW_COPY_AND_ASSIGN(AudioEncoderTest); |
-}; |
- |
-TEST_P(AudioEncoderTest, EncodeOpus) { |
- RunTestForCodec(transport::CODEC_AUDIO_OPUS); |
-} |
- |
-TEST_P(AudioEncoderTest, EncodePcm16) { |
- RunTestForCodec(transport::CODEC_AUDIO_PCM16); |
-} |
- |
-static const int64 kOneCall_3Millis[] = {3}; |
-static const int64 kOneCall_10Millis[] = {10}; |
-static const int64 kOneCall_13Millis[] = {13}; |
-static const int64 kOneCall_20Millis[] = {20}; |
- |
-static const int64 kTwoCalls_3Millis[] = {3, 3}; |
-static const int64 kTwoCalls_10Millis[] = {10, 10}; |
-static const int64 kTwoCalls_Mixed1[] = {3, 10}; |
-static const int64 kTwoCalls_Mixed2[] = {10, 3}; |
-static const int64 kTwoCalls_Mixed3[] = {3, 17}; |
-static const int64 kTwoCalls_Mixed4[] = {17, 3}; |
- |
-static const int64 kManyCalls_3Millis[] = {3, 3, 3, 3, 3, 3, 3, 3, |
- 3, 3, 3, 3, 3, 3, 3}; |
-static const int64 kManyCalls_10Millis[] = {10, 10, 10, 10, 10, 10, 10, 10, |
- 10, 10, 10, 10, 10, 10, 10}; |
-static const int64 kManyCalls_Mixed1[] = {3, 10, 3, 10, 3, 10, 3, 10, 3, |
- 10, 3, 10, 3, 10, 3, 10, 3, 10}; |
-static const int64 kManyCalls_Mixed2[] = {10, 3, 10, 3, 10, 3, 10, 3, 10, 3, |
- 10, 3, 10, 3, 10, 3, 10, 3, 10, 3}; |
-static const int64 kManyCalls_Mixed3[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, |
- 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6, 4}; |
-static const int64 kManyCalls_Mixed4[] = {31, 4, 15, 9, 26, 53, 5, 8, 9, |
- 7, 9, 32, 38, 4, 62, 64, 3}; |
-static const int64 kManyCalls_Mixed5[] = {3, 14, 15, 9, 26, 53, 58, 9, 7, |
- 9, 3, 23, 8, 4, 6, 2, 6, 43}; |
- |
-static const int64 kOneBigUnderrun[] = {10, 10, 10, 10, -1000, 10, 10, 10}; |
-static const int64 kTwoBigUnderruns[] = {10, 10, 10, 10, -712, 10, 10, 10, |
- -1311, 10, 10, 10}; |
-static const int64 kMixedUnderruns[] = {31, -64, 4, 15, 9, 26, -53, 5, 8, -9, |
- 7, 9, 32, 38, -4, 62, -64, 3}; |
- |
-INSTANTIATE_TEST_CASE_P( |
- AudioEncoderTestScenarios, |
- AudioEncoderTest, |
- ::testing::Values( |
- TestScenario(kOneCall_3Millis, arraysize(kOneCall_3Millis)), |
- TestScenario(kOneCall_10Millis, arraysize(kOneCall_10Millis)), |
- TestScenario(kOneCall_13Millis, arraysize(kOneCall_13Millis)), |
- TestScenario(kOneCall_20Millis, arraysize(kOneCall_20Millis)), |
- TestScenario(kTwoCalls_3Millis, arraysize(kTwoCalls_3Millis)), |
- TestScenario(kTwoCalls_10Millis, arraysize(kTwoCalls_10Millis)), |
- TestScenario(kTwoCalls_Mixed1, arraysize(kTwoCalls_Mixed1)), |
- TestScenario(kTwoCalls_Mixed2, arraysize(kTwoCalls_Mixed2)), |
- TestScenario(kTwoCalls_Mixed3, arraysize(kTwoCalls_Mixed3)), |
- TestScenario(kTwoCalls_Mixed4, arraysize(kTwoCalls_Mixed4)), |
- TestScenario(kManyCalls_3Millis, arraysize(kManyCalls_3Millis)), |
- TestScenario(kManyCalls_10Millis, arraysize(kManyCalls_10Millis)), |
- TestScenario(kManyCalls_Mixed1, arraysize(kManyCalls_Mixed1)), |
- TestScenario(kManyCalls_Mixed2, arraysize(kManyCalls_Mixed2)), |
- TestScenario(kManyCalls_Mixed3, arraysize(kManyCalls_Mixed3)), |
- TestScenario(kManyCalls_Mixed4, arraysize(kManyCalls_Mixed4)), |
- TestScenario(kManyCalls_Mixed5, arraysize(kManyCalls_Mixed5)), |
- TestScenario(kOneBigUnderrun, arraysize(kOneBigUnderrun)), |
- TestScenario(kTwoBigUnderruns, arraysize(kTwoBigUnderruns)), |
- TestScenario(kMixedUnderruns, arraysize(kMixedUnderruns)))); |
- |
-} // namespace cast |
-} // namespace media |