[go: nahoru, domu]

blob: d41ca182cd8a014e9895e018197c750fc56d6979 [file] [log] [blame]
Avi Drissmand387f0922022-09-14 20:51:311// Copyright 2016 The Chromium Authors
xhwang409e53552016-02-23 00:52:442// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
sandersd453998992016-06-14 00:52:435#include "media/mojo/clients/mojo_decoder_factory.h"
xhwang409e53552016-02-23 00:52:446
Gyuyoung Kim62a5de42018-01-10 09:48:427#include <memory>
8
liberato@chromium.org677d1be02017-12-28 22:05:429#include "base/feature_list.h"
Patrick Monette643cdf62021-10-15 19:13:4210#include "base/task/sequenced_task_runner.h"
liberato@chromium.org677d1be02017-12-28 22:05:4211#include "build/build_config.h"
12#include "media/base/media_switches.h"
Scott Violeta35f9a42018-03-22 22:00:4413#include "media/mojo/buildflags.h"
sandersd453998992016-06-14 00:52:4314#include "media/mojo/clients/mojo_audio_decoder.h"
15#include "media/mojo/clients/mojo_video_decoder.h"
Miyoung Shin25bb8c092019-08-03 00:56:5716#include "media/mojo/mojom/audio_decoder.mojom.h"
17#include "media/mojo/mojom/interface_factory.mojom.h"
Miyoung Shinae2c4ab82019-10-17 07:03:1418#include "mojo/public/cpp/bindings/pending_remote.h"
xhwang409e53552016-02-23 00:52:4419
20namespace media {
21
22MojoDecoderFactory::MojoDecoderFactory(
Xiaohan Wangcbf485ba2017-08-09 06:13:1823 media::mojom::InterfaceFactory* interface_factory)
24 : interface_factory_(interface_factory) {
25 DCHECK(interface_factory_);
xhwang409e53552016-02-23 00:52:4426}
27
Chris Watkins2de69292017-12-01 03:08:0128MojoDecoderFactory::~MojoDecoderFactory() = default;
xhwang409e53552016-02-23 00:52:4429
30void MojoDecoderFactory::CreateAudioDecoders(
Chris Cunningham135f8b72020-11-03 00:06:3431 scoped_refptr<base::SequencedTaskRunner> task_runner,
Lizhi Fan511e203b2018-05-22 14:46:1532 MediaLog* media_log,
xiaofeng.zhang47778d32017-05-12 02:24:5533 std::vector<std::unique_ptr<AudioDecoder>>* audio_decoders) {
xhwangdb24d602017-05-20 06:32:2434#if BUILDFLAG(ENABLE_MOJO_AUDIO_DECODER)
Miyoung Shinae2c4ab82019-10-17 07:03:1435 mojo::PendingRemote<mojom::AudioDecoder> audio_decoder;
36 interface_factory_->CreateAudioDecoder(
37 audio_decoder.InitWithNewPipeAndPassReceiver());
timavfe547532016-03-18 01:14:3738
Gyuyoung Kim62a5de42018-01-10 09:48:4239 audio_decoders->push_back(std::make_unique<MojoAudioDecoder>(
Wojciech Dzierżanowskia4091022023-04-19 09:28:4340 task_runner, media_log, std::move(audio_decoder)));
sandersd02864e32016-03-15 22:02:0941#endif
42}
43
44void MojoDecoderFactory::CreateVideoDecoders(
Chris Cunningham135f8b72020-11-03 00:06:3445 scoped_refptr<base::SequencedTaskRunner> task_runner,
sandersde78f9cb2016-05-25 20:06:3746 GpuVideoAcceleratorFactories* gpu_factories,
sandersd57073e92017-07-08 00:44:5847 MediaLog* media_log,
Jose Lopes689012d2020-02-27 09:04:4948 RequestOverlayInfoCB request_overlay_info_cb,
Dan Sandersbc62ef72018-05-14 23:09:5049 const gfx::ColorSpace& target_color_space,
xiaofeng.zhang47778d32017-05-12 02:24:5550 std::vector<std::unique_ptr<VideoDecoder>>* video_decoders) {
xhwangdb24d602017-05-20 06:32:2451#if BUILDFLAG(ENABLE_MOJO_VIDEO_DECODER)
liberato@chromium.orgb1603f02019-04-19 05:43:4852
Ted Meyerff439e72020-07-07 08:40:5453 mojo::PendingRemote<mojom::VideoDecoder> video_decoder_remote;
Mario Sanchez Prada1833af92019-10-21 09:54:1154 interface_factory_->CreateVideoDecoder(
Andres Calderon Jaramillo73a4f152022-04-01 21:46:3055 video_decoder_remote.InitWithNewPipeAndPassReceiver(),
56 /*dst_video_decoder=*/{});
Xiaohan Wangcbf485ba2017-08-09 06:13:1857
Gyuyoung Kim62a5de42018-01-10 09:48:4258 video_decoders->push_back(std::make_unique<MojoVideoDecoder>(
Ted Meyerff439e72020-07-07 08:40:5459 task_runner, gpu_factories, media_log, std::move(video_decoder_remote),
Ted Meyer4041de92021-06-14 20:22:3760 std::move(request_overlay_info_cb), target_color_space));
liberato@chromium.orgb1603f02019-04-19 05:43:4861
sandersd02864e32016-03-15 22:02:0962#endif
xhwang409e53552016-02-23 00:52:4463}
64
65} // namespace media