Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: media/cast/audio_receiver/audio_decoder_unittest.cc

Issue 145443005: Fixes for memory and threading issues in cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix compile Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/test/simple_test_tick_clock.h" 5 #include "base/test/simple_test_tick_clock.h"
6 #include "media/cast/audio_receiver/audio_decoder.h" 6 #include "media/cast/audio_receiver/audio_decoder.h"
7 #include "media/cast/cast_environment.h" 7 #include "media/cast/cast_environment.h"
8 #include "media/cast/test/fake_task_runner.h" 8 #include "media/cast/test/fake_task_runner.h"
9 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
10 10
11 namespace media { 11 namespace media {
12 namespace cast { 12 namespace cast {
13 13
14 namespace { 14 namespace {
15 class TestRtpPayloadFeedback : public RtpPayloadFeedback { 15 class TestRtpPayloadFeedback : public RtpPayloadFeedback {
16 public: 16 public:
17 TestRtpPayloadFeedback() {} 17 TestRtpPayloadFeedback() {}
18 virtual ~TestRtpPayloadFeedback() {} 18 virtual ~TestRtpPayloadFeedback() {}
19 19
20 virtual void CastFeedback(const RtcpCastMessage& cast_feedback) OVERRIDE { 20 virtual void CastFeedback(const RtcpCastMessage& cast_feedback) OVERRIDE {
21 EXPECT_EQ(1u, cast_feedback.ack_frame_id_); 21 EXPECT_EQ(1u, cast_feedback.ack_frame_id_);
22 EXPECT_EQ(0u, cast_feedback.missing_frames_and_packets_.size()); 22 EXPECT_EQ(0u, cast_feedback.missing_frames_and_packets_.size());
23 } 23 }
24 }; 24 };
25 } // namespace. 25 } // namespace.
26 26
27 class AudioDecoderTest : public ::testing::Test { 27 class AudioDecoderTest : public ::testing::Test {
28 protected: 28 protected:
29 AudioDecoderTest() { 29 AudioDecoderTest() {
30 testing_clock_.Advance(base::TimeDelta::FromMilliseconds(1234)); 30 testing_clock_ = new base::SimpleTestTickClock();
31 task_runner_ = new test::FakeTaskRunner(&testing_clock_); 31 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1234));
32 cast_environment_ = new CastEnvironment(&testing_clock_, task_runner_, 32 task_runner_ = new test::FakeTaskRunner(testing_clock_);
33 cast_environment_ = new CastEnvironment(
34 scoped_ptr<base::TickClock>(testing_clock_).Pass(), task_runner_,
33 task_runner_, task_runner_, task_runner_, task_runner_, task_runner_, 35 task_runner_, task_runner_, task_runner_, task_runner_, task_runner_,
34 GetDefaultCastReceiverLoggingConfig()); 36 GetDefaultCastReceiverLoggingConfig());
35 } 37 }
36 virtual ~AudioDecoderTest() {} 38 virtual ~AudioDecoderTest() {}
37 39
38 void Configure(const AudioReceiverConfig& audio_config) { 40 void Configure(const AudioReceiverConfig& audio_config) {
39 audio_decoder_.reset( 41 audio_decoder_.reset(
40 new AudioDecoder(cast_environment_, audio_config, &cast_feedback_)); 42 new AudioDecoder(cast_environment_, audio_config, &cast_feedback_));
41 } 43 }
42 44
43 TestRtpPayloadFeedback cast_feedback_; 45 TestRtpPayloadFeedback cast_feedback_;
44 base::SimpleTestTickClock testing_clock_; 46 // Owned by CastEnvironment.
47 base::SimpleTestTickClock* testing_clock_;
45 scoped_refptr<test::FakeTaskRunner> task_runner_; 48 scoped_refptr<test::FakeTaskRunner> task_runner_;
46 scoped_refptr<CastEnvironment> cast_environment_; 49 scoped_refptr<CastEnvironment> cast_environment_;
47 scoped_ptr<AudioDecoder> audio_decoder_; 50 scoped_ptr<AudioDecoder> audio_decoder_;
48 }; 51 };
49 52
50 TEST_F(AudioDecoderTest, Pcm16MonoNoResampleOnePacket) { 53 TEST_F(AudioDecoderTest, Pcm16MonoNoResampleOnePacket) {
51 AudioReceiverConfig audio_config; 54 AudioReceiverConfig audio_config;
52 audio_config.rtp_payload_type = 127; 55 audio_config.rtp_payload_type = 127;
53 audio_config.frequency = 16000; 56 audio_config.frequency = 16000;
54 audio_config.channels = 1; 57 audio_config.channels = 1;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 &audio_frame, 158 &audio_frame,
156 &rtp_timestamp)); 159 &rtp_timestamp));
157 EXPECT_EQ(2, audio_frame.channels); 160 EXPECT_EQ(2, audio_frame.channels);
158 EXPECT_EQ(16000, audio_frame.frequency); 161 EXPECT_EQ(16000, audio_frame.frequency);
159 EXPECT_EQ(640ul, audio_frame.samples.size()); 162 EXPECT_EQ(640ul, audio_frame.samples.size());
160 for (size_t i = 0; i < audio_frame.samples.size(); ++i) { 163 for (size_t i = 0; i < audio_frame.samples.size(); ++i) {
161 EXPECT_NEAR(0x3412, audio_frame.samples[i], 1000); 164 EXPECT_NEAR(0x3412, audio_frame.samples[i], 1000);
162 } 165 }
163 // Test cast callback. 166 // Test cast callback.
164 audio_decoder_->SendCastMessage(); 167 audio_decoder_->SendCastMessage();
165 testing_clock_.Advance(base::TimeDelta::FromMilliseconds(33)); 168 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(33));
166 audio_decoder_->SendCastMessage(); 169 audio_decoder_->SendCastMessage();
167 } 170 }
168 171
169 TEST_F(AudioDecoderTest, Pcm16Resample) { 172 TEST_F(AudioDecoderTest, Pcm16Resample) {
170 AudioReceiverConfig audio_config; 173 AudioReceiverConfig audio_config;
171 audio_config.rtp_payload_type = 127; 174 audio_config.rtp_payload_type = 127;
172 audio_config.frequency = 16000; 175 audio_config.frequency = 16000;
173 audio_config.channels = 2; 176 audio_config.channels = 2;
174 audio_config.codec = transport::kPcm16; 177 audio_config.codec = transport::kPcm16;
175 audio_config.use_external_decoder = false; 178 audio_config.use_external_decoder = false;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 // Resampling makes the variance worse. 214 // Resampling makes the variance worse.
212 for (size_t i = 100 * audio_config.channels; i < audio_frame.samples.size(); 215 for (size_t i = 100 * audio_config.channels; i < audio_frame.samples.size();
213 ++i) { 216 ++i) {
214 EXPECT_NEAR(0x3412, audio_frame.samples[i], 400); 217 EXPECT_NEAR(0x3412, audio_frame.samples[i], 400);
215 if (0x3412 == audio_frame.samples[i]) count++; 218 if (0x3412 == audio_frame.samples[i]) count++;
216 } 219 }
217 } 220 }
218 221
219 } // namespace cast 222 } // namespace cast
220 } // namespace media 223 } // namespace media
OLDNEW
« no previous file with comments | « chrome/renderer/media/cast_session_delegate.cc ('k') | media/cast/audio_receiver/audio_receiver_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698