| Index: chromecast/media/cma/pipeline/video_pipeline_impl.cc
|
| diff --git a/chromecast/media/cma/pipeline/video_pipeline_impl.cc b/chromecast/media/cma/pipeline/video_pipeline_impl.cc
|
| index 89d82cfc9fb1868f622d1e49287140e2772dced8..70c99ac98fb4839e8bfe81feaa26fe4e08dc91c9 100644
|
| --- a/chromecast/media/cma/pipeline/video_pipeline_impl.cc
|
| +++ b/chromecast/media/cma/pipeline/video_pipeline_impl.cc
|
| @@ -10,10 +10,8 @@
|
| #include "chromecast/media/cma/base/coded_frame_provider.h"
|
| #include "chromecast/media/cma/base/decoder_config_adapter.h"
|
| #include "chromecast/media/cma/pipeline/av_pipeline_impl.h"
|
| -#include "chromecast/media/cma/pipeline/video_pipeline_device_client_impl.h"
|
| #include "chromecast/public/graphics_types.h"
|
| #include "chromecast/public/media/decoder_config.h"
|
| -#include "chromecast/public/media/video_pipeline_device.h"
|
| #include "media/base/video_decoder_config.h"
|
|
|
| namespace chromecast {
|
| @@ -23,12 +21,15 @@ namespace {
|
| const size_t kMaxVideoFrameSize = 1024 * 1024;
|
| }
|
|
|
| -VideoPipelineImpl::VideoPipelineImpl(VideoPipelineDevice* video_device)
|
| - : video_device_(video_device),
|
| +VideoPipelineImpl::VideoPipelineImpl(
|
| + MediaPipelineBackend::VideoDecoder* video_decoder,
|
| + const VideoPipelineClient& client)
|
| + : video_decoder_(video_decoder),
|
| + video_client_(client),
|
| weak_factory_(this) {
|
| weak_this_ = weak_factory_.GetWeakPtr();
|
| av_pipeline_impl_.reset(new AvPipelineImpl(
|
| - video_device_,
|
| + video_decoder_,
|
| base::Bind(&VideoPipelineImpl::OnUpdateConfig, base::Unretained(this))));
|
| }
|
|
|
| @@ -97,9 +98,21 @@ void VideoPipelineImpl::SetCdm(BrowserCdmCast* media_keys) {
|
| av_pipeline_impl_->SetCdm(media_keys);
|
| }
|
|
|
| -void VideoPipelineImpl::SetClient(const VideoPipelineClient& client) {
|
| - video_client_ = client;
|
| - av_pipeline_impl_->SetClient(client.av_pipeline_client);
|
| +void VideoPipelineImpl::OnBufferPushed(
|
| + MediaPipelineBackend::BufferStatus status) {
|
| + av_pipeline_impl_->OnBufferPushed(status);
|
| +}
|
| +
|
| +void VideoPipelineImpl::OnEndOfStream() {
|
| + if (!video_client_.av_pipeline_client.eos_cb.is_null())
|
| + video_client_.av_pipeline_client.eos_cb.Run();
|
| +}
|
| +
|
| +void VideoPipelineImpl::OnError() {
|
| + if (!video_client_.av_pipeline_client.playback_error_cb.is_null()) {
|
| + video_client_.av_pipeline_client.playback_error_cb.Run(
|
| + ::media::PIPELINE_ERROR_COULD_NOT_RENDER);
|
| + }
|
| }
|
|
|
| void VideoPipelineImpl::Initialize(
|
| @@ -111,8 +124,7 @@ void VideoPipelineImpl::Initialize(
|
| CMALOG(kLogControl) << __FUNCTION__ << " "
|
| << config.AsHumanReadableString();
|
| }
|
| - video_device_->SetVideoClient(new VideoPipelineDeviceClientImpl(
|
| - base::Bind(&VideoPipelineImpl::OnNaturalSizeChanged, weak_this_)));
|
| +
|
| if (frame_provider)
|
| SetCodedFrameProvider(frame_provider.Pass());
|
|
|
| @@ -132,8 +144,7 @@ void VideoPipelineImpl::Initialize(
|
| video_config.additional_config = &secondary_config;
|
| }
|
|
|
| - if (!video_device_->SetConfig(video_config) ||
|
| - !av_pipeline_impl_->Initialize()) {
|
| + if (!video_decoder_->SetConfig(video_config)) {
|
| status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED);
|
| return;
|
| }
|
| @@ -149,7 +160,7 @@ void VideoPipelineImpl::OnUpdateConfig(
|
| CMALOG(kLogControl) << "VideoPipelineImpl::OnUpdateConfig id:" << id << " "
|
| << video_config.AsHumanReadableString();
|
|
|
| - bool success = video_device_->SetConfig(
|
| + bool success = video_decoder_->SetConfig(
|
| DecoderConfigAdapter::ToCastVideoConfig(id, video_config));
|
| if (!success &&
|
| !video_client_.av_pipeline_client.playback_error_cb.is_null()) {
|
| @@ -173,9 +184,8 @@ void VideoPipelineImpl::UpdateStatistics() {
|
| if (video_client_.av_pipeline_client.statistics_cb.is_null())
|
| return;
|
|
|
| - MediaComponentDevice::Statistics device_stats;
|
| - if (!video_device_->GetStatistics(&device_stats))
|
| - return;
|
| + MediaPipelineBackend::Decoder::Statistics device_stats;
|
| + video_decoder_->GetStatistics(&device_stats);
|
|
|
| ::media::PipelineStatistics current_stats;
|
| current_stats.video_bytes_decoded = device_stats.decoded_bytes;
|
|
|