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

Unified Diff: content/renderer/media/gpu/rtc_video_decoder_factory.h

Issue 2418613002: Proxy RtcVideoDecoder calls to a media::VideoDecoder.
Patch Set: Clean-ups Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698