Index: media/base/video_frame.cc |
diff --git a/media/base/video_frame.cc b/media/base/video_frame.cc |
index fd7fd19f408b7a1f46e3cf7b0172aa87d9295e72..2593bf33496d4558a3e3f1ed2196b1eb6409c242 100644 |
--- a/media/base/video_frame.cc |
+++ b/media/base/video_frame.cc |
@@ -181,6 +181,23 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalYuvData( |
} |
// static |
+scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame( |
+ const scoped_refptr<VideoFrame>& frame, |
+ const base::Closure& no_longer_needed_cb) { |
+ scoped_refptr<VideoFrame> wrapped_frame(new VideoFrame( |
+ frame->format(), frame->coded_size(), frame->visible_rect(), |
+ frame->natural_size(), frame->GetTimestamp(), frame->end_of_stream())); |
+ |
+ for (size_t i = 0; i < NumPlanes(frame->format()); ++i) { |
+ wrapped_frame->strides_[i] = frame->stride(i); |
+ wrapped_frame->data_[i] = frame->data(i); |
+ } |
+ |
+ wrapped_frame->no_longer_needed_cb_ = no_longer_needed_cb; |
+ return wrapped_frame; |
+} |
+ |
+// static |
scoped_refptr<VideoFrame> VideoFrame::CreateEOSFrame() { |
return new VideoFrame(VideoFrame::UNKNOWN, |
gfx::Size(), |