From patchwork Wed Dec 13 03:46:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 45096 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1225:b0:181:818d:5e7f with SMTP id v37csp4042276pzf; Tue, 12 Dec 2023 19:47:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IHmJgYFndddA7rV/Z8QpiVajTbaiMBaqo2M0q2kTgiDQldlpXCFEorGbzh3P3jWMTMvPWKl X-Received: by 2002:a17:907:72cb:b0:a18:e9fe:2d9 with SMTP id du11-20020a17090772cb00b00a18e9fe02d9mr5242427ejc.25.1702439241359; Tue, 12 Dec 2023 19:47:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702439241; cv=none; d=google.com; s=arc-20160816; b=b/FUaRd+yGjx56Q6SIuvIgOfpLhVDRYZdEsEfKCcGk+aPBebbOW1MPABeEEs6J1yv3 NXj/ZlAYPnOUMUq7iKj1gSA0KsNpe4Tr4rf2ydcbGYVXFShjZtB7jbUJY9brJI4uORR7 wFkI+VHGroGFNK1bD0omf7N98um+B8/hmAJosHSLUTexh9f9fpuFEFNotS+Vr9rUoanm jVCDbMO3QwIXBEXqQOrtsF1mUf7clkoZFoJfCiEwWUnWhAAcZZti5WcyKCSZ4Zm02dJp v0oO+hNjNgeVJkQSla4tP/6ssUJ577NW1FqijaYtRB8gDGZhGVU1s8iJ4nNyH3JW8yK/ WmIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=JXg8rs64dJv0zgvsdbsM7EmyGmsUgApZgikBQVddkuc=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=AZvkIgq3Sjn8b3gO+1MPNU96mBmkvL8LNs+b3pBOlrBn27oLnh8yT+gB8kPU5ruWq+ ezctTsaxfxAtfQiTImPu6i/SGfzQsDiOLXNJQ362WGT/+57HxDtOw5GKS2CONBQuYGbm f0K5INcnIBifzhClpfu62GBxNLdmt0ZD3xQVUsWus5+59skMBRLpTmvof5wlTOo9IMYh 2wX+ODStb4l7y2fnZAx2M28vW5DrDJi30V5FrBy0VA6qEZRjs2j0Mgoy92v2/TCSNEB6 EuW92diN5JTg5Vprt44SFRNWXRUW7grRzcHvsNOch6kKyytvYxLBf3cff3McpxF2Vdto tgEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ISqLXJuG; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d12-20020a170906c20c00b00a1c68c96a27si5382011ejz.436.2023.12.12.19.47.14; Tue, 12 Dec 2023 19:47:21 -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=@foxmail.com header.s=s201512 header.b=ISqLXJuG; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9394D68D037; Wed, 13 Dec 2023 05:47:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-191.mail.qq.com (out203-205-221-191.mail.qq.com [203.205.221.191]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8DC9368CD4B for ; Wed, 13 Dec 2023 05:47:02 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1702439213; bh=Bq4pysyY95ibz0aUS+X0TqaR4/i7CsBX+59a4DcawIQ=; h=From:To:Cc:Subject:Date; b=ISqLXJuGV5Wy00Wf4qA5VAGzKikmydKMo5LbekcfixtB/UesY2XEM4MJkD7rRwJRQ yswoLYYWgo3uZ0AXJW8Y64JtnFyMAj5mlbjxlVgxqNYCJFmDdsisSwb3pRk9xZFTjZ l+0ungWB0h7mMSTMW/MZrEhRyzF3DDgAoWAGk0hE= Received: from localhost.localdomain ([113.108.77.64]) by newxmesmtplogicsvrsza7-0.qq.com (NewEsmtp) with SMTP id BB435A9D; Wed, 13 Dec 2023 11:46:52 +0800 X-QQ-mid: xmsmtpt1702439212tkueifyly Message-ID: X-QQ-XMAILINFO: Mg/0DM1Zd+nHu/LfdBBS5htEEBvf7ElkP298P9qTIpC4tMVXA1QkWGAqBTVioE 6X/tr6L9a6ZPQzDhhz6W/5hPCc8r55maVRfD60JGi3Ekco/FWux772G/s6X9OidoLTJ6Rd/cgeyn ukCoNgrK9yeig40GNMNUvdDTRS76h86VSmVJOfOXr8YDlD6kGrmUsrXXzSacBXmdWLyfw5htmLeJ 3ez6UkbBYqVH2HE1CuctRs9mUMLazMdWzzNo+dM5eJOKjcXPbgax66br68Cpbuw9rApTNNqyjbSU VC9dXnrjFnydf5FC48v0B/HdVT5IXCcmhXKGIZh47BiPIPiScVIPgStGnZqsXmPi81cEeTWez7DI JZ7wwFah02T8oTrh52uWRQjftDVLz+oRvFwphG9urKmWCOfU2l4fwXB8Mho9XWpHppKd5BqfqzuB tijMBU51XLT0gVZrtBEag++wa/sK7hgl1pVq/WVDCKGonlX2PdUsudg1/mdFJrCTX4lCqyDA9pim cTpiVZ9OcpDL0MdJwfLR4Mm7dwPA093LEXdKo8SAN+q6P0/pgCEzAQeeYMdh0iFoLOvhfkheOU+i lwtvXZBCB72HhvEGyGeCqMk194cmC/mdYBW7ukXJc66EoTJEhySONCANMzNoweMkkYbgWicxwvWt l2yMjDjbHMwhDLhMpdxi7SNFmgPZ7E30meU9o5L8WfVZCsDD/d4sYgrkeh835RXVzLzCcGqR336t nJgktaf4z2z7NSyB+o01d78ZC7YW3SW+swWYnOmWdM6rlLBLCXp6kk1pXNsqadqC7OkUxOFAezs8 MUuegN2h+n384O7oBD4HtM0b+8s4WSKJcfh2XGM6x5pB34HtN99+EszAHD1GsBe3MV5zrWz/ZzNl Gxeidz0/n+qJ2HdH9wg0j9R/sUYojpAb1rKnNDWx0GqSDQVZf/glD6xiTNMUW2+XdQMopT3hFPoe vHNQOwuAXBsxq17y4BGBvr2ojfwDZTRk4Bw40x9I6wGQMYDc3Hmg== X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Wed, 13 Dec 2023 11:46:48 +0800 X-OQ-MSGID: <20231213034648.300908-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/vf_showinfo: add udu_sei_as_ascii option 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: oUDGRftrWpe8 From: Zhao Zhili Some encoders (e.g., libx264) dump encoder configuration as user data unregistered SEI message. This option try to print it as ascii character when possible. --- doc/filters.texi | 4 ++++ libavfilter/version.h | 2 +- libavfilter/vf_showinfo.c | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index 6d00ba2c3f..0d4c5a47a0 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -21796,6 +21796,10 @@ This filter supports the following options: @table @option @item checksum Calculate checksums of each plane. By default enabled. + +@item udu_sei_as_ascii +Try to print user data unregistered SEI as ascii character when possible, +in hex format otherwise. @end table The shown line contains a sequence of key/value pairs of the form diff --git a/libavfilter/version.h b/libavfilter/version.h index 7642b670d1..83931e11dd 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -32,7 +32,7 @@ #include "version_major.h" #define LIBAVFILTER_VERSION_MINOR 14 -#define LIBAVFILTER_VERSION_MICRO 100 +#define LIBAVFILTER_VERSION_MICRO 101 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ diff --git a/libavfilter/vf_showinfo.c b/libavfilter/vf_showinfo.c index 71869446c6..309de28df9 100644 --- a/libavfilter/vf_showinfo.c +++ b/libavfilter/vf_showinfo.c @@ -22,6 +22,7 @@ * filter for showing textual video frame information */ +#include #include #include "libavutil/bswap.h" @@ -52,6 +53,7 @@ typedef struct ShowInfoContext { const AVClass *class; int calculate_checksums; + int udu_sei_as_ascii; } ShowInfoContext; #define OFFSET(x) offsetof(ShowInfoContext, x) @@ -59,6 +61,8 @@ typedef struct ShowInfoContext { static const AVOption showinfo_options[] = { { "checksum", "calculate checksums", OFFSET(calculate_checksums), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, VF }, + { "udu_sei_as_ascii", "try to print user data unregistered SEI as ascii character when possible", + OFFSET(udu_sei_as_ascii), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VF }, { NULL } }; @@ -418,6 +422,7 @@ static void dump_video_enc_params(AVFilterContext *ctx, const AVFrameSideData *s static void dump_sei_unregistered_metadata(AVFilterContext *ctx, const AVFrameSideData *sd) { const uint8_t *user_data = sd->data; + ShowInfoContext *s = ctx->priv; if (sd->size < AV_UUID_LEN) { av_log(ctx, AV_LOG_ERROR, "invalid data(%"SIZE_SPECIFIER" < " @@ -428,8 +433,13 @@ static void dump_sei_unregistered_metadata(AVFilterContext *ctx, const AVFrameSi av_log(ctx, AV_LOG_INFO, "UUID=" AV_PRI_UUID "\n", AV_UUID_ARG(user_data)); av_log(ctx, AV_LOG_INFO, "User Data="); - for (size_t i = 16; i < sd->size; i++) - av_log(ctx, AV_LOG_INFO, "%02x", user_data[i]); + for (size_t i = 16; i < sd->size; i++) { + const char *format = "%02x"; + + if (s->udu_sei_as_ascii) + format = isprint(user_data[i]) ? "%c" : "\\x%02x"; + av_log(ctx, AV_LOG_INFO, format, user_data[i]); + } av_log(ctx, AV_LOG_INFO, "\n"); }