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

Side by Side Diff: chromecast/renderer/media/multi_demuxer_stream_adapter_unittest.cc

Issue 1372393007: [Chromecast] Upgrade to new CMA backend API (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Address alokp@ comments Created 5 years, 2 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
11 #include "base/threading/thread.h" 11 #include "base/threading/thread.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h" 13 #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h"
14 #include "chromecast/media/cma/base/decoder_buffer_base.h" 14 #include "chromecast/media/cma/base/decoder_buffer_base.h"
15 #include "chromecast/media/cma/filters/demuxer_stream_adapter.h"
16 #include "chromecast/media/cma/test/demuxer_stream_for_test.h"
17 #include "chromecast/public/media/cast_decoder_buffer.h" 15 #include "chromecast/public/media/cast_decoder_buffer.h"
16 #include "chromecast/renderer/media/demuxer_stream_adapter.h"
17 #include "chromecast/renderer/media/demuxer_stream_for_test.h"
18 #include "media/base/audio_decoder_config.h" 18 #include "media/base/audio_decoder_config.h"
19 #include "media/base/decoder_buffer.h" 19 #include "media/base/decoder_buffer.h"
20 #include "media/base/demuxer_stream.h" 20 #include "media/base/demuxer_stream.h"
21 #include "media/base/video_decoder_config.h" 21 #include "media/base/video_decoder_config.h"
22 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
23 23
24 namespace chromecast { 24 namespace chromecast {
25 namespace media { 25 namespace media {
26 26
27 namespace { 27 namespace {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 }; 69 };
70 70
71 MultiDemuxerStreamAdaptersTest::MultiDemuxerStreamAdaptersTest() { 71 MultiDemuxerStreamAdaptersTest::MultiDemuxerStreamAdaptersTest() {
72 } 72 }
73 73
74 MultiDemuxerStreamAdaptersTest::~MultiDemuxerStreamAdaptersTest() { 74 MultiDemuxerStreamAdaptersTest::~MultiDemuxerStreamAdaptersTest() {
75 } 75 }
76 76
77 void MultiDemuxerStreamAdaptersTest::Start() { 77 void MultiDemuxerStreamAdaptersTest::Start() {
78 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 78 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
79 FROM_HERE, base::Bind(&MultiDemuxerStreamAdaptersTest::OnTestTimeout, 79 FROM_HERE,
80 base::Unretained(this)), 80 base::Bind(&MultiDemuxerStreamAdaptersTest::OnTestTimeout,
81 base::Unretained(this)),
81 base::TimeDelta::FromSeconds(5)); 82 base::TimeDelta::FromSeconds(5));
82 83
83 media_task_runner_factory_ = new BalancedMediaTaskRunnerFactory( 84 media_task_runner_factory_ = new BalancedMediaTaskRunnerFactory(
84 base::TimeDelta::FromMilliseconds(kMaxPtsDiffMs)); 85 base::TimeDelta::FromMilliseconds(kMaxPtsDiffMs));
85 86
86 coded_frame_providers_.clear(); 87 coded_frame_providers_.clear();
87 frame_received_count_ = 0; 88 frame_received_count_ = 0;
88 89
89 for (auto& stream : demuxer_streams_) { 90 for (auto& stream : demuxer_streams_) {
90 coded_frame_providers_.push_back(make_scoped_ptr( 91 coded_frame_providers_.push_back(make_scoped_ptr(
91 new DemuxerStreamAdapter(base::ThreadTaskRunnerHandle::Get(), 92 new DemuxerStreamAdapter(base::ThreadTaskRunnerHandle::Get(),
92 media_task_runner_factory_, stream))); 93 media_task_runner_factory_,
94 stream)));
93 } 95 }
94 running_stream_count_ = coded_frame_providers_.size(); 96 running_stream_count_ = coded_frame_providers_.size();
95 97
96 // read each stream 98 // read each stream
97 for (auto& code_frame_provider : coded_frame_providers_) { 99 for (auto& code_frame_provider : coded_frame_providers_) {
98 auto read_cb = base::Bind(&MultiDemuxerStreamAdaptersTest::OnNewFrame, 100 auto read_cb = base::Bind(&MultiDemuxerStreamAdaptersTest::OnNewFrame,
99 base::Unretained(this), code_frame_provider); 101 base::Unretained(this),
102 code_frame_provider);
100 103
101 base::Closure task = 104 base::Closure task = base::Bind(&CodedFrameProvider::Read,
102 base::Bind(&CodedFrameProvider::Read, 105 base::Unretained(code_frame_provider),
103 base::Unretained(code_frame_provider), read_cb); 106 read_cb);
104 107
105 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task); 108 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task);
106 } 109 }
107 } 110 }
108 111
109 void MultiDemuxerStreamAdaptersTest::OnTestTimeout() { 112 void MultiDemuxerStreamAdaptersTest::OnTestTimeout() {
110 if (running_stream_count_ != 0) { 113 if (running_stream_count_ != 0) {
111 ADD_FAILURE() << "Test timed out"; 114 ADD_FAILURE() << "Test timed out";
112 } 115 }
113 } 116 }
114 117
115 void MultiDemuxerStreamAdaptersTest::OnNewFrame( 118 void MultiDemuxerStreamAdaptersTest::OnNewFrame(
116 CodedFrameProvider* frame_provider, 119 CodedFrameProvider* frame_provider,
117 const scoped_refptr<DecoderBufferBase>& buffer, 120 const scoped_refptr<DecoderBufferBase>& buffer,
118 const ::media::AudioDecoderConfig& audio_config, 121 const ::media::AudioDecoderConfig& audio_config,
119 const ::media::VideoDecoderConfig& video_config) { 122 const ::media::VideoDecoderConfig& video_config) {
120 if (buffer->end_of_stream()) { 123 if (buffer->end_of_stream()) {
121 OnEos(); 124 OnEos();
122 return; 125 return;
123 } 126 }
124 127
125 frame_received_count_++; 128 frame_received_count_++;
126 auto read_cb = base::Bind(&MultiDemuxerStreamAdaptersTest::OnNewFrame, 129 auto read_cb = base::Bind(&MultiDemuxerStreamAdaptersTest::OnNewFrame,
127 base::Unretained(this), frame_provider); 130 base::Unretained(this),
131 frame_provider);
128 frame_provider->Read(read_cb); 132 frame_provider->Read(read_cb);
129 } 133 }
130 134
131 void MultiDemuxerStreamAdaptersTest::OnEos() { 135 void MultiDemuxerStreamAdaptersTest::OnEos() {
132 running_stream_count_--; 136 running_stream_count_--;
133 ASSERT_GE(running_stream_count_, 0); 137 ASSERT_GE(running_stream_count_, 0);
134 if (running_stream_count_ == 0) { 138 if (running_stream_count_ == 0) {
135 ASSERT_EQ(frame_received_count_, total_expected_frames_); 139 ASSERT_EQ(frame_received_count_, total_expected_frames_);
136 base::MessageLoop::current()->QuitWhenIdle(); 140 base::MessageLoop::current()->QuitWhenIdle();
137 } 141 }
(...skipping 16 matching lines...) Expand all
154 total_expected_frames_ = frame_count_short + frame_count_long; 158 total_expected_frames_ = frame_count_short + frame_count_long;
155 159
156 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 160 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
157 message_loop->PostTask(FROM_HERE, 161 message_loop->PostTask(FROM_HERE,
158 base::Bind(&MultiDemuxerStreamAdaptersTest::Start, 162 base::Bind(&MultiDemuxerStreamAdaptersTest::Start,
159 base::Unretained(this))); 163 base::Unretained(this)));
160 message_loop->Run(); 164 message_loop->Run();
161 } 165 }
162 } // namespace media 166 } // namespace media
163 } // namespace chromecast 167 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/renderer/media/media_pipeline_proxy.cc ('k') | chromecast/renderer/media/video_pipeline_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698