Chromium Code Reviews| Index: content/renderer/media/gpu/rtc_video_decoder_factory.h |
| diff --git a/content/renderer/media/gpu/rtc_video_decoder_factory.h b/content/renderer/media/gpu/rtc_video_decoder_factory.h |
| index 5d53b2b125af81024825237c98520715814d6628..8775b6c2775227e5f7d1266c52f4a57bffc24c8a 100644 |
| --- a/content/renderer/media/gpu/rtc_video_decoder_factory.h |
| +++ b/content/renderer/media/gpu/rtc_video_decoder_factory.h |
| @@ -5,28 +5,42 @@ |
| #ifndef CONTENT_RENDERER_MEDIA_GPU_RTC_VIDEO_DECODER_FACTORY_H_ |
| #define CONTENT_RENDERER_MEDIA_GPU_RTC_VIDEO_DECODER_FACTORY_H_ |
| +#include "base/callback.h" |
| #include "base/macros.h" |
| -#include "base/threading/thread.h" |
| +#include "base/memory/ref_counted.h" |
| #include "content/common/content_export.h" |
| #include "third_party/webrtc/media/engine/webrtcvideodecoderfactory.h" |
| #include "third_party/webrtc/modules/video_coding/include/video_codec_interface.h" |
| -namespace webrtc { |
| -class VideoDecoder; |
| -} // namespace webrtc |
| +namespace base { |
| +class SingleThreadTaskRunner; |
| +} // namespace base |
| namespace media { |
| -class GpuVideoAcceleratorFactories; |
| +class VideoDecoder; |
| } // namespace media |
| +namespace webrtc { |
| +class VideoDecoder; |
| +} // namespace webrtc |
| + |
| namespace content { |
| // TODO(wuchengli): add unittest. |
| class CONTENT_EXPORT RTCVideoDecoderFactory |
| : NON_EXPORTED_BASE(public cricket::WebRtcVideoDecoderFactory) { |
| public: |
| - explicit RTCVideoDecoderFactory( |
| - media::GpuVideoAcceleratorFactories* gpu_factories); |
| + // A factory closure which can be run to create a media::VideoDecoder. |
| + using CreateVideoDecoderCB = |
| + base::Callback<std::unique_ptr<media::VideoDecoder>()>; |
| + |
| + // |create_video_decoder_cb| will be passed to the created RtcVideoDecoder, |
| + // which will run it on |decoder_task_runner|'s thread. All calls made on |
| + // RtcVideoDecoder will be proxied on this thread to the media::VideoDecoder |
| + // returned by this callback. For more information, see RtcVideoDeocder. |
| + RTCVideoDecoderFactory( |
| + const CreateVideoDecoderCB& create_video_decoder_cb, |
|
emircan
2016/10/20 17:52:25
Can we name this as create_mojo_video_decoder_cb o
slan
2016/10/25 21:25:32
Using "mojo" in the name would be inaccurate right
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& decoder_task_runner); |
| ~RTCVideoDecoderFactory() override; |
| // Runs on Chrome_libJingle_WorkerThread. The child thread is blocked while |
| @@ -39,7 +53,9 @@ class CONTENT_EXPORT RTCVideoDecoderFactory |
| void DestroyVideoDecoder(webrtc::VideoDecoder* decoder) override; |
| private: |
| - media::GpuVideoAcceleratorFactories* gpu_factories_; |
| + // These are cached and passed into RtcVideoDecoder::Create(). |
| + const CreateVideoDecoderCB create_video_decoder_cb_; |
| + const scoped_refptr<base::SingleThreadTaskRunner> decoder_task_runner_; |
| DISALLOW_COPY_AND_ASSIGN(RTCVideoDecoderFactory); |
| }; |