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

Unified Diff: remoting/client/jni/jni_video_renderer.h

Issue 2101833002: [Remoting Android] DisplayUpdaterFactory cleanups (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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: remoting/client/jni/jni_video_renderer.h
diff --git a/remoting/client/jni/jni_video_renderer.h b/remoting/client/jni/jni_video_renderer.h
index e30d6bb994a65c17e5de476d48832e9249f92324..d99f36efa724f31eeba17a610002f3f55040a4f1 100644
--- a/remoting/client/jni/jni_video_renderer.h
+++ b/remoting/client/jni/jni_video_renderer.h
@@ -1,34 +1,71 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
+// Copyright 2013 The Chromium Authors. All rights reserved.
Sergey Ulanov 2016/06/28 17:59:50 2016 Year needs to be updated whenever a file is r
Yuwei 2016/06/28 18:46:06 Done.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef REMOTING_CLIENT_JNI_JNI_VIDEO_RENDERER_H_
#define REMOTING_CLIENT_JNI_JNI_VIDEO_RENDERER_H_
-#include "base/memory/ref_counted.h"
-#include "remoting/protocol/video_renderer.h"
+#include <list>
+#include <memory>
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "base/memory/weak_ptr.h"
+#include "remoting/protocol/frame_consumer.h"
+#include "remoting/protocol/video_renderer.h"
+#include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
namespace remoting {
-namespace protocol {
-class PerformanceTracker;
-} // namespace protocol
+class ClientContext;
Yuwei 2016/06/28 00:18:35 This is from the old JniFrameConsumer. The code re
+class ChromotingJniRuntime;
+class JniClient;
+class JniDisplayHandler;
+class SoftwareVideoRenderer;
-// An extension of VideoRenderer that allows renderer to be initialized after
-// it is constructed.
-class JniVideoRenderer : public protocol::VideoRenderer {
+// FrameConsumer and VideoRenderer implementation that draws onto a JNI direct
+// byte buffer.
+class JniVideoRenderer : public protocol::FrameConsumer,
+ public protocol::VideoRenderer {
public:
- ~JniVideoRenderer() override {}
- virtual void Initialize(
- scoped_refptr<base::SingleThreadTaskRunner> decode_task_runner,
- protocol::PerformanceTracker* perf_tracker) = 0;
- protected:
- JniVideoRenderer() {}
+ JniVideoRenderer(
+ ChromotingJniRuntime* jni_runtime,
+ base::WeakPtr<JniDisplayHandler> display);
+
+ ~JniVideoRenderer() override;
+
+ // FrameConsumer implementation.
+ std::unique_ptr<webrtc::DesktopFrame> AllocateFrame(
+ const webrtc::DesktopSize& size) override;
+ void DrawFrame(std::unique_ptr<webrtc::DesktopFrame> frame,
+ const base::Closure& done) override;
+ PixelFormat GetPixelFormat() override;
+
+ // JniVideoRenderer implementation.
+ void OnSessionConfig(const protocol::SessionConfig& config) override;
+ protocol::VideoStub* GetVideoStub() override;
+ protocol::FrameConsumer* GetFrameConsumer() override;
+ void Initialize(const ClientContext& client_context,
+ protocol::PerformanceTracker* perf_tracker) override;
+
+ private:
+ class Renderer;
+
+ void OnFrameRendered(const base::Closure& done);
+
+ // Used to obtain task runner references and make calls to Java methods.
+ ChromotingJniRuntime* jni_runtime_;
+
+ std::unique_ptr<SoftwareVideoRenderer> video_renderer_;
+
+ // Renderer object used to render the frames on the display thread.
+ std::unique_ptr<Renderer> renderer_;
+
+ base::WeakPtrFactory<JniVideoRenderer> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(JniVideoRenderer);
};
} // namespace remoting
-#endif // REMOTING_CLIENT_JNI_JNI_VIDEO_RENDERER_H_
+
+#endif
Sergey Ulanov 2016/06/28 17:59:50 add // REMOTING_CLIENT_JNI_JNI_VIDEO_RENDERER_H_
Yuwei 2016/06/28 18:46:06 Done.

Powered by Google App Engine
This is Rietveld 408576698