Mac: zero-copy frame encode for IOSurface-backed media::VideoFrames.
When forwarding a frame to Video Encode Accelerator, RTCVideoEncoder would almost always create a frame copy unless the incoming media::VideoFrame was backed by STORAGE_SHMEM. The copy would be backed by STORAGE_SHMEM, which results in the video decode accelerator wrapping the VideoFrame's memory in a CVPixelBufferRef. Changes: 1) Break out code in media::VideoFrame::WrapIOSurface() that creates an IOSurface from a GMB handle. 2) Code is added to WrapVideoFrameInCVPixelBuffer to create a CVPixelBufferRef via GpuMemoryBuffer::CloneHandle(). 3) RTCVideoEncoder is changed to pass on GMB-backed video frames. Bug: 1127791, 1125879 Change-Id: I59dd1eae59ae4dffb591830152f44e470fb3cce5 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2410244Reviewed-by:ccameron <ccameron@chromium.org> Reviewed-by:
Miguel Casas <mcasas@chromium.org> Reviewed-by:
Dale Curtis <dalecurtis@chromium.org> Reviewed-by:
Hirokazu Honda <hiroh@chromium.org> Commit-Queue: Markus Handell <handellm@google.com> Cr-Commit-Position: refs/heads/master@{#809450}
Showing
Please register or sign in to comment