1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/mojo/services/mojo_media_client.h"
7 #include "base/task/sequenced_task_runner.h"
8 #include "base/task/single_thread_task_runner.h"
9 #include "build/build_config.h"
10 #include "media/base/audio_decoder.h"
11 #include "media/base/audio_encoder.h"
12 #include "media/base/cdm_factory.h"
13 #include "media/base/media_log.h"
14 #include "media/base/renderer.h"
15 #include "media/base/video_decoder.h"
19 MojoMediaClient::MojoMediaClient() = default;
21 MojoMediaClient::~MojoMediaClient() = default;
23 void MojoMediaClient::Initialize() {}
25 std::unique_ptr<AudioDecoder> MojoMediaClient::CreateAudioDecoder(
26 scoped_refptr<base::SequencedTaskRunner> task_runner,
27 std::unique_ptr<media::MediaLog> media_log) {
31 std::unique_ptr<AudioEncoder> MojoMediaClient::CreateAudioEncoder(
32 scoped_refptr<base::SequencedTaskRunner> task_runner) {
36 SupportedVideoDecoderConfigs
37 MojoMediaClient::GetSupportedVideoDecoderConfigs() {
41 VideoDecoderType MojoMediaClient::GetDecoderImplementationType() {
42 return VideoDecoderType::kUnknown;
45 #if BUILDFLAG(ALLOW_OOP_VIDEO_DECODER)
46 void MojoMediaClient::NotifyDecoderSupportKnown(
47 mojo::PendingRemote<stable::mojom::StableVideoDecoder> oop_video_decoder,
49 void(mojo::PendingRemote<stable::mojom::StableVideoDecoder>)> cb) {
50 std::move(cb).Run(std::move(oop_video_decoder));
52 #endif // BUILDFLAG(ALLOW_OOP_VIDEO_DECODER)
54 std::unique_ptr<VideoDecoder> MojoMediaClient::CreateVideoDecoder(
55 scoped_refptr<base::SequencedTaskRunner> task_runner,
57 mojom::CommandBufferIdPtr command_buffer_id,
58 RequestOverlayInfoCB request_overlay_info_cb,
59 const gfx::ColorSpace& target_color_space,
60 mojo::PendingRemote<stable::mojom::StableVideoDecoder> oop_video_decoder) {
64 std::unique_ptr<Renderer> MojoMediaClient::CreateRenderer(
65 mojom::FrameInterfaceFactory* frame_interfaces,
66 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
68 const std::string& audio_device_id) {
72 #if BUILDFLAG(ENABLE_CAST_RENDERER)
73 std::unique_ptr<Renderer> MojoMediaClient::CreateCastRenderer(
74 mojom::FrameInterfaceFactory* frame_interfaces,
75 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
77 const base::UnguessableToken& overlay_plane_id) {
80 #endif // BUILDFLAG(ENABLE_CAST_RENDERER)
83 std::unique_ptr<Renderer> MojoMediaClient::CreateMediaFoundationRenderer(
84 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
85 mojom::FrameInterfaceFactory* frame_interfaces,
86 mojo::PendingRemote<mojom::MediaLog> media_log_remote,
87 mojo::PendingReceiver<mojom::MediaFoundationRendererExtension>
88 renderer_extension_receiver,
89 mojo::PendingRemote<media::mojom::MediaFoundationRendererClientExtension>
90 client_extension_remote) {
93 #endif // BUILDFLAG(IS_WIN)
95 std::unique_ptr<CdmFactory> MojoMediaClient::CreateCdmFactory(
96 mojom::FrameInterfaceFactory* frame_interfaces) {