Commit cb733f9f authored by alokp's avatar alokp Committed by Commit bot

[chromecast] Fix build with enable_mojo_media=true.

Review URL: https://codereview.chromium.org/1841273002

Cr-Commit-Position: refs/heads/master@{#383910}
parent abebbb17
...@@ -71,7 +71,8 @@ static scoped_ptr<mojo::ShellClient> CreateCastMojoMediaApplication( ...@@ -71,7 +71,8 @@ static scoped_ptr<mojo::ShellClient> CreateCastMojoMediaApplication(
CastContentBrowserClient* browser_client) { CastContentBrowserClient* browser_client) {
scoped_ptr<::media::MojoMediaClient> mojo_media_client( scoped_ptr<::media::MojoMediaClient> mojo_media_client(
new media::CastMojoMediaClient( new media::CastMojoMediaClient(
browser_client->GetCmaMediaPipelineClient())); base::Bind(&CastContentBrowserClient::CreateMediaPipelineBackend,
base::Unretained(browser_client))));
return scoped_ptr<mojo::ShellClient>( return scoped_ptr<mojo::ShellClient>(
new ::media::MojoMediaApplication(std::move(mojo_media_client))); new ::media::MojoMediaApplication(std::move(mojo_media_client)));
} }
......
...@@ -11,6 +11,7 @@ source_set("media") { ...@@ -11,6 +11,7 @@ source_set("media") {
"cast_browser_cdm_factory.h", "cast_browser_cdm_factory.h",
"cast_media_client_android.cc", "cast_media_client_android.cc",
"cast_media_client_android.h", "cast_media_client_android.h",
"media_pipeline_backend_factory.h",
"media_pipeline_host.cc", "media_pipeline_host.cc",
"media_pipeline_host.h", "media_pipeline_host.h",
] ]
......
...@@ -5,15 +5,14 @@ ...@@ -5,15 +5,14 @@
#include "chromecast/browser/media/cast_mojo_media_client.h" #include "chromecast/browser/media/cast_mojo_media_client.h"
#include "chromecast/browser/media/cast_renderer.h" #include "chromecast/browser/media/cast_renderer.h"
#include "chromecast/browser/media/cma_media_pipeline_client.h"
namespace { namespace {
class CastRendererFactory : public media::RendererFactory { class CastRendererFactory : public media::RendererFactory {
public: public:
CastRendererFactory( CastRendererFactory(
scoped_refptr<chromecast::media::CmaMediaPipelineClient> pipeline_client, const chromecast::media::CreateMediaPipelineBackendCB& create_backend_cb,
const scoped_refptr<media::MediaLog>& media_log) const scoped_refptr<media::MediaLog>& media_log)
: pipeline_client_(pipeline_client), media_log_(media_log) {} : create_backend_cb_(create_backend_cb), media_log_(media_log) {}
~CastRendererFactory() final {} ~CastRendererFactory() final {}
scoped_ptr<media::Renderer> CreateRenderer( scoped_ptr<media::Renderer> CreateRenderer(
...@@ -24,11 +23,11 @@ class CastRendererFactory : public media::RendererFactory { ...@@ -24,11 +23,11 @@ class CastRendererFactory : public media::RendererFactory {
const media::RequestSurfaceCB& request_surface_cb) final { const media::RequestSurfaceCB& request_surface_cb) final {
DCHECK(!audio_renderer_sink && !video_renderer_sink); DCHECK(!audio_renderer_sink && !video_renderer_sink);
return make_scoped_ptr(new chromecast::media::CastRenderer( return make_scoped_ptr(new chromecast::media::CastRenderer(
pipeline_client_, media_task_runner)); create_backend_cb_, media_task_runner));
} }
private: private:
scoped_refptr<chromecast::media::CmaMediaPipelineClient> pipeline_client_; const chromecast::media::CreateMediaPipelineBackendCB create_backend_cb_;
scoped_refptr<media::MediaLog> media_log_; scoped_refptr<media::MediaLog> media_log_;
DISALLOW_COPY_AND_ASSIGN(CastRendererFactory); DISALLOW_COPY_AND_ASSIGN(CastRendererFactory);
}; };
...@@ -38,14 +37,15 @@ namespace chromecast { ...@@ -38,14 +37,15 @@ namespace chromecast {
namespace media { namespace media {
CastMojoMediaClient::CastMojoMediaClient( CastMojoMediaClient::CastMojoMediaClient(
scoped_refptr<CmaMediaPipelineClient> pipeline_client) const CreateMediaPipelineBackendCB& create_backend_cb)
: pipeline_client_(pipeline_client) {} : create_backend_cb_(create_backend_cb) {}
CastMojoMediaClient::~CastMojoMediaClient() {} CastMojoMediaClient::~CastMojoMediaClient() {}
scoped_ptr<::media::RendererFactory> CastMojoMediaClient::CreateRendererFactory( scoped_ptr<::media::RendererFactory> CastMojoMediaClient::CreateRendererFactory(
const scoped_refptr<::media::MediaLog>& media_log) { const scoped_refptr<::media::MediaLog>& media_log) {
return make_scoped_ptr(new CastRendererFactory(pipeline_client_, media_log)); return make_scoped_ptr(
new CastRendererFactory(create_backend_cb_, media_log));
} }
} // namespace media } // namespace media
......
...@@ -5,16 +5,15 @@ ...@@ -5,16 +5,15 @@
#ifndef CHROMECAST_BROWSER_MEDIA_CAST_MOJO_MEDIA_CLIENT_H_ #ifndef CHROMECAST_BROWSER_MEDIA_CAST_MOJO_MEDIA_CLIENT_H_
#define CHROMECAST_BROWSER_MEDIA_CAST_MOJO_MEDIA_CLIENT_H_ #define CHROMECAST_BROWSER_MEDIA_CAST_MOJO_MEDIA_CLIENT_H_
#include "chromecast/browser/media/media_pipeline_backend_factory.h"
#include "media/mojo/services/mojo_media_client.h" #include "media/mojo/services/mojo_media_client.h"
namespace chromecast { namespace chromecast {
namespace media { namespace media {
class CmaMediaPipelineClient;
class CastMojoMediaClient : public ::media::MojoMediaClient { class CastMojoMediaClient : public ::media::MojoMediaClient {
public: public:
CastMojoMediaClient(scoped_refptr<CmaMediaPipelineClient> pipeline_client); CastMojoMediaClient(const CreateMediaPipelineBackendCB& create_backend_cb);
~CastMojoMediaClient() override; ~CastMojoMediaClient() override;
// MojoMediaClient overrides. // MojoMediaClient overrides.
...@@ -22,7 +21,7 @@ class CastMojoMediaClient : public ::media::MojoMediaClient { ...@@ -22,7 +21,7 @@ class CastMojoMediaClient : public ::media::MojoMediaClient {
const scoped_refptr<::media::MediaLog>& media_log) override; const scoped_refptr<::media::MediaLog>& media_log) override;
private: private:
scoped_refptr<CmaMediaPipelineClient> pipeline_client_; const CreateMediaPipelineBackendCB create_backend_cb_;
DISALLOW_COPY_AND_ASSIGN(CastMojoMediaClient); DISALLOW_COPY_AND_ASSIGN(CastMojoMediaClient);
}; };
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/single_thread_task_runner.h" #include "base/single_thread_task_runner.h"
#include "chromecast/base/task_runner_impl.h" #include "chromecast/base/task_runner_impl.h"
#include "chromecast/browser/media/cma_media_pipeline_client.h"
#include "chromecast/media/cma/base/balanced_media_task_runner_factory.h" #include "chromecast/media/cma/base/balanced_media_task_runner_factory.h"
#include "chromecast/media/cma/base/cma_logging.h" #include "chromecast/media/cma/base/cma_logging.h"
#include "chromecast/media/cma/base/demuxer_stream_adapter.h" #include "chromecast/media/cma/base/demuxer_stream_adapter.h"
...@@ -29,9 +28,9 @@ const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000)); ...@@ -29,9 +28,9 @@ const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000));
} // namespace } // namespace
CastRenderer::CastRenderer( CastRenderer::CastRenderer(
const scoped_refptr<CmaMediaPipelineClient> pipeline_client, const CreateMediaPipelineBackendCB& create_backend_cb,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
: pipeline_client_(pipeline_client), : create_backend_cb_(create_backend_cb),
task_runner_(task_runner), task_runner_(task_runner),
media_task_runner_factory_( media_task_runner_factory_(
new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)) { new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)) {
...@@ -63,18 +62,12 @@ void CastRenderer::Initialize( ...@@ -63,18 +62,12 @@ void CastRenderer::Initialize(
? MediaPipelineDeviceParams::kModeIgnorePts ? MediaPipelineDeviceParams::kModeIgnorePts
: MediaPipelineDeviceParams::kModeSyncPts; : MediaPipelineDeviceParams::kModeSyncPts;
MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get()); MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get());
scoped_ptr<MediaPipelineBackend> backend( scoped_ptr<MediaPipelineBackend> backend = create_backend_cb_.Run(params);
pipeline_client_->CreateMediaPipelineBackend(params));
// Create pipeline. // Create pipeline.
MediaPipelineClient pipeline_client; MediaPipelineClient pipeline_client;
pipeline_client.error_cb = error_cb; pipeline_client.error_cb = error_cb;
pipeline_client.buffering_state_cb = buffering_state_cb; pipeline_client.buffering_state_cb = buffering_state_cb;
pipeline_client.pipeline_backend_created_cb = base::Bind(
&CmaMediaPipelineClient::OnMediaPipelineBackendCreated, pipeline_client_);
pipeline_client.pipeline_backend_destroyed_cb =
base::Bind(&CmaMediaPipelineClient::OnMediaPipelineBackendDestroyed,
pipeline_client_);
pipeline_.reset(new MediaPipelineImpl); pipeline_.reset(new MediaPipelineImpl);
pipeline_->SetClient(pipeline_client); pipeline_->SetClient(pipeline_client);
pipeline_->Initialize(load_type, std::move(backend)); pipeline_->Initialize(load_type, std::move(backend));
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chromecast/browser/media/media_pipeline_backend_factory.h"
#include "media/base/renderer.h" #include "media/base/renderer.h"
namespace base { namespace base {
...@@ -17,12 +18,11 @@ class TaskRunnerImpl; ...@@ -17,12 +18,11 @@ class TaskRunnerImpl;
namespace media { namespace media {
class BalancedMediaTaskRunnerFactory; class BalancedMediaTaskRunnerFactory;
class CmaMediaPipelineClient;
class MediaPipelineImpl; class MediaPipelineImpl;
class CastRenderer : public ::media::Renderer { class CastRenderer : public ::media::Renderer {
public: public:
CastRenderer(const scoped_refptr<CmaMediaPipelineClient> pipeline_client, CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
~CastRenderer() final; ~CastRenderer() final;
...@@ -48,7 +48,7 @@ class CastRenderer : public ::media::Renderer { ...@@ -48,7 +48,7 @@ class CastRenderer : public ::media::Renderer {
enum Stream { STREAM_AUDIO, STREAM_VIDEO }; enum Stream { STREAM_AUDIO, STREAM_VIDEO };
void OnEos(Stream stream); void OnEos(Stream stream);
scoped_refptr<CmaMediaPipelineClient> pipeline_client_; const CreateMediaPipelineBackendCB create_backend_cb_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_; scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_;
scoped_ptr<TaskRunnerImpl> backend_task_runner_; scoped_ptr<TaskRunnerImpl> backend_task_runner_;
......
...@@ -131,7 +131,7 @@ void SetCdmOnUiThread( ...@@ -131,7 +131,7 @@ void SetCdmOnUiThread(
CmaMessageFilterHost::CmaMessageFilterHost( CmaMessageFilterHost::CmaMessageFilterHost(
int render_process_id, int render_process_id,
const CreateBackendCB& create_backend_cb, const CreateMediaPipelineBackendCB& create_backend_cb,
scoped_refptr<base::SingleThreadTaskRunner> task_runner, scoped_refptr<base::SingleThreadTaskRunner> task_runner,
MediaResourceTracker* resource_tracker) MediaResourceTracker* resource_tracker)
: content::BrowserMessageFilter(CastMediaMsgStart), : content::BrowserMessageFilter(CastMediaMsgStart),
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/memory/shared_memory.h" #include "base/memory/shared_memory.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "chromecast/browser/media/media_pipeline_backend_factory.h"
#include "chromecast/common/media/cma_ipc_common.h" #include "chromecast/common/media/cma_ipc_common.h"
#include "chromecast/media/base/media_resource_tracker.h" #include "chromecast/media/base/media_resource_tracker.h"
#include "chromecast/media/cma/pipeline/load_type.h" #include "chromecast/media/cma/pipeline/load_type.h"
...@@ -40,19 +41,13 @@ namespace chromecast { ...@@ -40,19 +41,13 @@ namespace chromecast {
namespace media { namespace media {
class BrowserCdmCast; class BrowserCdmCast;
class MediaPipelineBackend;
struct MediaPipelineDeviceParams;
class MediaPipelineHost; class MediaPipelineHost;
class CmaMessageFilterHost class CmaMessageFilterHost
: public content::BrowserMessageFilter { : public content::BrowserMessageFilter {
public: public:
// Factory method to create a MediaPipelineBackend
typedef base::Callback<scoped_ptr<MediaPipelineBackend>(
const MediaPipelineDeviceParams&)> CreateBackendCB;
CmaMessageFilterHost(int render_process_id, CmaMessageFilterHost(int render_process_id,
const CreateBackendCB& create_backend_cb, const CreateMediaPipelineBackendCB& create_backend_cb,
scoped_refptr<base::SingleThreadTaskRunner> task_runner, scoped_refptr<base::SingleThreadTaskRunner> task_runner,
MediaResourceTracker* resource_tracker); MediaResourceTracker* resource_tracker);
...@@ -120,7 +115,7 @@ class CmaMessageFilterHost ...@@ -120,7 +115,7 @@ class CmaMessageFilterHost
const int process_id_; const int process_id_;
// Factory function for media pipeline backend. // Factory function for media pipeline backend.
CreateBackendCB create_backend_cb_; CreateMediaPipelineBackendCB create_backend_cb_;
// List of media pipeline and message loop media pipelines are running on. // List of media pipeline and message loop media pipelines are running on.
MediaPipelineMap media_pipelines_; MediaPipelineMap media_pipelines_;
......
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_BROWSER_MEDIA_MEDIA_PIPELINE_BACKEND_FACTORY_H_
#define CHROMECAST_BROWSER_MEDIA_MEDIA_PIPELINE_BACKEND_FACTORY_H_
#include "base/callback.h"
#include "chromecast/public/media/media_pipeline_backend.h"
#include "chromecast/public/media/media_pipeline_device_params.h"
namespace chromecast {
namespace media {
typedef base::Callback<scoped_ptr<MediaPipelineBackend>(
const MediaPipelineDeviceParams&)>
CreateMediaPipelineBackendCB;
} // media
} // chromecast
#endif // CHROMECAST_BROWSER_MEDIA_MEDIA_PIPELINE_BACKEND_FACTORY_H_
...@@ -55,9 +55,10 @@ MediaPipelineHost::~MediaPipelineHost() { ...@@ -55,9 +55,10 @@ MediaPipelineHost::~MediaPipelineHost() {
media_track_map_.clear(); media_track_map_.clear();
} }
void MediaPipelineHost::Initialize(LoadType load_type, void MediaPipelineHost::Initialize(
const MediaPipelineClient& client, LoadType load_type,
const CreateBackendCB& create_backend_cb) { const MediaPipelineClient& client,
const CreateMediaPipelineBackendCB& create_backend_cb) {
DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(thread_checker_.CalledOnValidThread());
media_pipeline_.reset(new MediaPipelineImpl()); media_pipeline_.reset(new MediaPipelineImpl());
task_runner_.reset(new TaskRunnerImpl()); task_runner_.reset(new TaskRunnerImpl());
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "base/threading/thread_checker.h" #include "base/threading/thread_checker.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chromecast/browser/media/media_pipeline_backend_factory.h"
#include "chromecast/common/media/cma_ipc_common.h" #include "chromecast/common/media/cma_ipc_common.h"
#include "chromecast/media/cma/pipeline/load_type.h" #include "chromecast/media/cma/pipeline/load_type.h"
#include "media/base/pipeline_status.h" #include "media/base/pipeline_status.h"
...@@ -36,22 +37,16 @@ class BrowserCdmCast; ...@@ -36,22 +37,16 @@ class BrowserCdmCast;
struct MediaPipelineClient; struct MediaPipelineClient;
struct VideoPipelineClient; struct VideoPipelineClient;
class CodedFrameProvider; class CodedFrameProvider;
class MediaPipelineBackend;
struct MediaPipelineDeviceParams;
class MediaPipelineImpl; class MediaPipelineImpl;
class MediaPipelineHost { class MediaPipelineHost {
public: public:
// Factory method to create a MediaPipelineBackend
typedef base::Callback<scoped_ptr<MediaPipelineBackend>(
const MediaPipelineDeviceParams&)> CreateBackendCB;
MediaPipelineHost(); MediaPipelineHost();
~MediaPipelineHost(); ~MediaPipelineHost();
void Initialize(LoadType load_type, void Initialize(LoadType load_type,
const MediaPipelineClient& client, const MediaPipelineClient& client,
const CreateBackendCB& create_backend_cb); const CreateMediaPipelineBackendCB& create_backend_cb);
void SetAvPipe(TrackId track_id, void SetAvPipe(TrackId track_id,
scoped_ptr<base::SharedMemory> shared_mem, scoped_ptr<base::SharedMemory> shared_mem,
......
...@@ -143,8 +143,6 @@ void MediaPipelineImpl::SetClient(const MediaPipelineClient& client) { ...@@ -143,8 +143,6 @@ void MediaPipelineImpl::SetClient(const MediaPipelineClient& client) {
DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(thread_checker_.CalledOnValidThread());
DCHECK(!client.error_cb.is_null()); DCHECK(!client.error_cb.is_null());
DCHECK(!client.buffering_state_cb.is_null()); DCHECK(!client.buffering_state_cb.is_null());
DCHECK(!client.pipeline_backend_created_cb.is_null());
DCHECK(!client.pipeline_backend_destroyed_cb.is_null());
client_ = client; client_ = client;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment