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(
CastContentBrowserClient* browser_client) {
scoped_ptr<::media::MojoMediaClient> mojo_media_client(
new media::CastMojoMediaClient(
browser_client->GetCmaMediaPipelineClient()));
base::Bind(&CastContentBrowserClient::CreateMediaPipelineBackend,
base::Unretained(browser_client))));
return scoped_ptr<mojo::ShellClient>(
new ::media::MojoMediaApplication(std::move(mojo_media_client)));
}
......
......@@ -11,6 +11,7 @@ source_set("media") {
"cast_browser_cdm_factory.h",
"cast_media_client_android.cc",
"cast_media_client_android.h",
"media_pipeline_backend_factory.h",
"media_pipeline_host.cc",
"media_pipeline_host.h",
]
......
......@@ -5,15 +5,14 @@
#include "chromecast/browser/media/cast_mojo_media_client.h"
#include "chromecast/browser/media/cast_renderer.h"
#include "chromecast/browser/media/cma_media_pipeline_client.h"
namespace {
class CastRendererFactory : public media::RendererFactory {
public:
CastRendererFactory(
scoped_refptr<chromecast::media::CmaMediaPipelineClient> pipeline_client,
const chromecast::media::CreateMediaPipelineBackendCB& create_backend_cb,
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 {}
scoped_ptr<media::Renderer> CreateRenderer(
......@@ -24,11 +23,11 @@ class CastRendererFactory : public media::RendererFactory {
const media::RequestSurfaceCB& request_surface_cb) final {
DCHECK(!audio_renderer_sink && !video_renderer_sink);
return make_scoped_ptr(new chromecast::media::CastRenderer(
pipeline_client_, media_task_runner));
create_backend_cb_, media_task_runner));
}
private:
scoped_refptr<chromecast::media::CmaMediaPipelineClient> pipeline_client_;
const chromecast::media::CreateMediaPipelineBackendCB create_backend_cb_;
scoped_refptr<media::MediaLog> media_log_;
DISALLOW_COPY_AND_ASSIGN(CastRendererFactory);
};
......@@ -38,14 +37,15 @@ namespace chromecast {
namespace media {
CastMojoMediaClient::CastMojoMediaClient(
scoped_refptr<CmaMediaPipelineClient> pipeline_client)
: pipeline_client_(pipeline_client) {}
const CreateMediaPipelineBackendCB& create_backend_cb)
: create_backend_cb_(create_backend_cb) {}
CastMojoMediaClient::~CastMojoMediaClient() {}
scoped_ptr<::media::RendererFactory> CastMojoMediaClient::CreateRendererFactory(
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
......
......@@ -5,16 +5,15 @@
#ifndef 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"
namespace chromecast {
namespace media {
class CmaMediaPipelineClient;
class CastMojoMediaClient : public ::media::MojoMediaClient {
public:
CastMojoMediaClient(scoped_refptr<CmaMediaPipelineClient> pipeline_client);
CastMojoMediaClient(const CreateMediaPipelineBackendCB& create_backend_cb);
~CastMojoMediaClient() override;
// MojoMediaClient overrides.
......@@ -22,7 +21,7 @@ class CastMojoMediaClient : public ::media::MojoMediaClient {
const scoped_refptr<::media::MediaLog>& media_log) override;
private:
scoped_refptr<CmaMediaPipelineClient> pipeline_client_;
const CreateMediaPipelineBackendCB create_backend_cb_;
DISALLOW_COPY_AND_ASSIGN(CastMojoMediaClient);
};
......
......@@ -7,7 +7,6 @@
#include "base/bind.h"
#include "base/single_thread_task_runner.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/cma_logging.h"
#include "chromecast/media/cma/base/demuxer_stream_adapter.h"
......@@ -29,9 +28,9 @@ const base::TimeDelta kMaxDeltaFetcher(base::TimeDelta::FromMilliseconds(2000));
} // namespace
CastRenderer::CastRenderer(
const scoped_refptr<CmaMediaPipelineClient> pipeline_client,
const CreateMediaPipelineBackendCB& create_backend_cb,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
: pipeline_client_(pipeline_client),
: create_backend_cb_(create_backend_cb),
task_runner_(task_runner),
media_task_runner_factory_(
new BalancedMediaTaskRunnerFactory(kMaxDeltaFetcher)) {
......@@ -63,18 +62,12 @@ void CastRenderer::Initialize(
? MediaPipelineDeviceParams::kModeIgnorePts
: MediaPipelineDeviceParams::kModeSyncPts;
MediaPipelineDeviceParams params(sync_type, backend_task_runner_.get());
scoped_ptr<MediaPipelineBackend> backend(
pipeline_client_->CreateMediaPipelineBackend(params));
scoped_ptr<MediaPipelineBackend> backend = create_backend_cb_.Run(params);
// Create pipeline.
MediaPipelineClient pipeline_client;
pipeline_client.error_cb = error_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_->SetClient(pipeline_client);
pipeline_->Initialize(load_type, std::move(backend));
......
......@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/browser/media/media_pipeline_backend_factory.h"
#include "media/base/renderer.h"
namespace base {
......@@ -17,12 +18,11 @@ class TaskRunnerImpl;
namespace media {
class BalancedMediaTaskRunnerFactory;
class CmaMediaPipelineClient;
class MediaPipelineImpl;
class CastRenderer : public ::media::Renderer {
public:
CastRenderer(const scoped_refptr<CmaMediaPipelineClient> pipeline_client,
CastRenderer(const CreateMediaPipelineBackendCB& create_backend_cb,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
~CastRenderer() final;
......@@ -48,7 +48,7 @@ class CastRenderer : public ::media::Renderer {
enum Stream { STREAM_AUDIO, STREAM_VIDEO };
void OnEos(Stream stream);
scoped_refptr<CmaMediaPipelineClient> pipeline_client_;
const CreateMediaPipelineBackendCB create_backend_cb_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
scoped_refptr<BalancedMediaTaskRunnerFactory> media_task_runner_factory_;
scoped_ptr<TaskRunnerImpl> backend_task_runner_;
......
......@@ -131,7 +131,7 @@ void SetCdmOnUiThread(
CmaMessageFilterHost::CmaMessageFilterHost(
int render_process_id,
const CreateBackendCB& create_backend_cb,
const CreateMediaPipelineBackendCB& create_backend_cb,
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
MediaResourceTracker* resource_tracker)
: content::BrowserMessageFilter(CastMediaMsgStart),
......
......@@ -13,6 +13,7 @@
#include "base/memory/ref_counted.h"
#include "base/memory/shared_memory.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/media/base/media_resource_tracker.h"
#include "chromecast/media/cma/pipeline/load_type.h"
......@@ -40,19 +41,13 @@ namespace chromecast {
namespace media {
class BrowserCdmCast;
class MediaPipelineBackend;
struct MediaPipelineDeviceParams;
class MediaPipelineHost;
class CmaMessageFilterHost
: public content::BrowserMessageFilter {
public:
// Factory method to create a MediaPipelineBackend
typedef base::Callback<scoped_ptr<MediaPipelineBackend>(
const MediaPipelineDeviceParams&)> CreateBackendCB;
CmaMessageFilterHost(int render_process_id,
const CreateBackendCB& create_backend_cb,
const CreateMediaPipelineBackendCB& create_backend_cb,
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
MediaResourceTracker* resource_tracker);
......@@ -120,7 +115,7 @@ class CmaMessageFilterHost
const int process_id_;
// 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.
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() {
media_track_map_.clear();
}
void MediaPipelineHost::Initialize(LoadType load_type,
const MediaPipelineClient& client,
const CreateBackendCB& create_backend_cb) {
void MediaPipelineHost::Initialize(
LoadType load_type,
const MediaPipelineClient& client,
const CreateMediaPipelineBackendCB& create_backend_cb) {
DCHECK(thread_checker_.CalledOnValidThread());
media_pipeline_.reset(new MediaPipelineImpl());
task_runner_.reset(new TaskRunnerImpl());
......
......@@ -14,6 +14,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/threading/thread_checker.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/media/cma/pipeline/load_type.h"
#include "media/base/pipeline_status.h"
......@@ -36,22 +37,16 @@ class BrowserCdmCast;
struct MediaPipelineClient;
struct VideoPipelineClient;
class CodedFrameProvider;
class MediaPipelineBackend;
struct MediaPipelineDeviceParams;
class MediaPipelineImpl;
class MediaPipelineHost {
public:
// Factory method to create a MediaPipelineBackend
typedef base::Callback<scoped_ptr<MediaPipelineBackend>(
const MediaPipelineDeviceParams&)> CreateBackendCB;
MediaPipelineHost();
~MediaPipelineHost();
void Initialize(LoadType load_type,
const MediaPipelineClient& client,
const CreateBackendCB& create_backend_cb);
const CreateMediaPipelineBackendCB& create_backend_cb);
void SetAvPipe(TrackId track_id,
scoped_ptr<base::SharedMemory> shared_mem,
......
......@@ -143,8 +143,6 @@ void MediaPipelineImpl::SetClient(const MediaPipelineClient& client) {
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK(!client.error_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;
}
......
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