summaryrefslogtreecommitdiffstats
path: root/remoting/base/decoder_vp8.h
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/base/decoder_vp8.h')
-rw-r--r--remoting/base/decoder_vp8.h28
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);
};