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

Side by Side Diff: chromecast/media/cma/backend/media_pipeline_device_fake.cc

Issue 1142513004: Chromecast: MessageLoopProxy cleanup --> SingleThreadTaskRunner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 "chromecast/media/cma/backend/media_pipeline_device_fake.h" 5 #include "chromecast/media/cma/backend/media_pipeline_device_fake.h"
6 6
7 #include <list> 7 #include <list>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/callback_helpers.h" 11 #include "base/callback_helpers.h"
12 #include "base/location.h" 12 #include "base/location.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/message_loop/message_loop_proxy.h" 15 #include "base/single_thread_task_runner.h"
16 #include "base/thread_task_runner_handle.h"
16 #include "chromecast/media/cma/backend/audio_pipeline_device.h" 17 #include "chromecast/media/cma/backend/audio_pipeline_device.h"
17 #include "chromecast/media/cma/backend/media_clock_device.h" 18 #include "chromecast/media/cma/backend/media_clock_device.h"
18 #include "chromecast/media/cma/backend/media_component_device.h" 19 #include "chromecast/media/cma/backend/media_component_device.h"
19 #include "chromecast/media/cma/backend/video_pipeline_device.h" 20 #include "chromecast/media/cma/backend/video_pipeline_device.h"
20 #include "chromecast/media/cma/base/decoder_buffer_base.h" 21 #include "chromecast/media/cma/base/decoder_buffer_base.h"
21 #include "chromecast/public/media/decoder_config.h" 22 #include "chromecast/public/media/decoder_config.h"
22 #include "media/base/buffers.h" 23 #include "media/base/buffers.h"
23 24
24 namespace chromecast { 25 namespace chromecast {
25 namespace media { 26 namespace media {
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 decoded_byte_count_ = 0; 238 decoded_byte_count_ = 0;
238 frames_.clear(); 239 frames_.clear();
239 pending_buffer_ = scoped_refptr<DecoderBufferBase>(); 240 pending_buffer_ = scoped_refptr<DecoderBufferBase>();
240 frame_pushed_cb_.Reset(); 241 frame_pushed_cb_.Reset();
241 return true; 242 return true;
242 } 243 }
243 244
244 if (state_ == kStateRunning) { 245 if (state_ == kStateRunning) {
245 if (!scheduled_rendering_task_) { 246 if (!scheduled_rendering_task_) {
246 scheduled_rendering_task_ = true; 247 scheduled_rendering_task_ = true;
247 base::MessageLoopProxy::current()->PostTask( 248 base::ThreadTaskRunnerHandle::Get()->PostTask(
248 FROM_HERE, 249 FROM_HERE,
249 base::Bind(&MediaComponentDeviceFake::RenderTask, weak_this_)); 250 base::Bind(&MediaComponentDeviceFake::RenderTask, weak_this_));
250 } 251 }
251 return true; 252 return true;
252 } 253 }
253 254
254 return true; 255 return true;
255 } 256 }
256 257
257 bool MediaComponentDeviceFake::SetStartPts(base::TimeDelta time) { 258 bool MediaComponentDeviceFake::SetStartPts(base::TimeDelta time) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 301
301 void MediaComponentDeviceFake::RenderTask() { 302 void MediaComponentDeviceFake::RenderTask() {
302 scheduled_rendering_task_ = false; 303 scheduled_rendering_task_ = false;
303 304
304 if (state_ != kStateRunning) 305 if (state_ != kStateRunning)
305 return; 306 return;
306 307
307 base::TimeDelta media_time = media_clock_device_->GetTime(); 308 base::TimeDelta media_time = media_clock_device_->GetTime();
308 if (media_time == ::media::kNoTimestamp()) { 309 if (media_time == ::media::kNoTimestamp()) {
309 scheduled_rendering_task_ = true; 310 scheduled_rendering_task_ = true;
310 base::MessageLoopProxy::current()->PostDelayedTask( 311 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
311 FROM_HERE, 312 FROM_HERE,
312 base::Bind(&MediaComponentDeviceFake::RenderTask, weak_this_), 313 base::Bind(&MediaComponentDeviceFake::RenderTask, weak_this_),
313 base::TimeDelta::FromMilliseconds(50)); 314 base::TimeDelta::FromMilliseconds(50));
314 return; 315 return;
315 } 316 }
316 317
317 while (!frames_.empty() && frames_.front().pts <= media_time) { 318 while (!frames_.empty() && frames_.front().pts <= media_time) {
318 rendering_time_ = frames_.front().pts; 319 rendering_time_ = frames_.front().pts;
319 decoded_frame_count_++; 320 decoded_frame_count_++;
320 decoded_byte_count_ += frames_.front().size; 321 decoded_byte_count_ += frames_.front().size;
321 frames_.pop_front(); 322 frames_.pop_front();
322 if (pending_buffer_.get()) { 323 if (pending_buffer_.get()) {
323 FakeDecoderBuffer fake_buffer; 324 FakeDecoderBuffer fake_buffer;
324 fake_buffer.size = pending_buffer_->data_size(); 325 fake_buffer.size = pending_buffer_->data_size();
325 fake_buffer.pts = pending_buffer_->timestamp(); 326 fake_buffer.pts = pending_buffer_->timestamp();
326 frames_.push_back(fake_buffer); 327 frames_.push_back(fake_buffer);
327 pending_buffer_ = scoped_refptr<DecoderBufferBase>(); 328 pending_buffer_ = scoped_refptr<DecoderBufferBase>();
328 base::ResetAndReturn(&frame_pushed_cb_).Run(kFrameSuccess); 329 base::ResetAndReturn(&frame_pushed_cb_).Run(kFrameSuccess);
329 } 330 }
330 } 331 }
331 332
332 if (frames_.empty() && is_eos_) { 333 if (frames_.empty() && is_eos_) {
333 if (!client_.eos_cb.is_null()) 334 if (!client_.eos_cb.is_null())
334 client_.eos_cb.Run(); 335 client_.eos_cb.Run();
335 return; 336 return;
336 } 337 }
337 338
338 scheduled_rendering_task_ = true; 339 scheduled_rendering_task_ = true;
339 base::MessageLoopProxy::current()->PostDelayedTask( 340 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
340 FROM_HERE, 341 FROM_HERE, base::Bind(&MediaComponentDeviceFake::RenderTask, weak_this_),
341 base::Bind(&MediaComponentDeviceFake::RenderTask, weak_this_),
342 base::TimeDelta::FromMilliseconds(50)); 342 base::TimeDelta::FromMilliseconds(50));
343 } 343 }
344 344
345 bool MediaComponentDeviceFake::GetStatistics(Statistics* stats) const { 345 bool MediaComponentDeviceFake::GetStatistics(Statistics* stats) const {
346 if (state_ != kStateRunning) 346 if (state_ != kStateRunning)
347 return false; 347 return false;
348 348
349 // Note: what is returned here is not the number of samples but the number of 349 // Note: what is returned here is not the number of samples but the number of
350 // frames. The value is different for audio. 350 // frames. The value is different for audio.
351 stats->decoded_bytes = decoded_byte_count_; 351 stats->decoded_bytes = decoded_byte_count_;
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 VideoPipelineDevice* MediaPipelineDeviceFake::GetVideoPipelineDevice() const { 574 VideoPipelineDevice* MediaPipelineDeviceFake::GetVideoPipelineDevice() const {
575 return video_pipeline_device_.get(); 575 return video_pipeline_device_.get();
576 } 576 }
577 577
578 MediaClockDevice* MediaPipelineDeviceFake::GetMediaClockDevice() const { 578 MediaClockDevice* MediaPipelineDeviceFake::GetMediaClockDevice() const {
579 return media_clock_device_.get(); 579 return media_clock_device_.get();
580 } 580 }
581 581
582 } // namespace media 582 } // namespace media
583 } // namespace chromecast 583 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698