Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(470)

Side by Side Diff: media/renderers/default_renderer_factory.cc

Issue 2643713003: Allow to use the DefaultRendererFactory from a Utility Process (Closed)
Patch Set: Rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/renderers/default_renderer_factory.h" 5 #include "media/renderers/default_renderer_factory.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "build/build_config.h" 12 #include "build/build_config.h"
13 #include "media/base/decoder_factory.h" 13 #include "media/base/decoder_factory.h"
14 #include "media/base/media_log.h" 14 #include "media/base/media_log.h"
15 #include "media/base/video_frame_provider.h" 15 #include "media/base/video_frame_provider.h"
16 #include "media/filters/gpu_video_decoder.h" 16 #include "media/filters/gpu_video_decoder.h"
17 #include "media/renderers/audio_renderer_impl.h" 17 #include "media/renderers/audio_renderer_impl.h"
18 #include "media/renderers/gpu_video_accelerator_factories.h" 18 #include "media/renderers/gpu_video_accelerator_factories.h"
19 #include "media/renderers/renderer_impl.h" 19 #include "media/renderers/renderer_impl.h"
20 #include "media/renderers/video_renderer_impl.h" 20 #include "media/renderers/video_renderer_impl.h"
21 #include "media/video/default_video_frame_provider_factory.h"
21 22
22 #if !defined(MEDIA_DISABLE_FFMPEG) 23 #if !defined(MEDIA_DISABLE_FFMPEG)
23 #include "media/filters/ffmpeg_audio_decoder.h" 24 #include "media/filters/ffmpeg_audio_decoder.h"
24 #if !defined(DISABLE_FFMPEG_VIDEO_DECODERS) 25 #if !defined(DISABLE_FFMPEG_VIDEO_DECODERS)
25 #include "media/filters/ffmpeg_video_decoder.h" 26 #include "media/filters/ffmpeg_video_decoder.h"
26 #endif 27 #endif
27 #endif 28 #endif
28 29
29 #if !defined(MEDIA_DISABLE_LIBVPX) 30 #if !defined(MEDIA_DISABLE_LIBVPX)
30 #include "media/filters/vpx_video_decoder.h" 31 #include "media/filters/vpx_video_decoder.h"
31 #endif 32 #endif
32 33
33 namespace media { 34 namespace media {
34 35
35 DefaultRendererFactory::DefaultRendererFactory( 36 DefaultRendererFactory::DefaultRendererFactory(
36 const scoped_refptr<MediaLog>& media_log, 37 const scoped_refptr<MediaLog>& media_log,
37 DecoderFactory* decoder_factory, 38 DecoderFactory* decoder_factory,
38 const GetGpuFactoriesCB& get_gpu_factories_cb) 39 const GetGpuFactoriesCB& get_gpu_factories_cb,
40 std::unique_ptr<VideoFrameProviderFactory> video_frame_provider_factory)
39 : media_log_(media_log), 41 : media_log_(media_log),
40 decoder_factory_(decoder_factory), 42 decoder_factory_(decoder_factory),
41 get_gpu_factories_cb_(get_gpu_factories_cb) {} 43 get_gpu_factories_cb_(get_gpu_factories_cb),
44 video_frame_provider_factory_(std::move(video_frame_provider_factory)) {
45 if (!video_frame_provider_factory_)
46 video_frame_provider_factory_.reset(new DefaultVideoFrameProviderFactory());
47 }
42 48
43 DefaultRendererFactory::~DefaultRendererFactory() { 49 DefaultRendererFactory::~DefaultRendererFactory() {
44 } 50 }
45 51
46 ScopedVector<AudioDecoder> DefaultRendererFactory::CreateAudioDecoders( 52 ScopedVector<AudioDecoder> DefaultRendererFactory::CreateAudioDecoders(
47 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner) { 53 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner) {
48 // Create our audio decoders and renderer. 54 // Create our audio decoders and renderer.
49 ScopedVector<AudioDecoder> audio_decoders; 55 ScopedVector<AudioDecoder> audio_decoders;
50 56
51 #if !defined(MEDIA_DISABLE_FFMPEG) 57 #if !defined(MEDIA_DISABLE_FFMPEG)
(...skipping 25 matching lines...) Expand all
77 DCHECK(gpu_factories->GetTaskRunner() == media_task_runner.get()); 83 DCHECK(gpu_factories->GetTaskRunner() == media_task_runner.get());
78 84
79 if (decoder_factory_) { 85 if (decoder_factory_) {
80 decoder_factory_->CreateVideoDecoders(media_task_runner, gpu_factories, 86 decoder_factory_->CreateVideoDecoders(media_task_runner, gpu_factories,
81 &video_decoders); 87 &video_decoders);
82 } 88 }
83 video_decoders.push_back( 89 video_decoders.push_back(
84 new GpuVideoDecoder(gpu_factories, request_surface_cb, media_log_)); 90 new GpuVideoDecoder(gpu_factories, request_surface_cb, media_log_));
85 } 91 }
86 92
93 std::unique_ptr<VideoFrameProvider> video_frame_provider;
94
87 #if !defined(MEDIA_DISABLE_LIBVPX) 95 #if !defined(MEDIA_DISABLE_LIBVPX)
88 video_decoders.push_back(new VpxVideoDecoder()); 96 video_frame_provider =
97 video_frame_provider_factory_->CreateVideoFrameProvider();
98 video_decoders.push_back(
99 new VpxVideoDecoder(std::move(video_frame_provider)));
89 #endif 100 #endif
90 101
91 #if !defined(MEDIA_DISABLE_FFMPEG) && !defined(DISABLE_FFMPEG_VIDEO_DECODERS) 102 #if !defined(MEDIA_DISABLE_FFMPEG) && !defined(DISABLE_FFMPEG_VIDEO_DECODERS)
92 video_decoders.push_back(new FFmpegVideoDecoder()); 103 video_frame_provider =
104 video_frame_provider_factory_->CreateVideoFrameProvider();
105 video_decoders.push_back(
106 new FFmpegVideoDecoder(std::move(video_frame_provider)));
93 #endif 107 #endif
94 108
95 return video_decoders; 109 return video_decoders;
96 } 110 }
97 111
98 std::unique_ptr<Renderer> DefaultRendererFactory::CreateRenderer( 112 std::unique_ptr<Renderer> DefaultRendererFactory::CreateRenderer(
99 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, 113 const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
100 const scoped_refptr<base::TaskRunner>& worker_task_runner, 114 const scoped_refptr<base::TaskRunner>& worker_task_runner,
101 AudioRendererSink* audio_renderer_sink, 115 AudioRendererSink* audio_renderer_sink,
102 VideoRendererSink* video_renderer_sink, 116 VideoRendererSink* video_renderer_sink,
(...skipping 11 matching lines...) Expand all
114 std::unique_ptr<VideoRenderer> video_renderer(new VideoRendererImpl( 128 std::unique_ptr<VideoRenderer> video_renderer(new VideoRendererImpl(
115 media_task_runner, worker_task_runner, video_renderer_sink, 129 media_task_runner, worker_task_runner, video_renderer_sink,
116 CreateVideoDecoders(media_task_runner, request_surface_cb, gpu_factories), 130 CreateVideoDecoders(media_task_runner, request_surface_cb, gpu_factories),
117 true, gpu_factories, media_log_)); 131 true, gpu_factories, media_log_));
118 132
119 return base::MakeUnique<RendererImpl>( 133 return base::MakeUnique<RendererImpl>(
120 media_task_runner, std::move(audio_renderer), std::move(video_renderer)); 134 media_task_runner, std::move(audio_renderer), std::move(video_renderer));
121 } 135 }
122 136
123 } // namespace media 137 } // namespace media
OLDNEW
« no previous file with comments | « media/renderers/default_renderer_factory.h ('k') | media/video/default_video_frame_provider_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698