Index: media/base/video_frame.cc |
diff --git a/media/base/video_frame.cc b/media/base/video_frame.cc |
index b4a8392ff8c848dc9edf9ba0ddd7ce181ad0c7b5..cd05dc44cf5c6a62340c3a1c34979f214ddee04f 100644 |
--- a/media/base/video_frame.cc |
+++ b/media/base/video_frame.cc |
@@ -212,6 +212,35 @@ scoped_refptr<VideoFrame> VideoFrame::WrapYUV420NativeTextures( |
} |
// static |
+scoped_refptr<VideoFrame> VideoFrame::WrapYV12ANativeTextures( |
+ const gpu::MailboxHolder& y_mailbox_holder, |
+ const gpu::MailboxHolder& u_mailbox_holder, |
+ const gpu::MailboxHolder& v_mailbox_holder, |
+ const gpu::MailboxHolder& a_mailbox_holder, |
+ const ReleaseMailboxCB& mailbox_holder_release_cb, |
+ const gfx::Size& coded_size, |
+ const gfx::Rect& visible_rect, |
+ const gfx::Size& natural_size, |
+ base::TimeDelta timestamp) { |
+ const StorageType storage = STORAGE_OPAQUE; |
+ VideoPixelFormat format = PIXEL_FORMAT_YV12A; |
+ if (!IsValidConfig(format, storage, coded_size, visible_rect, natural_size)) { |
+ LOG(DFATAL) << __FUNCTION__ << " Invalid config." |
+ << ConfigToString(format, storage, coded_size, visible_rect, |
+ natural_size); |
+ return nullptr; |
+ } |
+ |
+ gpu::MailboxHolder mailbox_holders[kMaxPlanes]; |
+ mailbox_holders[kYPlane] = y_mailbox_holder; |
+ mailbox_holders[kUPlane] = u_mailbox_holder; |
+ mailbox_holders[kVPlane] = v_mailbox_holder; |
+ mailbox_holders[kAPlane] = a_mailbox_holder; |
+ return new VideoFrame(format, storage, coded_size, visible_rect, natural_size, |
+ mailbox_holders, mailbox_holder_release_cb, timestamp); |
+} |
+ |
+// static |
scoped_refptr<VideoFrame> VideoFrame::WrapExternalData( |
VideoPixelFormat format, |
const gfx::Size& coded_size, |