diff options
author | alokp <alokp@chromium.org> | 2016-02-29 14:34:21 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-29 22:36:57 +0000 |
commit | 03e004076e77b71997c5770ebee78f183216eaa7 (patch) | |
tree | 4b4a16a74948c34b0ca48babd57c1a85a07e8f10 /chromecast | |
parent | e7636b85b2a1db449d52e14c2e1c8c4611ae28b1 (diff) | |
download | chromium_src-03e004076e77b71997c5770ebee78f183216eaa7.zip chromium_src-03e004076e77b71997c5770ebee78f183216eaa7.tar.gz chromium_src-03e004076e77b71997c5770ebee78f183216eaa7.tar.bz2 |
[chromecast] Add video support to mojo media pipeline.
BUG=571155
Review URL: https://codereview.chromium.org/1740803003
Cr-Commit-Position: refs/heads/master@{#378294}
Diffstat (limited to 'chromecast')
-rw-r--r-- | chromecast/browser/media/cast_renderer.cc | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/chromecast/browser/media/cast_renderer.cc b/chromecast/browser/media/cast_renderer.cc index 6278486..c2f458c 100644 --- a/chromecast/browser/media/cast_renderer.cc +++ b/chromecast/browser/media/cast_renderer.cc @@ -11,8 +11,8 @@ #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h" #include "chromecast/media/cma/base/cma_logging.h" #include "chromecast/media/cma/base/demuxer_stream_adapter.h" -#include "chromecast/media/cma/pipeline/av_pipeline_client.h" #include "chromecast/media/cma/pipeline/media_pipeline_impl.h" +#include "chromecast/media/cma/pipeline/video_pipeline_client.h" #include "chromecast/public/media/media_pipeline_backend.h" #include "chromecast/public/media/media_pipeline_device_params.h" #include "media/base/audio_decoder_config.h" @@ -98,12 +98,32 @@ void CastRenderer::Initialize( return; } } + // Initialize video. ::media::DemuxerStream* video_stream = demuxer_stream_provider->GetStream(::media::DemuxerStream::VIDEO); if (video_stream) { - NOTIMPLEMENTED(); + VideoPipelineClient video_client; + // TODO(alokp): Set VideoPipelineClient::natural_size_changed_cb. + video_client.av_pipeline_client.wait_for_key_cb = + waiting_for_decryption_key_cb; + video_client.av_pipeline_client.eos_cb = ended_cb; + video_client.av_pipeline_client.playback_error_cb = error_cb; + video_client.av_pipeline_client.statistics_cb = statistics_cb; + // TODO(alokp): Change MediaPipelineImpl API to accept a single config + // after CmaRenderer is deprecated. + std::vector<::media::VideoDecoderConfig> video_configs; + video_configs.push_back(video_stream->video_decoder_config()); + scoped_ptr<CodedFrameProvider> frame_provider(new DemuxerStreamAdapter( + task_runner_, media_task_runner_factory_, video_stream)); + ::media::PipelineStatus status = pipeline_->InitializeVideo( + video_configs, video_client, std::move(frame_provider)); + if (status != ::media::PIPELINE_OK) { + init_cb.Run(status); + return; + } } + init_cb.Run(::media::PIPELINE_OK); } |