media: Plumb 10-bit input and HDR metadata for HEVC Main10 [chromium/src : main]

0 views
Skip to first unread message

Dale Curtis (Gerrit)

unread,
Aug 3, 2026, 4:51:46 PM (2 days ago) Aug 3
to android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Qiu, Jianlin, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
Attention needed from Saifuddin Hitawala and Sida Zhu

Dale Curtis added 4 comments

File media/base/video_frame_converter_internals.cc
Line 570, Patchset 5 (Latest): if (src_frame.format() == PIXEL_FORMAT_P010LE) {
Dale Curtis . unresolved

Can drop this now since libyuv is just calling the same thing you are below.

File media/base/video_util.cc
Line 100, Patchset 1: return frame.format();
Dale Curtis . resolved

How are we hitting this path? Readback for HBD isn't implemented AFAIK?

Sida Zhu

Decode 10bit P010 video and encode it to 8bit NV12 need this.

Dale Curtis

Hmm, I'm surprised this works at all. I guess the method is reading per-plane and thus avoids needing to deal with format intricacies. @hita...@chromium.org in case there's subtleties to beware of here.

Saifuddin Hitawala

Yes, it currently does readback per planes. I think it should be fine for readback for P010. But now that it is software P010 frame it could reach VideoResourceUpdater, and there we don't [support P010](https://source.chromium.org/chromium/chromium/src/+/main:media/renderers/video_resource_updater.cc;drc=1ab8a80b7593885d06d31204c595d9f9358e56be;l=282). Looks like it is also broken (or maybe fine?) for NV16/NV24 there since they are also not supported.

Sida Zhu

`ReadbackFormat` is only used by texture/opaque SharedImage → CPU readback (`ReadbackTextureBackedFrameToMemorySync`), not by GMB map (ConvertToMemoryMappedFrame).

The hit path for this CL:

```
HW decode (Main10)
|
v
VideoFrame format = P010
storage = opaque SharedImage (HasSharedImage, !HasMappableSharedImage)
|
v
VideoEncoder encode as HEVC Main / NV12
DoesSupportGpuSharedImages(P010) == false
(gpu_supported_pixel_formats_ is NV12-only for Main)
|
v
StartReadback()
|
v
ReadbackTextureBackedFrameToMemorySync()
|
v
ReadbackFormat(frame) <── needs case P010LE
| else PIXEL_FORMAT_UNKNOWN → encode fails
v
per-plane ReadbackImagePixels (Y: R16, UV: R16G16)
|
v
CPU P010 frame
|
v
ConvertAndScale(P010 → NV12) → VEA

```
Without the P010LE case, that opaque-SI P010 frame can’t leave GPU memory, so 10-bit decode → 8-bit encode breaks whenever the decoder doesn’t hand us a mappable GMB.

It doesn’t go through RGB/VideoResourceUpdater. `SkColorTypeForPlane` already maps `P010/P210/P410` → `kR16_unorm` / `kR16G16_unorm`.

`P210LE` / `P410LE` should be similar like `P010LE`, so I've updated `ConvertAndScalePx10` and `ReadbackFormat` lists them for the same opaque-SI → CPU bridge (422/444), the HW decoder currently support decoder HEVC 4:2:2 & 4:4:4 10bit video into these format.

Dale Curtis

Acknowledged

File media/video/video_encode_accelerator_adapter.cc
Line 219, Patchset 5 (Latest): // ConvertAndScale staging. VEA_READ_CAMERA_AND_CPU_READ_WRITE is only
Dale Curtis . unresolved

Interesting. Was this path totally failing before this fix?

Line 621, Patchset 1: // If the frame cannot be passed through, PrepareGpuFrame must allocate a
Dale Curtis . resolved

Do we need this once the supported formats list is fixed? I don't follow why the existing code wouldn't already handle this path otherwise.

It also seems like l.619 would ensure `use_gpu_buffer` is false already given l.627.

Sida Zhu

The use_gpu_buffer = false block was a workaround for broken GPU staging on non-Ozone, not a format-list issue.

After the [opaque-SI CL]((https://chromium-review.googlesource.com/c/chromium/src/+/8174784), `supports_gpu_shared_images` makes many SI frames take the GPU path. If the format can’t passthrough, `PrepareGpuFrame` must allocate a `ConvertAndScale` destination with: `BufferUsage::VEA_READ_CAMERA_AND_CPU_READ_WRITE`.

On Mac that usage is rejected by both factories:


```
PrepareGpuFrame needs staging GMB
|
v
CreateSharedImage(..., VEA_READ_CAMERA_AND_CPU_READ_WRITE)
|
+---------------+----------------+
| |
v v
IsNativeBufferSupported() SharedMemory fallback
(Apple / IOSurface) IsBufferUsageSupported()
| |
v v
return false return false
| |
+---------------+----------------+
|
v
CreateSharedImage fails
|
v
Encode fails
```

So: SI frame → can’t passthrough → `PrepareGpuFrame` → staging create fails.

The block forced those cases onto `PrepareCpuFrame` before staging was attempted:

```
use_gpu_buffer &&
preference != GpuMemBuf && // Linux GpuMemBuf still OK (Ozone/GBM)
!CanPassthrough(...)
→ use_gpu_buffer = false // avoid the dead Mac staging path
```

L619 (CpuMemBuf preference) is different — it only covers the explicitly-CPU preference. This block covered the “SI frame, default/heuristic GPU path, needs conversion” case.

With staging switched to `GPU_READ_CPU_READ_WRITE`, that workaround is obsolete and can be removed.

Dale Curtis

Acknowledged

Open in Gerrit

Related details

Attention is currently required from:
  • Saifuddin Hitawala
  • Sida Zhu
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I41f23d478650ce52f4bedaa083b86d067aa575e0
Gerrit-Change-Number: 8159082
Gerrit-PatchSet: 5
Gerrit-Owner: Sida Zhu <zhu...@bytedance.com>
Gerrit-Reviewer: Dale Curtis <dalec...@chromium.org>
Gerrit-Reviewer: Qiu, Jianlin <jianl...@intel.com>
Gerrit-Reviewer: Sida Zhu <zhu...@bytedance.com>
Gerrit-CC: Saifuddin Hitawala <hita...@chromium.org>
Gerrit-Attention: Sida Zhu <zhu...@bytedance.com>
Gerrit-Attention: Saifuddin Hitawala <hita...@chromium.org>
Gerrit-Comment-Date: Mon, 03 Aug 2026 20:51:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Sida Zhu <zhu...@bytedance.com>
Comment-In-Reply-To: Saifuddin Hitawala <hita...@chromium.org>
Comment-In-Reply-To: Dale Curtis <dalec...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Sida Zhu (Gerrit)

unread,
Aug 4, 2026, 5:34:05 AM (yesterday) Aug 4
to android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Dale Curtis, Qiu, Jianlin, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
Attention needed from Dale Curtis and Saifuddin Hitawala

Sida Zhu added 2 comments

File media/base/video_frame_converter_internals.cc
Line 570, Patchset 5: if (src_frame.format() == PIXEL_FORMAT_P010LE) {
Dale Curtis . resolved

Can drop this now since libyuv is just calling the same thing you are below.

Sida Zhu

Yeah, you are right, done.

File media/video/video_encode_accelerator_adapter.cc
Line 219, Patchset 5: // ConvertAndScale staging. VEA_READ_CAMERA_AND_CPU_READ_WRITE is only
Dale Curtis . unresolved

Interesting. Was this path totally failing before this fix?

Sida Zhu

Not every encode hit this path, but yes: when the adapter needed a mappable
SharedImage staging buffer for `ConvertAndScale()`, `VEA_READ_CAMERA_AND_CPU_READ_WRITE`
was only supported by the Ozone/GBM path. Windows/Android native backings reject
that usage, and the shared-memory backing rejects it as well. The path is hit
when GPU input is selected but the source frame cannot be passed through
directly, e.g. because it needs resize or format conversion.

Open in Gerrit

Related details

Attention is currently required from:
  • Dale Curtis
  • Saifuddin Hitawala
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I41f23d478650ce52f4bedaa083b86d067aa575e0
Gerrit-Change-Number: 8159082
Gerrit-PatchSet: 6
Gerrit-Owner: Sida Zhu <zhu...@bytedance.com>
Gerrit-Reviewer: Dale Curtis <dalec...@chromium.org>
Gerrit-Reviewer: Qiu, Jianlin <jianl...@intel.com>
Gerrit-Reviewer: Sida Zhu <zhu...@bytedance.com>
Gerrit-CC: Saifuddin Hitawala <hita...@chromium.org>
Gerrit-Attention: Saifuddin Hitawala <hita...@chromium.org>
Gerrit-Attention: Dale Curtis <dalec...@chromium.org>
Gerrit-Comment-Date: Tue, 04 Aug 2026 09:33:31 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Dale Curtis <dalec...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Dale Curtis (Gerrit)

unread,
Aug 4, 2026, 6:53:36 PM (13 hours ago) Aug 4
to android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Qiu, Jianlin, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
Attention needed from Saifuddin Hitawala and Sida Zhu

Dale Curtis voted and added 2 comments

Votes added by Dale Curtis

Code-Review+1

2 comments

File media/base/video_frame_converter.cc
Line 567, Patchset 6 (Latest):
Dale Curtis . resolved

We could do better for P0x -> P010 w/o scaling, but this is fine for now since I expect this to be rare.

File media/video/video_encode_accelerator_adapter.cc
Line 219, Patchset 5: // ConvertAndScale staging. VEA_READ_CAMERA_AND_CPU_READ_WRITE is only
Dale Curtis . resolved

Interesting. Was this path totally failing before this fix?

Sida Zhu

Not every encode hit this path, but yes: when the adapter needed a mappable
SharedImage staging buffer for `ConvertAndScale()`, `VEA_READ_CAMERA_AND_CPU_READ_WRITE`
was only supported by the Ozone/GBM path. Windows/Android native backings reject
that usage, and the shared-memory backing rejects it as well. The path is hit
when GPU input is selected but the source frame cannot be passed through
directly, e.g. because it needs resize or format conversion.

Dale Curtis

Acknowledged

Open in Gerrit

Related details

Attention is currently required from:
  • Saifuddin Hitawala
  • Sida Zhu
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I41f23d478650ce52f4bedaa083b86d067aa575e0
Gerrit-Change-Number: 8159082
Gerrit-PatchSet: 6
Gerrit-Owner: Sida Zhu <zhu...@bytedance.com>
Gerrit-Reviewer: Dale Curtis <dalec...@chromium.org>
Gerrit-Reviewer: Qiu, Jianlin <jianl...@intel.com>
Gerrit-Reviewer: Sida Zhu <zhu...@bytedance.com>
Gerrit-CC: Saifuddin Hitawala <hita...@chromium.org>
Gerrit-Attention: Sida Zhu <zhu...@bytedance.com>
Gerrit-Attention: Saifuddin Hitawala <hita...@chromium.org>
Gerrit-Comment-Date: Tue, 04 Aug 2026 22:53:13 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Sida Zhu <zhu...@bytedance.com>
Comment-In-Reply-To: Dale Curtis <dalec...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Qiu, Jianlin (Gerrit)

unread,
Aug 4, 2026, 10:07:49 PM (9 hours ago) Aug 4
to Dale Curtis, android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
Attention needed from Saifuddin Hitawala and Sida Zhu

Qiu, Jianlin added 1 comment

File media/base/video_frame_converter.cc
Line 550, Patchset 6 (Latest):EncoderStatus VideoFrameConverter::ConvertAndScalePx10(
const VideoFrame* src_frame,
VideoFrame& dest_frame) {
DCHECK(src_frame->format() == PIXEL_FORMAT_P010LE ||
src_frame->format() == PIXEL_FORMAT_P210LE ||
src_frame->format() == PIXEL_FORMAT_P410LE);

dest_frame.set_color_space(src_frame->ColorSpace());

if (src_frame->format() == PIXEL_FORMAT_P010LE &&
(dest_frame.format() == PIXEL_FORMAT_NV12 ||
dest_frame.format() == PIXEL_FORMAT_NV12A) &&
src_frame->visible_rect().size() == dest_frame.visible_rect().size()) {
return internals::P010ToNV12x(*src_frame, dest_frame)
? OkStatus()
: EncoderStatus(EncoderStatus::Codes::kFormatConversionError);
}
Qiu, Jianlin . unresolved

Any possiblility we utilize https://developer.apple.com/documentation/videotoolbox/vtpixeltransfersession-api-collection for resolving the shared image, or doing the conversion for non-shared-image in VTVEA with hardware acceleration?

It is OK you implement that as part of CL:8174784. Just would like to know if there is known platform limitation.

Open in Gerrit

Related details

Attention is currently required from:
  • Saifuddin Hitawala
  • Sida Zhu
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I41f23d478650ce52f4bedaa083b86d067aa575e0
    Gerrit-Change-Number: 8159082
    Gerrit-PatchSet: 6
    Gerrit-Owner: Sida Zhu <zhu...@bytedance.com>
    Gerrit-Reviewer: Dale Curtis <dalec...@chromium.org>
    Gerrit-Reviewer: Qiu, Jianlin <jianl...@intel.com>
    Gerrit-Reviewer: Sida Zhu <zhu...@bytedance.com>
    Gerrit-CC: Saifuddin Hitawala <hita...@chromium.org>
    Gerrit-Attention: Sida Zhu <zhu...@bytedance.com>
    Gerrit-Attention: Saifuddin Hitawala <hita...@chromium.org>
    Gerrit-Comment-Date: Wed, 05 Aug 2026 02:07:36 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Qiu, Jianlin (Gerrit)

    unread,
    Aug 4, 2026, 10:07:57 PM (9 hours ago) Aug 4
    to Dale Curtis, android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
    Attention needed from Saifuddin Hitawala and Sida Zhu

    Qiu, Jianlin voted Commit-Queue+1

    Commit-Queue+1
    Gerrit-Comment-Date: Wed, 05 Aug 2026 02:07:44 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Qiu, Jianlin (Gerrit)

    unread,
    Aug 4, 2026, 10:08:04 PM (9 hours ago) Aug 4
    to Dale Curtis, android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
    Attention needed from Saifuddin Hitawala and Sida Zhu

    Qiu, Jianlin voted Code-Review+1

    Code-Review+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Saifuddin Hitawala
    • Sida Zhu
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I41f23d478650ce52f4bedaa083b86d067aa575e0
      Gerrit-Change-Number: 8159082
      Gerrit-PatchSet: 6
      Gerrit-Owner: Sida Zhu <zhu...@bytedance.com>
      Gerrit-Reviewer: Dale Curtis <dalec...@chromium.org>
      Gerrit-Reviewer: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Reviewer: Sida Zhu <zhu...@bytedance.com>
      Gerrit-CC: Saifuddin Hitawala <hita...@chromium.org>
      Gerrit-Attention: Sida Zhu <zhu...@bytedance.com>
      Gerrit-Attention: Saifuddin Hitawala <hita...@chromium.org>
      Gerrit-Comment-Date: Wed, 05 Aug 2026 02:07:51 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Sida Zhu (Gerrit)

      unread,
      Aug 4, 2026, 10:20:28 PM (9 hours ago) Aug 4
      to Qiu, Jianlin, Dale Curtis, android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
      Attention needed from Qiu, Jianlin and Saifuddin Hitawala

      Sida Zhu added 1 comment

      File media/base/video_frame_converter.cc
      Line 550, Patchset 6 (Latest):EncoderStatus VideoFrameConverter::ConvertAndScalePx10(
      const VideoFrame* src_frame,
      VideoFrame& dest_frame) {
      DCHECK(src_frame->format() == PIXEL_FORMAT_P010LE ||
      src_frame->format() == PIXEL_FORMAT_P210LE ||
      src_frame->format() == PIXEL_FORMAT_P410LE);

      dest_frame.set_color_space(src_frame->ColorSpace());

      if (src_frame->format() == PIXEL_FORMAT_P010LE &&
      (dest_frame.format() == PIXEL_FORMAT_NV12 ||
      dest_frame.format() == PIXEL_FORMAT_NV12A) &&
      src_frame->visible_rect().size() == dest_frame.visible_rect().size()) {
      return internals::P010ToNV12x(*src_frame, dest_frame)
      ? OkStatus()
      : EncoderStatus(EncoderStatus::Codes::kFormatConversionError);
      }
      Qiu, Jianlin . unresolved

      Any possiblility we utilize https://developer.apple.com/documentation/videotoolbox/vtpixeltransfersession-api-collection for resolving the shared image, or doing the conversion for non-shared-image in VTVEA with hardware acceleration?

      It is OK you implement that as part of CL:8174784. Just would like to know if there is known platform limitation.

      Sida Zhu

      That's another solution, different from the current VideoFrameConverter path (GPU scaling instead of CPU). It should technically deliver better performance for pixel‑format conversion. For cases without pixel‑format conversion, scaling and crop are already supported in the opaque SI zero copy CL — this is already an improvement over the old path that fully relied on VideoFrameConverter. We can explore its feasibility in a follow‑up threads.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Qiu, Jianlin
      • Saifuddin Hitawala
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I41f23d478650ce52f4bedaa083b86d067aa575e0
      Gerrit-Change-Number: 8159082
      Gerrit-PatchSet: 6
      Gerrit-Owner: Sida Zhu <zhu...@bytedance.com>
      Gerrit-Reviewer: Dale Curtis <dalec...@chromium.org>
      Gerrit-Reviewer: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Reviewer: Sida Zhu <zhu...@bytedance.com>
      Gerrit-CC: Saifuddin Hitawala <hita...@chromium.org>
      Gerrit-Attention: Saifuddin Hitawala <hita...@chromium.org>
      Gerrit-Attention: Qiu, Jianlin <jianl...@intel.com>
      Gerrit-Comment-Date: Wed, 05 Aug 2026 02:19:51 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Qiu, Jianlin <jianl...@intel.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Qiu, Jianlin (Gerrit)

      unread,
      Aug 4, 2026, 10:22:44 PM (9 hours ago) Aug 4
      to Dale Curtis, android-bu...@system.gserviceaccount.com, Saifuddin Hitawala, Chromium LUCI CQ, chromium...@chromium.org, mac-r...@chromium.org, feature-me...@chromium.org
      Attention needed from Saifuddin Hitawala and Sida Zhu

      Qiu, Jianlin added 1 comment

      File media/base/video_frame_converter.cc
      Line 550, Patchset 6 (Latest):EncoderStatus VideoFrameConverter::ConvertAndScalePx10(
      const VideoFrame* src_frame,
      VideoFrame& dest_frame) {
      DCHECK(src_frame->format() == PIXEL_FORMAT_P010LE ||
      src_frame->format() == PIXEL_FORMAT_P210LE ||
      src_frame->format() == PIXEL_FORMAT_P410LE);

      dest_frame.set_color_space(src_frame->ColorSpace());

      if (src_frame->format() == PIXEL_FORMAT_P010LE &&
      (dest_frame.format() == PIXEL_FORMAT_NV12 ||
      dest_frame.format() == PIXEL_FORMAT_NV12A) &&
      src_frame->visible_rect().size() == dest_frame.visible_rect().size()) {
      return internals::P010ToNV12x(*src_frame, dest_frame)
      ? OkStatus()
      : EncoderStatus(EncoderStatus::Codes::kFormatConversionError);
      }
      Qiu, Jianlin . resolved

      Any possiblility we utilize https://developer.apple.com/documentation/videotoolbox/vtpixeltransfersession-api-collection for resolving the shared image, or doing the conversion for non-shared-image in VTVEA with hardware acceleration?

      It is OK you implement that as part of CL:8174784. Just would like to know if there is known platform limitation.

      Sida Zhu

      That's another solution, different from the current VideoFrameConverter path (GPU scaling instead of CPU). It should technically deliver better performance for pixel‑format conversion. For cases without pixel‑format conversion, scaling and crop are already supported in the opaque SI zero copy CL — this is already an improvement over the old path that fully relied on VideoFrameConverter. We can explore its feasibility in a follow‑up threads.

      Qiu, Jianlin

      Thanks! I would like ARGB inputs to be handled without a readback. Looking forward to see the feasibility.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Saifuddin Hitawala
      • Sida Zhu
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement satisfiedCode-Owners
        • requirement satisfiedCode-Review
        • requirement satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: I41f23d478650ce52f4bedaa083b86d067aa575e0
        Gerrit-Change-Number: 8159082
        Gerrit-PatchSet: 6
        Gerrit-Owner: Sida Zhu <zhu...@bytedance.com>
        Gerrit-Reviewer: Dale Curtis <dalec...@chromium.org>
        Gerrit-Reviewer: Qiu, Jianlin <jianl...@intel.com>
        Gerrit-Reviewer: Sida Zhu <zhu...@bytedance.com>
        Gerrit-CC: Saifuddin Hitawala <hita...@chromium.org>
        Gerrit-Attention: Sida Zhu <zhu...@bytedance.com>
        Gerrit-Attention: Saifuddin Hitawala <hita...@chromium.org>
        Gerrit-Comment-Date: Wed, 05 Aug 2026 02:22:31 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Sida Zhu <zhu...@bytedance.com>
        Comment-In-Reply-To: Qiu, Jianlin <jianl...@intel.com>
        satisfied_requirement
        open
        diffy
        Reply all
        Reply to author
        Forward
        0 new messages