| 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..715fa473fd5b8b85d88cb30dc6a7566a177fb041 100644
|
| --- a/remoting/client/jni/jni_video_renderer.h
|
| +++ b/remoting/client/jni/jni_video_renderer.h
|
| @@ -5,30 +5,67 @@
|
| #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/client/software_video_renderer.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;
|
| +class ChromotingJniRuntime;
|
| +class JniClient;
|
| +class JniDisplayHandler;
|
|
|
| -// 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;
|
| + bool 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_;
|
| +
|
| + SoftwareVideoRenderer software_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_
|
|
|