diff mbox series

[FFmpeg-devel] fftools/ffplay: use swapchain_colorspace_hint to get better HDR support

Message ID tencent_7D12201FCD964F90550EA716B8B3161B4D07@qq.com
State New
Headers show
Series [FFmpeg-devel] fftools/ffplay: use swapchain_colorspace_hint to get better HDR support | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Zhao Zhili Sept. 25, 2024, 2:45 p.m. UTC
From: Zhao Zhili <zhilizhao@tencent.com>

For example, the default surface configuration on macOS is:
VK_FORMAT_A2B10G10R10_UNORM_PACK32 + VK_COLOR_SPACE_PASS_THROUGH_EXT

With HDR10 content and swapchain_colorspace_hint, the surface
configuration updated to:
VK_FORMAT_A2B10G10R10_UNORM_PACK32 + VK_COLOR_SPACE_HDR10_ST2084_EXT
---
 fftools/ffplay_renderer.c | 3 +++
 1 file changed, 3 insertions(+)
diff mbox series

Patch

diff --git a/fftools/ffplay_renderer.c b/fftools/ffplay_renderer.c
index f272cb46f1..618149e7b2 100644
--- a/fftools/ffplay_renderer.c
+++ b/fftools/ffplay_renderer.c
@@ -697,6 +697,7 @@  static int display(VkRenderer *renderer, AVFrame *frame)
     struct pl_frame target = {0};
     RendererContext *ctx = (RendererContext *) renderer;
     int ret = 0;
+    struct pl_color_space hint = {0};
 
     ret = convert_frame(renderer, frame);
     if (ret < 0)
@@ -709,6 +710,8 @@  static int display(VkRenderer *renderer, AVFrame *frame)
         return AVERROR_EXTERNAL;
     }
 
+    pl_color_space_from_avframe(&hint, frame);
+    pl_swapchain_colorspace_hint(ctx->swapchain, &hint);
     if (!pl_swapchain_start_frame(ctx->swapchain, &swap_frame)) {
         av_log(NULL, AV_LOG_ERROR, "start frame failed\n");
         ret = AVERROR_EXTERNAL;