Chromium Code Reviews| 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.
|