| Index: media/base/video_frame.h | 
| diff --git a/media/base/video_frame.h b/media/base/video_frame.h | 
| index c40cb239ed4d331d3d1d2f2702c20cdd1b17502d..9d16d2cf89fc005025ea299fbad00f8e9d31584e 100644 | 
| --- a/media/base/video_frame.h | 
| +++ b/media/base/video_frame.h | 
| @@ -55,19 +55,31 @@ class MEDIA_EXPORT VideoFrame : public base::RefCountedThreadSafe<VideoFrame> { | 
| static bool IsValidConfig(Format format, const gfx::Size& data_size, | 
| const gfx::Size& natural_size); | 
|  | 
| +  // CB to write pixels from the texture backing this frame into the | 
| +  // |void*| parameter. | 
| +  typedef base::Callback<void(void*)> ReadPixelsCB; | 
| + | 
| // Wraps a native texture of the given parameters with a VideoFrame.  When the | 
| // frame is destroyed |no_longer_needed.Run()| will be called. | 
| // |data_size| is the width and height of the frame data in pixels. | 
| // |natural_size| is the width and height of the frame when the frame's aspect | 
| // ratio is applied to |size|. | 
| +  // |read_pixels_cb| may be used to do (slow!) readbacks from the | 
| +  // texture to main memory. | 
| static scoped_refptr<VideoFrame> WrapNativeTexture( | 
| uint32 texture_id, | 
| uint32 texture_target, | 
| const gfx::Size& data_size, | 
| const gfx::Size& natural_size, | 
| base::TimeDelta timestamp, | 
| +      const ReadPixelsCB& read_pixels_cb, | 
| const base::Closure& no_longer_needed); | 
|  | 
| +  // Read pixels from the native texture backing |*this| and write | 
| +  // them to |*pixels| as RGBA.  |pixels| must point to a buffer at | 
| +  // least as large as 4*data_size().width()*data_size().height(). | 
| +  void ReadPixelsFromNativeTexture(void* pixels); | 
| + | 
| // Creates a frame with format equals to VideoFrame::EMPTY, width, height, | 
| // and timestamp are all 0. | 
| static scoped_refptr<VideoFrame> CreateEmptyFrame(); | 
| @@ -152,6 +164,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCountedThreadSafe<VideoFrame> { | 
| // Native texture ID, if this is a NATIVE_TEXTURE frame. | 
| uint32 texture_id_; | 
| uint32 texture_target_; | 
| +  ReadPixelsCB read_pixels_cb_; | 
| base::Closure texture_no_longer_needed_; | 
|  | 
| base::TimeDelta timestamp_; | 
|  |