diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 17:34:32 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-29 17:34:32 +0000 |
commit | 622b788650a636236c3842f1287126fc60fb80ed (patch) | |
tree | da3e6045ec78f3c4929a6f11779bb8ac21b5adb1 /remoting/base/decoder_vp8.h | |
parent | 3190f36c2f7ac99d06a07b3df1e12ac36fc11d08 (diff) | |
download | chromium_src-622b788650a636236c3842f1287126fc60fb80ed.zip chromium_src-622b788650a636236c3842f1287126fc60fb80ed.tar.gz chromium_src-622b788650a636236c3842f1287126fc60fb80ed.tar.bz2 |
VP8 decoder for chromoting
Added DecoderVp8 and unit test for chromoting.
TEST=remoting_unittests
BUG=50235
Review URL: http://codereview.chromium.org/3032047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60960 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/base/decoder_vp8.h')
-rw-r--r-- | remoting/base/decoder_vp8.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/remoting/base/decoder_vp8.h b/remoting/base/decoder_vp8.h new file mode 100644 index 0000000..5fe0169 --- /dev/null +++ b/remoting/base/decoder_vp8.h @@ -0,0 +1,56 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_BASE_DECODER_VP8_H_ +#define REMOTING_BASE_DECODER_VP8_H_ + +#include "remoting/base/decoder.h" + +typedef struct vpx_codec_ctx vpx_codec_ctx_t; + +namespace remoting { + +class DecoderVp8 : public Decoder { + public: + DecoderVp8(); + ~DecoderVp8(); + + // Decoder implementations. + virtual bool BeginDecode(scoped_refptr<media::VideoFrame> frame, + UpdatedRects* update_rects, + Task* partial_decode_done, + Task* decode_done); + virtual bool PartialDecode(ChromotingHostMessage* message); + virtual void EndDecode(); + + private: + bool HandleBeginRect(ChromotingHostMessage* message); + bool HandleRectData(ChromotingHostMessage* message); + bool HandleEndRect(ChromotingHostMessage* message); + + // The internal state of the decoder. + State state_; + + // Keeps track of the updating rect. + int rect_x_; + int rect_y_; + int rect_width_; + int rect_height_; + + // Tasks to call when decode is done. + scoped_ptr<Task> partial_decode_done_; + scoped_ptr<Task> decode_done_; + + // The video frame to write to. + scoped_refptr<media::VideoFrame> frame_; + UpdatedRects* updated_rects_; + + vpx_codec_ctx_t* codec_; + + DISALLOW_COPY_AND_ASSIGN(DecoderVp8); +}; + +} // namespace remoting + +#endif // REMOTING_BASE_DECODER_VP8_H_ |