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

Side by Side Diff: chromecast/media/cma/ipc_streamer/av_streamer_unittest.cc

Issue 1875623002: Convert //chromecast from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7
7 #include <list> 8 #include <list>
9 #include <memory>
8 #include <utility> 10 #include <utility>
9 #include <vector> 11 #include <vector>
10 12
11 #include "base/bind.h" 13 #include "base/bind.h"
12 #include "base/macros.h" 14 #include "base/macros.h"
13 #include "base/memory/ref_counted.h" 15 #include "base/memory/ref_counted.h"
14 #include "base/memory/scoped_ptr.h"
15 #include "base/thread_task_runner_handle.h" 16 #include "base/thread_task_runner_handle.h"
16 #include "base/threading/thread.h" 17 #include "base/threading/thread.h"
17 #include "base/time/time.h" 18 #include "base/time/time.h"
18 #include "chromecast/media/cma/ipc/media_memory_chunk.h" 19 #include "chromecast/media/cma/ipc/media_memory_chunk.h"
19 #include "chromecast/media/cma/ipc/media_message_fifo.h" 20 #include "chromecast/media/cma/ipc/media_message_fifo.h"
20 #include "chromecast/media/cma/ipc_streamer/av_streamer_proxy.h" 21 #include "chromecast/media/cma/ipc_streamer/av_streamer_proxy.h"
21 #include "chromecast/media/cma/ipc_streamer/coded_frame_provider_host.h" 22 #include "chromecast/media/cma/ipc_streamer/coded_frame_provider_host.h"
22 #include "chromecast/media/cma/test/frame_generator_for_test.h" 23 #include "chromecast/media/cma/test/frame_generator_for_test.h"
23 #include "chromecast/media/cma/test/mock_frame_consumer.h" 24 #include "chromecast/media/cma/test/mock_frame_consumer.h"
24 #include "chromecast/media/cma/test/mock_frame_provider.h" 25 #include "chromecast/media/cma/test/mock_frame_provider.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 // Starts the test. 67 // Starts the test.
67 void Start(); 68 void Start();
68 69
69 // Back to back flush 70 // Back to back flush
70 void FlushThenStop(); 71 void FlushThenStop();
71 72
72 // Timeout indicates test failure 73 // Timeout indicates test failure
73 void OnTestTimeout(); 74 void OnTestTimeout();
74 75
75 protected: 76 protected:
76 scoped_ptr<uint64_t[]> fifo_mem_; 77 std::unique_ptr<uint64_t[]> fifo_mem_;
77 78
78 scoped_ptr<AvStreamerProxy> av_buffer_proxy_; 79 std::unique_ptr<AvStreamerProxy> av_buffer_proxy_;
79 scoped_ptr<CodedFrameProviderHost> coded_frame_provider_host_; 80 std::unique_ptr<CodedFrameProviderHost> coded_frame_provider_host_;
80 scoped_ptr<MockFrameConsumer> frame_consumer_; 81 std::unique_ptr<MockFrameConsumer> frame_consumer_;
81 82
82 // number of pending cb in StopAndFlush 83 // number of pending cb in StopAndFlush
83 int stop_and_flush_cb_count_; 84 int stop_and_flush_cb_count_;
84 85
85 private: 86 private:
86 void OnTestCompleted(); 87 void OnTestCompleted();
87 88
88 void OnFifoRead(); 89 void OnFifoRead();
89 void OnFifoWrite(); 90 void OnFifoWrite();
90 91
(...skipping 17 matching lines...) Expand all
108 std::vector<FrameGeneratorForTest::FrameSpec> frame_specs; 109 std::vector<FrameGeneratorForTest::FrameSpec> frame_specs;
109 frame_specs.resize(frame_count); 110 frame_specs.resize(frame_count);
110 for (size_t k = 0; k < frame_specs.size() - 1; k++) { 111 for (size_t k = 0; k < frame_specs.size() - 1; k++) {
111 frame_specs[k].has_config = (k == 0); 112 frame_specs[k].has_config = (k == 0);
112 frame_specs[k].timestamp = base::TimeDelta::FromMilliseconds(40) * k; 113 frame_specs[k].timestamp = base::TimeDelta::FromMilliseconds(40) * k;
113 frame_specs[k].size = 512; 114 frame_specs[k].size = 512;
114 frame_specs[k].has_decrypt_config = ((k % 3) == 0); 115 frame_specs[k].has_decrypt_config = ((k % 3) == 0);
115 } 116 }
116 frame_specs[frame_specs.size() - 1].is_eos = true; 117 frame_specs[frame_specs.size() - 1].is_eos = true;
117 118
118 scoped_ptr<FrameGeneratorForTest> frame_generator_provider( 119 std::unique_ptr<FrameGeneratorForTest> frame_generator_provider(
119 new FrameGeneratorForTest(frame_specs)); 120 new FrameGeneratorForTest(frame_specs));
120 scoped_ptr<FrameGeneratorForTest> frame_generator_consumer( 121 std::unique_ptr<FrameGeneratorForTest> frame_generator_consumer(
121 new FrameGeneratorForTest(frame_specs)); 122 new FrameGeneratorForTest(frame_specs));
122 123
123 scoped_ptr<MockFrameProvider> frame_provider(new MockFrameProvider()); 124 std::unique_ptr<MockFrameProvider> frame_provider(new MockFrameProvider());
124 frame_provider->Configure(provider_delayed_pattern, 125 frame_provider->Configure(provider_delayed_pattern,
125 std::move(frame_generator_provider)); 126 std::move(frame_generator_provider));
126 frame_provider->SetDelayFlush(delay_flush); 127 frame_provider->SetDelayFlush(delay_flush);
127 128
128 size_t fifo_size_div_8 = 512; 129 size_t fifo_size_div_8 = 512;
129 fifo_mem_.reset(new uint64_t[fifo_size_div_8]); 130 fifo_mem_.reset(new uint64_t[fifo_size_div_8]);
130 scoped_ptr<MediaMessageFifo> producer_fifo( 131 std::unique_ptr<MediaMessageFifo> producer_fifo(new MediaMessageFifo(
131 new MediaMessageFifo( 132 std::unique_ptr<MediaMemoryChunk>(
132 scoped_ptr<MediaMemoryChunk>( 133 new FifoMemoryChunk(&fifo_mem_[0], fifo_size_div_8 * 8)),
133 new FifoMemoryChunk(&fifo_mem_[0], fifo_size_div_8 * 8)), 134 true));
134 true)); 135 std::unique_ptr<MediaMessageFifo> consumer_fifo(new MediaMessageFifo(
135 scoped_ptr<MediaMessageFifo> consumer_fifo( 136 std::unique_ptr<MediaMemoryChunk>(
136 new MediaMessageFifo( 137 new FifoMemoryChunk(&fifo_mem_[0], fifo_size_div_8 * 8)),
137 scoped_ptr<MediaMemoryChunk>( 138 false));
138 new FifoMemoryChunk(&fifo_mem_[0], fifo_size_div_8 * 8)),
139 false));
140 producer_fifo->ObserveWriteActivity( 139 producer_fifo->ObserveWriteActivity(
141 base::Bind(&AvStreamerTest::OnFifoWrite, base::Unretained(this))); 140 base::Bind(&AvStreamerTest::OnFifoWrite, base::Unretained(this)));
142 consumer_fifo->ObserveReadActivity( 141 consumer_fifo->ObserveReadActivity(
143 base::Bind(&AvStreamerTest::OnFifoRead, base::Unretained(this))); 142 base::Bind(&AvStreamerTest::OnFifoRead, base::Unretained(this)));
144 143
145 av_buffer_proxy_.reset( 144 av_buffer_proxy_.reset(
146 new AvStreamerProxy()); 145 new AvStreamerProxy());
147 av_buffer_proxy_->SetCodedFrameProvider( 146 av_buffer_proxy_->SetCodedFrameProvider(
148 scoped_ptr<CodedFrameProvider>(frame_provider.release())); 147 std::unique_ptr<CodedFrameProvider>(frame_provider.release()));
149 av_buffer_proxy_->SetMediaMessageFifo(std::move(producer_fifo)); 148 av_buffer_proxy_->SetMediaMessageFifo(std::move(producer_fifo));
150 149
151 coded_frame_provider_host_.reset( 150 coded_frame_provider_host_.reset(
152 new CodedFrameProviderHost(std::move(consumer_fifo))); 151 new CodedFrameProviderHost(std::move(consumer_fifo)));
153 152
154 frame_consumer_.reset( 153 frame_consumer_.reset(
155 new MockFrameConsumer(coded_frame_provider_host_.get())); 154 new MockFrameConsumer(coded_frame_provider_host_.get()));
156 frame_consumer_->Configure(consumer_delayed_pattern, false, 155 frame_consumer_->Configure(consumer_delayed_pattern, false,
157 std::move(frame_generator_consumer)); 156 std::move(frame_generator_consumer));
158 157
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 const size_t frame_count = 100u; 218 const size_t frame_count = 100u;
220 Configure(frame_count, 219 Configure(frame_count,
221 std::vector<bool>( 220 std::vector<bool>(
222 provider_delayed_pattern, 221 provider_delayed_pattern,
223 provider_delayed_pattern + arraysize(provider_delayed_pattern)), 222 provider_delayed_pattern + arraysize(provider_delayed_pattern)),
224 std::vector<bool>( 223 std::vector<bool>(
225 consumer_delayed_pattern, 224 consumer_delayed_pattern,
226 consumer_delayed_pattern + arraysize(consumer_delayed_pattern)), 225 consumer_delayed_pattern + arraysize(consumer_delayed_pattern)),
227 false); 226 false);
228 227
229 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 228 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
230 message_loop->PostTask( 229 message_loop->PostTask(
231 FROM_HERE, 230 FROM_HERE,
232 base::Bind(&AvStreamerTest::Start, base::Unretained(this))); 231 base::Bind(&AvStreamerTest::Start, base::Unretained(this)));
233 message_loop->Run(); 232 message_loop->Run();
234 }; 233 };
235 234
236 TEST_F(AvStreamerTest, SlowProviderFastConsumer) { 235 TEST_F(AvStreamerTest, SlowProviderFastConsumer) {
237 bool provider_delayed_pattern[] = { true }; 236 bool provider_delayed_pattern[] = { true };
238 bool consumer_delayed_pattern[] = { false }; 237 bool consumer_delayed_pattern[] = { false };
239 238
240 const size_t frame_count = 100u; 239 const size_t frame_count = 100u;
241 Configure(frame_count, 240 Configure(frame_count,
242 std::vector<bool>( 241 std::vector<bool>(
243 provider_delayed_pattern, 242 provider_delayed_pattern,
244 provider_delayed_pattern + arraysize(provider_delayed_pattern)), 243 provider_delayed_pattern + arraysize(provider_delayed_pattern)),
245 std::vector<bool>( 244 std::vector<bool>(
246 consumer_delayed_pattern, 245 consumer_delayed_pattern,
247 consumer_delayed_pattern + arraysize(consumer_delayed_pattern)), 246 consumer_delayed_pattern + arraysize(consumer_delayed_pattern)),
248 false); 247 false);
249 248
250 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 249 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
251 message_loop->PostTask( 250 message_loop->PostTask(
252 FROM_HERE, 251 FROM_HERE,
253 base::Bind(&AvStreamerTest::Start, base::Unretained(this))); 252 base::Bind(&AvStreamerTest::Start, base::Unretained(this)));
254 message_loop->Run(); 253 message_loop->Run();
255 }; 254 };
256 255
257 TEST_F(AvStreamerTest, SlowFastProducerConsumer) { 256 TEST_F(AvStreamerTest, SlowFastProducerConsumer) {
258 // Pattern lengths are prime between each other 257 // Pattern lengths are prime between each other
259 // so that a lot of combinations can be tested. 258 // so that a lot of combinations can be tested.
260 bool provider_delayed_pattern[] = { 259 bool provider_delayed_pattern[] = {
261 true, true, true, true, true, 260 true, true, true, true, true,
262 false, false, false, false 261 false, false, false, false
263 }; 262 };
264 bool consumer_delayed_pattern[] = { 263 bool consumer_delayed_pattern[] = {
265 true, true, true, true, true, true, true, 264 true, true, true, true, true, true, true,
266 false, false, false, false, false, false, false 265 false, false, false, false, false, false, false
267 }; 266 };
268 267
269 const size_t frame_count = 100u; 268 const size_t frame_count = 100u;
270 Configure(frame_count, 269 Configure(frame_count,
271 std::vector<bool>( 270 std::vector<bool>(
272 provider_delayed_pattern, 271 provider_delayed_pattern,
273 provider_delayed_pattern + arraysize(provider_delayed_pattern)), 272 provider_delayed_pattern + arraysize(provider_delayed_pattern)),
274 std::vector<bool>( 273 std::vector<bool>(
275 consumer_delayed_pattern, 274 consumer_delayed_pattern,
276 consumer_delayed_pattern + arraysize(consumer_delayed_pattern)), 275 consumer_delayed_pattern + arraysize(consumer_delayed_pattern)),
277 false); 276 false);
278 277
279 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 278 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
280 message_loop->PostTask( 279 message_loop->PostTask(
281 FROM_HERE, 280 FROM_HERE,
282 base::Bind(&AvStreamerTest::Start, base::Unretained(this))); 281 base::Bind(&AvStreamerTest::Start, base::Unretained(this)));
283 message_loop->Run(); 282 message_loop->Run();
284 }; 283 };
285 284
286 // Test case for when AvStreamerProxy::StopAndFlush is invoked while a previous 285 // Test case for when AvStreamerProxy::StopAndFlush is invoked while a previous
287 // flush is pending. This can happen when pipeline is stopped while a seek/flush 286 // flush is pending. This can happen when pipeline is stopped while a seek/flush
288 // is pending. 287 // is pending.
289 TEST_F(AvStreamerTest, StopInFlush) { 288 TEST_F(AvStreamerTest, StopInFlush) {
290 // We don't care about the delayed pattern. Setting to true to make sure the 289 // We don't care about the delayed pattern. Setting to true to make sure the
291 // test won't exit before flush is called. 290 // test won't exit before flush is called.
292 bool dummy_delayed_pattern[] = {true}; 291 bool dummy_delayed_pattern[] = {true};
293 std::vector<bool> dummy_delayed_pattern_vector( 292 std::vector<bool> dummy_delayed_pattern_vector(
294 dummy_delayed_pattern, 293 dummy_delayed_pattern,
295 dummy_delayed_pattern + arraysize(dummy_delayed_pattern)); 294 dummy_delayed_pattern + arraysize(dummy_delayed_pattern));
296 const size_t frame_count = 100u; 295 const size_t frame_count = 100u;
297 296
298 // Delay flush callback in frame provider 297 // Delay flush callback in frame provider
299 Configure(frame_count, dummy_delayed_pattern_vector, 298 Configure(frame_count, dummy_delayed_pattern_vector,
300 dummy_delayed_pattern_vector, true); 299 dummy_delayed_pattern_vector, true);
301 300
302 scoped_ptr<base::MessageLoop> message_loop(new base::MessageLoop()); 301 std::unique_ptr<base::MessageLoop> message_loop(new base::MessageLoop());
303 302
304 // Flush takes 10ms to finish. 1s timeout is enough for this test. 303 // Flush takes 10ms to finish. 1s timeout is enough for this test.
305 message_loop->PostDelayedTask( 304 message_loop->PostDelayedTask(
306 FROM_HERE, 305 FROM_HERE,
307 base::Bind(&AvStreamerTest::OnTestTimeout, base::Unretained(this)), 306 base::Bind(&AvStreamerTest::OnTestTimeout, base::Unretained(this)),
308 base::TimeDelta::FromSeconds(1)); 307 base::TimeDelta::FromSeconds(1));
309 308
310 message_loop->PostTask( 309 message_loop->PostTask(
311 FROM_HERE, base::Bind(&AvStreamerTest::Start, base::Unretained(this))); 310 FROM_HERE, base::Bind(&AvStreamerTest::Start, base::Unretained(this)));
312 311
313 // Let AvStreamerProxy run for a while. Fire flush and stop later 312 // Let AvStreamerProxy run for a while. Fire flush and stop later
314 message_loop->PostDelayedTask( 313 message_loop->PostDelayedTask(
315 FROM_HERE, 314 FROM_HERE,
316 base::Bind(&AvStreamerTest::FlushThenStop, base::Unretained(this)), 315 base::Bind(&AvStreamerTest::FlushThenStop, base::Unretained(this)),
317 base::TimeDelta::FromMilliseconds(10)); 316 base::TimeDelta::FromMilliseconds(10));
318 317
319 message_loop->Run(); 318 message_loop->Run();
320 } 319 }
321 320
322 } // namespace media 321 } // namespace media
323 } // namespace chromecast 322 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/media/cma/ipc_streamer/av_streamer_proxy.cc ('k') | chromecast/media/cma/ipc_streamer/coded_frame_provider_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698