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

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

Issue 2363303002: [WIP] Proxy RtcVideoDecoder calls to a media::VideoDecoder.
Patch Set: Now working with remote ffmpeg decoder 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..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);
};
« no previous file with comments | « content/renderer/media/gpu/rtc_video_decoder.cc ('k') | content/renderer/media/gpu/rtc_video_decoder_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698