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..7dbfc53ddaee1201716b836850a9d1ec4b510821 100644 |
--- a/content/renderer/media/gpu/rtc_video_decoder_factory.h |
+++ b/content/renderer/media/gpu/rtc_video_decoder_factory.h |
@@ -5,8 +5,11 @@ |
#ifndef CONTENT_RENDERER_MEDIA_GPU_RTC_VIDEO_DECODER_FACTORY_H_ |
#define CONTENT_RENDERER_MEDIA_GPU_RTC_VIDEO_DECODER_FACTORY_H_ |
+#include <memory> |
+ |
+#include "base/callback.h" |
#include "base/macros.h" |
-#include "base/threading/thread.h" |
+#include "base/single_thread_task_runner.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" |
@@ -16,7 +19,7 @@ class VideoDecoder; |
} // namespace webrtc |
namespace media { |
-class GpuVideoAcceleratorFactories; |
+class VideoDecoder; |
} // namespace media |
namespace content { |
@@ -25,8 +28,16 @@ namespace content { |
class CONTENT_EXPORT RTCVideoDecoderFactory |
: NON_EXPORTED_BASE(public cricket::WebRtcVideoDecoderFactory) { |
public: |
- explicit RTCVideoDecoderFactory( |
- media::GpuVideoAcceleratorFactories* gpu_factories); |
+ 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, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& decoder_task_runner); |
~RTCVideoDecoderFactory() override; |
// Runs on Chrome_libJingle_WorkerThread. The child thread is blocked while |
@@ -39,7 +50,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); |
}; |