Index: webrtc/common_video/include/video_frame_buffer.h |
diff --git a/webrtc/common_video/include/video_frame_buffer.h b/webrtc/common_video/include/video_frame_buffer.h |
index 6f082dee9bae928fbb005027b7262f03bdde3053..2eb88549d095506d9136b80a9ff0599dc8fa8b91 100644 |
--- a/webrtc/common_video/include/video_frame_buffer.h |
+++ b/webrtc/common_video/include/video_frame_buffer.h |
@@ -122,6 +122,26 @@ class I420Buffer : public VideoFrameBuffer { |
static rtc::scoped_refptr<I420Buffer> Copy( |
const rtc::scoped_refptr<VideoFrameBuffer>& buffer); |
+ static rtc::scoped_refptr<I420Buffer> Scale( |
+ const rtc::scoped_refptr<VideoFrameBuffer>& buffer, |
+ int dst_width, |
+ int dst_height); |
+ |
+ // Extracts a rectangle of size |crop_width| x |crop_height|, with |
+ // lower left corner at |crop_x|, |crop_y|, and returns a new frame |
perkj_webrtc
2016/05/16 06:48:47
lower left? -really ? isn't this upper left?
|
+ // buffer with the rectangle scaled to size |dst_width| x |
+ // |dst_height|. Note that this function doesn't care about aspect |
+ // ration; typically, callers select |crop_width| and |crop_height| |
+ // so that the aspect ratio is preserved. |
+ static rtc::scoped_refptr<I420Buffer> CropAndScale( |
+ const rtc::scoped_refptr<VideoFrameBuffer>& buffer, |
+ int crop_x, |
+ int crop_y, |
+ int crop_width, |
+ int crop_height, |
+ int dst_width, |
+ int dst_height); |
+ |
protected: |
~I420Buffer() override; |
@@ -187,6 +207,15 @@ class WrappedI420Buffer : public webrtc::VideoFrameBuffer { |
rtc::scoped_refptr<VideoFrameBuffer> NativeToI420Buffer() override; |
+ // Helper function to crop |buffer| without making a deep copy. May |
+ // only be used for non-native frames. |
+ static rtc::scoped_refptr<WrappedI420Buffer> ShallowCrop( |
+ const rtc::scoped_refptr<VideoFrameBuffer>& buffer, |
+ int crop_x, |
+ int crop_y, |
+ int cropped_width, |
+ int cropped_height); |
+ |
private: |
friend class rtc::RefCountedObject<WrappedI420Buffer>; |
~WrappedI420Buffer() override; |