From patchwork Thu Apr 25 14:34:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 48260 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:2d06:b0:1a9:af23:56c1 with SMTP id tw6csp1425571pzb; Thu, 25 Apr 2024 07:35:13 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU9lW/X66BqYhW05xAAlQSrsWhsr4/KI71rXWHzho/OVTNaktU8k+hR9pjveS0kMEBtm9JlRl8ZLa+1c1zeix9omTveix8AJgS+/w== X-Google-Smtp-Source: AGHT+IHjVWdCuQ7rpq3raMzW3OUgHghLgL3M7g7YRjs3CaMjKNTk7p63otiv5AA2FwdgJnoduxOM X-Received: by 2002:a50:d696:0:b0:56e:4676:aa3a with SMTP id r22-20020a50d696000000b0056e4676aa3amr4015842edi.16.1714055713599; Thu, 25 Apr 2024 07:35:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1714055713; cv=none; d=google.com; s=arc-20160816; b=JLzQJCqElm4PRGCg7jjzDGwEaiDFwM+d714nWTrMgErbYwDOl2XtPASgw8SWDQnQ0X zQYIm6FycU9BIoyDbCKafnwV47LlqTduGVFrhU2CYof4S62VMwI8hWuvzlmxH4JRh/b+ Qea3Dat9qjKzsQQscd7pW5QJW/bwQW46F9OrVxJ1+HwOGUZZUEMMrnmk0EV5fvQmzs7y 4DiSrQW3iK5+TOjiwOK0Ppr5KYfGYKh826baK8EWmi5VmNHbNu0vpA87wx/2j5LQ00vC NUx4l5X5eHJS1Y0ZGIq+8fXQ2B3Yu36RWVSZ0u0PKG8pk7+lSkZaw9O3zCkgYGcdgwQq C+kg== 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=aHniJNLBfCkJ9VRkZ30JSq0cSNkKRfcGxc91MlnMBkU=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=PLVtQaGAwQfVx2IzooCCCjIhjLtCLrevWVR5CMKr/RdDCGpD1UYi5iox/RQsK0pG7n eT0Bv21rcepeL+ODz9bXowbZK3HeINPQjQB0jIkZfUSUNgL8A5sTxSUW0vL2Mmg9LAq8 NZB6OnXgATWa2xJ6iDMVfy+mRh7y7qwRQh4woSPFrxxzV+cgM7gZPs4niB0qwoh32wyP zKrQ3/3T1OweyC39/IMZMRJtQ40JcEdkDPfHxiyQzrpYtCF+Qujr5XBX18t93lMFGSVK Yo5GMfrJLUASVqevSkU3GKwecSctulkUNObrIKGMA+zGkgI9xlWpk6ssfuL8XMQAgGBK rqmg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=iGiYMrQP; 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 a13-20020a50e70d000000b005721ceff6d7si3931412edn.56.2024.04.25.07.35.12; Thu, 25 Apr 2024 07:35:13 -0700 (PDT) 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=20230601 header.b=iGiYMrQP; 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 972A168D232; Thu, 25 Apr 2024 17:35:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D6B0868D232 for ; Thu, 25 Apr 2024 17:35:02 +0300 (EEST) Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-1e3ff14f249so8326465ad.1 for ; Thu, 25 Apr 2024 07:35:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1714055699; x=1714660499; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=TvWWGiwapCTLn7+hBaI98cwKVXsz3DFzUUM363cCi4o=; b=iGiYMrQPAKUJFPhkz4VjgctrrZx71eDsqvtAYcDnqveDH/kstlILT8QN4dMPa+pK+V iFNQBuEqa7bK7N0mtv4D3VNoS+68JjVWje65R6VVe/OXZUXf1gXSPmgCEl/xB6nmW6dO ZgUobggy/OuqlO2pLQrDeH4ppPJUwcbkEOoxik37Wxhbgrn3AVWY1xH43JF6kt2LpVx0 lUNA0og3vaqebXtI+bzcMzeYThepI/kPqsJrE5SMAvr0wtn/0G1GBhob9mZDde+gm22N xlTDIY/GNciKzUVf+dcTvZmkqwSc+4bzEC8HAOHgEhYdQ2JVOzmprwM6mbhmgeH+kxFz qfGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714055699; x=1714660499; 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=TvWWGiwapCTLn7+hBaI98cwKVXsz3DFzUUM363cCi4o=; b=GSQZLwvm9nLaNnJpfR+CrUuPuhgaBcB9HPT5cCncuKrCTHTAtS7BPlHU64Izz6t/3Y E994vC1veTWUryJBtlJF24kbIYxc8o0p16tX3M+WazuOF65qaF9avkQJ+u2h+VuVk4dH jtqwXZDtuOAX35PjEOSeExGwkV+mZ7S3GmdrcxucIqwPfgchz30S35tkaoisr+pFcNeR ihVNf0O6wt+VQ9HOSaWjlcVwswDIdUMXUHFp8bQIbOVr6pfbkR0YIL6LymXiV0amxl+n EDQyHS/zWCCJEIGczoFtNK+9cMXnqKRBgQhuPrsRpR5gFS4a1mwOajx/a3eXcco+qxQO I1xQ== X-Gm-Message-State: AOJu0YwPbI6Wce0JfzLT7hXtGh8eO5ESTYQ/02aWM0YFRLHdi0pGdxFd N/PCIc1mLhQmKmRYYO4T1Ap7blJMQK3osza5QC/v5RhODH0Bql8o+zmrsg== X-Received: by 2002:a17:903:238b:b0:1e3:cf18:7464 with SMTP id v11-20020a170903238b00b001e3cf187464mr5216046plh.3.1714055699307; Thu, 25 Apr 2024 07:34:59 -0700 (PDT) Received: from localhost.localdomain ([190.194.167.233]) by smtp.gmail.com with ESMTPSA id j7-20020a170902da8700b001e0bbd8d0b0sm13827455plx.189.2024.04.25.07.34.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Apr 2024 07:34:58 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 25 Apr 2024 11:34:59 -0300 Message-ID: <20240425143459.2875-1-jamrial@gmail.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/framecrcenc: allow setting which side data parameters are printed 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: kTwXtCm2EtQx For some side data types, the size is dependent on the arch at runtime, which is not good for FATE tests. Add an option to set which parameters may be printed, starting with size. Signed-off-by: James Almer --- libavformat/framecrcenc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/libavformat/framecrcenc.c b/libavformat/framecrcenc.c index ce306a6c49..7d0e3978f2 100644 --- a/libavformat/framecrcenc.c +++ b/libavformat/framecrcenc.c @@ -23,6 +23,7 @@ #include "libavutil/adler32.h" #include "libavutil/avstring.h" +#include "libavutil/opt.h" #include "libavcodec/codec_id.h" #include "libavcodec/codec_par.h" @@ -32,6 +33,11 @@ #include "internal.h" #include "mux.h" +struct FrameCRCContext { + const AVClass *avclass; + int flags; +}; + static int framecrc_write_header(struct AVFormatContext *s) { int i; @@ -48,8 +54,11 @@ static int framecrc_write_header(struct AVFormatContext *s) return ff_framehash_write_header(s); } +#define SD_SIZE 1 + static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) { + struct FrameCRCContext *c = s->priv_data; uint32_t crc = av_adler32_update(0, pkt->data, pkt->size); char buf[256]; @@ -61,6 +70,7 @@ static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) av_strlcatf(buf, sizeof(buf), ", S=%d", pkt->side_data_elems); for (int i = 0; i < pkt->side_data_elems; i++) { + if (c->flags & SD_SIZE) av_strlcatf(buf, sizeof(buf), ", %8"SIZE_SPECIFIER, pkt->side_data[i].size); } @@ -70,11 +80,29 @@ static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) return 0; } +#define OFFSET(x) offsetof(struct FrameCRCContext, x) +#define ENC AV_OPT_FLAG_ENCODING_PARAM +static const AVOption framecrc_options[] = { + { "print_side_data", "set which side data parameters to print", OFFSET(flags), + AV_OPT_TYPE_FLAGS, { .i64 = SD_SIZE }, INT_MIN, INT_MAX, ENC, .unit = "flags"}, + { "size", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = SD_SIZE }, INT_MIN, INT_MAX, ENC, .unit = "flags"}, + { NULL }, +}; + +static const AVClass framecrc_class = { + .class_name = "framecrc muxer", + .item_name = av_default_item_name, + .option = framecrc_options, + .version = LIBAVUTIL_VERSION_INT, +}; + const FFOutputFormat ff_framecrc_muxer = { .p.name = "framecrc", .p.long_name = NULL_IF_CONFIG_SMALL("framecrc testing"), + .p.priv_class = &framecrc_class, .p.audio_codec = AV_CODEC_ID_PCM_S16LE, .p.video_codec = AV_CODEC_ID_RAWVIDEO, + .priv_data_size = sizeof(struct FrameCRCContext), .write_header = framecrc_write_header, .write_packet = framecrc_write_packet, .p.flags = AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT |