diff options
Diffstat (limited to 'remoting/base/decoder_vp8.h')
-rw-r--r-- | remoting/base/decoder_vp8.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/remoting/base/decoder_vp8.h b/remoting/base/decoder_vp8.h index 08f60e2..7aab0fb 100644 --- a/remoting/base/decoder_vp8.h +++ b/remoting/base/decoder_vp8.h @@ -8,6 +8,7 @@ #include "remoting/base/decoder.h" typedef struct vpx_codec_ctx vpx_codec_ctx_t; +typedef struct vpx_image vpx_image_t; namespace remoting { @@ -23,6 +24,9 @@ class DecoderVp8 : public Decoder { virtual bool IsReadyForData(); virtual void Reset(); virtual VideoPacketFormat::Encoding Encoding(); + virtual void SetScaleRatios(double horizontal_ratio, double vertical_ratio); + virtual void SetClipRect(const gfx::Rect& clip_rect); + virtual void RefreshRects(const std::vector<gfx::Rect>& rects); private: enum State { @@ -31,6 +35,20 @@ class DecoderVp8 : public Decoder { kError, }; + // Return true if scaling is enabled + bool DoScaling() const; + + // Perform color space conversion on the specified rectangles. + // Write the updated rectangles to |output_rects|. + void ConvertRects(const UpdatedRects& rects, + UpdatedRects* output_rects); + + // Perform scaling and color space conversion on the specified + // rectangles. + // Write the updated rectangles to |output_rects|. + void ScaleAndConvertRects(const UpdatedRects& rects, + UpdatedRects* output_rects); + // The internal state of the decoder. State state_; @@ -39,9 +57,19 @@ class DecoderVp8 : public Decoder { vpx_codec_ctx_t* codec_; + // Pointer to the last decoded image. + vpx_image_t* last_image_; + // Record the updated rects in the last decode. UpdatedRects updated_rects_; + // Clipping rect for the output of the decoder. + gfx::Rect clip_rect_; + + // Scale factors of the decoded output. + double horizontal_scale_ratio_; + double vertical_scale_ratio_; + DISALLOW_COPY_AND_ASSIGN(DecoderVp8); }; |