From patchwork Wed Jun 7 20:22:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 41992 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp658990pzb; Wed, 7 Jun 2023 12:25:17 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ74o82X/VTE326jc+48QHjQXQtjwwDu9COkeWhxoEBXoF6LKDDfm5s2fsRIdjdL303GkqGj X-Received: by 2002:a17:907:7fa8:b0:969:e993:6ff0 with SMTP id qk40-20020a1709077fa800b00969e9936ff0mr20056ejc.25.1686165917001; Wed, 07 Jun 2023 12:25:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686165916; cv=none; d=google.com; s=arc-20160816; b=z6sxKkJ7lNw1jqx8NvPzYnl9UV5UETZOuDK+xPWAKRmZyTrjaGVw2Qr+IEjmvSNS3g wB48wr3WOz08QQJhW12BPcA2fm+MoLmzIMr0cwoU3sY8c4PwoWwGu5d4rLdNIxHw3vPC CmqQ4Cj8tiTfrCPQ3pQd7NJjJYkNR60LNbzxNj+P0yxJTmyqL3//ztzl9ntuvKQOeGll CZEI/kqQl4hsg7h94p0Mhe72ywn++WhFAqhZ5b08nXuZPq6FRqamB5pQ5A9TiBb1LnWG w8tZpTnNkGsau4IRzOjhK3Sp40rDrd903kAKzkHtDxCscQRgCR/aJgOC2LA/pKnz6XeQ Orqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=FTaihsZdTZiDCI0MGJ2ow7UBtpr+3pYTFy72upItpvw=; b=DLMCAu8ApNOZqlRFIv4ytIX/YJ72nwfBDV+Y0DgElS+q0NQCrxSpXEsIgjrdH8wr8U onLwN9qrVR04lBh+x1F0sJXevZwaeqSRwKM8HvSxbB+/OuZHG6OvwKzERfrAYfwB8HHH 5UEhlT5aHabDZy5y6LADjW5FILs1cAbbr4X4l3US6HVr/K4cjv8H8AvDQG4HXSNXY3d6 S2Y+YYFfLuPZsrvPJMfQA8OsjtvGCLU2jO4ANPsMKKshYjOxEwZv+HcKlpaJxRi+YBXJ Cx+quYZRyzuT45PdXIHmQjMiuABT9SRy12UoNnuaZTntNm/o9ICH3ZL2E8r9NCfvt1iq eXkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=O7smkzsu; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id z14-20020a170906714e00b009745ee59538si7759472ejj.518.2023.06.07.12.25.16; Wed, 07 Jun 2023 12:25:16 -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=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=O7smkzsu; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6D6EC68BFE8; Wed, 7 Jun 2023 22:25:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f172.google.com (mail-oi1-f172.google.com [209.85.167.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2111468BC34 for ; Wed, 7 Jun 2023 22:24:57 +0300 (EEST) Received: by mail-oi1-f172.google.com with SMTP id 5614622812f47-38dec65ab50so6716147b6e.2 for ; Wed, 07 Jun 2023 12:24:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1686165895; x=1688757895; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=bXI334AnHMOO+qZdsM3yTI1eu092yE2RMhmc6FNY7UA=; b=O7smkzsuVYDCRW3UBj3kuyXpa24jzc0SPsfq/SBZDB5MaJsJaVfBGbTf9UjQpb0b29 mFHvAfnGchDgdPnDlp/71CcgPkKVWRvMd63U5iC8XD7fKG/s+aXpIMLjwHkrv1rynkSa 1iduKwJH5/ggp0JAqzQKi6XB0EWsQrscax49znZa392fYGhHOm6ETNxN2OSrIiZlEUO4 ZzfLZfGY+DgGFP433u3DSEDJXKkMl0AQcuNheeoUR8pkVE/mwPthxR7BgiTicFN/5GVX DnZu2+VExLLU7J9Tbj7LdPKRyY3cVHkzaE93vm6KT0z7KwAM5jpvmyVtpj73LhLZ9uau Rnfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686165895; x=1688757895; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=bXI334AnHMOO+qZdsM3yTI1eu092yE2RMhmc6FNY7UA=; b=UNsLns28u/cZy/apFTcPrWyHvFDgr8AvqyA/7weavKwLTPkrKx9zc9vnt4KuRMUayk eJmrZP6B/xzN8uFBrVDPP1JgGrwPZUOh4N0D6DSPV0Q+w1lji/MGxsZ4ZX+JyvvDVThY m8cf+iSHuxHOmRfLC3uVlFk6F8chUGanmHb0EXPrdx2Z5MlPqdmiri+2tPYo/CypAXfp Ct9bSZnt1KUoo3BdAqALsW79oArgNWztUQFDc0vqlAvVsvHi328XevRr1VmdB7UnE+10 tVAQz/nI6DEewAn7peeT9cV1gk9dnm6ww10oU8iWNiDwyR0cMqhV/rPku8oPWHTsB69V xy6A== X-Gm-Message-State: AC+VfDxHFj8Fqfg2+fLvdu1DNutd+SbIeOye2YfKsB7u4q2nG46YMdGb fNarvqvdHRmBsjAAflNz6SEC8V1lwfB1BB3UBQo= X-Received: by 2002:a05:6808:193:b0:39a:9509:db6c with SMTP id w19-20020a056808019300b0039a9509db6cmr6299098oic.12.1686165895406; Wed, 07 Jun 2023 12:24:55 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id j18-20020a0cf512000000b006261c80d76dsm133643qvm.71.2023.06.07.12.24.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2023 12:24:55 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Jun 2023 16:22:21 -0400 Message-Id: <1686169347-28987-2-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> References: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH 1/7] Preserve AFD side data when going from AVPacket to AVFrame 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: Devin Heitmueller MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: K9fbD/V9oFal This is needed to ensure that AFD data continues to work when capturing V210 video with the Decklink libavdevice input. Signed-off-by: Devin Heitmueller --- libavcodec/decode.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index a7c1302..6ee2c85 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1331,6 +1331,7 @@ int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, { AV_PKT_DATA_MASTERING_DISPLAY_METADATA, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA }, { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, { AV_PKT_DATA_A53_CC, AV_FRAME_DATA_A53_CC }, + { AV_PKT_DATA_AFD, AV_FRAME_DATA_AFD }, { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, { AV_PKT_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE }, { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, AV_FRAME_DATA_DYNAMIC_HDR_PLUS }, From patchwork Wed Jun 7 20:22:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 41995 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp659222pzb; Wed, 7 Jun 2023 12:25:44 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4W5rJGSNDKGid4KTADnEHwZYRnZPneYlLt2liC0kee9y9cFOSwwzCO+jvNHnQIfbjzKKrH X-Received: by 2002:a17:907:9803:b0:974:56aa:6dce with SMTP id ji3-20020a170907980300b0097456aa6dcemr7010180ejc.46.1686165944271; Wed, 07 Jun 2023 12:25:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686165944; cv=none; d=google.com; s=arc-20160816; b=eZ97M7L+InGBKD2wp1iSj1CtnpbSWa0RdOzrXDQjVG4tqnUn6bm9RiEC/SKXkIFvev akEBdZfGOhfuxL82BsbQK8C5BgmihjqZza67gnrl37tEMB6khfqOY2mWHg+aD2RP/Qqp HRKQGysAGpRJ47ZkVMTNYbpvUEoGkGtt4IUkjrgThkRverKLpcQ1uC6XJ2mQChkfYLux EwRpwWGCZ77VLk/JK+uMIk8ZDJXUVIl6o7OBV+n0XF2Bn5CyNY2H9Rqzt5jwYsb7Qfjm C6xxqbiQVL48WGHh2PzZ3BWnM2HOURxDRO788tRCJuJ86FCnLeH2TzDERf0/yorRDjkM sUjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=/4eqTndtYO9VjM1ebjMKk0VtnCI0tCXiU46tjdXbuGQ=; b=iqzOTvvCjEyID6+qH/RS/XYlaM8kAEDdCuQh9xzMncyZtugoJgswZhVMO71jAEly77 xNGQogjVUMvrM4yh7CdpTIJpgaqophlTe3rnCPSzc8mF1pLfYenXLk70BRJKwjPwLzoL nx/+Ys6ztQqrf7pL0xy9JWMw5fWm2TrT/xoxjwZghvEH3ZXC9gpJRgEIoE6elt+BCm5A C2rTlIMjAymOeHcSF+SRiLnzMkGEdDIroq/IJ7RwLK4dnAMIEWbQSDs2QgsYEauho+u3 MvkvBbwKKRpWx4RUwrS7miRmI5AWUscg7qcgGEcSx5BRKZCo3iIbEff4aM1PZg0NV3fa lvBg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=pehOWhTg; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f26-20020a170906139a00b0097450f6b786si7728318ejc.361.2023.06.07.12.25.43; Wed, 07 Jun 2023 12:25:44 -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=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=pehOWhTg; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 82E5368C06F; Wed, 7 Jun 2023 22:25:07 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A2CEE68BF82 for ; Wed, 7 Jun 2023 22:24:58 +0300 (EEST) Received: by mail-oi1-f179.google.com with SMTP id 5614622812f47-3942c6584f0so5277639b6e.3 for ; Wed, 07 Jun 2023 12:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1686165897; x=1688757897; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=2MlnL1tEmilrlrzu0+F31W4B2g6ctnw6iv/ovDckciE=; b=pehOWhTgkRvZZZWyDIpEVahMrHOH1uv69GFFD3g13khdrDPCot4rbNQtQJQeMHcyR3 6Co6q7VIL6+8um3rfGxqNifkSvalL2xo42pknK6PbMgI+UQBErSPud43TXw4lThbmBxm UKo5did8c3Sf1ogFe8C00hS/7hpApByMyXNQyaSFfrzuKtFsWgAf0KwRKVYfMKGR01x1 aU/uMin0H7JCGNQjOU7RFyM4CKbuhG8Y/F5unfBE/Jf1BMyAyA4yeuHE7VgyRpG66Wa+ Hv5wlFrbbxUBNuC6cbHNFrsdpZpL/wmLOVxvtOpUsAv6kcWRsD6+T6qXf0vfOF4aaJ8t ZENA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686165897; x=1688757897; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2MlnL1tEmilrlrzu0+F31W4B2g6ctnw6iv/ovDckciE=; b=AWFUK8tt60ox0EerGw+yH8nmWQ+Cc/MKRlfeE/UeKxOzvhxwbD3stvMKX6wBdAZGCx J7j32uYT1qiYR8UqOOSyj6z/m2pNLt/vcbLCHzMeL3GiMqMFd1cnL9c7m/o898PyxQPf 87axNLWzWptwlPpent20peVmOhvrPfmIgArpRDOEw+XWzFKZR4qaqfrmYMh6EkSN4mNT wDNg0ogSVuHLr9oRLtzSlvDlePf5r7IUdy3I2p99iGHGdSoJaPm+/yEkdRbucxjIiH1d P+1eflA/+cCih/A8vqgsbBdM7SxsZOlCpiZtwgsSeLy+6oapRyEGSf6zzY3Nc/V2hizH P6yQ== X-Gm-Message-State: AC+VfDz6gWNrUPHCiSvYaLDFyqwMn7O9hq1awDsItpXgbyqGCZbkeumH 167fgRTf2WNaNFn2jagcUA26Q0Y4hGPg8//ZJyA= X-Received: by 2002:a54:4414:0:b0:39a:a880:50dc with SMTP id k20-20020a544414000000b0039aa88050dcmr5574877oiw.52.1686165895902; Wed, 07 Jun 2023 12:24:55 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id j18-20020a0cf512000000b006261c80d76dsm133643qvm.71.2023.06.07.12.24.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2023 12:24:55 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Jun 2023 16:22:22 -0400 Message-Id: <1686169347-28987-3-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> References: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH 2/7] vf_drawtext: Add ability to show AFD value 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: Devin Heitmueller MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: JCBS2kmRK44y Add an "afd" variable which shows the current AFD side data for the given frame. This is to assist in debugging as it allows us to burn the current AFD right into the video. Example usage: ./ffmpeg -y -i afd.ts -vf drawtext=fontfile=/Library/Fonts/Verdana.ttf:text="AFD=%{afd}":fontsize=32:x=10:y=50:fontcolor=blue burnin.ts Signed-off-by: Devin Heitmueller --- doc/filters.texi | 5 +++++ libavfilter/vf_drawtext.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/doc/filters.texi b/doc/filters.texi index a46357b..9179c20 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -12601,6 +12601,11 @@ The following functions are available: @table @command +@item afd +The Active Format Descriptor value of the current frame (as specified in the +frame's side data). This can be useful for debugging aspect ratio issues. +See standards ETSI TS 101 154 or SMPTE ST2016-1 for more details on its meaning. + @item expr, e The expression evaluation result. diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c index 71ab851..32accfb 100644 --- a/libavfilter/vf_drawtext.c +++ b/libavfilter/vf_drawtext.c @@ -221,6 +221,7 @@ typedef struct DrawTextContext { int text_shaping; ///< 1 to shape the text before drawing it #endif AVDictionary *metadata; + AVFrame *frame; } DrawTextContext; #define OFFSET(x) offsetof(DrawTextContext, x) @@ -1056,6 +1057,22 @@ static int func_metadata(AVFilterContext *ctx, AVBPrint *bp, return 0; } +static int func_afd(AVFilterContext *ctx, AVBPrint *bp, + char *fct, unsigned argc, char **argv, int tag) +{ + DrawTextContext *s = ctx->priv; + AVFrameSideData *side_data; + + side_data = av_frame_get_side_data(s->frame, AV_FRAME_DATA_AFD); + if (side_data) { + av_bprintf(bp, "0x%02x", side_data->data[0]); + } else { + av_bprintf(bp, "none"); + } + + return 0; +} + static int func_strftime(AVFilterContext *ctx, AVBPrint *bp, char *fct, unsigned argc, char **argv, int tag) { @@ -1234,6 +1251,7 @@ static const struct drawtext_function { { "frame_num", 0, 0, 0, func_frame_num }, { "n", 0, 0, 0, func_frame_num }, { "metadata", 1, 2, 0, func_metadata }, + { "afd", 0, 0, 0, func_afd }, }; static int eval_function(AVFilterContext *ctx, AVBPrint *bp, char *fct, @@ -1680,6 +1698,7 @@ FF_ENABLE_DEPRECATION_WARNINGS s->var_values[VAR_DURATION] = frame->duration * av_q2d(inlink->time_base); s->metadata = frame->metadata; + s->frame = frame; for (int i = 0; i < loop; i++) { if (header) { From patchwork Wed Jun 7 20:22:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 41993 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp659079pzb; Wed, 7 Jun 2023 12:25:26 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5an70rOBZNC/iXMG8iAbcYqcUbILQh+U4tEH2zFc3ombssnDV9tCrCSnVNcOAgdejYDw/M X-Received: by 2002:a17:907:2d2a:b0:973:a30d:b264 with SMTP id gs42-20020a1709072d2a00b00973a30db264mr6836360ejc.46.1686165925838; Wed, 07 Jun 2023 12:25:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686165925; cv=none; d=google.com; s=arc-20160816; b=ZnvuyMbMffwEUhJ4KSlQrZBSXel/LDGaH97hkovXYkONKQTuQy5XFccbilUwCKI4ws myU52Aj8i2KU3gwQpSOhbRBCvP68VaHzGCdHOYRMDrZ0afFI0ZbyKZDBHfH7TSUauDFg fcnTvqYLQFDDw6o0M8rU4ZQfRnl2uY1XaLsU48MBGoe+wpZV58U9mAWYwNstQG0XErTf Ua/NGdzeM+IiBUMmxScBxTNsUnl0yah/BbDCjhSto4+Aed0widIiH9sw0SEk1nXJJX8c qr3v94bkQrWdGXC7dVFNhV6oiUlHijWbS8x2HD7AkrfA/aOZ+1rhyxiTTL6yyl4XkIiP cNow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=xEhmNpzRde2DOg1Ygz05ROia7AbzHgN9X4qJrZmR9CQ=; b=BXItpFFtPr+T2Vkvf0t+h42tTIDsXvZaOncL5RapAL7ra68NABDIrPXFlUw2nRR99y E4Uog6bKP86rMVL4LGa3cJvQOZvGsaUDPO7s9EXFSmJ4urZtF9HutvUWi0KhmM72i4tl mySCuCHqSGAlszmNvVz2T/M9PRWALlpsib9ykJKPGr352Gl45ZwkMWtv+Qr5znvEdu0j 0XyI6202IKsllJTQhW1mBmtyQxghk2tS59Gm9u0UCgoH5N99Tx0tMfNLsbXcxbPEiHkU xhDkzz5+A5V20+gnW55i70peyd/JEj6yCHLOCGtnIf+47VV7Dt5vtBNF13Px1XS2v1Lw AkHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=i79nSmiG; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id dt5-20020a170907728500b009781805f34fsi4482715ejc.732.2023.06.07.12.25.25; Wed, 07 Jun 2023 12:25:25 -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=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=i79nSmiG; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7CD7D68BFCD; Wed, 7 Jun 2023 22:25:05 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0DDCF68BE50 for ; Wed, 7 Jun 2023 22:24:58 +0300 (EEST) Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-75ec7e8e826so276195185a.0 for ; Wed, 07 Jun 2023 12:24:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1686165896; x=1688757896; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=XtQ6vD+hgQUO+imLLnce129sfypLRSS9CCoAaM0wCdQ=; b=i79nSmiGPOhP+jE4xSqolDti0GgC1oNsBG8eGrtUL/3lzoqnvPleif5pEmz2Vfyt+b 2wGQ217U/NkzXIUxN+B/hmwhGuAWtoyKOkNgD8BMqDVmOeBtBNbJRrbPFt78RAXt/rMw vdHEPTOdR4GP61J8lcolO/wXpuMWSm5iMXYNh5ikvj2mBVfS/vyJoL+5cmnV2uFiujSa oVo6Gt1DzPsW2OOpO4iCbjSJSMWhczPFbmrFQHOQdUNCHNYwcbX6aUffjYdP+UAxhhn6 f09+M0qCHOlsK8HtNMsLGgYTbCdKZkXTXOc0+pENva1KZFzB7h31L2RkZxKlc86Exfk/ AGqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686165896; x=1688757896; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XtQ6vD+hgQUO+imLLnce129sfypLRSS9CCoAaM0wCdQ=; b=YRzIJoipkdGAoevfmpJ4X31KGli9stdX0fLupd8hJBHs6W2jH0OSd1/9c5zwmCDQIK qWkIIq+aGhwDt9mf470INoXXBrAUDb6ZICxU6H/UesSBl+YXQUF0zByBU8vqTrjwlziA 3np86Fj4EuKRLJ6ZsntqHmYosrBgNw8ocUF764Nk0OpWVovc6NmC9053SM0wTdD3zzHj c6UlseOczJuANwCU4LlfGPOQcfZZRfGaFZv1a9e0A9zXWnPx2XiJrGEoUWzVAR8I7OpV DIyLqlfp6LdDP17+zwA9WJITtvnZahgMH8Y4BSW30uMuSf8g2WWGh2FdqwRB/mvJP6iz aVyw== X-Gm-Message-State: AC+VfDxSxAx+0AC0j44MBEiDvzK9QdOO3LDlLs7P31sMDfyoS6qx82Ng DpiNqioLCwHIiFKF+tNlH2tCfq4Wum33BF1hRQw= X-Received: by 2002:ad4:5f8d:0:b0:615:a18b:d5af with SMTP id jp13-20020ad45f8d000000b00615a18bd5afmr4802511qvb.35.1686165896478; Wed, 07 Jun 2023 12:24:56 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id j18-20020a0cf512000000b006261c80d76dsm133643qvm.71.2023.06.07.12.24.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2023 12:24:56 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Jun 2023 16:22:23 -0400 Message-Id: <1686169347-28987-4-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> References: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH 3/7] avcodec/avframe: add new side data types for Bar Data 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: Devin Heitmueller MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5IQD/8mYN2EG Add new side data types for both AVPacket and AVFrame to support "bar data" as defined in SMPTE 2016-1, ATSC A/53, and SCTE 128-1. Signed-off-by: Devin Heitmueller --- libavcodec/decode.c | 1 + libavcodec/defs.h | 12 ++++++++++++ libavcodec/packet.h | 6 ++++++ libavutil/frame.h | 6 ++++++ 4 files changed, 25 insertions(+) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index 6ee2c85..5aafce7 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1332,6 +1332,7 @@ int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, { AV_PKT_DATA_A53_CC, AV_FRAME_DATA_A53_CC }, { AV_PKT_DATA_AFD, AV_FRAME_DATA_AFD }, + { AV_PKT_DATA_BARDATA, AV_FRAME_DATA_BARDATA }, { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, { AV_PKT_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE }, { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, AV_FRAME_DATA_DYNAMIC_HDR_PLUS }, diff --git a/libavcodec/defs.h b/libavcodec/defs.h index fbe3254..deadfe7 100644 --- a/libavcodec/defs.h +++ b/libavcodec/defs.h @@ -119,6 +119,18 @@ typedef struct AVPanScan { } AVPanScan; /** + * Bar data - used by side data for avcodec and avframe. Defines the location + * of horizontal or vertical black bars (i.e. letterbox/pillar bars) + */ +typedef struct AVBarData { + int top_bottom; /* 0=top/bottom 1=left/right */ + int top; + int left; + int bottom; + int right; +} AVBarData; + +/** * This structure describes the bitrate properties of an encoded bitstream. It * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD * parameters for H.264/HEVC. diff --git a/libavcodec/packet.h b/libavcodec/packet.h index f28e7e7..bdad21e 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -300,6 +300,12 @@ enum AVPacketSideDataType { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, /** + * Bar data. See SMPTE ST2016-1, ATSC A/53, SCTE 128-1 + * Format for this data can be found in the AVBarData struct + */ + AV_PKT_DATA_BARDATA, + + /** * The number of side data types. * This is not part of the public API/ABI in the sense that it may * change when new side data types are added. diff --git a/libavutil/frame.h b/libavutil/frame.h index a491315..317b663 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -214,6 +214,12 @@ enum AVFrameSideDataType { * Ambient viewing environment metadata, as defined by H.274. */ AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT, + /** + * SMPTE ST 2016-1 Bar data + * The data is the AVBarData struct defined in libavcodec. + * Note: See SMPTE ST 2016-1:2009 Section 8 for the interaction between AFD and Bar Data + */ + AV_FRAME_DATA_BARDATA, }; enum AVActiveFormatDescription { From patchwork Wed Jun 7 20:22:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 41994 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp659143pzb; Wed, 7 Jun 2023 12:25:34 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6iF/hJVt5q10oQC2DPetg1rkAVs1nnfqJJakiXLdYPad4VX3yTO4M4XT2RtM2KTF9MVgMZ X-Received: by 2002:aa7:c1ce:0:b0:514:9929:1b01 with SMTP id d14-20020aa7c1ce000000b0051499291b01mr5647358edp.8.1686165934640; Wed, 07 Jun 2023 12:25:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686165934; cv=none; d=google.com; s=arc-20160816; b=E1Qi9q0O+ceL4BW/sJHBbcwZOFR3KUtmhlFAUe+oByXY9GFyWFIZXvUfHPWcF94LHf GU8q6UQxNTGxUcC4k3MUy3TMqSc0sGtjTBtSKXMuQwQXwS7Gugl5bGt00ihyUkSz/kgy 0oFNFYcOsvrxl718HokSGrmOzNJjr0Eyaab1NAqk7N12RO3P+gwukN/GZR6nZh6iBU6/ K/q87cUNEYjW9qU2u/L56iB22QtpRVpwa9KpwUPKJtH1nmSY/GSc4mcqIQ5eNy8FZ32y IOhGU06zjr6oUwVECspy20n38OPzuE83U7jGmwLOVLrISy925Vc7mI8WegUmN+BuRtYU SPOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=MFwL9wBedOiZLRwUhw9QI1A7xswLzjt43s5Cli7hvJk=; b=nbDp8Vn2ANZhwcAhEWDcUuVITFud+eOKSSDTlmraIV8cpZpQ9LzlhrX5l1fmE6Sp8h AIx6/x7iGaqZu9hY8UFbPnsyNVcKDXL9GD6YkDONXiQ9K3XwNtKOIVTAhvBEAcRAiasM /XPZgHB9qaXUNp4rc13bCwzMoUPAvyb63H9dOn+pCO00FePyc2+qjNEju7m6Da474y38 cRN0Fc1Y4IA27LcXA2InPhE5AVuusSDIeJ3ZmfVCd06XoC+9HwjQCCB1OSiWSjzSkI3v Ikp1JR5gGP/ky+lq9uQDFa6Rj+fFj/ydQlnGNRJwRPXwKDitDb72/TpNNagsOeVMdtv2 x/KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=uk+JbCKF; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b24-20020aa7c6d8000000b00514a41ecf61si8365782eds.287.2023.06.07.12.25.34; Wed, 07 Jun 2023 12:25:34 -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=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=uk+JbCKF; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9C7C268C009; Wed, 7 Jun 2023 22:25:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8BCF068BFB1 for ; Wed, 7 Jun 2023 22:24:58 +0300 (EEST) Received: by mail-qv1-f45.google.com with SMTP id 6a1803df08f44-62b68ce199bso16794326d6.0 for ; Wed, 07 Jun 2023 12:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1686165897; x=1688757897; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=MH5dwzmpvhvqKsMsL8mih7xHRQtHmuak6dNwF3FlRjo=; b=uk+JbCKFLsJdOkHU1aatqz1VTBdq4rWSbiIh/Q7CPWc7d6udhTAuIRDTwWhzUPHoEr KmgFsPBeJuuakD/1SSjYkdP3lbUIOOgWu4WQrtMWfwFCRUTJiVt5YfCakzvSagwnJBhm cpZ/YrDx9ABU0mSstbRJy2oyxU+CSV+DNPVK2qXBCLS2Baj5gbQ3isFkgDq9nA2e6nNl 175hW0Q9r0ZURb+QAppF0vyZOrnOMvEMQthIHXFkCVsq4pamcZq+wxtDiBezflmNK4nC mtN2P/uYVaEpWp0DvwCLI6DUhPBHw0nUqGq2aGzqQ4fNHLzBcbOXsqfWpN8NBMlOQgG2 N5Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686165897; x=1688757897; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MH5dwzmpvhvqKsMsL8mih7xHRQtHmuak6dNwF3FlRjo=; b=XStUS88FT23npme+LneUN7Sx2SCEuRaipMaxw+sQTOy7GbbQ54ms58HkRTm0r8DrV1 1XJXRS+tk37BvPsq6kLJsTeA5CrXiFncb7OdQ0PtHKKqITZAjREkCSiQuh/GQNcjEN5M o/dtI/Gxct99a/NJ0JH2bRGbQ4vtyURnSwYKZRac+8kqzV3dhSgooa19B86Odh26p2G3 GCNsTnoMfdaQnHKG+oUwhJkKaZh7uXAw9G4sE6AfxgXGBDwz1ScRpUTe5jE1EudlHtit WUPKPwvUlYz1bPrWv+bCLBjIIEsWvInRo2dbLbN4DtNrdUlAj2SGlrHHakPbufcq0XQZ KTZQ== X-Gm-Message-State: AC+VfDzdtA3D9jhU3xrsxWiNQ/WaBPKsn6IAb7AI0hVLN+2yOKcHl7TZ KDWtDA5sQ8bnpZjLqDV88qHxLx5zT9oT721hbKI= X-Received: by 2002:a05:6214:1d0a:b0:625:aa49:9aba with SMTP id e10-20020a0562141d0a00b00625aa499abamr5153847qvd.62.1686165897035; Wed, 07 Jun 2023 12:24:57 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id j18-20020a0cf512000000b006261c80d76dsm133643qvm.71.2023.06.07.12.24.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2023 12:24:56 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Jun 2023 16:22:24 -0400 Message-Id: <1686169347-28987-5-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> References: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH 4/7] libavfilter: Add filter to insert AFD/bar data 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: Devin Heitmueller MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +nof34Pe6Mr0 Introduce a new filter which allows the user to manually set the AFD or bar data side data on AVFrames. Signed-off-by: Devin Heitmueller --- doc/filters.texi | 52 ++++++++++++++++++ libavfilter/Makefile | 1 + libavfilter/allfilters.c | 1 + libavfilter/vf_afd.c | 133 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 187 insertions(+) create mode 100644 libavfilter/vf_afd.c diff --git a/doc/filters.texi b/doc/filters.texi index 9179c20..18aa998 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -21208,6 +21208,58 @@ This filter use field-dominance information in frame to decide which of each pair of fields to place first in the output. If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter. +@section setafd + +The @code{setafd} filter sets the Aspect Ratio Description side data for the +output video. + +This filter allows configuration of AFD metadata (conforming to +ETSI TS 101 154 or SMPTE ST2016-1), as well as Bar Data (conforming to +SMPTE 2016-1, ATSC A/53, and SCTE 128-1) + +It accepts the following parameters: + +@table @option + +@item afd +This parameters dictates whether AFD side data will be injected. It is +enabled by default. + +@item code +If AFD output is enabled, this parameter will specify the AFD code to +insert into the video stream. Valid values are from 0x00 to 0x0f. + +@item bardata +This parameter dictates whether bar data will be injected. It is +disabled by default. + +@item top +@item bottom +@item left +@item right +If bardata output is enabled, These parameters specify the dimensions +of the bar data. Typically only top/bottom or left/right would be specified. +If either top or bottom are specified, the bar data inserted will be for those +parameters (even if left/right are also specified). + +@end table + +@subsection Examples + +@itemize +@item +Set the AFD value to 0x08 +@example +ffmpeg -i INPUT -vf setafd=code=0x08 OUTPUT +@end example +@item +Set the Bar data to a top width of 100 and a bottom width of 120 +@example +ffmpeg -i INPUT -vf setafd=afd=0:bardata=1:top=100:bottom=120 OUTPUT +@end example + +@end itemize + @section setdar, setsar The @code{setdar} filter sets the Display Aspect Ratio for the filter diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 18935b1..30954e1 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -467,6 +467,7 @@ OBJS-$(CONFIG_SELECTIVECOLOR_FILTER) += vf_selectivecolor.o OBJS-$(CONFIG_SENDCMD_FILTER) += f_sendcmd.o OBJS-$(CONFIG_SEPARATEFIELDS_FILTER) += vf_separatefields.o OBJS-$(CONFIG_SETDAR_FILTER) += vf_aspect.o +OBJS-$(CONFIG_SETAFD_FILTER) += vf_afd.o OBJS-$(CONFIG_SETFIELD_FILTER) += vf_setparams.o OBJS-$(CONFIG_SETPARAMS_FILTER) += vf_setparams.o OBJS-$(CONFIG_SETPTS_FILTER) += setpts.o diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c index f1f7811..2ec9487 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -437,6 +437,7 @@ extern const AVFilter ff_vf_select; extern const AVFilter ff_vf_selectivecolor; extern const AVFilter ff_vf_sendcmd; extern const AVFilter ff_vf_separatefields; +extern const AVFilter ff_vf_setafd; extern const AVFilter ff_vf_setdar; extern const AVFilter ff_vf_setfield; extern const AVFilter ff_vf_setparams; diff --git a/libavfilter/vf_afd.c b/libavfilter/vf_afd.c new file mode 100644 index 0000000..a6120c8 --- /dev/null +++ b/libavfilter/vf_afd.c @@ -0,0 +1,133 @@ +/* + * AFD and Bardata Insertion Filter + * Copyright (c) 2023 LTN Global Communications + * + * Author: Devin Heitmueller + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Active Format Description and Bar Data Insertion Filter + */ + +#include "libavcodec/defs.h" +#include "libavutil/common.h" +#include "libavutil/opt.h" +#include "avfilter.h" +#include "internal.h" + +typedef struct AFDContext { + const AVClass *class; + int enable_afd; + int afd_code; + int enable_bardata; + int top; + int bottom; + int left; + int right; +} AFDContext; + +static int filter_frame(AVFilterLink *link, AVFrame *frame) +{ + AFDContext *s = link->dst->priv; + AVFrameSideData *side_data; + AVBarData *bar_data; + + /* Insert/tweak the side-data for AFD */ + if (s->enable_afd) { + /* Insert/tweak the side-data for Bar Data */ + side_data = av_frame_get_side_data(frame, AV_FRAME_DATA_AFD); + if (!side_data) { + side_data = av_frame_new_side_data(frame, AV_FRAME_DATA_AFD, sizeof(unsigned char)); + if (side_data == NULL) + return -ENOMEM; + } + side_data->data[0] = s->afd_code; + } + + if (s->enable_bardata) { + /* Insert/tweak the side-data for Bar Data */ + side_data = av_frame_get_side_data(frame, AV_FRAME_DATA_BARDATA); + if (!side_data) { + side_data = av_frame_new_side_data(frame, AV_FRAME_DATA_BARDATA, sizeof(AVBarData)); + if (side_data == NULL) + return -ENOMEM; + } + bar_data = (AVBarData *) side_data->data; + if (s->top || s->bottom) { + bar_data->top_bottom = 1; + bar_data->top = s->top; + bar_data->bottom = s->bottom; + bar_data->left = 0; + bar_data->right = 0; + } else { + bar_data->top_bottom = 0; + bar_data->top = 0; + bar_data->bottom = 0; + bar_data->left = s->left; + bar_data->right = s->right; + } + } + + return ff_filter_frame(link->dst->outputs[0], frame); +} + +#define OFFSET(x) offsetof(AFDContext, x) +#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM + +static const AVOption setafd_options[] = { + /* AFD Options */ + { "afd", "Enable AFD insertion", OFFSET(enable_afd), AV_OPT_TYPE_BOOL, { .i64 = 1}, 0, 1, .flags = FLAGS }, + { "code", "AFD code to insert", OFFSET(afd_code), AV_OPT_TYPE_INT, {.i64=0}, 0, 0x0F, FLAGS }, + + /* Bar data Options */ + { "bardata","Enable Bar Data insertion", OFFSET(enable_bardata), AV_OPT_TYPE_BOOL, { .i64 = 0}, 0, 1, .flags = FLAGS }, + { "top", "top bar position", OFFSET(top), AV_OPT_TYPE_INT, {.i64=0}, 0, INT_MAX, FLAGS }, + { "bottom","bottom bar position", OFFSET(bottom), AV_OPT_TYPE_INT, {.i64=0}, 0, INT_MAX, FLAGS }, + { "left", "left bar position", OFFSET(left), AV_OPT_TYPE_INT, {.i64=0}, 0, INT_MAX, FLAGS }, + { "right", "right bar position", OFFSET(right), AV_OPT_TYPE_INT, {.i64=0}, 0, INT_MAX, FLAGS }, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(setafd); + +static const AVFilterPad avfilter_vf_setafd_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .filter_frame = filter_frame, + }, +}; + +static const AVFilterPad avfilter_vf_setafd_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, +}; + +const AVFilter ff_vf_setafd = { + .name = "setafd", + .description = NULL_IF_CONFIG_SMALL("Set AFD and/or Bar Data for video frames"), + .priv_size = sizeof(AFDContext), + .priv_class = &setafd_class, + .flags = AVFILTER_FLAG_METADATA_ONLY, + FILTER_INPUTS(avfilter_vf_setafd_inputs), + FILTER_OUTPUTS(avfilter_vf_setafd_outputs), +}; From patchwork Wed Jun 7 20:22:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 41996 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp659297pzb; Wed, 7 Jun 2023 12:25:53 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4IaaodhDzTxbSsxecacj4vHB9ZfcVX9TcW7aQtiEs0p7JI/E5sRb1BA6rXwfeP/rv8Ii43 X-Received: by 2002:a17:907:c1e:b0:973:e349:43c9 with SMTP id ga30-20020a1709070c1e00b00973e34943c9mr8157927ejc.77.1686165953488; Wed, 07 Jun 2023 12:25:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686165953; cv=none; d=google.com; s=arc-20160816; b=u9nuKixrO794jix/EoEubKKaTCbyil/Cuq53kiWdHcCPJajIxSePV07N+PqLUk7qdl CuqJNBuQ6p2590ikqd1A+V6ygszlDIeg8WI2KPffYVNF51VeFh2JbxWbUeN6OgCdAPm5 3vsI+F3G1Q03B+O4AcwdG18ugOjCrSu6h+w8F2vE+ptkuVh7MFOK0mBNkX1Rg5KtEpsb 0a8fqDgl2tNEwkgponCHzHp9WLSM8cAVu0PmjvMfxc+DsFR9aOP2WBV1QI1uAeIx4P8E zWZpMGIpAgQESFYlbIzw7o+FevfFyvFmVkdqVrs6ojhkFMTJAqP6JgsstO5sxORGXr9E 1aXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=XKGDaOv4Viktr3Gkc+NisGgTjqBq+TZ90EtdIKCRSvQ=; b=PWeSWFMBkUXXObLUKz9s579nvdDgEy3li9aRIigV91Ftlrp8ApqkeSMjcDLmvZgkbq n5ByyFkTwqgtPvb/094+mBHtvwqf4fm7EeAWuqVP7ERpk3FnRDJzVDc8yN0oD5vCeEWr rH2SbkcLR90OWr2KbqdZiPlAJy8/F9ygh9yguzRH4RbYm0FCOOfaxSheXOVB0AxJD5Rr zer+AUU2no4S+iuJS7Ub1LGI+CMSMkHClQqnQ+wyMeccQ8DhvpBbVVO13eviZbGsRXdz BxXwd3IZIqR2ef0YEn//F6PvDkZkrzoAabTihzVzAxW9c2XESCECoQRddhujSoTvapip tdIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=FiMfbwdd; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h20-20020aa7de14000000b00514b00753d0si8075170edv.465.2023.06.07.12.25.52; Wed, 07 Jun 2023 12:25:53 -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=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=FiMfbwdd; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7E4E668C094; Wed, 7 Jun 2023 22:25:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4EFEB68BFE8 for ; Wed, 7 Jun 2023 22:24:59 +0300 (EEST) Received: by mail-qv1-f54.google.com with SMTP id 6a1803df08f44-6260e771419so8269076d6.1 for ; Wed, 07 Jun 2023 12:24:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1686165898; x=1688757898; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=P/42dyu7SiEwVQZT0uYE9hi3NkHyq7Sy20t3HnrqodA=; b=FiMfbwddJaC2PvKMSPeg90dhbbNWDqYPfLt/kjljUmgo1AdrVcXZQlHr9Js81Zkr7E m2/789W5NLDkt+T8uEY/E170g1G2ThWX0IfLVX4XW2cbehOMfJI1/bhrYrVDJ7pVpbwM jgvB8H3+4BKb3rRv5EAToF6KSCjLI4SgFElWDbflqu2vXD0t6PhCOkzAy504/NOEJ7Ys drNTgl1vzkJi1rQz12UcDOnSQI0WkQzSZ/1RoVLbiHtxxpptThgJ6oHV0b33Nl6xU3Mi 7RY1u0P0aHa7eSzUyobWg7+6lFRHvhXVdYOTJOO0AREt1edA65UVMYcecpy+zSc6zitW AmWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686165898; x=1688757898; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=P/42dyu7SiEwVQZT0uYE9hi3NkHyq7Sy20t3HnrqodA=; b=RGm0/X/UtVg/ftLzM6Qg40TrUxQ58rO5ouUAPfYfXBehIidgGpedCTEAFSAPf+wIMt 47IMsTLA8otn4KlwCRhmOJUyVmd3AjCqU2H/O65Oz4lgJegpkqovpL2vVIBv2BniWgXo wPWwka87gUj7qhrJQLgZ8ncwzbsxa7h/l3+brv3aBho0r3uRt2dC47cmQxwEFYhesFuU 7LGwR3SB11dvPmG+Mu4Ji/05y8c7T7F8DgMiHnQeJry6+0t0lIqH0ENTQ35N3pl1LbTL awu1k8wf6BsjCLN5vGwnmw6jpIQ4tK1KpIv4ZHCy44txikVaio1lY3+TaIP0tKDPu5rD fagQ== X-Gm-Message-State: AC+VfDypKeiSTPWUvPyHT9+MWtanuzTKjtpRYytJtRcCuoppuMuTYv8F L78YYTbWmIk8RC9ztBdXxcPvXunI3pn3ePNZbqQ= X-Received: by 2002:a05:6214:4017:b0:626:c17:8b55 with SMTP id kd23-20020a056214401700b006260c178b55mr4693741qvb.25.1686165897829; Wed, 07 Jun 2023 12:24:57 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id j18-20020a0cf512000000b006261c80d76dsm133643qvm.71.2023.06.07.12.24.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2023 12:24:57 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Jun 2023 16:22:25 -0400 Message-Id: <1686169347-28987-6-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> References: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH 5/7] Provide a side data description for newly introduced bar data 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: Devin Heitmueller MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: OC+I4CgCdAis Add a new description for bar data, so that the presence of bar data can be seen through ffprobe. Signed-off-by: Devin Heitmueller --- libavutil/frame.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index b6cee2d..03d1b31 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -941,6 +941,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type) case AV_FRAME_DATA_REPLAYGAIN: return "AVReplayGain"; case AV_FRAME_DATA_DISPLAYMATRIX: return "3x3 displaymatrix"; case AV_FRAME_DATA_AFD: return "Active format description"; + case AV_FRAME_DATA_BARDATA: return "SMPTE 2016-1 bar data"; case AV_FRAME_DATA_MOTION_VECTORS: return "Motion vectors"; case AV_FRAME_DATA_SKIP_SAMPLES: return "Skip samples"; case AV_FRAME_DATA_AUDIO_SERVICE_TYPE: return "Audio service type"; From patchwork Wed Jun 7 20:22:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 41997 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp659378pzb; Wed, 7 Jun 2023 12:26:01 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5h5EMlPjsK+Fqi2ttztN2aiJGtVqVbU/cx5Eaf9FO8c2xwGTsld3+qoUJeB4GhiitXmHv1 X-Received: by 2002:a17:907:2d2a:b0:961:78c2:1d27 with SMTP id gs42-20020a1709072d2a00b0096178c21d27mr7142071ejc.19.1686165961616; Wed, 07 Jun 2023 12:26:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686165961; cv=none; d=google.com; s=arc-20160816; b=fXh8thf/Rs/ObPLrv7UR7rL4ccpxbBq4lAmrcb5qzMzQVN31JG6TR6pIOzSDfLMx5d +Kq2sm9aMSJRG4qp3zkpgFSW0DIRzfa7kk+OITaX/B9nFGD5+pkU/MfbS35/NJcX1k8f DbRBvepp4VWDBRAT/okFk9YVasoHqRM5sq8P8qKWudHVgMiIIrRBmM8/v7X0lB79owU8 kPS6TLRqtfif/FxVfhZz+jUyJMJNmQA3C+EXcRVaCqFjJiJLQYa1OP6b7tHen53Xf7+v 8bZATwG1CWsaCstadE5jObY9C667I1YlBBoEQleqqnSpWjNhl37Pjk91nlSbJ5DvoX40 9kOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=qpf6aTlXIil80y4zUrDsEhhXeV1X5iqSxayuawNBGZA=; b=FL+Uu8sCaLKg0H9dqWtfQhjYwXt1hMcuhMXNzjJb9OEke0HW7rYEZvJDTxucIQS0hb 1ADkh47IwPpUGatisWqOt9Y7UgxgC0BOUuV3q/z2iWEkPrVcHren5RlRnEj1CfgBBuFk Gdiyt/2GsUnQIZOdj9a5i5+b2VqYdlI6LNWeOlp4zLD97cgJn6OcG5pE6J7vRIstmekX idHYEgWEta+Hk2G12Uv/pGUZh0zRsr3N2Cr4NIu5rFqnLh3zYQpCz9a4HVRTiKricg51 SMdE8giuwC+uO2xSsmu9zV4eRvBfpZdq437QhDCbDPKva622GlC/Im+qZBwB10/3wa3/ ki1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=OuEhaat+; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hs34-20020a1709073ea200b009788ca4af50si853502ejc.241.2023.06.07.12.26.01; Wed, 07 Jun 2023 12:26:01 -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=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=OuEhaat+; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 88DA668C0B8; Wed, 7 Jun 2023 22:25:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f172.google.com (mail-oi1-f172.google.com [209.85.167.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A97BE68BFF5 for ; Wed, 7 Jun 2023 22:24:59 +0300 (EEST) Received: by mail-oi1-f172.google.com with SMTP id 5614622812f47-3942c6584f0so5277652b6e.3 for ; Wed, 07 Jun 2023 12:24:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1686165898; x=1688757898; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=83UPHzarnuXbzYo6VqzGhadcopTJS5L9+pSro3qrCgU=; b=OuEhaat+jzW6rFtVUTLcFy9pg7VX+HABcteQlZp7NlAUB4I889S5XuAU58FXEorIVj v0GLz1ieQHSu8kbjTavxn1DDq0sJaH5NtMrJA2zb8TPYOEKxy/gw2QChNlrSyEJ643cO 1vPPa8TiutkJOSuDdvl7svMZri1sNGeq0FHP+godp2Sj52cOTgPOICEyX1Nldx8u4JZ2 0AubAu0byUZ8j4R2Ws2zp30pWdJs7PWXv6bCdDQ0BUKczUyEAfUb14Xb/jgxATBHWP5e mimJmhL2m/+bsNaLf1Vme4J5R1McpN4MfZQVVKsSNWTczmcNuxW+NCGKG7n8sUGNN+Pt hSyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686165898; x=1688757898; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=83UPHzarnuXbzYo6VqzGhadcopTJS5L9+pSro3qrCgU=; b=IWeP+C1CpDAV/yOi4ScOusjIlfGqpjHmCnTvs7YvZ8yO+vAKcKjYDgGhcyB7fXBODY op5yj4SLsMWJ6Z0W1lUlwsu6O4lPLpSWLlpAf6mSn6Cz6E16+l2Aecc63BJ2FWOFhx6Y cSODf+l0/koCvaF+Inr8cmndc/fIGTn4s1OpQHbe3qhLbFaeDNb5ItQ9TrKA2J75B8zS Aubw3xGrvOvxQJyAx9oMdmBerv7upwK1NYSLBjpwnUmVJt4GuIarUZi/GNYZCMt/PVyl JkdTqQU924wGenFDLvLxSYTc9WTpZaHfyw70SG6pO0RE8Xc3edtYkU5jlf128i6O8Kwe rwJg== X-Gm-Message-State: AC+VfDxa1Sbwfh2klsjI5kAQr3AjCYKVUu7CnI8SOy717nlPm49QvfJZ YTddoQWYQCU7LVwoWX/g3qk5uYovIGu8UVe4iEg= X-Received: by 2002:aca:2811:0:b0:39c:7749:74b4 with SMTP id 17-20020aca2811000000b0039c774974b4mr788466oix.17.1686165898269; Wed, 07 Jun 2023 12:24:58 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id j18-20020a0cf512000000b006261c80d76dsm133643qvm.71.2023.06.07.12.24.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2023 12:24:58 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Jun 2023 16:22:26 -0400 Message-Id: <1686169347-28987-7-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> References: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH 6/7] avcodec/v210enc: Pass through bar data 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: Devin Heitmueller MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: xE9Y72BKmiGX When encoding to V210, make sure the bar side data makes it through in the resulting AVPacket. This is needed so the decklink output module can put out bar data as VANC when in 10-bit mode. Signed-off-by: Devin Heitmueller --- libavcodec/v210enc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavcodec/v210enc.c b/libavcodec/v210enc.c index 2a30ed7..69a2d72 100644 --- a/libavcodec/v210enc.c +++ b/libavcodec/v210enc.c @@ -103,6 +103,14 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, memcpy(buf, side_data->data, side_data->size); } + side_data = av_frame_get_side_data(pic, AV_FRAME_DATA_BARDATA); + if (side_data && side_data->size) { + uint8_t *buf = av_packet_new_side_data(pkt, AV_PKT_DATA_BARDATA, side_data->size); + if (!buf) + return AVERROR(ENOMEM); + memcpy(buf, side_data->data, side_data->size); + } + *got_packet = 1; return 0; } From patchwork Wed Jun 7 20:22:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 41998 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c526:b0:117:ac03:c9de with SMTP id gm38csp659472pzb; Wed, 7 Jun 2023 12:26:10 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4hsxRkzS41JOZlqpXZFOk+1yae5o9wbdI4W3IxNuEDgogUuoDwo6Pg/1HlRJVX/ssLQ861 X-Received: by 2002:aa7:c457:0:b0:516:459d:d91b with SMTP id n23-20020aa7c457000000b00516459dd91bmr5196528edr.39.1686165970560; Wed, 07 Jun 2023 12:26:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686165970; cv=none; d=google.com; s=arc-20160816; b=CB9ip37iTpGBcxyup5tLSo01to0zDutkK1CAEMUSkm9bh1mrVr8w16zcjCE7e5osb5 L8X7NxnhfUPwFKkplc1qSIGUIHfj2eFtpuRBo+lh7U1aPDXMQ0BiG3O7NAv4YUBQZ4WD n+qsmbHZiAAydBJtlvHbvUooMCIWUKIjtpJBNmed2K+S7FxUG6cn6rxyi/6gNtMNgIgx fAKToTqRlfbH6zPPuKU3p1nGhovGEsWBgZg6GHw2G0C0u7UzpD0bBSituNl2QW8h99e9 /L1+lpnUZveAHfUP+dAijrrFlSV/70nPo0Tis0UViypRJsLOIZWRMMScnppsC7GXJ5EJ NC3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=xSkNq5fqOQiH6VJklW1r8Ow1rXQf0cqhNF0YKgN20Xo=; b=by+7/GHVTWhTZbVOySvCaNpmb5dm2+ojNJ20s5HN3ZExCFxjcW1dbck5dcJc+CWuJB hM2jac2gj2D4NkxqX8Ohdaqp3bmLkTkRq1ewxb5vTHBYhUBTBloAZQUIFZdZ8CGtxMUs XuzkJb/puRik3ThNJe0hfUbmLzfnrIENd0CTB+/i89gtJqTqXx+1K8Q1b3FIUz11h0Fd Azxsg8JxZfoscMAbq3ox/5XmPFsOEp6YXyRh5FfMllEOHZmD6EE8U6VvTwFMsuqRChPm 9eEAhl1737w4MIsZTqH+KVOkgULA5T7HuAbfgzCGUoh9UxM+Jjp12nbNjUAs0dAfpmWN qYWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=sr+uU5X5; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e12-20020a056402104c00b005022d0268f3si8685424edu.669.2023.06.07.12.26.10; Wed, 07 Jun 2023 12:26:10 -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=@ltnglobal-com.20221208.gappssmtp.com header.s=20221208 header.b=sr+uU5X5; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8BF8C68C112; Wed, 7 Jun 2023 22:25:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4045D68C02E for ; Wed, 7 Jun 2023 22:25:00 +0300 (EEST) Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-6261a8bbe5fso66658616d6.0 for ; Wed, 07 Jun 2023 12:25:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1686165899; x=1688757899; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=RZ/Kdz1J0BHeEzy6jTG8mB1tcGrutrZ7exkIhvKZAx8=; b=sr+uU5X5aWx0GlH22mv4Ie9J0OPx8YKOkROxw0PRmMzOggKCpq52bZrLhSF7lXVdTn gXW4kh1De6GMynGNE0cFn7oXTacrruukBsUaefuGF8oWIOsqJ1StP5rMZ3zWMLAL65NF UicJVRZ6yV/yc7J42qZUVpovWVz8pAm3Zj8CmM4Das7U9yTAYk1w6RQ8C69nIc4JcT2b ZtJKvo+taVkGru7dJnuthgI4hcbAGM4zw4neyFR8WioD/F6m0//BTYk8gILb+eMsvZvA vy5n7H6kzQg0drtMSXRLV4D0mQRgSLnZpXG1n6ot/zaAvMya/9nQE72dCWBkUG9IyRUM +FUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686165899; x=1688757899; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=RZ/Kdz1J0BHeEzy6jTG8mB1tcGrutrZ7exkIhvKZAx8=; b=Ykq7fUhBns9i/PlQXLmOQYHfQeJ1ASS98JB09GMYfSl+lhfqCKWOUP7lTdqIi71TmS 6FS3Vr8/amaKp0bd7WkfKF6+LujenTzyVc8erLrt8ALM7XZdigLuEYBe2frWKo3RAnaw jUscSmPxKoo7qFrdl1hjlgoARBSI/okoUNqAfZX8GIp5QD+4EfSnV/EBw936q/sb8zed 5oZn+rf/9GOMCccYesivxqWE7Jxb8kgi8o6y+Thy7sERbGA1r9GdL4tIU7s8ILJomTr8 gPv/KhsFTQtMxxQYPIS6XoyxnFFjBkaM0a+OFEE9w7Xu2U3/dAhu//DkRVi2xms5oyvk LITw== X-Gm-Message-State: AC+VfDy4L+I/hLngjfbTcIqJtivuoeb1hFShFOpbTqlMNZD2DaPm/BbQ rYaNBdeCE4Ua6ArvLgdsYd1WSe/8NMpO8v8/by4= X-Received: by 2002:ad4:5945:0:b0:625:7c0b:4640 with SMTP id eo5-20020ad45945000000b006257c0b4640mr4650514qvb.22.1686165898760; Wed, 07 Jun 2023 12:24:58 -0700 (PDT) Received: from ltnt-nyc-580testdevin.livetimenet.com (pool-71-105-132-214.nycmny.fios.verizon.net. [71.105.132.214]) by smtp.gmail.com with ESMTPSA id j18-20020a0cf512000000b006261c80d76dsm133643qvm.71.2023.06.07.12.24.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 07 Jun 2023 12:24:58 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 Jun 2023 16:22:27 -0400 Message-Id: <1686169347-28987-8-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> References: <1686169347-28987-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH 7/7] avdevice/decklink_enc: Add support for output of bar data as VANC 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: Devin Heitmueller MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ZqLK1yVdR90D SMPTE ST2016-3 supports both AFD and bar data within the VANC message. Extend the existing support to pass through both. Example usage: ffmpeg -i input.ts -vf setafd=afd=1:code=0x00:bardata=1:top=100:bottom=120 -f decklink -vcodec v210 'DeckLink Duo (4)' Signed-off-by: Devin Heitmueller --- libavdevice/decklink_enc.cpp | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/libavdevice/decklink_enc.cpp b/libavdevice/decklink_enc.cpp index 6906cb0..5d85d6b 100644 --- a/libavdevice/decklink_enc.cpp +++ b/libavdevice/decklink_enc.cpp @@ -447,23 +447,39 @@ static void construct_afd(AVFormatContext *avctx, struct decklink_ctx *ctx, struct klvanc_packet_afd_s *afd = NULL; uint16_t *afd_words = NULL; uint16_t len; - size_t size; + size_t size, bardata_size; int f1_line = 12, f2_line = 0, ret; const uint8_t *data = av_packet_get_side_data(pkt, AV_PKT_DATA_AFD, &size); - if (!data || size == 0) + const AVBarData *bardata = (AVBarData *) av_packet_get_side_data(pkt, AV_PKT_DATA_BARDATA, &bardata_size); + + if ((!data || size == 0) && (!bardata || bardata_size != sizeof(AVBarData))) return; ret = klvanc_create_AFD(&afd); if (ret) return; - ret = klvanc_set_AFD_val(afd, data[0]); - if (ret) { - av_log(avctx, AV_LOG_ERROR, "Invalid AFD value specified: %d\n", - data[0]); - klvanc_destroy_AFD(afd); - return; + if (data) { + ret = klvanc_set_AFD_val(afd, data[0]); + if (ret) { + av_log(avctx, AV_LOG_ERROR, "Invalid AFD value specified: %d\n", + data[0]); + klvanc_destroy_AFD(afd); + return; + } + } + + if (bardata) { + if (bardata->top_bottom) { + afd->barDataFlags = BARS_TOPBOTTOM; + afd->top = bardata->top; + afd->bottom = bardata->bottom; + } else { + afd->barDataFlags = BARS_LEFTRIGHT; + afd->left = bardata->left; + afd->right = bardata->right; + } } /* Compute the AR flag based on the DAR (see ST 2016-1:2009 Sec 9.1). Note, we treat