| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef REMOTING_CLIENT_FRAME_CONSUMER_H_ | 5 #ifndef REMOTING_CLIENT_FRAME_CONSUMER_H_ | 
| 6 #define REMOTING_CLIENT_FRAME_CONSUMER_H_ | 6 #define REMOTING_CLIENT_FRAME_CONSUMER_H_ | 
| 7 | 7 | 
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" | 
| 9 | 9 | 
| 10 namespace webrtc { | 10 namespace webrtc { | 
| 11 class DesktopFrame; | 11 class DesktopFrame; | 
| 12 class DesktopRect; | 12 class DesktopRect; | 
| 13 class DesktopRegion; | 13 class DesktopRegion; | 
| 14 class DesktopSize; | 14 class DesktopSize; | 
| 15 class DesktopVector; | 15 class DesktopVector; | 
| 16 }  // namespace webrtc | 16 }  // namespace webrtc | 
| 17 | 17 | 
| 18 namespace remoting { | 18 namespace remoting { | 
| 19 | 19 | 
| 20 class FrameConsumer { | 20 class FrameConsumer { | 
| 21  public: | 21  public: | 
| 22 | 22 | 
| 23   // List of supported pixel formats needed by various platforms. | 23   // List of supported pixel formats needed by various platforms. | 
| 24   enum PixelFormat { | 24   enum PixelFormat { | 
| 25     FORMAT_BGRA,  // Used by the Pepper plugin. | 25     FORMAT_BGRA,  // Used by the Pepper plugin. | 
| 26     FORMAT_RGBA,  // Used for Android's Bitmap class. | 26     FORMAT_RGBA,  // Used for Android's Bitmap class. | 
| 27   }; | 27   }; | 
| 28 | 28 | 
| 29   // Accepts a buffer to be painted to the screen. The buffer's dimensions and | 29   // Paints the contents of |buffer| into the area of the view identified | 
| 30   // relative position within the frame are specified by |clip_area|. Only | 30   // by |clip_area|. |view_size| specifies the full-frame dimensions to which | 
| 31   // pixels falling within |region| and the current clipping area are painted. | 31   // the |buffer|/|clip_area| portion was scaled. Implementations may be | 
| 32   // The function assumes that the passed buffer was scaled to fit a window | 32   // optimized to only paint pixels within the intersection of |region| and | 
| 33   // having |view_size| dimensions. | 33   // |clip_area|. If |shape| is non-NULL then it specifies the complete shape | 
|  | 34   // of the frame, otherwise the frame is un-shaped. | 
| 34   // | 35   // | 
| 35   // N.B. Both |clip_area| and |region| are in output coordinates relative to | 36   // N.B. |clip_area|, |region| and |shape| should be provided in output view | 
| 36   // the frame. | 37   // coordinates. | 
| 37   virtual void ApplyBuffer(const webrtc::DesktopSize& view_size, | 38   virtual void ApplyBuffer(const webrtc::DesktopSize& view_size, | 
| 38                            const webrtc::DesktopRect& clip_area, | 39                            const webrtc::DesktopRect& clip_area, | 
| 39                            webrtc::DesktopFrame* buffer, | 40                            webrtc::DesktopFrame* buffer, | 
| 40                            const webrtc::DesktopRegion& region, | 41                            const webrtc::DesktopRegion& region, | 
| 41                            const webrtc::DesktopRegion& shape) = 0; | 42                            const webrtc::DesktopRegion* shape) = 0; | 
| 42 | 43 | 
| 43   // Accepts a buffer that couldn't be used for drawing for any reason (shutdown | 44   // Accepts a buffer that couldn't be used for drawing for any reason (shutdown | 
| 44   // is in progress, the view area has changed, etc.). The accepted buffer can | 45   // is in progress, the view area has changed, etc.). The accepted buffer can | 
| 45   // be freed or reused for another drawing operation. | 46   // be freed or reused for another drawing operation. | 
| 46   virtual void ReturnBuffer(webrtc::DesktopFrame* buffer) = 0; | 47   virtual void ReturnBuffer(webrtc::DesktopFrame* buffer) = 0; | 
| 47 | 48 | 
| 48   // Set the dimension of the entire host screen. | 49   // Set the dimension of the entire host screen. | 
| 49   virtual void SetSourceSize(const webrtc::DesktopSize& source_size, | 50   virtual void SetSourceSize(const webrtc::DesktopSize& source_size, | 
| 50                              const webrtc::DesktopVector& dpi) = 0; | 51                              const webrtc::DesktopVector& dpi) = 0; | 
| 51 | 52 | 
| 52   // Returns the preferred pixel encoding for the platform. | 53   // Returns the preferred pixel encoding for the platform. | 
| 53   virtual PixelFormat GetPixelFormat() = 0; | 54   virtual PixelFormat GetPixelFormat() = 0; | 
| 54 | 55 | 
| 55  protected: | 56  protected: | 
| 56   FrameConsumer() {} | 57   FrameConsumer() {} | 
| 57   virtual ~FrameConsumer() {} | 58   virtual ~FrameConsumer() {} | 
| 58 | 59 | 
| 59  private: | 60  private: | 
| 60   DISALLOW_COPY_AND_ASSIGN(FrameConsumer); | 61   DISALLOW_COPY_AND_ASSIGN(FrameConsumer); | 
| 61 }; | 62 }; | 
| 62 | 63 | 
| 63 }  // namespace remoting | 64 }  // namespace remoting | 
| 64 | 65 | 
| 65 #endif  // REMOTING_CLIENT_FRAME_CONSUMER_H_ | 66 #endif  // REMOTING_CLIENT_FRAME_CONSUMER_H_ | 
| OLD | NEW | 
|---|