summaryrefslogtreecommitdiffstats
path: root/chromecast
diff options
context:
space:
mode:
authoralokp <alokp@chromium.org>2016-02-29 14:34:21 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-29 22:36:57 +0000
commit03e004076e77b71997c5770ebee78f183216eaa7 (patch)
tree4b4a16a74948c34b0ca48babd57c1a85a07e8f10 /chromecast
parente7636b85b2a1db449d52e14c2e1c8c4611ae28b1 (diff)
downloadchromium_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.cc24
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);
}