From patchwork Wed Jan 11 19:31:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 39972 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:bc95:b0:ad:ade2:bfd2 with SMTP id fx21csp4999317pzb; Wed, 11 Jan 2023 11:31:19 -0800 (PST) X-Google-Smtp-Source: AMrXdXtd62n/boPT1AD2QYY7D1d71KoMjT6qEBEwPgnMA/arfCbVZ0ZsJk61kEvcbXQf03CzT6Wv X-Received: by 2002:a17:906:158c:b0:7c4:f752:e959 with SMTP id k12-20020a170906158c00b007c4f752e959mr58955016ejd.33.1673465478832; Wed, 11 Jan 2023 11:31:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673465478; cv=none; d=google.com; s=arc-20160816; b=ZpGvei4TsHjaXSI0XEMk19ioCENC2JCu63kcFTQtkpxCBTNiqVTm/tFGfIgX15qjgg P21xZn0LC5KIDnpQeFAiEO+4ceZsFmxlUZ3m54nwox1X350k+lxpWF8v9scXCiSSM+IC AaoU6wWTeb1R2Mu4ORL2Fr152FAh/d5XnOxA1TDBRSk2v4ER5YexeZV+admWjOpGBMWZ e5Fuzp4rBE9oJ3dGCKDif9wNPvhlB/U1B0Q0aITmCpzIXON9wfw/AJjjsz/i9VM6oRcY dak3KDspLGOZs40+IM49S8BMRPkWRlUbu2uvUFecYCB+6Cd8GHhjLrWnwPUI2sKNERve e5/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=gYiSSqX0VjCkyP7/gesBZEM6DuQuh8nIdApkh+yPDKg=; b=BYMUS5hWdKSBah3S5Zj1qJ/pKJajRKV4MKhnDef+oUSeW7fjUdaDPCZ8miyrd9HMmA xRNKqSY2qcPpAUQBVXLgxy8uS/GmIy1mmw69/R62ws0bMPdLN3c7chr6zwtU/vOdS5vS vmlRsH3QWJOJSedWjWJbXQtkj1MirAPZ8N/4kGdC3A3K51lXyfxYovnJng6AQH2jL7R4 CSrXqD6btJs+73q7DEgTJxNogI4i+cqo7S9hkAsCR3Ve73Dke54DL5eK635DQRTEXPYh wPz7wVLrEwOMyH2e+88RrNtaouJyMrMf/zGuxRnAlnL3ByhrwnP1ib/6Fz6+e9VgXn/y oHlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="Ov/Sdw+e"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id nb36-20020a1709071ca400b0084d14cdf562si16670890ejc.27.2023.01.11.11.31.17; Wed, 11 Jan 2023 11:31:18 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="Ov/Sdw+e"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3E12F68BD16; Wed, 11 Jan 2023 21:31:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oo1-f46.google.com (mail-oo1-f46.google.com [209.85.161.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9F79368B613 for ; Wed, 11 Jan 2023 21:31:07 +0200 (EET) Received: by mail-oo1-f46.google.com with SMTP id x15-20020a4ab90f000000b004e64a0a967fso4295450ooo.2 for ; Wed, 11 Jan 2023 11:31:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=7wXLehGhOJJQPSb7+jyj05Gr6XtfZX2XiQFqiEVefdY=; b=Ov/Sdw+e5jc8vn07JJEQDlc50nZafkg3rkKFW0+ru/yXNMVq90P67NENh9/z1Wwbh8 C/xb4WO2aDKE0rpg9DPJzJz8Y1LbmGAh3MpNkZoyKkal6MzMbb+yX67i+Rtww7jQvAj0 AOPeEIDl98E/RwBMUU4dEGEArGDBRRLtEtjxo4MBfsRVSqe/0Pe9cqIEMnVlLpsn+g+1 5zFgxPUh9VHU1VZBWnr4JGBAB3ML5trkkZvK3BcohgUmFm4Zw19+3Jf9CMsNZ/uU45ei ehkGFzTfJ+bAQkaYSsbSemnlVENPneWbDgD+EUf5AeaP8SKaRF+niK3GJipv3oh8PdJO thVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7wXLehGhOJJQPSb7+jyj05Gr6XtfZX2XiQFqiEVefdY=; b=zIEjf7Ak9cTg0QjFeCCXNTj2rtVMqk2cc+f0XosrR9Pyp+EPqWaLCjscywFkPPmI1h XZUaUqRrfOu7t5EqD4BzFH2SdUZemgpxqSw4n/zuDzIHtkI6k31v+UMSim6WL8U/kKAR Q1YdfKw2of0HEdPB1fy0KMu2s25l04p9kpxjN+AQHrA1OMn1eTvVP7KI/VxbOMjAsywy 47XONCnGFkoIQoYhXdaIwYvR1yLkjiitqCBjdDel6IcsEXRZX99wuMcjKR7etAlvh/Ar 4xL9rYg0zXkDSNmfdAegUlMU/jZJlCSjqccz5BXXat3fghZTaOzjw3/V51jNzPCSitAc bJLQ== X-Gm-Message-State: AFqh2kox7FNOtTgucrWTvJOSBw6gW1MkfFKTKti6g+eb8qZHdJP0S35W mlUlRha/0VyZT8hAdFm76C/yZe2i3WQ= X-Received: by 2002:a4a:e0d6:0:b0:4f2:f4e:b118 with SMTP id e22-20020a4ae0d6000000b004f20f4eb118mr3705716oot.1.1673465465536; Wed, 11 Jan 2023 11:31:05 -0800 (PST) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id h4-20020a4a9404000000b004a532a32408sm7424448ooi.16.2023.01.11.11.31.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Jan 2023 11:31:05 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 11 Jan 2023 16:31:02 -0300 Message-Id: <20230111193102.38416-1-jamrial@gmail.com> X-Mailer: git-send-email 2.39.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/vf_showinfo: use av_frame_side_data_name() to print side data names 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: V4eqYiq3SJbk This ensures all defined types are supported, even if only to report their presence and print their size if a custom implementation is not added. Signed-off-by: James Almer --- This patch supersedes: [PATCH 1/2] avfilter/vf_showinfo: remove superfluous line break [PATCH 2/2] avfilter/vf_showinfo: add support for raw Dolby Vision RPU side data By achieving the same effect in a future proof, generic way. libavfilter/vf_showinfo.c | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c index 9b4a9fc981..d5edbd2f0a 100644 --- a/libavfilter/vf_showinfo.c +++ b/libavfilter/vf_showinfo.c @@ -68,7 +68,6 @@ static void dump_spherical(AVFilterContext *ctx, AVFrame *frame, const AVFrameSi const AVSphericalMapping *spherical = (const AVSphericalMapping *)sd->data; double yaw, pitch, roll; - av_log(ctx, AV_LOG_INFO, "spherical information: "); if (sd->size < sizeof(*spherical)) { av_log(ctx, AV_LOG_ERROR, "invalid data\n"); return; @@ -106,7 +105,6 @@ static void dump_stereo3d(AVFilterContext *ctx, const AVFrameSideData *sd) { const AVStereo3D *stereo; - av_log(ctx, AV_LOG_INFO, "stereoscopic information: "); if (sd->size < sizeof(*stereo)) { av_log(ctx, AV_LOG_ERROR, "invalid data\n"); return; @@ -150,7 +148,6 @@ static void dump_roi(AVFilterContext *ctx, const AVFrameSideData *sd) } nb_rois = sd->size / roi_size; - av_log(ctx, AV_LOG_INFO, "Regions Of Interest(ROI) information:\n"); for (int i = 0; i < nb_rois; i++) { roi = (const AVRegionOfInterest *)(sd->data + roi_size * i); av_log(ctx, AV_LOG_INFO, "index: %d, region: (%d, %d) -> (%d, %d), qp offset: %d/%d.\n", @@ -166,7 +163,6 @@ static void dump_detection_bbox(AVFilterContext *ctx, const AVFrameSideData *sd) header = (const AVDetectionBBoxHeader *)sd->data; nb_bboxes = header->nb_bboxes; - av_log(ctx, AV_LOG_INFO, "detection bounding boxes:\n"); av_log(ctx, AV_LOG_INFO, "source: %s\n", header->source); for (int i = 0; i < nb_bboxes; i++) { @@ -187,7 +183,6 @@ static void dump_mastering_display(AVFilterContext *ctx, const AVFrameSideData * { const AVMasteringDisplayMetadata *mastering_display; - av_log(ctx, AV_LOG_INFO, "mastering display: "); if (sd->size < sizeof(*mastering_display)) { av_log(ctx, AV_LOG_ERROR, "invalid data\n"); return; @@ -213,7 +208,6 @@ static void dump_dynamic_hdr_plus(AVFilterContext *ctx, AVFrameSideData *sd) { AVDynamicHDRPlus *hdr_plus; - av_log(ctx, AV_LOG_INFO, "HDR10+ metadata: "); if (sd->size < sizeof(*hdr_plus)) { av_log(ctx, AV_LOG_ERROR, "invalid data\n"); return; @@ -313,7 +307,6 @@ 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; @@ -396,7 +389,7 @@ static void dump_content_light_metadata(AVFilterContext *ctx, AVFrameSideData *s { const AVContentLightMetadata *metadata = (const AVContentLightMetadata *)sd->data; - av_log(ctx, AV_LOG_INFO, "Content Light Level information: " + av_log(ctx, AV_LOG_INFO, "MaxCLL=%d, MaxFALL=%d", metadata->MaxCLL, metadata->MaxFALL); } @@ -406,7 +399,7 @@ static void dump_video_enc_params(AVFilterContext *ctx, const AVFrameSideData *s const AVVideoEncParams *par = (const AVVideoEncParams *)sd->data; int plane, acdc; - av_log(ctx, AV_LOG_INFO, "video encoding parameters: type %d; ", par->type); + av_log(ctx, AV_LOG_INFO, "type %d; ", par->type); if (par->qp) av_log(ctx, AV_LOG_INFO, "qp=%d; ", par->qp); for (plane = 0; plane < FF_ARRAY_ELEMS(par->delta_qp); plane++) @@ -430,7 +423,6 @@ static void dump_sei_unregistered_metadata(AVFilterContext *ctx, const AVFrameSi return; } - av_log(ctx, AV_LOG_INFO, "User Data Unregistered:\n"); av_log(ctx, AV_LOG_INFO, "UUID=" AV_PRI_UUID "\n", AV_UUID_ARG(user_data)); av_log(ctx, AV_LOG_INFO, "User Data="); @@ -453,7 +445,7 @@ static void dump_sei_film_grain_params_metadata(AVFilterContext *ctx, const AVFr return; } - av_log(ctx, AV_LOG_INFO, "film grain parameters: type %s; ", film_grain_type_names[fgp->type]); + av_log(ctx, AV_LOG_INFO, "type %s; ", film_grain_type_names[fgp->type]); av_log(ctx, AV_LOG_INFO, "seed=%"PRIu64"; ", fgp->seed); switch (fgp->type) { @@ -513,7 +505,6 @@ static void dump_dovi_metadata(AVFilterContext *ctx, const AVFrameSideData *sd) const AVDOVIDataMapping *mapping = av_dovi_get_mapping(dovi); const AVDOVIColorMetadata *color = av_dovi_get_color(dovi); - av_log(ctx, AV_LOG_INFO, "Dolby Vision Metadata:\n"); av_log(ctx, AV_LOG_INFO, " rpu_type=%"PRIu8"; ", hdr->rpu_type); av_log(ctx, AV_LOG_INFO, "rpu_format=%"PRIu16"; ", hdr->rpu_format); av_log(ctx, AV_LOG_INFO, "vdr_rpu_profile=%"PRIu8"; ", hdr->vdr_rpu_profile); @@ -747,16 +738,12 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) for (i = 0; i < frame->nb_side_data; i++) { AVFrameSideData *sd = frame->side_data[i]; + const char *name = av_frame_side_data_name(sd->type); av_log(ctx, AV_LOG_INFO, " side data - "); + if (name) + av_log(ctx, AV_LOG_INFO, "%s: ", name); switch (sd->type) { - case AV_FRAME_DATA_PANSCAN: - av_log(ctx, AV_LOG_INFO, "pan/scan"); - break; - case AV_FRAME_DATA_A53_CC: - av_log(ctx, AV_LOG_INFO, "A/53 closed captions " - "(%"SIZE_SPECIFIER" bytes)", sd->size); - break; case AV_FRAME_DATA_SPHERICAL: dump_spherical(ctx, frame, sd); break; @@ -768,11 +755,11 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) break; } case AV_FRAME_DATA_DISPLAYMATRIX: - av_log(ctx, AV_LOG_INFO, "displaymatrix: rotation of %.2f degrees", + av_log(ctx, AV_LOG_INFO, "rotation of %.2f degrees", av_display_rotation_get((int32_t *)sd->data)); break; case AV_FRAME_DATA_AFD: - av_log(ctx, AV_LOG_INFO, "afd: value of %"PRIu8, sd->data[0]); + av_log(ctx, AV_LOG_INFO, "value of %"PRIu8, sd->data[0]); break; case AV_FRAME_DATA_REGIONS_OF_INTEREST: dump_roi(ctx, sd); @@ -795,7 +782,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) case AV_FRAME_DATA_GOP_TIMECODE: { char tcbuf[AV_TIMECODE_STR_SIZE]; av_timecode_make_mpeg_tc_string(tcbuf, *(int64_t *)(sd->data)); - av_log(ctx, AV_LOG_INFO, "GOP timecode - %s", tcbuf); + av_log(ctx, AV_LOG_INFO, "%s", tcbuf); break; } case AV_FRAME_DATA_VIDEO_ENC_PARAMS: @@ -811,8 +798,12 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) dump_dovi_metadata(ctx, sd); break; default: - av_log(ctx, AV_LOG_WARNING, "unknown side data type %d " - "(%"SIZE_SPECIFIER" bytes)\n", sd->type, sd->size); + if (name) + av_log(ctx, AV_LOG_INFO, + "(%"SIZE_SPECIFIER" bytes)", sd->size); + else + av_log(ctx, AV_LOG_WARNING, "unknown side data type %d " + "(%"SIZE_SPECIFIER" bytes)", sd->type, sd->size); break; }