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

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

Issue 2418613002: Proxy RtcVideoDecoder calls to a media::VideoDecoder.
Patch Set: Comments addressed and unittests updated. 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,
+ 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);
};
« 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