Speed up chromoting encoding and decoding path for VP8
Several enhancements in this patch:
1. Encoder reports updated rects
2. VP8 decoder only performs YUV conversion on updated rects
3. Painting only updated rects in pepper plugin
BUG=71253
TEST=Use chromoting to watch video
Review URL: http://codereview.chromium.org/6368070
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73737 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/remoting/base/util.h b/remoting/base/util.h
index bf5cff5..51a8d10 100644
--- a/remoting/base/util.h
+++ b/remoting/base/util.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 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.
@@ -9,9 +9,34 @@
namespace remoting {
-// TODO(sergeyu): Move this to media::VideoFrame.
+// TODO(sergeyu): Move these methods to media.
int GetBytesPerPixel(media::VideoFrame::Format format);
+// Convert YUV to RGB32 on a specific rectangle.
+void ConvertYUVToRGB32WithRect(const uint8* y_plane,
+ const uint8* u_plane,
+ const uint8* v_plane,
+ uint8* rgb_plane,
+ int x,
+ int y,
+ int width,
+ int height,
+ int y_stride,
+ int uv_stride,
+ int rgb_stride);
+
+void ConvertRGB32ToYUVWithRect(const uint8* rgb_plane,
+ uint8* y_plane,
+ uint8* u_plane,
+ uint8* v_plane,
+ int x,
+ int y,
+ int width,
+ int height,
+ int rgb_stride,
+ int y_stride,
+ int uv_stride);
+
} // namespace remoting
#endif // REMOTING_BASE_UTIL_H_