diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-26 03:58:37 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-26 03:58:37 +0000 |
commit | 0bf0ce3331ea4e597b47126dd71c6448fdc4fc5f (patch) | |
tree | e4ef214610266318497ec72d64aa4e0f53d792f8 /remoting | |
parent | 193b0b89b4b49f8e8eb985b8f1a16e3c8506ee66 (diff) | |
download | chromium_src-0bf0ce3331ea4e597b47126dd71c6448fdc4fc5f.zip chromium_src-0bf0ce3331ea4e597b47126dd71c6448fdc4fc5f.tar.gz chromium_src-0bf0ce3331ea4e597b47126dd71c6448fdc4fc5f.tar.bz2 |
remoting: Extract the utility to get the BytesPerPixel from PixelFormat into a function.
Note: That was a TODO for hclam.
BUG=None
TEST=trybots
Review URL: http://codereview.chromium.org/2865019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50928 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting')
-rw-r--r-- | remoting/base/protocol_util.cc | 15 | ||||
-rw-r--r-- | remoting/base/protocol_util.h | 3 | ||||
-rw-r--r-- | remoting/client/decoder_verbatim.cc | 17 |
3 files changed, 21 insertions, 14 deletions
diff --git a/remoting/base/protocol_util.cc b/remoting/base/protocol_util.cc index 3ac738c5..508ae44a 100644 --- a/remoting/base/protocol_util.cc +++ b/remoting/base/protocol_util.cc @@ -24,4 +24,19 @@ scoped_refptr<media::DataBuffer> SerializeAndFrameMessage( return buffer; } +int GetBytesPerPixel(PixelFormat format) { + // Note: The order is important here for performace. This is sorted from the + // most common to the less common (PixelFormatAscii is mostly used + // just for testing). + switch (format) { + case PixelFormatRgb24: return 3; + case PixelFormatRgb565: return 2; + case PixelFormatRgb32: return 4; + case PixelFormatAscii: return 1; + default: + NOTREACHED() << "Pixel format not supported"; + return 0; + } +} + } // namespace remoting diff --git a/remoting/base/protocol_util.h b/remoting/base/protocol_util.h index 16781eb..94cdc2f 100644 --- a/remoting/base/protocol_util.h +++ b/remoting/base/protocol_util.h @@ -7,6 +7,7 @@ #include "google/protobuf/message_lite.h" #include "media/base/data_buffer.h" +#include "remoting/base/protocol/chromotocol.pb.h" // This file defines utility methods used for encoding and decoding the protocol // used in Chromoting. @@ -19,6 +20,8 @@ namespace remoting { scoped_refptr<media::DataBuffer> SerializeAndFrameMessage( const google::protobuf::MessageLite& msg); +int GetBytesPerPixel(PixelFormat format); + } // namespace remoting #endif // REMOTING_BASE_PROTOCOL_UTIL_H_ diff --git a/remoting/client/decoder_verbatim.cc b/remoting/client/decoder_verbatim.cc index 69b04ae..aba5dce 100644 --- a/remoting/client/decoder_verbatim.cc +++ b/remoting/client/decoder_verbatim.cc @@ -4,6 +4,8 @@ #include "remoting/client/decoder_verbatim.h" +#include "remoting/base/protocol_util.h" + namespace remoting { DecoderVerbatim::DecoderVerbatim() @@ -37,20 +39,6 @@ bool DecoderVerbatim::PartialDecode(HostMessage* message) { int y = message->update_stream_packet().header().y(); PixelFormat pixel_format = message->update_stream_packet().header().pixel_format(); - int bytes_per_pixel = 0; - - // TODO(hclam): Extract the following to an util function. - if (pixel_format == PixelFormatRgb24) { - bytes_per_pixel = 3; - } else if (pixel_format == PixelFormatRgb565) { - bytes_per_pixel = 2; - } else if (pixel_format == PixelFormatRgb32) { - bytes_per_pixel = 4; - } else if (pixel_format == PixelFormatAscii) { - bytes_per_pixel = 1; - } else { - NOTREACHED() << "Pixel format not supported"; - } if (static_cast<PixelFormat>(frame_->format()) != pixel_format) { NOTREACHED() << "Pixel format of message doesn't match the video frame. " @@ -59,6 +47,7 @@ bool DecoderVerbatim::PartialDecode(HostMessage* message) { << " Color space conversion required."; } + int bytes_per_pixel = GetBytesPerPixel(pixel_format); // Copy the data line by line. const int src_stride = bytes_per_pixel * width; const char* src = message->update_stream_packet().data().c_str(); |