commit | a8b07b609c52aa9f54309b58e333e13404fa8564 | [log] [tgz] |
---|---|---|
author | Nathan Hebert <nhebert@chromium.org> | Thu Mar 14 16:42:33 2024 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Mar 14 16:42:33 2024 |
tree | f68d8c994f38752638c2d2dfbeac20b5460e28fd | |
parent | 156bfb4c4b13be95b8ea0c260eb7160061a6f4d9 [diff] |
media/gpu/chromeos: Add NativePixmapFrameResource NativePixmapFrameResource is composed of a NativePixmapDmaBuf and VideoFrame metadata members. It presents a VideoFrame::StorageType of STORAGE_DMABUF and provides file descriptor accessors. It can be constructed by assuming ownership over a vector of per-plane file descriptors (which will be used to import V4L2 buffers), by allocating the planes using MiniGBM, or by assuming ownership of a NativePixmapDmaBuf. The method WrapFrame is used to create a new FrameResource that is backed by the same NativePixmapDmaBuf, but with caller specified visible rectangle, and a copy of the VideoFrame metadata, which can be modified. The conversion method CreateVideoFrame() produces a VideoFrame with a storage type of STORAGE_GPU_MEMORY_BUFFER with duplicated file descriptors. There are two changes to functions in platform_video_frame_utils.h to expose functionality that is needed by the implementation of NativePixmapFrameResource: 1. AllocateGpuMemoryBufferHandle() creates a NativePixmap and returns a GpuMemoryBufferHandle that refers to it. It does so by utilizing a GBM wrapper that is scoped just to platform_video_frame_utils.cc. In order for NativePixmapFrameResource to have a Create function that uses MiniGBM to allocate frames, the function has been moved out of an anoynmous namespace and is now declared in platform_frame_utils.h. 2. CreateGpuMemoryBufferVideoFrame() allocates a GMBHandle and creates a VideoFrame with storage type of STORAGE_GPU_MEMORY_BUFFER from it. This extracts the VideoFrame creation logic into a new function: CreateVideoFrameFromGpuMemoryBufferHandle(). The new function is called by the original CreateGpuMemoryBufferVideoFrame() function and is also used by NativePixmapFrameResource::CreateVideoFrame(). Bug: b:277581596 Test: Test and chrome targets compile Change-Id: Id028883c2153f18dc0a08396ac2b6222facb96f0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5153222 Commit-Queue: Nathan Hebert <nhebert@chromium.org> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Cr-Commit-Position: refs/heads/main@{#1272854}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.