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

Side by Side Diff: remoting/codec/video_decoder_vp8.h

Issue 23440046: Remove dependency on Skia from chromoting client. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
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_CODEC_VIDEO_DECODER_VP8_H_ 5 #ifndef REMOTING_CODEC_VIDEO_DECODER_VP8_H_
6 #define REMOTING_CODEC_VIDEO_DECODER_VP8_H_ 6 #define REMOTING_CODEC_VIDEO_DECODER_VP8_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "remoting/codec/video_decoder.h" 9 #include "remoting/codec/video_decoder.h"
10 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
11 #include "third_party/webrtc/modules/desktop_capture/desktop_region.h"
10 12
11 typedef struct vpx_codec_ctx vpx_codec_ctx_t; 13 typedef struct vpx_codec_ctx vpx_codec_ctx_t;
12 typedef struct vpx_image vpx_image_t; 14 typedef struct vpx_image vpx_image_t;
13 15
14 namespace remoting { 16 namespace remoting {
15 17
16 class VideoDecoderVp8 : public VideoDecoder { 18 class VideoDecoderVp8 : public VideoDecoder {
17 public: 19 public:
18 VideoDecoderVp8(); 20 VideoDecoderVp8();
19 virtual ~VideoDecoderVp8(); 21 virtual ~VideoDecoderVp8();
20 22
21 // VideoDecoder implementations. 23 // VideoDecoder implementations.
22 virtual void Initialize(const SkISize& screen_size) OVERRIDE; 24 virtual bool IsReadyForData() OVERRIDE;
25 virtual void Initialize(const webrtc::DesktopSize& screen_size) OVERRIDE;
23 virtual DecodeResult DecodePacket(const VideoPacket* packet) OVERRIDE; 26 virtual DecodeResult DecodePacket(const VideoPacket* packet) OVERRIDE;
24 virtual bool IsReadyForData() OVERRIDE;
25 virtual VideoPacketFormat::Encoding Encoding() OVERRIDE; 27 virtual VideoPacketFormat::Encoding Encoding() OVERRIDE;
26 virtual void Invalidate(const SkISize& view_size, 28 virtual void Invalidate(const webrtc::DesktopSize& view_size,
27 const SkRegion& region) OVERRIDE; 29 const webrtc::DesktopRegion& region) OVERRIDE;
28 virtual void RenderFrame(const SkISize& view_size, 30 virtual void RenderFrame(const webrtc::DesktopSize& view_size,
29 const SkIRect& clip_area, 31 const webrtc::DesktopRect& clip_area,
30 uint8* image_buffer, 32 uint8* image_buffer,
31 int image_stride, 33 int image_stride,
32 SkRegion* output_region) OVERRIDE; 34 webrtc::DesktopRegion* output_region) OVERRIDE;
33 virtual const SkRegion* GetImageShape() OVERRIDE; 35 virtual const webrtc::DesktopRegion* GetImageShape() OVERRIDE;
34 36
35 private: 37 private:
36 enum State { 38 enum State {
37 kUninitialized, 39 kUninitialized,
38 kReady, 40 kReady,
39 kError, 41 kError,
40 }; 42 };
41 43
42 // Fills the rectangle |rect| with the given ARGB color |color| in |buffer|. 44 // Fills the rectangle |rect| with the given ARGB color |color| in |buffer|.
43 void FillRect(uint8* buffer, int stride, const SkIRect& rect, uint32 color); 45 void FillRect(uint8* buffer, int stride,
46 const webrtc::DesktopRect& rect,
47 uint32 color);
44 48
45 // Calculates the difference between the desktop shape regions in two 49 // Calculates the difference between the desktop shape regions in two
46 // consecutive frames and updates |updated_region_| and |transparent_region_| 50 // consecutive frames and updates |updated_region_| and |transparent_region_|
47 // accordingly. 51 // accordingly.
48 void UpdateImageShapeRegion(SkRegion* new_desktop_shape); 52 void UpdateImageShapeRegion(webrtc::DesktopRegion* new_desktop_shape);
49 53
50 // The internal state of the decoder. 54 // The internal state of the decoder.
51 State state_; 55 State state_;
52 56
53 vpx_codec_ctx_t* codec_; 57 vpx_codec_ctx_t* codec_;
54 58
55 // Pointer to the last decoded image. 59 // Pointer to the last decoded image.
56 vpx_image_t* last_image_; 60 vpx_image_t* last_image_;
57 61
58 // The region updated that hasn't been copied to the screen yet. 62 // The region updated that hasn't been copied to the screen yet.
59 SkRegion updated_region_; 63 webrtc::DesktopRegion updated_region_;
60 64
61 // Output dimensions. 65 // Output dimensions.
62 SkISize screen_size_; 66 webrtc::DesktopSize screen_size_;
63 67
64 // The region occupied by the top level windows. 68 // The region occupied by the top level windows.
65 SkRegion desktop_shape_; 69 webrtc::DesktopRegion desktop_shape_;
66 70
67 // The region that should be make transparent. 71 // The region that should be make transparent.
68 SkRegion transparent_region_; 72 webrtc::DesktopRegion transparent_region_;
69 73
70 DISALLOW_COPY_AND_ASSIGN(VideoDecoderVp8); 74 DISALLOW_COPY_AND_ASSIGN(VideoDecoderVp8);
71 }; 75 };
72 76
73 } // namespace remoting 77 } // namespace remoting
74 78
75 #endif // REMOTING_CODEC_VIDEO_DECODER_VP8_H_ 79 #endif // REMOTING_CODEC_VIDEO_DECODER_VP8_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698