OLD | NEW |
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/renderer/media/cma_renderer.h" | 5 #include "chromecast/renderer/media/cma_renderer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 27 matching lines...) Expand all Loading... |
38 | 38 |
39 // Maximum difference between audio frame PTS and video frame PTS | 39 // Maximum difference between audio frame PTS and video frame PTS |
40 // for frames read from the DemuxerStream. | 40 // for frames read from the DemuxerStream. |
41 const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000)); | 41 const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000)); |
42 | 42 |
43 void MediaPipelineClientDummyCallback() { | 43 void MediaPipelineClientDummyCallback() { |
44 } | 44 } |
45 | 45 |
46 } // namespace | 46 } // namespace |
47 | 47 |
48 CmaRenderer::CmaRenderer(scoped_ptr<MediaPipelineProxy> media_pipeline, | 48 CmaRenderer::CmaRenderer(std::unique_ptr<MediaPipelineProxy> media_pipeline, |
49 ::media::VideoRendererSink* video_renderer_sink, | 49 ::media::VideoRendererSink* video_renderer_sink, |
50 ::media::GpuVideoAcceleratorFactories* gpu_factories) | 50 ::media::GpuVideoAcceleratorFactories* gpu_factories) |
51 : media_task_runner_factory_( | 51 : media_task_runner_factory_( |
52 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), | 52 new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)), |
53 media_pipeline_(std::move(media_pipeline)), | 53 media_pipeline_(std::move(media_pipeline)), |
54 audio_pipeline_(media_pipeline_->GetAudioPipeline()), | 54 audio_pipeline_(media_pipeline_->GetAudioPipeline()), |
55 video_pipeline_(media_pipeline_->GetVideoPipeline()), | 55 video_pipeline_(media_pipeline_->GetVideoPipeline()), |
56 video_renderer_sink_(video_renderer_sink), | 56 video_renderer_sink_(video_renderer_sink), |
57 state_(kUninitialized), | 57 state_(kUninitialized), |
58 is_pending_transition_(false), | 58 is_pending_transition_(false), |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 av_pipeline_client.wait_for_key_cb = ::media::BindToCurrentLoop( | 263 av_pipeline_client.wait_for_key_cb = ::media::BindToCurrentLoop( |
264 base::Bind(&CmaRenderer::OnWaitForKey, weak_this_, true)); | 264 base::Bind(&CmaRenderer::OnWaitForKey, weak_this_, true)); |
265 av_pipeline_client.eos_cb = ::media::BindToCurrentLoop( | 265 av_pipeline_client.eos_cb = ::media::BindToCurrentLoop( |
266 base::Bind(&CmaRenderer::OnEosReached, weak_this_, true)); | 266 base::Bind(&CmaRenderer::OnEosReached, weak_this_, true)); |
267 av_pipeline_client.playback_error_cb = | 267 av_pipeline_client.playback_error_cb = |
268 ::media::BindToCurrentLoop(base::Bind(&CmaRenderer::OnError, weak_this_)); | 268 ::media::BindToCurrentLoop(base::Bind(&CmaRenderer::OnError, weak_this_)); |
269 av_pipeline_client.statistics_cb = ::media::BindToCurrentLoop( | 269 av_pipeline_client.statistics_cb = ::media::BindToCurrentLoop( |
270 base::Bind(&CmaRenderer::OnStatisticsUpdated, weak_this_)); | 270 base::Bind(&CmaRenderer::OnStatisticsUpdated, weak_this_)); |
271 audio_pipeline_->SetClient(av_pipeline_client); | 271 audio_pipeline_->SetClient(av_pipeline_client); |
272 | 272 |
273 scoped_ptr<CodedFrameProvider> frame_provider(new DemuxerStreamAdapter( | 273 std::unique_ptr<CodedFrameProvider> frame_provider(new DemuxerStreamAdapter( |
274 base::ThreadTaskRunnerHandle::Get(), media_task_runner_factory_, stream)); | 274 base::ThreadTaskRunnerHandle::Get(), media_task_runner_factory_, stream)); |
275 | 275 |
276 const ::media::AudioDecoderConfig& config = stream->audio_decoder_config(); | 276 const ::media::AudioDecoderConfig& config = stream->audio_decoder_config(); |
277 if (config.codec() == ::media::kCodecAAC) | 277 if (config.codec() == ::media::kCodecAAC) |
278 stream->EnableBitstreamConverter(); | 278 stream->EnableBitstreamConverter(); |
279 | 279 |
280 media_pipeline_->InitializeAudio(config, std::move(frame_provider), | 280 media_pipeline_->InitializeAudio(config, std::move(frame_provider), |
281 audio_initialization_done_cb); | 281 audio_initialization_done_cb); |
282 } | 282 } |
283 | 283 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 client.av_pipeline_client.eos_cb = ::media::BindToCurrentLoop( | 327 client.av_pipeline_client.eos_cb = ::media::BindToCurrentLoop( |
328 base::Bind(&CmaRenderer::OnEosReached, weak_this_, false)); | 328 base::Bind(&CmaRenderer::OnEosReached, weak_this_, false)); |
329 client.av_pipeline_client.playback_error_cb = | 329 client.av_pipeline_client.playback_error_cb = |
330 ::media::BindToCurrentLoop(base::Bind(&CmaRenderer::OnError, weak_this_)); | 330 ::media::BindToCurrentLoop(base::Bind(&CmaRenderer::OnError, weak_this_)); |
331 client.av_pipeline_client.statistics_cb = ::media::BindToCurrentLoop( | 331 client.av_pipeline_client.statistics_cb = ::media::BindToCurrentLoop( |
332 base::Bind(&CmaRenderer::OnStatisticsUpdated, weak_this_)); | 332 base::Bind(&CmaRenderer::OnStatisticsUpdated, weak_this_)); |
333 client.natural_size_changed_cb = ::media::BindToCurrentLoop( | 333 client.natural_size_changed_cb = ::media::BindToCurrentLoop( |
334 base::Bind(&CmaRenderer::OnNaturalSizeChanged, weak_this_)); | 334 base::Bind(&CmaRenderer::OnNaturalSizeChanged, weak_this_)); |
335 video_pipeline_->SetClient(client); | 335 video_pipeline_->SetClient(client); |
336 | 336 |
337 scoped_ptr<CodedFrameProvider> frame_provider(new DemuxerStreamAdapter( | 337 std::unique_ptr<CodedFrameProvider> frame_provider(new DemuxerStreamAdapter( |
338 base::ThreadTaskRunnerHandle::Get(), media_task_runner_factory_, stream)); | 338 base::ThreadTaskRunnerHandle::Get(), media_task_runner_factory_, stream)); |
339 | 339 |
340 const ::media::VideoDecoderConfig& config = stream->video_decoder_config(); | 340 const ::media::VideoDecoderConfig& config = stream->video_decoder_config(); |
341 if (config.codec() == ::media::kCodecH264) | 341 if (config.codec() == ::media::kCodecH264) |
342 stream->EnableBitstreamConverter(); | 342 stream->EnableBitstreamConverter(); |
343 | 343 |
344 initial_natural_size_ = config.natural_size(); | 344 initial_natural_size_ = config.natural_size(); |
345 | 345 |
346 std::vector<::media::VideoDecoderConfig> configs; | 346 std::vector<::media::VideoDecoderConfig> configs; |
347 configs.push_back(config); | 347 configs.push_back(config); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 is_pending_transition_ = true; | 476 is_pending_transition_ = true; |
477 } | 477 } |
478 | 478 |
479 void CmaRenderer::CompleteStateTransition(State new_state) { | 479 void CmaRenderer::CompleteStateTransition(State new_state) { |
480 state_ = new_state; | 480 state_ = new_state; |
481 is_pending_transition_ = false; | 481 is_pending_transition_ = false; |
482 } | 482 } |
483 | 483 |
484 } // namespace media | 484 } // namespace media |
485 } // namespace chromecast | 485 } // namespace chromecast |
OLD | NEW |