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

Side by Side Diff: remoting/client/jni/jni_frame_consumer.h

Issue 2101833002: [Remoting Android] DisplayUpdaterFactory cleanups (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reviewer's Feedback Created 4 years, 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef REMOTING_CLIENT_JNI_JNI_FRAME_CONSUMER_H_
6 #define REMOTING_CLIENT_JNI_JNI_FRAME_CONSUMER_H_
7
8 #include <list>
9 #include <memory>
10
11 #include "base/compiler_specific.h"
12 #include "base/macros.h"
13 #include "base/memory/weak_ptr.h"
14 #include "remoting/client/jni/jni_video_renderer.h"
15 #include "remoting/protocol/frame_consumer.h"
16 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
17
18 namespace remoting {
19
20 class ChromotingJniRuntime;
21 class JniClient;
22 class JniDisplayHandler;
23 class SoftwareVideoRenderer;
24
25 // FrameConsumer and VideoRenderer implementation that draws onto a JNI direct
26 // byte buffer.
27 class JniFrameConsumer : public protocol::FrameConsumer,
28 public JniVideoRenderer {
29 public:
30 JniFrameConsumer(
31 ChromotingJniRuntime* jni_runtime,
32 base::WeakPtr<JniDisplayHandler> display);
33
34 ~JniFrameConsumer() override;
35
36 // FrameConsumer implementation.
37 std::unique_ptr<webrtc::DesktopFrame> AllocateFrame(
38 const webrtc::DesktopSize& size) override;
39 void DrawFrame(std::unique_ptr<webrtc::DesktopFrame> frame,
40 const base::Closure& done) override;
41 PixelFormat GetPixelFormat() override;
42
43 // JniVideoRenderer implementation.
44 void OnSessionConfig(const protocol::SessionConfig& config) override;
45 protocol::VideoStub* GetVideoStub() override;
46 protocol::FrameConsumer* GetFrameConsumer() override;
47 void Initialize(
48 scoped_refptr<base::SingleThreadTaskRunner> decode_task_runner,
49 protocol::PerformanceTracker* perf_tracker) override;
50
51 private:
52 class Renderer;
53
54 void OnFrameRendered(const base::Closure& done);
55
56 // Used to obtain task runner references and make calls to Java methods.
57 ChromotingJniRuntime* jni_runtime_;
58
59 std::unique_ptr<SoftwareVideoRenderer> video_renderer_;
60
61 // Renderer object used to render the frames on the display thread.
62 std::unique_ptr<Renderer> renderer_;
63
64 base::WeakPtrFactory<JniFrameConsumer> weak_factory_;
65
66 DISALLOW_COPY_AND_ASSIGN(JniFrameConsumer);
67 };
68
69 } // namespace remoting
70
71 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698