From patchwork Fri Jun 30 21:38:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 42350 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2791225pzh; Fri, 30 Jun 2023 13:41:25 -0700 (PDT) X-Google-Smtp-Source: APBJJlHcL/1o1G0I+CcvrYCh5MEo+RAQfYpiMKClUFuehsEhEP5cc1l20J0xrHdVBt4QwspOqKDk X-Received: by 2002:a05:6512:3c81:b0:4f5:1418:e230 with SMTP id h1-20020a0565123c8100b004f51418e230mr993196lfv.52.1688157685248; Fri, 30 Jun 2023 13:41:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688157685; cv=none; d=google.com; s=arc-20160816; b=BVv++21NdDhh+PoepWuIyYFCHzgFVBu42pFW0DcQLSqygvPMx3i08Wmq+MQQyiPKOQ r0sLtck5OvF/Hg1sU3O4IdIJmJxuWMwhpKn976ZO4DDZfvrEbf+1XqiG4YgBAzoJiBY1 dlq+QRxaVjdzreRQI3c6uqv+jblT3v9p095ejLbRut1kpOfCojhRUJmzqgPug1mcuWpX vZ+SfWQ1+TD0mmlyt7yBv4XRTCZ7HtwKKz5W7BOSX5YYkkojcw0c1lXyiLBHr/3wfPjN cdOBTBSR94Lj1qn2JVuhj6oVml0MfDQq1NN8cWjscYpltduQA3LXcT5VxT8Jm/dGQ7nB gyVg== 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=; fh=pXLAZvRiz3/uELcsWNfKAkJPgyV9/rr3Mrznj9KeXEo=; b=OB8UMdga1mgHhivAyQYTloaGqnt5A4WPpvoD2ROB4PdCt7iG96/9w91l9NYbWVgOtJ wnFup7TpUC4STUhp0arQWOG3nDfa0s3DlOu8NM4huAu4UNu4LAqWSQfUKgF6qZafGFnJ djPxo+dWSu9ql2cDzkGd4RDwRulUHfHe7GyUJQbfPOVuYe71gsjJO8c6uWs5bSM5Rvz3 hc0miG8nXIfY73t1AAjC7qXKGwalj+Tt8nUo4i3iuLyBQFrhi5d2qmqxfxBZyjGgvz6z zJqMcBKyDiLYW4i+ye3k3BmBjMwIhgHXWSKGx5KgChY9sfb0so+KBswn3rwyOeQX+QRJ FJ/Q== 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=S+ng4HfY; 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 k3-20020a05640212c300b0050bc94fe05csi8792007edx.117.2023.06.30.13.41.24; Fri, 30 Jun 2023 13:41: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=S+ng4HfY; 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 521E368C449; Fri, 30 Jun 2023 23:41:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AB27468C23F for ; Fri, 30 Jun 2023 23:41:04 +0300 (EEST) Received: by mail-qt1-f169.google.com with SMTP id d75a77b69052e-400a9d4b474so17514081cf.0 for ; Fri, 30 Jun 2023 13:41:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1688157663; x=1690749663; 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=S+ng4HfYB9C/SoqD8cWDaoVxeiZy88VnrafV3DXniLHYjsEi5C6YH40AJSSxBjZkuY 2GG0h41hsDfjYjKcBPBIHpFXRJDnQF7zhQPMWO5uXtnNPA1GdUpApdcKcG1CkrKFW8nI BFzLJHO/a1N5nQkg6vPudKCRVs0Z6u4LHQjB6zXfQU44CapgKujw09ii7pvaRKBlXFpI PoXweW9nRgtaGxJQLXqO5IKIgFUNxAA0h1z9otNZQ9LD6SZgUMc0sG5p4mMkqRR4sRTB vsYZcOLGHDTzh/qI+1hGe6z4M0y9q+RTudPfoKR7biWRwmHE6MX0D5kVNnErZHsh0h1Z VVUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688157663; x=1690749663; 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=PQdRz0XVu29IpLy3jvgFRgW0OFQp9ZMvA8o0bGHz3RyBZEl0CXsMewd0bGm7e2k+w3 6TzJv+vUlxttRK2A3ODLRMxrXh6MOYRHuLIHXhESfOsjhox0mdmVWIg1/AImnNsFB98h u5kNexBeyKSy/vGwpMmZgeS2orVWkSo930KruLol7CCnI5k/Y7f2+jcEyuz32SnhQFfx hxgS7j/UaehFLPdV+i6MPe7x+xPDHqTfidZniv8Uz2KxQQkmpxfXi6WXSEWTGNbcGxcX Wy3rY0VRCkGRsCDCNbkNE5zIuBKrPSouVWuLS0rjj2t61P6ppbHFuKjShqZirS8tUHBS Sq+g== X-Gm-Message-State: AC+VfDzowuzM9U5S9dS1dUpcPedY6xKnqb8QXpxRj35v0/DNviVNYpRi dIGMupQe6IRSqONJtXyS/xk8H2UKRzHYQuYA8xA= X-Received: by 2002:ac8:7e8e:0:b0:403:2aca:2a74 with SMTP id w14-20020ac87e8e000000b004032aca2a74mr4398299qtj.6.1688157663367; Fri, 30 Jun 2023 13:41:03 -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 bq8-20020a05622a1c0800b003e0945575dasm4409885qtb.1.2023.06.30.13.41.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jun 2023 13:41:03 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jun 2023 17:38:49 -0400 Message-Id: <1688161135-11774-2-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> References: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v2 1/7] libavcodec: 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: f/aGQgQA882M 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 Fri Jun 30 21:38:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 42351 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2791310pzh; Fri, 30 Jun 2023 13:41:34 -0700 (PDT) X-Google-Smtp-Source: APBJJlG6BzXyY0AiFxCmjlS4YsohwWmiqXZ3ahzVbpG7YnAu+xYyoGSJMhgpwlvmfbtejVSyFyP3 X-Received: by 2002:a2e:80d9:0:b0:2b6:a3a0:5f7 with SMTP id r25-20020a2e80d9000000b002b6a3a005f7mr2707506ljg.9.1688157693788; Fri, 30 Jun 2023 13:41:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688157693; cv=none; d=google.com; s=arc-20160816; b=ZCT1wIkLf3z5iopyAWltWhU2K6IL5tEZ/wCEl6FPimjoHXtucJYBjISM3sXUAHmTgL ygAWAo0+3JBZIuRbMLW1RA2FnpBZ+5IXWDWw/dqlcIYlyLJ4b8GDRq76GzLb7i/Mrrg+ mbqM0I78P6zZw/IYU4BnwFRWRoXoxxqR1XrmI1A/XSGgStx1Lro405cUPKgEwytQsWna lCWBZY7ppu7rQdz8P+Ws6iYTg5CqNmp+I4ViFxSf2pKy2m8MbkJHgTlcjtWOsskDYNHz YYEUq7WhpcoGh6HA1/VsmZ6kAo/jQvrMT4jTyC0I9pMD+wgmHCDJzBt2pahN69DxQFlw AA4Q== 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=XxEz3SDifz+Bcjnh+zRO4WprN4P50MgqfMtARui9QyU=; fh=pXLAZvRiz3/uELcsWNfKAkJPgyV9/rr3Mrznj9KeXEo=; b=uoLMXh6+BA+ZMVi5dHmpJjsB3PU8BMkx+AfTzoJlyneiSvzu68JvxI/BVYlaIONJZm kCFSF6Vk7W0Kgb971RsT75wr/QtF7FvIekhFH6LEd4mJhNbI0ZLVi77vCecW26WUrWm3 DywBWBO/WcNhm7zt0u/2+BVvhNe4EN7ofg23kl2U40+KtY05ta8iIuYuws4uSFzb3qt0 6CCDM5eM/THBL+0VU38z6vZQ4keV4Ic+aEA0y4QKAOUGM1PW7OYM5SVpsYALvbbwZU03 Lb9C64aZfmca/TZQ4upcQcrt4GTXj3L7dndosiWasiVBEgUDMKWBFp9IcOGQfQQhYeqV B+LA== 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=J1reMB+7; 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 a20-20020a17090682d400b00986432cf57csi8450876ejy.942.2023.06.30.13.41.33; Fri, 30 Jun 2023 13:41:33 -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=J1reMB+7; 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 3DDAE68C43E; Fri, 30 Jun 2023 23:41:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 993A468C33C for ; Fri, 30 Jun 2023 23:41:05 +0300 (EEST) Received: by mail-qt1-f181.google.com with SMTP id d75a77b69052e-3fde8e4d321so15909881cf.2 for ; Fri, 30 Jun 2023 13:41:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1688157664; x=1690749664; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=jirLEB5kKeMEu5/vNh7En4EpyEEaU3GXRFo4P0Nc6Ys=; b=J1reMB+78OCXaRIUEIuPnNr8fOjy9nXiouApf/ZqOqxd8lmc8/NiWte3PLNiwFCEiY hkTC6vl17Ter6yDo5Ef1O7ZRN/pCYcpf73WDXgHYBbOFa7gKHgiXlbXe5BC9OEdrFF+9 7Pr80nq2DHp+QHfZyINpouVcGMchwvw37FDcSjvlul4VDUnv27rTf/5NobBl5lm7n0q6 1aJyID6wgqsZBwR3CktA7tYrSVzGvgLLShUJKZTsyJArK5tuBCGWh85tiISGCAKJKzpV /GUSizg8ljM6u1R4HpN+U3hXk1nVui0ZeTorVJFso+aFdOGFwrZvzsOAfh/BKSC3poha C0Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688157664; x=1690749664; 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=jirLEB5kKeMEu5/vNh7En4EpyEEaU3GXRFo4P0Nc6Ys=; b=b4L6gMBMHch6QeUIyHvgTbSn0DRyuzn+U1nypweO/8YuquMyPOPTPpcA6zl8owJqah x6WUf60pawIjg9rzSoQ2WGkRgJAc+kNPvV1bn1eDCj8ec3z89Dwl0B6yB6T4K4exlEDj zfxHx7azRco3z9XoTDZRZSitNqB72AgJEffkPErc5PUUB4R9sVZ3n/EQ7GbVIIEV/9ny MoFSAUWF/vvzI4pBAuDop9PPp4T+zQdAS+EY2nPIUzWLYFxBY2UezcCVC9w+4bz+jTcK 3Qzz+n8KUGFTp+9OP8tk1LprecomHalVtMuCcY96juSkij/3BVsSs65yr8Im/IBkRxzx Bv+Q== X-Gm-Message-State: AC+VfDz1jvrGYDWfYhbe1eTBkDmZXW5y/HtwCFOBBDZbxUDnS7odI/s7 qTalSXCIkEGAn9Mz4XqFRk/KxkJHU7ytrYT7aW8= X-Received: by 2002:a05:622a:1744:b0:3f7:b95:f088 with SMTP id l4-20020a05622a174400b003f70b95f088mr4721975qtk.20.1688157664089; Fri, 30 Jun 2023 13:41:04 -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 bq8-20020a05622a1c0800b003e0945575dasm4409885qtb.1.2023.06.30.13.41.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jun 2023 13:41:03 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jun 2023 17:38:50 -0400 Message-Id: <1688161135-11774-3-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> References: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v2 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: SATkj+qP8Vn2 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 Conflicts: libavfilter/vf_drawtext.c --- doc/filters.texi | 5 +++++ libavfilter/vf_drawtext.c | 20 +++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/doc/filters.texi b/doc/filters.texi index f17488c..793868b 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -12698,6 +12698,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 7854362..76ab016 100644 --- a/libavfilter/vf_drawtext.c +++ b/libavfilter/vf_drawtext.c @@ -319,7 +319,6 @@ typedef struct DrawTextContext { int text_shaping; ///< 1 to shape the text before drawing it #endif AVDictionary *metadata; - int boxw; ///< the value of the boxw parameter int boxh; ///< the value of the boxh parameter int text_align; ///< the horizontal and vertical text alignment @@ -331,6 +330,7 @@ typedef struct DrawTextContext { int tab_count; ///< the number of tab characters int blank_advance64; ///< the size of the space character int tab_warning_printed; ///< ensure the tab warning to be printed only once + AVFrame *frame; } DrawTextContext; #define OFFSET(x) offsetof(DrawTextContext, x) @@ -1251,6 +1251,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) { @@ -1429,6 +1445,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, @@ -2153,6 +2170,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 Fri Jun 30 21:38:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 42352 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2791373pzh; Fri, 30 Jun 2023 13:41:43 -0700 (PDT) X-Google-Smtp-Source: APBJJlEKTQGdBKAofmdD4TwF7XVp6Ob2ysAgO+7FLzlYteH6vsjlMWg9OECongJvQ+vQL+ryOcRe X-Received: by 2002:a05:6512:2510:b0:4f8:5c90:f8a4 with SMTP id be16-20020a056512251000b004f85c90f8a4mr3089269lfb.33.1688157703150; Fri, 30 Jun 2023 13:41:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688157703; cv=none; d=google.com; s=arc-20160816; b=fGMRC8LUtpewgjxVwtrmSGlgOVJiWvxgH+gXX5Ok1BK3QQjo4OOvIg5oqo3KQxmeBn nLaCuhT9b62BXkHfz3aoJD+rKYV2OdqYtmS7IY6LjfHu1DJRB1L0gmZ5V/4zaSxj3xsf lnGz3dr3cXYy12revG2erOJ/Yasb/wSfjd6peLzGvCWfEEi3MDUQ+owM6aiKpuT4eqBc 76ZQ+7akH08M28moZxWkrXO2gfuxqwvKbdaHGJiRRLTUjfAGqxmZSk9N3A6uLqE3bAq8 j6fWt00Q3tI22Mxbr6GjDeeqMPMTPmg4jLdF8yx4N8/bsqk9U4zuW4cYCJfaRC7ulIbA kAgg== 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=; fh=pXLAZvRiz3/uELcsWNfKAkJPgyV9/rr3Mrznj9KeXEo=; b=Yoh4f7yY9dbUDiMLYUX1ghQFfKU223pZicDlU2hWWNTF3/Z2YGMiHl0cXwrf1nQiVL jdJHpbJdW3tkESji4no5jsXOOnTM7ntXOg6u2sYghsIaZ/dEV17vyodReVsZNfkyXVT/ ACsLTLmLNYrYnLHkLh0wk0DUKK7pWqQUSd26f30i6deL0SxfRC6FngEaGF6x7D/CrePV X0MDd1FoL7pgizibPt2rwdsEZjhcteRZT+e3Pw+s+REydMN3lAJtWDlcsUEqO2fg0cSd EVWDex2VjdsdT6D5/cUseD6aneMcyqXvaEqfpKrUWgTD97BqzLQwNq4Iq+eDgA+uCI0A hawA== 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=psLtqEEe; 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 lw20-20020a170906bcd400b0098e4aef0789si7800014ejb.613.2023.06.30.13.41.41; Fri, 30 Jun 2023 13:41:43 -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=psLtqEEe; 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 33ED168C49C; Fri, 30 Jun 2023 23:41:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f173.google.com (mail-qk1-f173.google.com [209.85.222.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 938C068C414 for ; Fri, 30 Jun 2023 23:41:06 +0300 (EEST) Received: by mail-qk1-f173.google.com with SMTP id af79cd13be357-765a7768f1dso217722785a.0 for ; Fri, 30 Jun 2023 13:41:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1688157665; x=1690749665; 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=psLtqEEeeXJcsiNZdm/GOtGM7X8w7QQE4P8hCVkXLikiR0+2RuREFHiSGD0GAAzGma IorJ5qcrEBYDFQTHTgoRKMPVKt65AB/F0+9SYx2NE+SMYUBrzA07OpZ4a5zE5zlX1qGw 3jKuwYoRYLrOh9hP7rE8pOA/029znD03XULL+ah0WHNW9lIg86CZ98JrBghRcCNJ5P3S 2fM+OysyXwmpIF/ZRMPdhwbs3LWR3YgUIj0AXZhQF0/OXrApN2vTJa9UbBvMnz9/UkgY DWNKOEVljIobtoekEggTzPKMIoO4yiSQJw6K/KIMSKSCmUc2jqRMDHsOHCY8mouCFsx1 4RxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688157665; x=1690749665; 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=exi+nDXAhNM8+G3PWhfbKCVqBwpXThTmLi6weWLIXhcxxtpA+Qo1HuHOdpoeDm7gun yT7Ke/ynWGnsu17mwi4+9c2z6IwJrQ8yGZ3ei4FI3YXWzOcMnD/OfKQ17V1UqFAK9ugA dzDJP6CuOh0SVwkrmJOLP7fY577sRb0meeGEynueRYJ9bRF7rifwysKXAF4rll3agb1B GMZUfcDd4Q2V+maKQ4dq1/MFIK1VLqyM3h3WAmFsaJKviJ7pd88Vgm9ZLbdgSprpA4Vy QiJrSFHryXx4JuX2LBiCFFMaLmo9ur2ad+u3HrR4VKUHzv6uW4Iemi/SEtjEnY1GjQ0d q4gQ== X-Gm-Message-State: ABy/qLbs2VVfOsx87Qrm9XG/lHo7OJMujvLesIS2hXW6p14r8dus4/5D ADm7krn9UCQFYggH86NDyvtjB1l3/nKYavSb2wk= X-Received: by 2002:a05:620a:3905:b0:75b:23a0:deb7 with SMTP id qr5-20020a05620a390500b0075b23a0deb7mr4049281qkn.53.1688157664832; Fri, 30 Jun 2023 13:41:04 -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 bq8-20020a05622a1c0800b003e0945575dasm4409885qtb.1.2023.06.30.13.41.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jun 2023 13:41:04 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jun 2023 17:38:51 -0400 Message-Id: <1688161135-11774-4-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> References: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v2 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: H05h2Kt79SkJ 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 Fri Jun 30 21:38:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 42353 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2791424pzh; Fri, 30 Jun 2023 13:41:50 -0700 (PDT) X-Google-Smtp-Source: APBJJlHFqAwsKW80Aurrc9H9A3BZmchTIzBO7zGJjD7r/9wMf+DP0xKsRkV4L6DPYbk/jTKhb+Ku X-Received: by 2002:a17:906:fb1a:b0:98d:63c5:d132 with SMTP id lz26-20020a170906fb1a00b0098d63c5d132mr2725758ejb.72.1688157710643; Fri, 30 Jun 2023 13:41:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688157710; cv=none; d=google.com; s=arc-20160816; b=K3y5EzLY9w2AFmAJvu/jSE/+dHnSeUJkcg0WxKy2o26ebuw0/CdX8JYUWT9yqsl/hH M9dZUrATbH3emdmo6CToXPiKejCvvtqOK0OPc0Pb3rhh5J6EboMUJ6lP5d5Z5MSnVYi+ NpVayvkt0MlvsIP/EpncuK4tzuuRkerAmuHqWYgtF6tZ1Vbd6IvHpzm+R8yieC/BqVKF VtLwDpyvkI5PRiHQiYT1dhYbfV3k9yE06u8cmr0G7r+lhq26TVr6Z5e1227K/hZuOutA 7dyzmST5eC/V06/ukAuxird0Vt52mmlOj9kTmTQd/sPrcvrXyBz/SABAuiGKnyP6D6Eg ajWA== 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=oJX3FIFJT6ZEFhyIugCcGeVk/GwutZTP6wEwU500aJ8=; fh=pXLAZvRiz3/uELcsWNfKAkJPgyV9/rr3Mrznj9KeXEo=; b=c+MTGpXv9iYb9xtBC7FycIQ5Z2wUg7ygDdtDnhII0P1gCYIGPzbm0doI5xIvwU2wj4 50Vb7+iFSuaXuGi4nLSyl7xbx7tknZPSOnskMyNyMBkWxzqu+3x18HHbVbm76ff8QE97 3B+WVJIw6/cVz++7e7C9+Na2ghmxtumZ227OJE+GUTWRrsu3rVK/JrgfNQbLDQyt5Q8u J1IAUjF4D0ec/31iRzABjG/LZDhTCaehqkgHIPT7R+yAqdD0X1PTOJzVknIugE/c7cXk wSWg0ptUOrKEl0WxsAIH07xkQYWebMhOH1TkmWSBxCUOhgwHeTENTKrIbXlAYrXtfivj ZwJg== 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=YzQ3vCEL; 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 os5-20020a170906af6500b00992efdbb3b6si955739ejb.160.2023.06.30.13.41.50; Fri, 30 Jun 2023 13:41:50 -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=YzQ3vCEL; 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 28C8968C48A; Fri, 30 Jun 2023 23:41:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7B6768C414 for ; Fri, 30 Jun 2023 23:41:06 +0300 (EEST) Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-40339da998eso13385201cf.0 for ; Fri, 30 Jun 2023 13:41:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1688157665; x=1690749665; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=uiQF1aLl5HySEjehe2AO68RwYIXC61DmjKh7BiNYGks=; b=YzQ3vCELLxx2MXQthmNINEw9bn8rz1uk50mhd9QhjaR8YGU7HcWrWb0Xu6d1t6EjAN fRbbaamyO/KnXM5i1KUXSAZUdOX7Q9iEZ4TDhsh918hxEDTzbcQVVcncxIUumOluLN38 +EwiQBM4SnSHidldpDxBtm1htfFkQUurazyd1Np6YJZlQBAQtbbvM7DFjVn8lBOAhQx0 DIwibRu42TEa5vRHi4Pzjei74wix4h4f8jJE/w78P4VeiGE6zGMU4icL3I5Q3R6mhggo FIMfiNplwGdIAihVb2V24j5xfSuLKDoAveKVdbp6t14+ZzaR7xdSNHIo2CxeO9ngz4I4 dsdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688157665; x=1690749665; 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=uiQF1aLl5HySEjehe2AO68RwYIXC61DmjKh7BiNYGks=; b=JAInizdw2SvejjUfZm4+uOkivfKh8emVUXKNkqYhbvOG+rrgqipUwuKkjW6IuFJXVG rnBKIM5NbTjstXLBdyRLbKrg9kKNH40xfrWP3ME+Dpmaf/4SVDvUt8/9414tOEOHUISR 4uUsKu///ZKtI7EtLRPYrU0hiLPeG4Gcm/n+fbbeu3kKUrzeOFdZ/85z8cQwucwgBVf2 grqfxRyZaThcU54Mb8MsRfHGiTLxEwnsz7nPj4kI7xive720+8ny26+JZjmrO4fa8rnQ FkVfl2rac8TgO8HGZUCzuvIYYz7R1QrQSjdoQ4F1PSPKVGCBRMsezx8yd9bSIOd8EN5k XeaA== X-Gm-Message-State: AC+VfDzAksFA2zvrnL5kkfPL+Kif4EvQHvVCKtFtHy6lqbixPW19uG2f bPuYkYdA1jbHv4opbDXS8q/o3uY3bLRx2wCMuf8= X-Received: by 2002:a05:622a:94:b0:3f6:b923:b58d with SMTP id o20-20020a05622a009400b003f6b923b58dmr4523177qtw.27.1688157665375; Fri, 30 Jun 2023 13:41:05 -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 bq8-20020a05622a1c0800b003e0945575dasm4409885qtb.1.2023.06.30.13.41.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jun 2023 13:41:05 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jun 2023 17:38:52 -0400 Message-Id: <1688161135-11774-5-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> References: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v2 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: Ok0l9hu11Y5U 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 793868b..ae74b4c 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -21338,6 +21338,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 9b78135..6153fac 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -469,6 +469,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 9a7fadc..7d2114c 100644 --- a/libavfilter/allfilters.c +++ b/libavfilter/allfilters.c @@ -438,6 +438,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 Fri Jun 30 21:38:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 42354 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2791511pzh; Fri, 30 Jun 2023 13:42:00 -0700 (PDT) X-Google-Smtp-Source: APBJJlGbnsasWmbrNcFBzAW+Z14lg3a2AjsAAVsCJ0qJNGsWijOv7Ff06/1+Ew0/y5F/xVEuUC68 X-Received: by 2002:a17:906:fa89:b0:988:7d1:f5a5 with SMTP id lt9-20020a170906fa8900b0098807d1f5a5mr2766411ejb.28.1688157719838; Fri, 30 Jun 2023 13:41:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688157719; cv=none; d=google.com; s=arc-20160816; b=M7BXGbMnLbI8/0HDKiNqt6fzQXElD4dCQXUuukCyHYufjRVMDe2AdTMsELLH0914cg eW2tFwdBwdNyyVgfHSHZxJ3lopm3csOuS1HtkwAlXGuBlRPo0FdIrewvzCJ/kYc1yruK HpgHWwLhYYLuMTdavXYuCEow6uLZrEsdyFNk8DnCokBKqSPlhTpHU8ScuLT7HXA+GvJw UJf2QqbEing4Tct0Uby919prvo3R/4YpulWEiqu0nrSRzO6Oequh0dMwU2FxDq5qaYn3 PxbbmEzoO2t7IGcCQBtdfrHrOvNknwm75PNGVlZSpRtBrVJcJBDG7MLhffiW7oeRnpsv HDKA== 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=; fh=pXLAZvRiz3/uELcsWNfKAkJPgyV9/rr3Mrznj9KeXEo=; b=CJeb/umWQElG+xWQrv2K/f4JF3hdl/z7R5BxF6kD0NMUUO2VzYrXW8DqU/g6D9MyBk 7UHyEQpDauWxeFUF5RJj8zUMUWw4LIBi2vHDOvxJvGImdBWk2sT6FZD9WyjvSAVTanO7 FxCVHnKnJraclnSrM9K8la8kNpWDOOJXByJKBRUwmkbwnArWss98aR1N3eq5Wp+Lczof uImAWu+E1bCMb+lk3+tvIZOnWHdCZATCDij6+a4gZH4LQ179x16iwLGV4CQtq0jRx+VG ymr61Yasb6i0Axh95jIjMnacj7jhmP/LneijDWPI1wkRVnCJLZoWyyLzrcdcKYURRcpu kQzA== 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=vAxX5uL9; 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 ci8-20020a170906c34800b009889713506asi8833068ejb.304.2023.06.30.13.41.59; Fri, 30 Jun 2023 13:41:59 -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=vAxX5uL9; 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 13BBB68C4AE; Fri, 30 Jun 2023 23:41:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f172.google.com (mail-qt1-f172.google.com [209.85.160.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4225268C43A for ; Fri, 30 Jun 2023 23:41:07 +0300 (EEST) Received: by mail-qt1-f172.google.com with SMTP id d75a77b69052e-4034adef329so1649031cf.1 for ; Fri, 30 Jun 2023 13:41:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1688157666; x=1690749666; 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=vAxX5uL9YN7TPTusvf8CCQzy3EJSKSVt8sSnaR0Sphw3SZkbI1FnjFjxRmKfdkVQAC U/O8IX5uZjQ80xpnqkBcpDn53lJ7fTZJV/VYbHJIjdwNwFQLrChnAVdLVyo7zh4U4uu8 GR/m9XMCXwQwbsRkBbfIS7Xt/hrGuw0jro6DHQ/r1oIa1Oh6wginXF4Obk+aoT+/eQnJ KQTyusji7crRQTR8tKxxIudXz6pj+8Ux/PWUTbXCM8rirPYxc2gc7nnyptXNWme7KdQN tBM169EBTN5tMPQuJqvpTVVp0tCThAOB3VPm02PU5k6vPS8W8I/0l9KsxtZDAFTptDNy zz8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688157666; x=1690749666; 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=Bq0E/hIg2FChRVCsmJBRE3AS9tqVL0RHOPdVd5U9pU/B585kYmXpDwk9yqJRazaa1Q xuaXcCbm5KKsic4P/W58IqJ4pST7XEHDhacEnyPYBEVz6W+B6YDIyP4s9loK4Gik6gdT NBEDR+sKOaAI0Ed3lpih1NqGmrc/LHTDoofFRE6ejdAhm9lNg+z8ile0CjPGsliwWveY nDk1sCxqCiGcvavpv/2jJYevs0PcaIWe9LxleFDRz9JGDRnsEknynswR+lj/Lnt2widm bYcbOQo92nhpvF9McufdFg3yHdvY1yHxDOpW0UdAl+scYdugKYK+cx7zMC3Epl017hz9 QjdQ== X-Gm-Message-State: AC+VfDzOJDXVKwmTwZeQafAtrXG4jPbIsDdTipN/53W1wFK+SULsvf7p XOx49y7Rkfm6916Ka1AA0uamTX/20D0jbGYQkyA= X-Received: by 2002:ac8:5d8a:0:b0:400:98e1:803e with SMTP id d10-20020ac85d8a000000b0040098e1803emr4387399qtx.44.1688157665952; Fri, 30 Jun 2023 13:41:05 -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 bq8-20020a05622a1c0800b003e0945575dasm4409885qtb.1.2023.06.30.13.41.05 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jun 2023 13:41:05 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jun 2023 17:38:53 -0400 Message-Id: <1688161135-11774-6-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> References: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v2 5/7] libavutil: 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: 79KpU/uyqKoR 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 Fri Jun 30 21:38:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 42355 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2791565pzh; Fri, 30 Jun 2023 13:42:08 -0700 (PDT) X-Google-Smtp-Source: APBJJlHCCZexZBGH7Mm5faSwqX5u1aEIrt1GVM7gbCr1sAs1fJW6t3ICklUKuABj9KqvJuTCPump X-Received: by 2002:a2e:84d5:0:b0:2b4:7f2e:a433 with SMTP id q21-20020a2e84d5000000b002b47f2ea433mr3266929ljh.36.1688157728337; Fri, 30 Jun 2023 13:42:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688157728; cv=none; d=google.com; s=arc-20160816; b=CDWKaU9f0i4HxvAxgPfusB7v6Eko4Xqd4IvaUASrvi0LEHfaB6i6q+TFcC8+yXEZ15 cbHow0rY0Zd3teBparJ+zBVI3oNBWZ4vY8oIU04yxJ/ySKQxDwJG6LOoHtz/AR6nr/gT rOZnNcttsNkzNrZkZzJdB91+qWRNSIwZ2BwqJU6z0+YtuQ5CiFY8SU+D7EKEYLHX1vb/ j+mOkYMWxvZFemr1Fn+OY3ql2E44jPRN45mJnNw84SZPE3qFwwmq+qQFapMMbKyerk2d Ez18e8dJtJSbQSR/1kK+V6uKaKTSe/aVn4X7ncY2EjFD2OSSpXKNgZvzmo1I/CjOUkMe b2OA== 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=; fh=pXLAZvRiz3/uELcsWNfKAkJPgyV9/rr3Mrznj9KeXEo=; b=GE286hpdug8RqGyDewnviKmkj7sfeI9wijSt3FvGMMauys1Ywx7iXmtAQQdLgdKKKD jbyjUjUqVmfIYPfNaFyMwxP1WoNEEXZ26KpyI4gORHbJgWF+N0xBW3T8k3OHRQk/tFM8 m8OI6LDxQr05dcoKpdbZ+be51jf/tJbTAqO7pWdszqUCCX51zvjiYw3YgPlKShz0Zb15 SMfVfz50r4KAUOjXxwz0e3pgT+flfbNT6z4zYsXaK+Qm0hkvOTC+UwHySe51Z2tvWNCx 9f619nsUPmWbcKjQwr0RWU6gE8lK27C1noRWVlO+IXQxRQFkjDYKf40OyAuF0cLQ4FDY J8zw== 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=iFWpYsvI; 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 g7-20020a170906348700b00992af7932d9si2412439ejb.690.2023.06.30.13.42.07; Fri, 30 Jun 2023 13:42:08 -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=iFWpYsvI; 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 252F168C4BB; Fri, 30 Jun 2023 23:41:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B673068C41F for ; Fri, 30 Jun 2023 23:41:07 +0300 (EEST) Received: by mail-qk1-f177.google.com with SMTP id af79cd13be357-7659db6fb4bso99122285a.1 for ; Fri, 30 Jun 2023 13:41:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1688157666; x=1690749666; 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=iFWpYsvIcc/2xUcTYVAhJX79ej3dxRd0GJXIyVgz93t7Q7CSw0+2ef6LtHSi5td1VT 1Ui8kjCOcXTK8sttfWjIFAyJsrnuHB6phBFQW4bOSRKfg8SGFVZHCfK27LhgEOlQX+Ql DdxpLfesG7X8kDDBfcp3oPmjG/FditS5GPhhKiB4FA7hUd/pfm7yEQc9mgbB3Su2YS/e zRLpIPRAtuuBhSwsihFgSdcHYam+EUdbGCY/XLBGaymSaa0qkCqxTom3khQsOr6q90Fa n1gLqd9XCTUDjU4RTvX2WCqnOzocPZqjPn7XkLLm+HEuSp1P0NOXIwZYGdbsqoIaNBcH L/hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688157666; x=1690749666; 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=ijRulWpzkWLvagsQ69jlFKRMt5RmzBgpmrsovzQcsMzJQAn9TC8coY5D5RLib5ceWB cBs5ArSlegqSkwJO/855xxU81cXo/x1JBo+WVozBeJHCzYPPzEYAcQy6APo2NcwVHPbB q++G2DxgRJ3/Uc7J9owrFJOhVeu2hGjRp4s31HADQ4cUJVfzU7WuevDZAzR5M3YNqhFd 8gzCcnq0jBXC6vlxgaqvb3sFice1ao01n0LfmnpWm6vIEPBx83ZsmHdbFFMBuidbfap6 V+7whwsvY+sdXSlPca+t1gEflb31+JtFut08av3ysfIvtmRMJVNAnpJOy8n780xGsSmS GGIg== X-Gm-Message-State: AC+VfDwlvbXImAHOti4jJIZ58bEWEwgTlgWO98H5ZNTd1C87XSP2PGp1 L/8KekVpvWCwI0fZFKaYa6f2XdkVWRgsO3j2iU8= X-Received: by 2002:a05:620a:2984:b0:765:42cd:c192 with SMTP id r4-20020a05620a298400b0076542cdc192mr10261819qkp.37.1688157666362; Fri, 30 Jun 2023 13:41:06 -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 bq8-20020a05622a1c0800b003e0945575dasm4409885qtb.1.2023.06.30.13.41.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jun 2023 13:41:06 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jun 2023 17:38:54 -0400 Message-Id: <1688161135-11774-7-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> References: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v2 6/7] 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: TQv+Yv2CU9s5 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 Fri Jun 30 21:38:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devin Heitmueller X-Patchwork-Id: 42356 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1e:b0:12b:9ae3:586d with SMTP id c30csp2791639pzh; Fri, 30 Jun 2023 13:42:17 -0700 (PDT) X-Google-Smtp-Source: APBJJlF7MbeFKf4z5XtPr0fogzuEJKztYwFFjpeK9bpg5cQNiQJWzM0IF6aNMA5Vn+XX+FIJCytA X-Received: by 2002:a17:906:b7d7:b0:992:91ce:4508 with SMTP id fy23-20020a170906b7d700b0099291ce4508mr2632628ejb.53.1688157736973; Fri, 30 Jun 2023 13:42:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688157736; cv=none; d=google.com; s=arc-20160816; b=C5uwd9Z5Ge+et6GWKJg0MZ3VZpEbX0iMzXfVi4UWrRr3my0Sg8K/hqKsC4O1R20M7l JnJFd7ekE60FokTxb2+PoUcCMCcHyuo9nNwk3wv/w4XCYlzoQg6XYdWR1BjprAvW/tXD f6go+aNow0q0BqE2tD3BFApOc8zW9V5Xcq1FIm/u9XEZ3ZnWtKtMATqiqOUcn48u6eje AepZlcnQemxW5QVMPK+/aCmpzOkoQVJu9HHIGVY59VaDv9c3xN8AIy+5JiP3CqMoEfNK f4lWPmGbfu9t72jfHFvDbSUS3TOPqeZM3SXx86LhIafTvAc4enERuk2Ry1K1dxSblsHn T2PQ== 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=IVvUK+s/YwkbVVINiKh63BMkGHg9O1p2R4z3qxJ66q8=; fh=pXLAZvRiz3/uELcsWNfKAkJPgyV9/rr3Mrznj9KeXEo=; b=cEDGlb5y6OEMBU7NtzpCYgJuhXWMga/6scDv273UF3aFyWXN3/AE+dIGcDVhnoqifm S+vxgQMO8OvfXuyM8nRDYvd8JSHT5wz63xoRgK/aIxUw7HyEytGe3RvIDvKWf2SsaYjP D6lbaMHs4omSNh4d5U4QZn5Plx6eAtF5a4PVLEudpEgYPKxegMMFjj9nLDcs7/5UFAtW rLesv7F7trq+GKloEyVpEiBtgNK3065dJ6s1i94EGKgI9NewOcSkfQf3aQOAHqGJe1bT BIu9LhKZld9mGyDsySOd8rKmQ8js51Rtk2XsFwMPG2Vf0NHANTJLAdqf3i+lOjJ06Hsf wJGA== 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=DZiGUmok; 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 y9-20020a170906914900b009893fe84e6asi8994757ejw.677.2023.06.30.13.42.16; Fri, 30 Jun 2023 13:42: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=DZiGUmok; 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 3301F68C4C3; Fri, 30 Jun 2023 23:41:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F8FE68C43A for ; Fri, 30 Jun 2023 23:41:08 +0300 (EEST) Received: by mail-qt1-f178.google.com with SMTP id d75a77b69052e-402318ef92fso14735291cf.3 for ; Fri, 30 Jun 2023 13:41:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ltnglobal-com.20221208.gappssmtp.com; s=20221208; t=1688157667; x=1690749667; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=6YI+qFPWP7kKCykOQwozf4QpyAdmDqg7v2l5h0cRu5c=; b=DZiGUmokIhPOTuQ3yJ7QecdiO5mb5ohRNgkk5NtS2y8rG7bGx1Gdkk19nTqmUEQoVn xFAv/fzMn1HdPfcM5wMDmwugnqovhRhDd6lwDTK56JgtypOwULszgTdys36ppmGBft3v oxg1sKiX8TX1dIq8e37kOvP2/OPlTrQNzSsK0Q34bjmROhw4bp6x90KbQs9czc2pXvW8 l3UyVBbMlIVHJe1L/9f49WCQaHlMgoLwdE3cMAQpkJBCLtGKMADOzctj73ifAfwyctjP eJPeZ1EvFbN8/LkKLklXYy7d9NbnqEUIeEsQJNYjDqBdPqPkLz3cSxHpN3xRnN+KYVQA r7nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688157667; x=1690749667; 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=6YI+qFPWP7kKCykOQwozf4QpyAdmDqg7v2l5h0cRu5c=; b=YcxCl23qW7SydWPpTSIygVPHwUrAHjlyP8toEsXjQnPhFBlrJgnWTSm55/T/UKrYv2 JqssosUksBhmrCJe2qefWytXgQ8df2BBZFvF7xFz/y5OfANr/s1zBcplGQV31WPMFd6m bwQm6Lftp2nBByj4mkI2iM1gE0fAdFQtJCDmEoX9CelsQ61GIQTdCSz2V9pg0zp3DSkX TJctBcmI9oQLe+nWgF8mbxF26Ea4qk8ybs95NF0aWD5k1mMogMHiEfiIL2EqeezZzzKb r05F1lHh7Bed4yTGNib9poFyRKEAPEVVrDj2IyQFwP8IYiRwX54SDVt0i9acWCeXmPmM LTZw== X-Gm-Message-State: AC+VfDzg8VbngazSNJwhKI9UJlNrEOhbahGdUe5XFInzRk2sukc+/M5X JTP5pRsFaNC+ZnPMMfHMcylY+9dtQP92YyoDYas= X-Received: by 2002:a05:622a:9:b0:401:fa32:3594 with SMTP id x9-20020a05622a000900b00401fa323594mr3832569qtw.27.1688157666851; Fri, 30 Jun 2023 13:41:06 -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 bq8-20020a05622a1c0800b003e0945575dasm4409885qtb.1.2023.06.30.13.41.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jun 2023 13:41:06 -0700 (PDT) From: Devin Heitmueller X-Google-Original-From: Devin Heitmueller To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Jun 2023 17:38:55 -0400 Message-Id: <1688161135-11774-8-git-send-email-dheitmueller@ltnglobal.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> References: <1688161135-11774-1-git-send-email-dheitmueller@ltnglobal.com> Subject: [FFmpeg-devel] [PATCH v2 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: JRTpKBsUvhcF 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 11e67c4..9ad902f 100644 --- a/libavdevice/decklink_enc.cpp +++ b/libavdevice/decklink_enc.cpp @@ -467,23 +467,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