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, |