From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3CF4441162 for ; Mon, 14 Feb 2022 23:44:57 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 09EB768B1F4; Tue, 15 Feb 2022 01:44:36 +0200 (EET) Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8B0EF68B1C1 for ; Tue, 15 Feb 2022 01:44:29 +0200 (EET) Received: by mail-pf1-f178.google.com with SMTP id p10so11269176pfo.12 for ; Mon, 14 Feb 2022 15:44:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sv6/h7x/NmF7XfuUIA8S+IsfmqQeFIIKBuQ/k1w1ZZ4=; b=cnSVZoMno8osaTA4A6udiM5z44WUBQnQ9u6aJI3hrd4ge7E0+Q4LrF6MUdTU+V+20j HMIqOkon2w2Ha3vW1I+Ob0zJJ2pCHIX0OqTKdOX7UWsa+iEqRI4/JtJnVR11l6LMWEO0 qh5pI9iIaYjPsAvcMGsOUt+szbcNiLRi8EEiupp/bRKW9lN6NZzjH6fDtru+06ajG5mk MbdCU4qoB3jdJ1W+KxqShQLBynj8l0vjDuvBeck/uvpIuhrdPt3CL4qCKM2yF2lLJQGI o0eTqAY7t+vB6c7FfBi/zlwdTOuwgtYv24zi/1kR53AVDSujMrzgkPXpO/0U3SVg5RmN BhEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=sv6/h7x/NmF7XfuUIA8S+IsfmqQeFIIKBuQ/k1w1ZZ4=; b=lsZq7K+arVMPyMksLpdf1I4Nudkl0bV+RYPnxqTEL7nRktUEHpldKFZIDbwxAqygEZ oxl5tFx/9UJrHdE9JM2RnRit1iWPw1mHXGgeSxlA0B9oxbrz45eqLcq49usgDh4fGUqn elWAugWzPgAiqV9bqi1SxDFjxHeET1CRq2+k33m9yMsjJJk2en67s+kVjqSQKAMBeA/e s3tgAZoptpfS6yHL7uiI18tUCKMrjdaIvNna9DQxn3o5p8IIto+TLpISGdVVqkms++fz 6vwd+AvbdnDiGdRwYQkKi0dae02bUmKEruiSGEvZdqufwiCKICa+AkgIolrAPnV6Hb+O Kpgg== X-Gm-Message-State: AOAM530ceXQoWOP2wMuxV6PRa4CPw9CQFTr9fuUXD/KZl1UgLPwtffo6 qNs3FmdL07s2BKWIQYmwoLjDo7PgVDg= X-Google-Smtp-Source: ABdhPJy2zLUM8eWbwzvFSD7hww4WINTRow541IlXOtSSyrzX7jXdsFJ4DTv6dqkcj5L8Kx4fN/RYVA== X-Received: by 2002:a63:5b1c:: with SMTP id p28mr1215848pgb.227.1644882267693; Mon, 14 Feb 2022 15:44:27 -0800 (PST) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id mi7sm492304pjb.21.2022.02.14.15.44.26 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 Feb 2022 15:44:27 -0800 (PST) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Tue, 15 Feb 2022 07:44:19 +0800 Message-Id: <1644882260-8559-3-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1644882260-8559-1-git-send-email-lance.lmwang@gmail.com> References: <1644882260-8559-1-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH 3/4] avfilter: support for CUVA HDR Vivid metadata X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Limin Wang MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Limin Wang Signed-off-by: Limin Wang --- libavfilter/vf_showinfo.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c index 71728bc..bee84b2 100644 --- a/libavfilter/vf_showinfo.c +++ b/libavfilter/vf_showinfo.c @@ -32,6 +32,7 @@ #include "libavutil/internal.h" #include "libavutil/film_grain_params.h" #include "libavutil/hdr_dynamic_metadata.h" +#include "libavutil/hdr_dynamic_vivid_metadata.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/spherical.h" @@ -307,6 +308,88 @@ static void dump_dynamic_hdr_plus(AVFilterContext *ctx, AVFrameSideData *sd) } } +static void dump_dynamic_hdr_vivid(AVFilterContext *ctx, AVFrameSideData *sd) +{ + AVDynamicHDRVivid *hdr_vivid; + + av_log(ctx, AV_LOG_INFO, "HDR Vivid metadata: "); + if (sd->size < sizeof(*hdr_vivid)) { + av_log(ctx, AV_LOG_ERROR, "invalid hdr vivid data\n"); + return; + } + + hdr_vivid = (AVDynamicHDRVivid *)sd->data; + av_log(ctx, AV_LOG_INFO, "system_start_code: %d, ", hdr_vivid->system_start_code); + av_log(ctx, AV_LOG_INFO, "num_windows: %d, ", hdr_vivid->num_windows); + for (int w = 0; w < hdr_vivid->num_windows; w++) { + const AVHDRVividColorTransformParams *params = &hdr_vivid->params[w]; + + av_log(ctx, AV_LOG_INFO, "minimum_maxrgb[%d]: %.4f, ", w, av_q2d(params->minimum_maxrgb)); + av_log(ctx, AV_LOG_INFO, "average_maxrgb[%d]: %.4f, ", w, av_q2d(params->average_maxrgb)); + av_log(ctx, AV_LOG_INFO, "variance_maxrgb[%d]:%.4f, ", w, av_q2d(params->variance_maxrgb)); + av_log(ctx, AV_LOG_INFO, "maximum_maxrgb[%d]: %.4f, ", w, av_q2d(params->maximum_maxrgb)); + } + + for (int w = 0; w < hdr_vivid->num_windows; w++) { + const AVHDRVividColorTransformParams *params = &hdr_vivid->params[w]; + + av_log(ctx, AV_LOG_INFO, "tone_mapping_mode_flag[%d]: %d, ", w, params->tone_mapping_mode_flag); + av_log(ctx, AV_LOG_INFO, "tone_mapping_param_num[%d]: %d, ", w, params->tone_mapping_param_num); + if (params->tone_mapping_mode_flag) { + for (int i = 0; i < params->tone_mapping_param_num; i++) { + const AVHDRVividColorToneMappingParams *tm_params = ¶ms->tm_params[i]; + + av_log(ctx, AV_LOG_INFO, "targeted_system_display_maximum_luminance[%d][%d]: %.4f, ", + w, i, av_q2d(tm_params->targeted_system_display_maximum_luminance)); + av_log(ctx, AV_LOG_INFO, "base_enable_flag[%d][%d]: %d, ", + w, i, tm_params->base_enable_flag); + if (tm_params->base_enable_flag) { + av_log(ctx, AV_LOG_INFO, "base_param_m_p[%d][%d]: %.4f, ", w, i, av_q2d(tm_params->base_param_m_p)); + av_log(ctx, AV_LOG_INFO, "base_param_m_m[%d][%d]: %.4f, ", w, i, av_q2d(tm_params->base_param_m_m)); + av_log(ctx, AV_LOG_INFO, "base_param_m_a[%d][%d]: %.4f, ", w, i, av_q2d(tm_params->base_param_m_a)); + av_log(ctx, AV_LOG_INFO, "base_param_m_b[%d][%d]: %.4f, ", w, i, av_q2d(tm_params->base_param_m_b)); + av_log(ctx, AV_LOG_INFO, "base_param_m_n[%d][%d]: %.4f, ", w, i, av_q2d(tm_params->base_param_m_n)); + av_log(ctx, AV_LOG_INFO, "base_param_k1[%d][%d]: %d, ", w, i, tm_params->base_param_k1); + av_log(ctx, AV_LOG_INFO, "base_param_k2[%d][%d]: %d, ", w, i, tm_params->base_param_k2); + av_log(ctx, AV_LOG_INFO, "base_param_k3[%d][%d]: %d, ", w, i, tm_params->base_param_k3); + av_log(ctx, AV_LOG_INFO, "base_param_Delta_enable_mode[%d][%d]: %d, ", w, i, + tm_params->base_param_Delta_enable_mode); + av_log(ctx, AV_LOG_INFO, "base_param_Delta[%d][%d]: %.4f, ", w, i, av_q2d(tm_params->base_param_Delta)); + } + if (tm_params->three_Spline_flag) { + av_log(ctx, AV_LOG_INFO, "3Spline_flag[%d][%d]: %d, ", w, i, tm_params->three_Spline_flag); + av_log(ctx, AV_LOG_INFO, "3Spline_TH_mode[%d][%d]: %d, ", w, i, tm_params->three_Spline_TH_mode); + + for (int j = 0; j < tm_params->three_Spline_num; j++) { + av_log(ctx, AV_LOG_INFO, "3Spline_TH_enable_MB[%d][%d][%d]: %.4f, ", + w, i, j, av_q2d(tm_params->three_Spline_TH_enable_MB)); + av_log(ctx, AV_LOG_INFO, "3Spline_TH[%d][%d][%d]: %.4f, ", + w, i, j, av_q2d(tm_params->three_Spline_TH)); + av_log(ctx, AV_LOG_INFO, "3Spline_TH_Delta1[%d][%d][%d]: %.4f, ", + w, i, j, av_q2d(tm_params->three_Spline_TH_Delta1)); + av_log(ctx, AV_LOG_INFO, "3Spline_TH_Delta2[%d][%d][%d]: %.4f, ", + w, i, j, av_q2d(tm_params->three_Spline_TH_Delta2)); + av_log(ctx, AV_LOG_INFO, "3Spline_enable_Strength[%d][%d][%d]: %.4f, ", + w, i, j, av_q2d(tm_params->three_Spline_enable_Strength)); + } + } + } + } + + av_log(ctx, AV_LOG_INFO, "color_saturation_mapping_flag[%d]: %d", + w, params->color_saturation_mapping_flag); + if (params->color_saturation_mapping_flag) { + av_log(ctx, AV_LOG_INFO, ", color_saturation_num[%d]: %d", + w, params->color_saturation_num); + for (int i = 0; i < params->color_saturation_num; i++) { + av_log(ctx, AV_LOG_INFO, ", color_saturation_gain[%d][%d]: %.4f", + w, i, av_q2d(params->color_saturation_gain[i])); + } + } + } +} + + static void dump_content_light_metadata(AVFilterContext *ctx, AVFrameSideData *sd) { const AVContentLightMetadata *metadata = (const AVContentLightMetadata *)sd->data; @@ -704,6 +787,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) case AV_FRAME_DATA_DYNAMIC_HDR_PLUS: dump_dynamic_hdr_plus(ctx, sd); break; + case AV_FRAME_DATA_DYNAMIC_HDR_VIVID: + dump_dynamic_hdr_vivid(ctx, sd); + break; case AV_FRAME_DATA_CONTENT_LIGHT_LEVEL: dump_content_light_metadata(ctx, sd); break; -- 1.8.3.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".