| Index: remoting/codec/video_decoder_verbatim.cc
|
| diff --git a/remoting/codec/video_decoder_row_based.cc b/remoting/codec/video_decoder_verbatim.cc
|
| similarity index 73%
|
| rename from remoting/codec/video_decoder_row_based.cc
|
| rename to remoting/codec/video_decoder_verbatim.cc
|
| index 35ed573d765da97d3a6a570f1dc2398fb8210bcb..f9a5e11868291edf8f6a392cf6bc96a2fdc7e127 100644
|
| --- a/remoting/codec/video_decoder_row_based.cc
|
| +++ b/remoting/codec/video_decoder_verbatim.cc
|
| @@ -2,12 +2,9 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "remoting/codec/video_decoder_row_based.h"
|
| +#include "remoting/codec/video_decoder_verbatim.h"
|
|
|
| #include "base/logging.h"
|
| -#include "remoting/base/decompressor.h"
|
| -#include "remoting/base/decompressor_zlib.h"
|
| -#include "remoting/base/decompressor_verbatim.h"
|
| #include "remoting/base/util.h"
|
|
|
| namespace remoting {
|
| @@ -15,33 +12,21 @@ namespace remoting {
|
| namespace {
|
| // Both input and output data are assumed to be RGBA32.
|
| const int kBytesPerPixel = 4;
|
| -}
|
| +} // namespace
|
|
|
| -VideoDecoderRowBased* VideoDecoderRowBased::CreateZlibDecoder() {
|
| - return new VideoDecoderRowBased(new DecompressorZlib(),
|
| - VideoPacketFormat::ENCODING_ZLIB);
|
| -}
|
|
|
| -VideoDecoderRowBased* VideoDecoderRowBased::CreateVerbatimDecoder() {
|
| - return new VideoDecoderRowBased(new DecompressorVerbatim(),
|
| - VideoPacketFormat::ENCODING_VERBATIM);
|
| -}
|
| -
|
| -VideoDecoderRowBased::VideoDecoderRowBased(Decompressor* decompressor,
|
| - VideoPacketFormat::Encoding encoding)
|
| +VideoDecoderVerbatim::VideoDecoderVerbatim()
|
| : state_(kUninitialized),
|
| clip_(SkIRect::MakeEmpty()),
|
| - decompressor_(decompressor),
|
| - encoding_(encoding),
|
| row_pos_(0),
|
| row_y_(0),
|
| screen_size_(SkISize::Make(0, 0)) {
|
| }
|
|
|
| -VideoDecoderRowBased::~VideoDecoderRowBased() {
|
| +VideoDecoderVerbatim::~VideoDecoderVerbatim() {
|
| }
|
|
|
| -bool VideoDecoderRowBased::IsReadyForData() {
|
| +bool VideoDecoderVerbatim::IsReadyForData() {
|
| switch (state_) {
|
| case kUninitialized:
|
| case kError:
|
| @@ -56,8 +41,7 @@ bool VideoDecoderRowBased::IsReadyForData() {
|
| return false;
|
| }
|
|
|
| -void VideoDecoderRowBased::Initialize(const SkISize& screen_size) {
|
| - decompressor_->Reset();
|
| +void VideoDecoderVerbatim::Initialize(const SkISize& screen_size) {
|
| updated_region_.setEmpty();
|
| screen_buffer_.reset(NULL);
|
|
|
| @@ -71,7 +55,7 @@ void VideoDecoderRowBased::Initialize(const SkISize& screen_size) {
|
| state_ = kReady;
|
| }
|
|
|
| -VideoDecoder::DecodeResult VideoDecoderRowBased::DecodePacket(
|
| +VideoDecoder::DecodeResult VideoDecoderVerbatim::DecodePacket(
|
| const VideoPacket* packet) {
|
| UpdateStateForPacket(packet);
|
|
|
| @@ -88,22 +72,19 @@ VideoDecoder::DecodeResult VideoDecoderRowBased::DecodePacket(
|
| kBytesPerPixel * clip_.left();
|
|
|
| // Consume all the data in the message.
|
| - bool decompress_again = true;
|
| int used = 0;
|
| - while (decompress_again && used < in_size) {
|
| + while (used < in_size) {
|
| if (row_y_ >= clip_.height()) {
|
| state_ = kError;
|
| LOG(WARNING) << "Too much data is received for the given rectangle.";
|
| return DECODE_ERROR;
|
| }
|
|
|
| - int written = 0;
|
| - int consumed = 0;
|
| - decompress_again = decompressor_->Process(
|
| - in + used, in_size - used, out + row_pos_, row_size - row_pos_,
|
| - &consumed, &written);
|
| - used += consumed;
|
| - row_pos_ += written;
|
| + int bytes_to_copy = std::min(in_size - used, row_size - row_pos_);
|
| + memcpy(out + row_pos_, in + used, bytes_to_copy);
|
| +
|
| + used += bytes_to_copy;
|
| + row_pos_ += bytes_to_copy;
|
|
|
| // If this row is completely filled then move onto the next row.
|
| if (row_pos_ == row_size) {
|
| @@ -121,7 +102,6 @@ VideoDecoder::DecodeResult VideoDecoderRowBased::DecodePacket(
|
| }
|
|
|
| updated_region_.op(clip_, SkRegion::kUnion_Op);
|
| - decompressor_->Reset();
|
| }
|
|
|
| if (state_ == kDone) {
|
| @@ -131,7 +111,7 @@ VideoDecoder::DecodeResult VideoDecoderRowBased::DecodePacket(
|
| }
|
| }
|
|
|
| -void VideoDecoderRowBased::UpdateStateForPacket(const VideoPacket* packet) {
|
| +void VideoDecoderVerbatim::UpdateStateForPacket(const VideoPacket* packet) {
|
| if (state_ == kError) {
|
| return;
|
| }
|
| @@ -184,16 +164,16 @@ void VideoDecoderRowBased::UpdateStateForPacket(const VideoPacket* packet) {
|
| return;
|
| }
|
|
|
| -VideoPacketFormat::Encoding VideoDecoderRowBased::Encoding() {
|
| - return encoding_;
|
| +VideoPacketFormat::Encoding VideoDecoderVerbatim::Encoding() {
|
| + return VideoPacketFormat::ENCODING_VERBATIM;
|
| }
|
|
|
| -void VideoDecoderRowBased::Invalidate(const SkISize& view_size,
|
| +void VideoDecoderVerbatim::Invalidate(const SkISize& view_size,
|
| const SkRegion& region) {
|
| updated_region_.op(region, SkRegion::kUnion_Op);
|
| }
|
|
|
| -void VideoDecoderRowBased::RenderFrame(const SkISize& view_size,
|
| +void VideoDecoderVerbatim::RenderFrame(const SkISize& view_size,
|
| const SkIRect& clip_area,
|
| uint8* image_buffer,
|
| int image_stride,
|
|
|