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_