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

Unified Diff: remoting/client/plugin/pepper_view.h

Issue 3305001: Move decoder into separate thread, clean up API layering, and redo update protocl (Closed)
Patch Set: Fix compile error. Created 10 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
« no previous file with comments | « remoting/client/plugin/chromoting_instance.cc ('k') | remoting/client/plugin/pepper_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/plugin/pepper_view.h
diff --git a/remoting/client/plugin/pepper_view.h b/remoting/client/plugin/pepper_view.h
index 4ce932ec9d710cf1ba2093793108d4e4ea24a912..95c180d15385d510574f438afc5bd3f30b1e6a0e 100644
--- a/remoting/client/plugin/pepper_view.h
+++ b/remoting/client/plugin/pepper_view.h
@@ -18,20 +18,21 @@
#include "base/task.h"
#include "media/base/video_frame.h"
#include "remoting/client/chromoting_view.h"
+#include "remoting/client/frame_consumer.h"
+#include "remoting/client/rectangle_update_decoder.h"
#include "third_party/ppapi/cpp/graphics_2d.h"
namespace remoting {
class ChromotingInstance;
+class ClientContext;
-class PepperView : public ChromotingView {
+class PepperView : public ChromotingView,
+ public FrameConsumer {
public:
// Constructs a PepperView that draws to the |rendering_device|. The
// |rendering_device| instance must outlive this class.
- //
- // TODO(ajwong): This probably needs to synchronize with the pepper thread
- // to be safe.
- explicit PepperView(ChromotingInstance* instance);
+ PepperView(ChromotingInstance* instance, ClientContext* context);
virtual ~PepperView();
// ChromotingView implementation.
@@ -41,22 +42,33 @@ class PepperView : public ChromotingView {
virtual void SetSolidFill(uint32 color);
virtual void UnsetSolidFill();
virtual void SetViewport(int x, int y, int width, int height);
- virtual void SetHostScreenSize(int width, int height);
- virtual void HandleBeginUpdateStream(ChromotingHostMessage* msg);
- virtual void HandleUpdateStreamPacket(ChromotingHostMessage* msg);
- virtual void HandleEndUpdateStream(ChromotingHostMessage* msg);
+
+ // FrameConsumer implementation.
+ virtual void AllocateFrame(media::VideoFrame::Format format,
+ size_t width,
+ size_t height,
+ base::TimeDelta timestamp,
+ base::TimeDelta duration,
+ scoped_refptr<media::VideoFrame>* frame_out,
+ Task* done);
+ virtual void ReleaseFrame(media::VideoFrame* frame);
+ virtual void OnPartialFrameOutput(media::VideoFrame* frame,
+ UpdatedRects* rects,
+ Task* done);
private:
void OnPaintDone();
- void OnPartialDecodeDone();
- void OnDecodeDone();
+ void PaintFrame(media::VideoFrame* frame, UpdatedRects* rects);
// Reference to the creating plugin instance. Needed for interacting with
// pepper. Marking explciitly as const since it must be initialized at
// object creation, and never change.
ChromotingInstance* const instance_;
- pp::Graphics2D device_context_;
+ // Context should be constant for the lifetime of the plugin.
+ ClientContext* const context_;
+
+ pp::Graphics2D graphics2d_;
int viewport_x_;
int viewport_y_;
« no previous file with comments | « remoting/client/plugin/chromoting_instance.cc ('k') | remoting/client/plugin/pepper_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698