Skip to content

Feature Request: Add HDR Vivid (CUVA HDR Vivid) Support #699

Description

@ijuniorfu

What should the engine do?

Description

Add support for HDR Vivid (CUVA HDR Vivid) video playback in AetherEngine.

The goal is to allow HDR Vivid content to be correctly detected, decoded, and presented through both the hardware and software video decoding paths.

Requirements

  • Detect HDR Vivid / CUVA HDR Vivid video content and expose it through the existing video format / HDR detection mechanism.
  • HardwareVideoDecoder should be able to decode and handle HDR Vivid streams correctly.
  • SoftwareVideoDecoder should be able to decode and handle HDR Vivid streams correctly.
  • Preserve HDR Vivid dynamic metadata during the decoding pipeline when available.
  • Make HDR Vivid distinguishable from SDR, HDR10, HDR10+, Dolby Vision, and HLG.
  • Ensure HDR Vivid playback does not cause visible flashing, incorrect colors, or loss of HDR metadata.
  • Support common HDR Vivid MP4/MKV sources supported by FFmpeg.

Expected Result

AetherEngine should be able to:

  1. Identify a video as HDR Vivid (CUVA HDR Vivid).
  2. Decode HDR Vivid through HardwareVideoDecoder when the hardware path is available.
  3. Fall back to SoftwareVideoDecoder and decode the same content correctly when hardware decoding is unavailable.
  4. Preserve and expose HDR Vivid metadata required by the rendering pipeline.
  5. Report the detected format through the existing VideoFormat / video state mechanism.

FFmpeg Reference

FFmpeg 8.1.3 already provides HDR Vivid metadata definitions and related codec-side support. These files may be used as references for the AetherEngine implementation:

Motivation

HDR Vivid is increasingly used in real-world video content. Supporting it as a first-class HDR format would allow AetherEngine-based players to correctly identify and play these files instead of treating them as generic SDR/HDR content.

The desired result is similar to the existing HDR10/HDR10+ handling, with dedicated HDR Vivid / CUVA HDR Vivid detection and support across both hardware and software decoding paths.

Acceptance Criteria

  • HDR Vivid content is correctly detected.
  • HardwareVideoDecoder can play HDR Vivid content.
  • SoftwareVideoDecoder can play the same HDR Vivid content.
  • HDR Vivid metadata is retained throughout the decoding pipeline where available.
  • No visible flashing or incorrect HDR/color behavior occurs during playback.
  • Existing SDR, HDR10, HDR10+, Dolby Vision, and HLG playback remains unaffected.

Apple Platform / Metal Rendering

Since Apple platforms do not provide native HDR Vivid support, would it be possible to consider using Metal for the HDR Vivid rendering/conversion stage?

For example, AetherEngine could preserve the HDR Vivid dynamic metadata from the decoder and use a Metal-based processing pipeline to convert the decoded HDR Vivid frames into a format suitable for Apple's HDR/EDR display pipeline.

The goal would be to support HDR Vivid playback on Apple platforms without relying on native system-level HDR Vivid support.

The exact implementation is open to discussion, but a Metal-based HDR Vivid conversion/rendering path may be worth considering.

Would this architecture fit the direction of AetherEngine, and would you be open to adding HDR Vivid support?

Motivating media or use case

B.1-04.mp4

Visible flashing or incorrect HDR/color behavior occurs during playback.

Area

Codec / container support

Host app / integration context

No response

Would you be willing to open a PR?

No

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions