From patchwork Tue Apr 11 21:20:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41092 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125607ejb; Tue, 11 Apr 2023 14:21:31 -0700 (PDT) X-Google-Smtp-Source: AKy350aJzk7K6Jv7/77omI8bre9dyJ3by3JW+NReDA7lollwH02THm5NuJg/UxlcfV9eFUnb7f90 X-Received: by 2002:a17:907:98c9:b0:94a:7450:9e2e with SMTP id kd9-20020a17090798c900b0094a74509e2emr4322386ejc.32.1681248091630; Tue, 11 Apr 2023 14:21:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248091; cv=none; d=google.com; s=arc-20160816; b=gZfp/iv5xsaXoYFafzvnU0OKYw+SQwLNKLf8C2daWIIrqdrVNSKqT7OvrZ2SG+gfne Xb89W1W5PyoEN+cCN7RvOI5tGNtvE0/geCOHTbPQ7vhB6scp2GsLiew1nH0sj9xEEXwt WvG91S2EotR8i+UGBdFRMHOaQwjEM16Hexgau6/XbjT0IZaaDA6bH9lhq1Rclu1w7KPY BTmyGP0YYjh12qUnfd1ypj2MGF5AiN/MJXrKAahAShZ9eURH7AYMCm1ZLwMHOcjwxQqC 8F8MttLs6+EBWkYArpTAUZqkSLqMherl6+iySMXUibcFvKrZHH9GtC1QLt0ly2KOzsJw 6b/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Q4oVD5pRtHRUZYnU0ZGhB8k/mlMyhj9JUE97OgP7Cm8=; b=VLOb/xevsOwuwHuR5ic6Vy06oC7UQvuUuO/m0NmK3EG84E2Y8Y8lxieaMt0A1F3Alu D0N95Ksx9qgRtHFh/xhijz4DuM1xisK7ZmIwjyKqj5iO+082Dvqh049k3I0lUm/kNwH4 NBI5a7mkmRDIUoUSvN2A6vyMUF0zyCKVbTmDIn7o0h6dyyf/1SD6Q6gxO4ONPZelQ/wv llwfVHQMFjMWZHMiDBPbo/NN5PaGxcarrZ90yf15ZJhw2TV149hS9Z5jvA93apy5cSgU 8ljf0qPo+DfmmhBbm8y6Rxr5VvnSDfU20FSH0uzmBmH7UoNWvJVEwwKhA1oWj0n5+oBw gXMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=XeARnSqm; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y10-20020a1709060a8a00b0094a58916e38si7296354ejf.373.2023.04.11.14.21.24; Tue, 11 Apr 2023 14:21:31 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=XeARnSqm; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 484C068BBC9; Wed, 12 Apr 2023 00:21:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f181.google.com (mail-lj1-f181.google.com [209.85.208.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BA62A680A4D for ; Wed, 12 Apr 2023 00:21:02 +0300 (EEST) Received: by mail-lj1-f181.google.com with SMTP id bx15so7984066ljb.7 for ; Tue, 11 Apr 2023 14:21:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=eLa9VKEymhPOGyAJTahEmXsKYlpq9HaH+9Rj8tDGXhM=; b=XeARnSqmYN0C7TD9IE+xqucK24NQzIw29My0C/JMkKVPC2xn+2PFCRYxsjYO3ZwDlY lQM6Gmad0E8iQ0CbGycW6MMEA+g97Dji7kD5DGUArsAwwPvMN0RqE12HMprk/WW0peRz 4sz4k1j1KWmS2/2JIyAB/6tGTtU0qsxcaeqx+v6G7SsK/oZyVQjPU/Clu/R0fMQ/XU4a pzRjjEIN3BDHzM7ehDXEG32UZyBYvMxNSla9wicLTecvdSSQMnPmWpAy+o4Qe9r3th8a M5eOTNPYvxNdf73sn+7uRV5Eyz+lZn8IUexEWcPowD19GIlnvWUA8Skm87cmtNLgrViR +z2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eLa9VKEymhPOGyAJTahEmXsKYlpq9HaH+9Rj8tDGXhM=; b=qdPc36hgqbkxROtx0p7qAV7itFlH7i2mYfzqn1JH/g5eos1Nw+/pp/f7eMNm+oq5iG GmgrurQFddgwRJ2jyog4seHaFCByxVQWH+r0l4iAXJO14Rtdf1NQkQbJpmlMyhNF0vkZ sXDJcKlHpE/UtBvmORTxDMlf76TUD+KmuNePzT2ze10KW6Jc3Ue1aQsa7p0i4UApsC6q 51t2yQoI0in3nxeeKkpcm/OyZAlxLDvJDYA06RsG8yns6nQYN7KAfp9ZWh9b3KbYD+On nk0AF17XWDJLAUc/GUeg1rV53QOoFp2QsXuIJSCExHiZ+WeJ5UNtlTHJWV1OB2VHebf4 SVRA== X-Gm-Message-State: AAQBX9e8IFILyAy+cX1MOtX8BwPU/rEqFuzcfd/J4VnKCLrlsEayvv2W hsawM4xQTAp5aQE0NMm9lLMnYaktquM= X-Received: by 2002:a2e:9593:0:b0:2a6:16b5:c658 with SMTP id w19-20020a2e9593000000b002a616b5c658mr1057591ljh.31.1681248061735; Tue, 11 Apr 2023 14:21:01 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:01 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:41 +0300 Message-Id: <20230411212052.159889-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 01/12] avutil/frame: add AVFrameSideDataSet for passing sets of side 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /lkuT+OhJYib --- libavutil/frame.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavutil/frame.h b/libavutil/frame.h index 5b58c14ac3..45024c2a03 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -241,6 +241,14 @@ typedef struct AVFrameSideData { AVBufferRef *buf; } AVFrameSideData; +/** + * Structure to hold a set of AVFrameSideData + */ +typedef struct AVFrameSideDataSet { + AVFrameSideData **side_data; + int nb_side_data; +} AVFrameSideDataSet; + /** * Structure describing a single Region Of Interest. * From patchwork Tue Apr 11 21:20:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41093 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125673ejb; Tue, 11 Apr 2023 14:21:42 -0700 (PDT) X-Google-Smtp-Source: AKy350Za/MVVjDI3mPlMWkepkxqo0ZBmnYNE7ws9qojFnMWUIg/oTzT14UzG8JpWd7ZIrN51B+iP X-Received: by 2002:a17:907:6295:b0:94a:35d1:59a with SMTP id nd21-20020a170907629500b0094a35d1059amr12443764ejc.14.1681248101910; Tue, 11 Apr 2023 14:21:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248101; cv=none; d=google.com; s=arc-20160816; b=H4GBzrUtXXf23MhhXlzjpk/INAjbhzrdxG3PpZ/tLNbJt2ZdnYaKj1f4GCD1HC0ELn jOE+6F2w7L4IyMafyG9VpFDTVUFyzhwjTzY9m+Oi737HHi+VE1lt6r5I+//bBVd5c8aA 74hqX9mOpSlv/7Eaoj3GLgfP5yCAQlxWfiEikHho3dUtEGbepDxUaJHRgkwTTPvhN2IC /09sggBMusai5fgjb3exK/f76PFflxvYTlbq5Es8N4UGHtvVJE6FJxaNv+Ak60MIscef ca04XfXIpSOSq4C+xHAGgOGYUFbUk3myrKtdvsrjt0//+sm9410pc3XFHZjls3C120yv 0/xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=DQtcMTgjSR5Ilcr8nGv4ZnRErDHy+9hw9E4y+TRZbRQ=; b=TsUuxVYqShWAlPjQJ5QbEmxAFLY43PpPJMA/FLKC/S2hMo9gQ3/Qz8pZJpflU+o9QE kM17PdSkoeEIdHFHOimuGLwDxG914cXLCXGhR9lJ419hdW10xFyomFatO/6dfD7JwpnP BWLfbC3IuH1qOtjVUYdAnVUFCvC3F+u1W2KoSdbqfF28HCc0D/JcNuWjeX2p+JLCCzFI ucdWt8sJ0mixwAEgYT9t+hRN351zaH00FKD3iQ6aRuH0qRpIGmMIQrlJwdhYoH4ESTvd 6ZxBgmpWyKSTqkeDobgtz3UloXLHrI/K9BfvqRv3vyAhZLERDD6XZBm6NU2qR1QDPAYG uvcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=cOCdn27L; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ty7-20020a170907c70700b0094b5cea156dsi4043334ejc.328.2023.04.11.14.21.33; Tue, 11 Apr 2023 14:21:41 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=cOCdn27L; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4B64068BBA7; Wed, 12 Apr 2023 00:21:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 02B12680A4D for ; Wed, 12 Apr 2023 00:21:03 +0300 (EEST) Received: by mail-lj1-f176.google.com with SMTP id bx15so7984080ljb.7 for ; Tue, 11 Apr 2023 14:21:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+Q5uvyKgsyQ/M8zWHaPBoU8kXjUUWtJVChgiQX6ZkJc=; b=cOCdn27LH/NhS9Efv9wYAEckXNUIgpjgHFOAHCiHU/dUWmFMiN4hW2HurLcQAwXHzl fNryaSno0Ep3Rg7E5dhreDV7I9hP0Yxu1+gLLmCv3oBFOTpcdks30E4CmglkoO2plgIr XKnVmeFpchsZVMdIQU6Z2Shj2fCD5670iVIXqiDa0kyss0quiHLZkvtz1m5TeUxBG3h+ WY5OAfAIV+qnuhgWncDH7zoxCSuAapcyPj2SQ2qXuTZRV24CVH+Hkk4viLMYVKX9E+JZ rVPmQMjDAEIwvX8yeeT3fyt+WeHtyT0XijNMdhLffmVNIv5OgUPOoE6dqA1YJSobY9fU kk6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+Q5uvyKgsyQ/M8zWHaPBoU8kXjUUWtJVChgiQX6ZkJc=; b=3t8X2C+P/1ebd8ZLAeIRc4yymytLduIurXeQ544FO7NgZAGznGs4UbalZHmmczys8t 8G+AN2JwfqJSV1nKwK8DEno3a5KUt/XxTcE2VlKmBECDwWZp+ruUQpGguSai7KQAB82h VzzqD5odG3EiUElOCInP5jZ1RzWqK06MifBavsIDERytcCEND9PLn16YbP6lONhTL9Uh OelZAULHJVv3AuNX1cs1fvIR7qw1NcP9dsdNibjrOYDp0gLz+6NGtNut8TG07apmCxbZ 2CA2hiN/oYXLFyNiACNMbfse5X1NeDtO6k95R96K3Gi30aL944rFknf0JDwt9Ji3XsUz WOmA== X-Gm-Message-State: AAQBX9csBiy09RztcBFd4ncESnbd0Yzkr9Q8yOlIznKG2NH557nqmirp mnkUrjxDdzYTl7f2ChHERE1YtU9bWqA= X-Received: by 2002:a2e:8811:0:b0:2a7:77ae:2787 with SMTP id x17-20020a2e8811000000b002a777ae2787mr1974120ljh.20.1681248062176; Tue, 11 Apr 2023 14:21:02 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:01 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:42 +0300 Message-Id: <20230411212052.159889-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 02/12] avutil/frame: split side data list wiping out to non-AVFrame function X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ZVUIs4g0rl93 --- libavutil/frame.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index c905e8d611..019613e4d2 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -76,14 +76,18 @@ static void free_side_data(AVFrameSideData **ptr_sd) av_freep(ptr_sd); } -static void wipe_side_data(AVFrame *frame) +static void wipe_side_data(AVFrameSideData ***sd, int *nb_side_data) { - for (int i = 0; i < frame->nb_side_data; i++) { - free_side_data(&frame->side_data[i]); + for (int i = 0; i < *nb_side_data; i++) { + free_side_data(&((*sd)[i])); } - frame->nb_side_data = 0; + *nb_side_data = 0; + + av_freep(sd); +} - av_freep(&frame->side_data); +static void wipe_side_data_from_frame(AVFrame *frame) { + wipe_side_data(&frame->side_data, &frame->nb_side_data); } AVFrame *av_frame_alloc(void) @@ -326,7 +330,7 @@ FF_ENABLE_DEPRECATION_WARNINGS sd_dst = av_frame_new_side_data(dst, sd_src->type, sd_src->size); if (!sd_dst) { - wipe_side_data(dst); + wipe_side_data_from_frame(dst); return AVERROR(ENOMEM); } memcpy(sd_dst->data, sd_src->data, sd_src->size); @@ -335,7 +339,7 @@ FF_ENABLE_DEPRECATION_WARNINGS sd_dst = av_frame_new_side_data_from_buf(dst, sd_src->type, ref); if (!sd_dst) { av_buffer_unref(&ref); - wipe_side_data(dst); + wipe_side_data_from_frame(dst); return AVERROR(ENOMEM); } } @@ -486,7 +490,7 @@ void av_frame_unref(AVFrame *frame) if (!frame) return; - wipe_side_data(frame); + wipe_side_data_from_frame(frame); for (int i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++) av_buffer_unref(&frame->buf[i]); From patchwork Tue Apr 11 21:20:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41094 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125691ejb; Tue, 11 Apr 2023 14:21:43 -0700 (PDT) X-Google-Smtp-Source: AKy350YYBvHVcfPgkIuenZr/NLFpSHlfkgTcqLkKQA7ZXfvKa3MyaS/FWjZp1Ei5p4wn+BrOZxmc X-Received: by 2002:a17:907:a046:b0:94a:4875:262d with SMTP id gz6-20020a170907a04600b0094a4875262dmr11666954ejc.67.1681248103794; Tue, 11 Apr 2023 14:21:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248103; cv=none; d=google.com; s=arc-20160816; b=pi5dwPnTU8CfFMJf6NK7TB0FiF4n5ui4dWw3+mEchMX+lvgdyhF+9KsDPV04Cv7UaW Y4RWZHT7dWij9NK72pZmnG/2OQ2tc3YXwo6nU0xjRrRZ/W5jkJNLYYGNpKhQ4+n9si/m zFfczb/Yvryv4mrABhI/K6t2HJaqbPLxN/ugQn1RjcryLpFYZaqV5gdPzjUPMS6Rzm4K hISWIEgVtrDQTTmfI5AkCnl5EvOLC0r6Khbf3uWeDxN4J87B6jGlRpcI+5DKuCIKgSQN CEeSE02DCHmg0VRWf8wstNtaqcrEfnCSMIXX+kiXMVsKLbplhlkVtPvNHAvsDqX8NS26 tY+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=mwD9jnmkWNSaEuO6yk3qcQ7LgFkGhq5wxHK7fY6h3c4=; b=xD4SKZINOoJHn4IrWmsNGD5YqDKDWtmaJWPJJ/aCNEQQj2izq51kFnDfppnTB8DzSI 3r0dOPaw26QjjACiyWX2khF2zigWzJPZZfbkjssnHcWRDKdSVxA0DrBBqkxKHZoOG0FD J+tGQx1ehxrz9P1NAyaMX+y48nTbF+sz0djXScprgWh2dqY8tw+arMRVe0ndtiaGhG9m n3wMevU/nX5XFwFaAWwsJMuscqUvOHz1owfjVVqFELf3Zq4K3DkPM57UsPG8jsas7f3i LyFyUt61mkxj0jz/0eKlX0rHtUyGpIf5XXogTPUh1ZxkOCGaeJblPzx0tz/0RyBRxSgo bZSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=KVMP285d; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hu16-20020a170907a09000b00932987332c3si437504ejc.431.2023.04.11.14.21.43; Tue, 11 Apr 2023 14:21: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=@gmail.com header.s=20221208 header.b=KVMP285d; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 499EA68BC7E; Wed, 12 Apr 2023 00:21:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 48FB2680A4D for ; Wed, 12 Apr 2023 00:21:03 +0300 (EEST) Received: by mail-lf1-f54.google.com with SMTP id r27so12177712lfe.0 for ; Tue, 11 Apr 2023 14:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=2IADgDrWNpO85SchsSOcKly8FIYp6qUei1EDp0WbAZo=; b=KVMP285d35WIkh+r0ZRFypLOMzNdwZ7D2j/LJRCeyjep6D6QTRZ4EYec/3tuJoGtr+ 4l/NWBk4xTPXGR2LZDpSPPsZYTYB7h9AHVKELHfbCrZPygij7O2ntQW4m+1dGFq75ou8 XikQN72n/tTC+b6EAcNiTFxz7TQQqaVGPVABae29QJjrGVmzAvTaeBjDr5qHS1GAmVS0 a5Gv1XmKHcqzLfrvPiP9jPG1Q3CKJgUeg4VOq2B42d4bm95f5GiZQCCyftfR2v0I58m8 eGL/Umkp80T1xv92mclbFwoaNDV70euSvd5Nxoo5WTDlN/u84rgiO5raPVU2fYtsa8ak Ogqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248062; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2IADgDrWNpO85SchsSOcKly8FIYp6qUei1EDp0WbAZo=; b=G/FcEayMqYOn9FPTb9ngJ68SLCc1+VjCMNG4c7GLhu3tJdUQUHHbCWkMFu5meE+/DP caQbji8Jsrp2XIXECUhN1sk5O1inUpLYR9DZ0n4fjkqLcU5TUk4epZuXL20xxo3UBe6s lAqakkksraITpMGRclcfTpakIvb/BenPD/BxbcrvvVen7MvTYf1hb6mi2gg7qSOvbQA3 opvKBP6E6cfG57VqogyePrxiAfDl3wMZRbaHnTpvyXsCLzUysPf6b5Nz/fNb5Q7VFW9s RXinh6/xaZINoA0eTQoU0U/JAb9NfkhEPxMaQHGTucS1NO1gHmeNy7r9MAPASDR/MeSR sPyw== X-Gm-Message-State: AAQBX9f0IyM1IrhmqadvtD+8rejUbYsb7ecfFZmIzgc/CPeWfdBbaGjl /uM+6wP6mz4YT4haD5OlkSJsLkfMZAg= X-Received: by 2002:ac2:5231:0:b0:4e8:3ea0:cf37 with SMTP id i17-20020ac25231000000b004e83ea0cf37mr5184233lfl.34.1681248062605; Tue, 11 Apr 2023 14:21:02 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:02 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:43 +0300 Message-Id: <20230411212052.159889-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 03/12] avutil/frame: add helper for clearing out side data sets X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: lj4LMOJHAooe --- libavutil/frame.c | 5 +++++ libavutil/frame.h | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index 019613e4d2..24038cc0fa 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -90,6 +90,11 @@ static void wipe_side_data_from_frame(AVFrame *frame) { wipe_side_data(&frame->side_data, &frame->nb_side_data); } +void av_side_data_set_wipe(AVFrameSideDataSet *set) +{ + wipe_side_data(&set->side_data, &set->nb_side_data); +} + AVFrame *av_frame_alloc(void) { AVFrame *frame = av_malloc(sizeof(*frame)); diff --git a/libavutil/frame.h b/libavutil/frame.h index 45024c2a03..734ac3fe75 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -991,6 +991,13 @@ int av_frame_apply_cropping(AVFrame *frame, int flags); */ const char *av_frame_side_data_name(enum AVFrameSideDataType type); +/** + * Clear all side data from a side data set + * + * @param set the set which should be cleared + */ +void av_side_data_set_wipe(AVFrameSideDataSet *set); + /** * @} */ From patchwork Tue Apr 11 21:20:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41095 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125760ejb; Tue, 11 Apr 2023 14:21:54 -0700 (PDT) X-Google-Smtp-Source: AKy350ad5HrpcBcGVMa9tZq3Vdg8w5M89wPqI7OJZb/q8H0ZotCOUWpsMGwjVh8mq9RO/sVFPq+4 X-Received: by 2002:aa7:d445:0:b0:4fe:19cb:4788 with SMTP id q5-20020aa7d445000000b004fe19cb4788mr3626991edr.42.1681248114490; Tue, 11 Apr 2023 14:21:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248114; cv=none; d=google.com; s=arc-20160816; b=M/Jkdw5K5sQcovMwhjxFn2a/jtf/86G0VLdIE07SnMf+7RwK2ZVspojufa7OZHUTCH lsJDoZM357HuQZ7jfpq+teb2ZZf1aY0+tHqRT6NyNkLmRIZSEjPRSrdzhXiLueTTF8tC 2e78jk1sSiSCfQ2P2wHj37jUnvBop55RXjL9d6JXl13BCdvw2ApxouuBQ9rJElk2BP51 JWvXyeXqgShaUAyHHhJXNrmz29ZXLRhuJhHl9zkArrlyiyRbg/pXs4rNmq8ZZyOpMWss 0ltIw7kCGW7iM0JjATJfdaxZphh0g3Ep3Ily9WCom8wUD0QKVVZKGWuhYKnmBTrtqQne hcwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=+7JzOg6g+JCRGlzlcBP6UMjGC6ZmNpZYks+Lj1yZT6U=; b=fsrRh8KMyn0csRYYarvTnYqNoa6YPpf4HeeysDk1nFZa/OfP7W+AWvPWW4BjsKrqvX BvFsinmKUREEh0P4KrrJuIYLPU5ga2JSjWMz+mOiZvHcoDIShbYJpBWpsbQEViMKgbw/ bKv4GCQ0Bw9KX10XGbYdI4FjY7OxIhhIvh4UFJE7eY/Hi55/YhFg2LiddFJP8+44RkQV Lsxf2BS7gygRZBWM7UPQlnn5JuOdeNdHOCSFhiZ/bHHUFz0CYl8tBq1+T7Y1ZYtSczK8 DbWFNphe8w2tEVBJirMwqRjENdFnr4iVXR+xCUhKZXzpxgezJOXtAstOxPmptRoUvj1v uiAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=oHOjn2P+; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h23-20020aa7c617000000b00504a2c8a9a1si4775070edq.157.2023.04.11.14.21.54; Tue, 11 Apr 2023 14:21:54 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=oHOjn2P+; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 628206899F1; Wed, 12 Apr 2023 00:21:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BAD3E68BAEC for ; Wed, 12 Apr 2023 00:21:03 +0300 (EEST) Received: by mail-lj1-f169.google.com with SMTP id y4so9744796ljq.9 for ; Tue, 11 Apr 2023 14:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=mWaYaFYBsZtUbVJpWS6ur2SQRzPNckXBsp+HIlQG0fY=; b=oHOjn2P+0uCnr0nrGVxHBH1eMILD6Xrc+wObTHZ3qQWI7oHK2k1zGziSHodqM2/i3k aRE3+uwiVuVN1EjU89pmUgGjIXlv//4qSQKufL9uI2EZB8uDeNaAaj4hPDFVbs0vE2jQ cL+/L/S8GvCGFMKaO5n2nCPGl702bKM0K0R2ieBV03Rcq9nXsAWcHH3lUM04BMtxFtq+ GRWRzRoFrtC5/u5vG12uM8e0vD+Qr7SYGIlUsvPcvQrRC42gCqWGsySYq8Ym3lC7pgbO W08AfWAzk1pDXHgR9RgOp7yDmLM+rpYPQ4P5OsfZkqHRvEATO+36d+PXsjVo2XbfzUOX QmiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mWaYaFYBsZtUbVJpWS6ur2SQRzPNckXBsp+HIlQG0fY=; b=it6sYq0qhj1NEiF8EC5SrTW6BRhf6I3V7ZpJPNwoUhLFBdiRHiNtRq+16Ti06hHsZY 8o3yILfG/BSgQDQc5ZdgDtsiLzPAhSKjCmWiG+8zGLmrarRte7moaFuFo3qblE4cpLD4 FW1jM8D657i1A+0dIa7s6lYVZ3y2kMzUvRrbChELJEeRWTNYEdmxU4Iw0mqoRpPdyp1z pzn0jHx4iFGvSZXrNoCnHwa64H6Cm58I9tPA732IitCtFjwH6d0BuPdzVyyT2NPNgm8F tKAoJk4POGiuQq1ERXU7+MJ0qeHqVPXx4aFlTPCMV232YBBFqZqU/pWYR1vqVWH+DeW0 T/2Q== X-Gm-Message-State: AAQBX9dPX8dqhAx5T4IaAXhgXH+QTUiL+Ef6nz8nIA/lMIy+afkarKOk lKoxM7LaSFuTIGN3F/UYAylHhCwUPQ8= X-Received: by 2002:a2e:920b:0:b0:2a7:7b5e:271 with SMTP id k11-20020a2e920b000000b002a77b5e0271mr934393ljg.24.1681248063020; Tue, 11 Apr 2023 14:21:03 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:02 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:44 +0300 Message-Id: <20230411212052.159889-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 04/12] avutil/frame: split side_data_from_buf to base and AVFrame func X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: De/eAhgpmt+6 --- libavutil/frame.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 24038cc0fa..ab1a4e7f6a 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -648,23 +648,23 @@ FF_ENABLE_DEPRECATION_WARNINGS return NULL; } -AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, - enum AVFrameSideDataType type, - AVBufferRef *buf) +static AVFrameSideData *add_side_data_to_set_from_buf(AVFrameSideDataSet *set, + enum AVFrameSideDataType type, + AVBufferRef *buf) { AVFrameSideData *ret, **tmp; if (!buf) return NULL; - if (frame->nb_side_data > INT_MAX / sizeof(*frame->side_data) - 1) + if (set->nb_side_data > INT_MAX / sizeof(*set->side_data) - 1) return NULL; - tmp = av_realloc(frame->side_data, - (frame->nb_side_data + 1) * sizeof(*frame->side_data)); + tmp = av_realloc(set->side_data, + (set->nb_side_data + 1) * sizeof(*set->side_data)); if (!tmp) return NULL; - frame->side_data = tmp; + set->side_data = tmp; ret = av_mallocz(sizeof(*ret)); if (!ret) @@ -675,7 +675,23 @@ AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, ret->size = buf->size; ret->type = type; - frame->side_data[frame->nb_side_data++] = ret; + set->side_data[set->nb_side_data++] = ret; + + return ret; +} + +AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, + enum AVFrameSideDataType type, + AVBufferRef *buf) +{ + AVFrameSideDataSet set = { + .side_data = frame->side_data, + .nb_side_data = frame->nb_side_data, + }; + AVFrameSideData *ret = add_side_data_to_set_from_buf(&set, type, buf); + + frame->side_data = set.side_data; + frame->nb_side_data = set.nb_side_data; return ret; } From patchwork Tue Apr 11 21:20:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41096 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125844ejb; Tue, 11 Apr 2023 14:22:04 -0700 (PDT) X-Google-Smtp-Source: AKy350bwOZ/4Fn2SejT2VBEfyaMaDwQ01o7Lq5u86to4IbS4Gucui2jnGJHKvetr6OSIz8TznBU8 X-Received: by 2002:a17:906:7044:b0:929:37c3:1021 with SMTP id r4-20020a170906704400b0092937c31021mr10344316ejj.48.1681248124106; Tue, 11 Apr 2023 14:22:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248124; cv=none; d=google.com; s=arc-20160816; b=VFfCswMhjAKYi8yJFqrK9+VE40VfACnKkHS/BmouPP5SO0Z+N+aHCcYw0dYoZzirtj 8n/4u3sfQVXTJ8Da8ZLcq76GAC1i5/v0cM+I2QtH5bR8yp1djDfProBLjljuVwzSUgYV Nqc56vkE9OQt8ASnPwXkVylyR9K1BAV/b1Ga2RhfdgZbSW643m0dW/fSg0efoAg9g8ga 1fCOTzWm+k8bwAwlfXiaAxTlrKvAbKylL7uW1XISgcOKELHRX6HkxqhYqSl1O+vOroHM vTx10MJ142lNsp86ohp/eOaX+lFM/vb8Q5L88zkT+pPZbYz4B9iojjjoGCU96qlAnwi4 mUHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=IxcdiawJ9CPAclN3IqUNYe0Gg9dxC/ilmtMNksQRmcI=; b=nsRChC7ZaoMzYK98vP/DMIGQdRTNtn2IpbeIT/5kypOcjakuZRT5ViOK2P+DCX6biC sDi0ZNdcbMqay4DHPeReSxbzQpOFyWMMyVYx6C4PSZOnpb+Ks0QMOw+DqJTZnnZh2+fP kGny/976BSrQmwO+hPZHqhnSWsRwS8LC8F+bOrVMTKHiubHVRYL8HeMdNyx2jsTeKgKO LDr4xybK4c5e4ppmy21uP18mwP7VRErX5pGE0vz9BYI9r2duBE/Bh8wWOuLgCwvv4Jl7 7TIPO2+Hv/TvP2JZKZ/3WVFzN5Trq4QoTODFem2jmkRY/91eiMljdtUJyBRAnJvCks19 6V6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=WwPncnd4; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ht10-20020a170907608a00b00930d1b8e44dsi9565388ejc.345.2023.04.11.14.22.03; Tue, 11 Apr 2023 14:22:04 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=WwPncnd4; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6FD8568BCBF; Wed, 12 Apr 2023 00:21:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2D94168BB83 for ; Wed, 12 Apr 2023 00:21:04 +0300 (EEST) Received: by mail-lj1-f182.google.com with SMTP id e20so9740459lji.6 for ; Tue, 11 Apr 2023 14:21:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=fSeRlGAuq+Ba/gsGoNK9iJpgHd2k2psu+R0beINM5cQ=; b=WwPncnd4/x0iECNXl1u94AJF4aV9uzifv4A/MP6qwXAxXTnOx2gdt11rNtQmNnnQ4K 00m1SxwS6Gu1+/+TFWZIV5HxzaKX/1YxmdJTDaov2EVEklrASVr0b2iyUUqDX99TfeMR oKQ4HsIav1Ga8ZsxWxs7PmeT2DuhAie2VUlBkBSsfpuhVCLi1w06EDruZbbsS+lb2KLj e5qQSjeHoIYI3wjyALLwqBTsVpvm7iX+WRjTbpraoiFs15ZDvED19LA5AWHHqsUvAS02 gy8slL09Swd/f+U6+D+V1V147Y5EmZqQj/8tEyABm1oPfRvmfdkCyfgI6P3leEEoF+rW ECEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fSeRlGAuq+Ba/gsGoNK9iJpgHd2k2psu+R0beINM5cQ=; b=uUr4tzcfaLSFzT4Ij8WrDxo3xBxA3WjlFKbOReIz36VxYF3tk2AlL/npD4YOduq26w X3l/qACgESloGVIENIj9823RvLTz6R+Kuv0rS1jM/ndJfuAr6Or8HQZEWZWgdH91M9yI ELX5wi+dDMPe3xHd5aGZ6yGM5JiKPZD/URGePb3z49jiNSa6BrCf+E9ziFfz5AGuvQza b06SlNW2ma8Os5Q+NQgsI57N9eZEoHWy+QuEAc2nzxW3KrBclfqCR7monH8xemhUYQ5L CV52dV7uGPTmcptQCdu5G13I3mDI4fDnHJEOeTV3tNzsk/+a4pDH6WHbHLSYWY4Bgunx FAAw== X-Gm-Message-State: AAQBX9eCIl9nG977QymXsnMT9YBQFRLCYqxLRD3F3gNkSQOpM3MjtLc+ 2A0c7pjcZi9ryCIPMhKhC0K151KgZ4k= X-Received: by 2002:a2e:3211:0:b0:2a7:7f00:929c with SMTP id y17-20020a2e3211000000b002a77f00929cmr2105795ljy.50.1681248063432; Tue, 11 Apr 2023 14:21:03 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:03 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:45 +0300 Message-Id: <20230411212052.159889-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 05/12] avutil/frame: add helper for adding side data to set X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: QxrU5L3GY36S --- libavutil/frame.c | 12 ++++++++++++ libavutil/frame.h | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index ab1a4e7f6a..29e9b631f8 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -708,6 +708,18 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame, return ret; } + +AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, + enum AVFrameSideDataType type, + size_t size) +{ + AVBufferRef *buf = av_buffer_alloc(size); + AVFrameSideData *ret = add_side_data_to_set_from_buf(set, type, buf); + if (!ret) + av_buffer_unref(&buf); + return ret; +} + AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, enum AVFrameSideDataType type) { diff --git a/libavutil/frame.h b/libavutil/frame.h index 734ac3fe75..167a8f0ff6 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -998,6 +998,19 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type); */ void av_side_data_set_wipe(AVFrameSideDataSet *set); +/** + * Add a new side data entry to a set. + * + * @param set a set to which the side data should be added + * @param type type of the added side data + * @param size size of the side data + * + * @return newly added side data on success, NULL on error + */ +AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, + enum AVFrameSideDataType type, + size_t size); + /** * @} */ From patchwork Tue Apr 11 21:20:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41097 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125905ejb; Tue, 11 Apr 2023 14:22:13 -0700 (PDT) X-Google-Smtp-Source: AKy350a9J0sghhuMQOe39E3TlBVk8N/Zn7qGDX2bLuHzvpFz7ndxdQbI0+pZYAeUNCg2KmGu+wEi X-Received: by 2002:a17:906:7014:b0:88a:1ea9:a5ea with SMTP id n20-20020a170906701400b0088a1ea9a5eamr11069928ejj.65.1681248133063; Tue, 11 Apr 2023 14:22:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248133; cv=none; d=google.com; s=arc-20160816; b=uateO2KEHjssWNKqISEYNHgpB9eZGGSMh+e0e1Vpi/l84g9iCVcqfXGXKgs4Sy+Fts gBNR/00cg7L7nRNDcekE3TN1dgavjgDzxA5/1KEo9Q8K4TG40jriN6hP6fbfjOcysAqm j2SymxWRfOAxoRjWMuO7DJGSFkBCK/Bk6BaSgCgMPLMyeEyqaAkPKonqm5LaLU4e4XF2 mE51De+yDNj9bXYuBpRgXSl17qhapOpelbN3EVFjzDHjWCPwZrMHqEizuFQnDgCPTAv9 oPvuQmBFmig4Q+Naq81LWNUf51oGdbOA2x93N2ES07VuASoKdEg/1e4onpi6ra/OSiUk 2XZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=hGtKRhElBde+4N7rYrnYT/Jy5fAfORuvINreaZa1kqs=; b=XsFcgNkcmdqJAAitI8HFxpzwsHLPXdIg4gQwxSnHS/xWQjQJXztc03V91mJEl33HZW o4ekAtdzfN9APu3Fm1H3QQwbF1ougdLpJ0JaQi1OmMJZNyzqnXdY/a2XwCOt6xHxwAoF 4dlNR65AIanhcr9HqqnDawyt5UI8ba9nEZdPHIQ3Qzpp55LieRmRhiOo5Fpvqs7KT8e/ EY3Zep99euTP9stkaK7NZr6yl2m5FAtZPxU7BtOi+fDCtSkXUVGOZIH1KQUCKI1Ah/QM DsQmWkSsE6uhcIxkPv6SgwTPI+/vcasKp5ewejb5m1ZS/F0Xv6/CuBZ9H14DOldbBbyl 8UpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=sfkKErUn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w12-20020a170906b18c00b0092bdd3273c5si10944842ejy.925.2023.04.11.14.22.12; Tue, 11 Apr 2023 14:22:13 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=sfkKErUn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7677A68BCE8; Wed, 12 Apr 2023 00:21:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 77C9268BBA2 for ; Wed, 12 Apr 2023 00:21:04 +0300 (EEST) Received: by mail-lf1-f47.google.com with SMTP id e11so12069000lfc.10 for ; Tue, 11 Apr 2023 14:21:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=8WIO4mJ0KLKyAfnKlnyBAnkRcVzPgaC+pGvzeLAkY+M=; b=sfkKErUn7a7JovNN9xCl89Qld5I9h2eUfWzn20s4sWvrOmzor7t5maWNzKF5lC7CDA idZXLUvJ96d6Qt4uV+C1PEq21l7pt6K0cT7g1H8QCheyqeFX9vktNxGmgizPqcvq1uqV 9Tninnow1fmuV7wC6yAnt3VSAuitOf3l853+IzB3Z5sN/4kRqfnDJLNT2yvUoS8RphcQ CDiRH90ljgdT7ptqUPeYnyPvXV6YcR5uBtLquODbC2w6s7rCfjEGN8D8l10EXYx0Dy+l CqST8/dMjM4i0Fm8xxMWrTqBb6tOmdfXRtkkWZWH1U+N4h8oU9iJOIKIENxXf3/lKfBw 7xew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8WIO4mJ0KLKyAfnKlnyBAnkRcVzPgaC+pGvzeLAkY+M=; b=LK634HElZrEPtXtAejDtzU/rqcjk6jdFkaYZqMObsmoyAF1xkzBKkUAXEMumvwep51 w5oLGSUvL57lfPp3yY/bujztHYwc1LCu+xJLND04bLex2NnByw3LwBVpoclh0vaUJB7b VuxgeCtCow1tbXTsHnYqfZLoIi3YDrGBjNOQrQdZjtXiUx1sI/qcTu4DIabPhR2qECy1 sUDOuKW2FmWl6185L0zKega1dA77jVpo0rfX80cQXW6JAxPf351d+BKfMHr9B0TIG5Ff wMAiPAFDRe95dINRmPAb4Wnq4AY2wd+TcnzhZDhZOJ1Hd315YVUkZU/WQ9ev3W72/oPQ agqQ== X-Gm-Message-State: AAQBX9fYumuUCU4vE40Un12gtnbEtvXco6puDnA8X9u7m1T1trJeV4tm //e7bF1/xzeRf1feTJ4+3JhiDbIAP4E= X-Received: by 2002:ac2:5191:0:b0:4eb:20e:6aec with SMTP id u17-20020ac25191000000b004eb020e6aecmr3609975lfi.40.1681248063809; Tue, 11 Apr 2023 14:21:03 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:03 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:46 +0300 Message-Id: <20230411212052.159889-7-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 06/12] avutil/frame: add helper for getting side data from set X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ecbVBIZL/fhu --- libavutil/frame.c | 22 +++++++++++++++++----- libavutil/frame.h | 10 ++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 29e9b631f8..3386cda627 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -720,16 +720,28 @@ AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, return ret; } -AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, - enum AVFrameSideDataType type) +AVFrameSideData *av_get_side_data_from_set(const AVFrameSideDataSet set, + enum AVFrameSideDataType type) { - for (int i = 0; i < frame->nb_side_data; i++) { - if (frame->side_data[i]->type == type) - return frame->side_data[i]; + for (int i = 0; i < set.nb_side_data; i++) { + if (set.side_data[i]->type == type) + return set.side_data[i]; } return NULL; } +AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, + enum AVFrameSideDataType type) +{ + return av_get_side_data_from_set( + (const AVFrameSideDataSet){ + .side_data = frame->side_data, + .nb_side_data = frame->nb_side_data + }, + type + ); +} + static int frame_copy_video(AVFrame *dst, const AVFrame *src) { const uint8_t *src_data[4]; diff --git a/libavutil/frame.h b/libavutil/frame.h index 167a8f0ff6..8aa50e3ad8 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -1011,6 +1011,16 @@ AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, enum AVFrameSideDataType type, size_t size); +/** + * @param set a set to which the side data should be added + * @param type type of the added side data + * + * @return a pointer to the side data of a given type on success, NULL if there + * is no side data with such type in this set. + */ +AVFrameSideData *av_get_side_data_from_set(const AVFrameSideDataSet set, + enum AVFrameSideDataType type); + /** * @} */ From patchwork Tue Apr 11 21:20:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41098 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125956ejb; Tue, 11 Apr 2023 14:22:22 -0700 (PDT) X-Google-Smtp-Source: AKy350ZT5kPEfsNURn79mp7RqwDZd9KgkLsTnmre1OmQOO4YoWHdPhcsy0GwE9RoJYxpUkK80tlq X-Received: by 2002:a17:907:d489:b0:908:6a98:5b48 with SMTP id vj9-20020a170907d48900b009086a985b48mr10789168ejc.40.1681248141998; Tue, 11 Apr 2023 14:22:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248141; cv=none; d=google.com; s=arc-20160816; b=JJvi+mmHk4V4wVSrsn1KaLqimM0HMUVujCyERdUBor1bObT58md/huumDbYwUhQqPo UycTNM8DG6tP9Nk07QX+LqChnykSiJBXIlHDlq1PnN7pj8eK1Jyq1Kxb74jk3qTsOtxK zyqJQLLyKKzP/JbYH8i36/ojSKuk8pMiFIIBqPZ9q637Dxk0weZsrHLTlpjM5wZL5Fc/ SeCPLBipHZ67cKxaAcfdWr9NJEyzh0UfJPr6YL9bEeDjynzzmEiH1PhsMc9Pyk9EyiwT 2rYRgnWpHcfMm8pG5v823eNXyrmOjR+4I4cVmBZrFcbsvobI0VrmGP7rMzoMhCzvpbPb 9J4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=NKK5thtfCn7hpz6kETmGUtqaa9iAn4YabijEoaTvhyE=; b=ylx7Qg99ImVDge9A6FKRoU4EoZpbVQfXaoy86HBopKi5HdwwIsGkSROnLlRo/q9YEZ OxkY363enraiQ0SnbyjN34+mdypFZ5gFbEsttumHQtbNKnlEHbUCcQo9XW9BiTOwUidI 7S9InjyCF4WJytGDC1ysCTZ0QUs4fx3sPGb0RCBDYrbhOnliafZ8sq2jFpWz+DSBOLBx JbKM/HhLMFtNELkmnQ0Ov3gmgKx9o0BinqXwhKQ94uPOoQ/PHhTfvYGsBUpUSBB2zZGp IqqrfzE+wQ1YE1+omHxYZ1w/rbYH40uXh9wCh/QsFUi+w46RiwAJv9AORh/7TQoTOUl7 ZrXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=axWsqiCD; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r5-20020a170906a20500b0094a9d6cdfbdsi3380462ejy.757.2023.04.11.14.22.21; Tue, 11 Apr 2023 14:22:21 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=axWsqiCD; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0F76268BCA6; Wed, 12 Apr 2023 00:21:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 28CC068924F for ; Wed, 12 Apr 2023 00:21:05 +0300 (EEST) Received: by mail-lj1-f179.google.com with SMTP id be27so10016695ljb.12 for ; Tue, 11 Apr 2023 14:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+Ym/c7834lmkKijUaa7c+4OR4VqdHHXbn1Iz+9BVi70=; b=axWsqiCDLf0uJVBRWZibhgmwsw6jrT7QXIF801kiAAMBdslu9ID3LRMCjqT+Lm4pCp ZJNgeVGFO3Y0zbvWd2Tlpt8O16VIRqaz98W/btVS+j/hidmY8BVvS+6H3mdaS+s2hDIw QrbJGtcFReiVDsJ4R6Gsoc/epTY3+ut1rPYyrJgrmjkWPvevdRevEKROG3CX4zoazqK7 R9IThKkkJLVBskZgq7+f5zT+soUrIzwBdoFBk3tCi689LhG01pC6/ypISsMAZZ76o/7o tT5PCQYNPiWGpN9sjC8vXC6ZUO/oH1iZLrpjHZlqcCi3x+N/WPS1SutBhEu0Kccl2BIU EUUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+Ym/c7834lmkKijUaa7c+4OR4VqdHHXbn1Iz+9BVi70=; b=ztPZtP9o/quvVJm6xvNjlHkMUOLLcDbNFt8GQVxTNJK4FJ1XhutRJBzEOfQ2TFm6XV MJMnG99OT+pjGZB9KMSsFrhGFY9/gDKFF5Hsa7uPO/q13MjJ6L4iEBHpIv3BO5kldmdD 5q09+PQhPp7Tg/4rqF3B+tgiWdBpBEjKr2XVemSMxO+KUwWOz3Cz2dAo4cmXdR8lP8JV SZE0aprzXBZHqcqZNwnu9LJXlZlfIIPwo69JgcEdhd8ppanz0hS3XxUp6F8svgNbajv+ 2IepyHhcaqvlBfB198apOjWya5Zm/vjSt7pAmAcHS3VkRDROrk7tCChJPrKMJLzanKQP iZ+g== X-Gm-Message-State: AAQBX9e7KhcV1lQ86cgRYatUJKcEr7hvBlPBKh/dLdlxKShbe/G2A19v CTW+l7/tiV0fb6eHFsrpX7076i092is= X-Received: by 2002:a2e:9b12:0:b0:2a7:7218:c3b1 with SMTP id u18-20020a2e9b12000000b002a77218c3b1mr2918291lji.29.1681248064233; Tue, 11 Apr 2023 14:21:04 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:03 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:47 +0300 Message-Id: <20230411212052.159889-8-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 07/12] avutil/frame: add helper for extending a set of side 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: lR096lH38zr0 --- libavutil/frame.c | 21 +++++++++++++++++++++ libavutil/frame.h | 11 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/libavutil/frame.c b/libavutil/frame.c index 3386cda627..ec4e44a11f 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -720,6 +720,27 @@ AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, return ret; } +int av_extend_side_data_set(AVFrameSideDataSet *dst, + const AVFrameSideDataSet src) +{ + for (int i = 0; i < src.nb_side_data; i++) { + const AVFrameSideData *sd_src = src.side_data[i]; + AVFrameSideData *sd_dst = + av_new_side_data_to_set(dst, sd_src->type, + sd_src->size); + if (!sd_dst) { + av_side_data_set_wipe(dst); + return AVERROR(ENOMEM); + } + + memcpy(sd_dst->data, sd_src->data, sd_src->size); + + av_dict_copy(&sd_dst->metadata, sd_src->metadata, 0); + } + + return 0; +} + AVFrameSideData *av_get_side_data_from_set(const AVFrameSideDataSet set, enum AVFrameSideDataType type) { diff --git a/libavutil/frame.h b/libavutil/frame.h index 8aa50e3ad8..da8ac3237b 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -1011,6 +1011,17 @@ AVFrameSideData *av_new_side_data_to_set(AVFrameSideDataSet *set, enum AVFrameSideDataType type, size_t size); +/** + * Add multiple side data entries to a set in one go. + * + * @param dst a set to which the side data should be added + * @param src a set from which the side data should be copied from + * + * @return negative error code on failure, >=0 on success. + */ +int av_extend_side_data_set(AVFrameSideDataSet *dst, + const AVFrameSideDataSet src); + /** * @param set a set to which the side data should be added * @param type type of the added side data From patchwork Tue Apr 11 21:20:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41099 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1126009ejb; Tue, 11 Apr 2023 14:22:31 -0700 (PDT) X-Google-Smtp-Source: AKy350bIjJYpwi0Kfl93aBhxORPy3NYKWsQAg37g/3oddGXuO46DxxM1uMpSTCq1rDuQNxShze03 X-Received: by 2002:a05:6402:886:b0:504:ae78:89c5 with SMTP id e6-20020a056402088600b00504ae7889c5mr6397763edy.28.1681248150873; Tue, 11 Apr 2023 14:22:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248150; cv=none; d=google.com; s=arc-20160816; b=MEr/lpW8YXuxMbSdzOsMODjU0WBgpUSPdidUv68DNT0RBocUAnaWuEhZvgPb9pxkov r+TeIJXpkRKAMpOI8uyeOIMQPZ0I1HuphvdW+c7whRr/12RjOPJdgTZXF8Sv1TqOI1rr CJVR6OV0opqezC6BxYpRjyT8TWXpQi1+gyTl9M+Ny8UNJkx6kwSyBJjqGF4gwJKmlVvT axTCTc6JU/iox44Q/577f0fCAgvIgrJNa4LQ/BwjPDJ7femTlXmrmAormasP73tFSWU6 RaCKe0RatFWTA4eiX15ItMcSzxam7xJYhpy5x/w2OZ6umToOOxO303d6VzoBvM4wD/j8 L5vA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=rtaMr9EMgAsqBixh8cid8KQy0lZRFuRQEuFxDsxQoCk=; b=Nw8ee/yaFj0OV4VpaF6cCekJIowAn3MnnbLPto4GV5QfiUyzt72XtknaNYUVnpRGqj Gfss7eY/8If1m51PaW4eLrg2ynJCNu2gbaHpYX2HIQeV95gt5rmCdVWCLXL/vG95ku8b sUHYo7b1GXmsNAaLwC3ygXNhg/oVM7cZChUoBm7KdYGmDfonmtV1bX0MVZvtOwtN70zj FkHx/EackrMH1cXv+N/fYfz7+ewi152iOsY1FxfjHckAzAPBAPWLhLNLQkp4bt9z860I QgVs8Zxa8QO6sxxCW2kvDl0TOyppG+e8w7yjvDeQ+fONls4R1HkOkJvSIrWqR7j4i3rX 9Anw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=SnckQjJx; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e2-20020aa7d7c2000000b0050480da034asi1239571eds.27.2023.04.11.14.22.30; Tue, 11 Apr 2023 14:22:30 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=SnckQjJx; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0F06B68BCE3; Wed, 12 Apr 2023 00:21:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6A6D568B9DD for ; Wed, 12 Apr 2023 00:21:05 +0300 (EEST) Received: by mail-lj1-f175.google.com with SMTP id e3so1156503ljn.1 for ; Tue, 11 Apr 2023 14:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MLncda0xnB0dBfvKEkKCUfnuZHxnJpIW3+6Flkg6I24=; b=SnckQjJxXm7jTgCIJmUEG8VqW3H6ME1CvnDJcSjfxORctjnW6dvjogjhZ/VwWZibwF lsacxGeNEj84HQ2Qg3khUnUTDzmqd374Gxfex40bmXqbpzzlK+hxdcwkLWuxQ9OEBy2L 89OoOWcks9uuFs2+saxoqskRt5ESCGR45gN5hkovP0PUeHvpXIo4HI1waJq2LM8X3YcJ 5r8L7tFDVs+l1iUCRr3xne5DHGMtF6VwO3T0NVqdgDk3kfE+9yGtimoTRB3LKTYW/GBs z+ttQihfhpOpmwEEpRL6Ol0QtHYGR25+TQGKh3Z418jAxFMKCVGY3kJ4heUaBHnaWZqp oIpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248064; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MLncda0xnB0dBfvKEkKCUfnuZHxnJpIW3+6Flkg6I24=; b=BOjNcstbju3DYTn1xQCsatTjplxJYJTdliAt8b29LGgEOK8Y5fHYFQOmOdmgndJk58 ATbds1wE2WdrDVYjQbDAFyI/mEr06UuMb1bnk6QDLu/3xq8CFSWDKHerq8zIaPUNDh7C j2+I+4ZPALyx/TsN8ONPsWZSq2onxQiA5MZjJyDR9F1h+RnHfbwFdj/LtBbPq/izzxLs cHrEhAv3vArntcoBwgHTSA4VJoS+14MHVUcFNLKlvYa1iZl5gKfKL6NOOBZPHiAnGTkv pN0NLTM6R2nTAYCWdQ5wKpaO2NFLDI9X4w679DhVrGmwKsDHhQdDIBIktEMlUNLeMjgk MZPw== X-Gm-Message-State: AAQBX9eN3/hSFM703PfsXO9/v7GZNGfKpBzhZMtOTCMZH2OGln8VCYKn grx5kVSko2VLgXeZRIBNRNSZq9I3Ii0= X-Received: by 2002:a2e:8743:0:b0:2a6:22fd:6b08 with SMTP id q3-20020a2e8743000000b002a622fd6b08mr5005177ljj.3.1681248064717; Tue, 11 Apr 2023 14:21:04 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:04 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:48 +0300 Message-Id: <20230411212052.159889-9-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 08/12] avcodec: add side data set to AVCodecContext X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: SQMNOzeLfK69 This allows configuring an encoder by using AVFrameSideData. --- libavcodec/avcodec.h | 7 +++++++ libavcodec/options.c | 1 + 2 files changed, 8 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 1e91b9cb53..1e796b4a44 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2087,6 +2087,13 @@ typedef struct AVCodecContext { * an error. */ int64_t frame_num; + + /** + * Set containing static side data, such as HDR10 CLL / MDCV structures. + * - encoding: set by user + * - decoding: unused + */ + AVFrameSideDataSet side_data_set; } AVCodecContext; /** diff --git a/libavcodec/options.c b/libavcodec/options.c index a9b35ee1c3..b7ea6b6ab5 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -180,6 +180,7 @@ void avcodec_free_context(AVCodecContext **pavctx) av_freep(&avctx->inter_matrix); av_freep(&avctx->rc_override); av_channel_layout_uninit(&avctx->ch_layout); + av_side_data_set_wipe(&avctx->side_data_set); av_freep(pavctx); } From patchwork Tue Apr 11 21:20:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41100 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1126071ejb; Tue, 11 Apr 2023 14:22:40 -0700 (PDT) X-Google-Smtp-Source: AKy350YiLJc1LZDZh5djto85EFhpPSEE4EagG5d755ZKh+uDKzZNegSPwQpmpKXvYlrK/AVH1pRs X-Received: by 2002:a17:906:3188:b0:931:f9f8:d4ea with SMTP id 8-20020a170906318800b00931f9f8d4eamr12791071ejy.53.1681248159893; Tue, 11 Apr 2023 14:22:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248159; cv=none; d=google.com; s=arc-20160816; b=jWWZr/KbxMTe448eSdrEDgGOGddrp+9h/uNJq3nfl/lBSGqU7hmpZQ+aWpwvYJj0GY co2B2aA4y9M58By5va1i2EMaUnmXIRj3m95mwZD55IkmI45UdLDYeFf1uCKunXEBIhJj pPiiJW5ksZoWJFqN120RXEIQw21KsL86TZR21VeqQyIVZTdfFvCkyxIGGxoBxAXho+Bc s0XHoUmu1xPZHuGM+TMAK7f6t41+IdDbcqRIK/o4/NX95v1RlQTCfeVMOq2MgZl9NEEO F8HcBrehwcoBqy3Te1mSFONAuafvOC/G+SIlcD7vP9056EYMHyQ4tXaGKO+p2o2vibo0 v7zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=vA95WjBlR2jzfIJTm1/mewkj/Ww09HLtlBOscHCW3QM=; b=RGzuRS39ktDGW6/HQvGXfiFsEmHIQ0b0bo3zpU3PTb4KzkZ2Fq8iJyfBW4qTJntl3T 64/iaXcV+y4SgMRjkrzcuOjJPjXC1RYNV2uz5drHnMss1UfEbpDbEZaV6JdFUz0VTS0a alSaI+MVK7F1Vpqv1pf+2/gvTDPxMum8DmnnnkhPnTrTJVLORZx9xmGvlY1LFi+VlTkO PMpsCudo0jSwfk518kw1TJnzl+D6DDTUhvUmFCpi75SEHSM5Fr0VpYdL5jTcmUvsy8EL pPSWtwm63fgxx1h3NvQoq8/5vXulrMytuwRftSWxAy54SeNxyA2/kI+3+TDpfqErihiQ hUCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=c5wq3n0E; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o12-20020a17090637cc00b0094a6bc3d6bcsi3476027ejc.312.2023.04.11.14.22.39; Tue, 11 Apr 2023 14:22:39 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=c5wq3n0E; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F14A068BD2C; Wed, 12 Apr 2023 00:21:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f41.google.com (mail-lf1-f41.google.com [209.85.167.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D131468BBCC for ; Wed, 12 Apr 2023 00:21:05 +0300 (EEST) Received: by mail-lf1-f41.google.com with SMTP id g19so55124396lfr.9 for ; Tue, 11 Apr 2023 14:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248065; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TjRydDqhNE6+z/XSbL8zBUre/sEWBN56WsoyeF0fgh4=; b=c5wq3n0EJyOrgDTM08I2U14kZQqmNzkFJ6mPrwXWyw3VEbSfIkCxMitOyHC0axyN51 oXA+MPA8UHMcE6GbY7KtvKH2YPSODPqez19tpq41X4E6b4XBmQKQ6yBgqO8fFAQmPmzH G9xlpBl/h5MPtQJYJPrJ/qYqkBbmJZaT3t+dMMEF6eyPRXCXA5f4mDsGYUqGVL7WJuFV I6LgDFAzV2uQDuX1R6tnqrzpizdfb/VIHzQI5LEW/McVlJR2cX828z5+nZg4NM0Ne8kZ M/fS5aJHovgnubUtCrDB/9D1PZJS1KpRZ7FZYTnzh5JBqimRzEtpbHSUL9sM1c742CQq eibw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248065; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TjRydDqhNE6+z/XSbL8zBUre/sEWBN56WsoyeF0fgh4=; b=NfrAPgI8cN9ESyNlAw5GzyWiW9HT7pWHDO9x1JgKcSCNXAgMtW2yErLG9zy17d7iPC SEmDquE63MU1xNNpFgzodTXsx5ynDmLdBAX2SGGIu9zBIfN/lBIRS6ek5ZHnajauUMSG dbM8B31DXAoHzJ5EEa+Dc5UaSnBFhL1pvXP6YaB8SKA2slDErfPMPg6y/Gb2XSO8CCd7 M8LpTN9+9FzTK6dWIbiLhFXTiXhxMkJfBUShb9t8D6r4lDVcpgqyGzvSj+27t7G8rXAr eTyB8Z+BHXAJfON5arGK0Y7Qt8id8+ElEG6PT3up2SkWHplbA0jBxSazXM5wudaYV0Gz PXPQ== X-Gm-Message-State: AAQBX9dPByGA3MGHGGnalCY7qU9WjXyCVrkZO/c2N+mU69h5Sx6E8pka HzE+tB3XCZMJgz4iRxBvqAZpJP4jmXM= X-Received: by 2002:ac2:4461:0:b0:4e9:be7e:5827 with SMTP id y1-20020ac24461000000b004e9be7e5827mr4241678lfl.62.1681248065149; Tue, 11 Apr 2023 14:21:05 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:04 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:49 +0300 Message-Id: <20230411212052.159889-10-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 09/12] ffmpeg: pass first video AVFrame's side data to encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rK8vSsqHVBj1 This enables further configuration of output based on the results of input decoding and filtering in a similar manner as the color information. --- fftools/ffmpeg_enc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index 2f1803a74c..f389addcf8 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -223,11 +223,23 @@ int enc_open(OutputStream *ost, AVFrame *frame) av_pix_fmt_desc_get(enc_ctx->pix_fmt)->comp[0].depth); if (frame) { + int ret = AVERROR_BUG; + enc_ctx->color_range = frame->color_range; enc_ctx->color_primaries = frame->color_primaries; enc_ctx->color_trc = frame->color_trc; enc_ctx->colorspace = frame->colorspace; enc_ctx->chroma_sample_location = frame->chroma_location; + + if ((ret = av_extend_side_data_set(&enc_ctx->side_data_set, + (const AVFrameSideDataSet){ + .side_data = frame->side_data, + .nb_side_data = frame->nb_side_data + })) < 0) { + av_log(NULL, AV_LOG_ERROR, "failed to configure video encoder: %s!\n", + av_err2str(ret)); + return ret; + } } enc_ctx->framerate = ost->frame_rate; From patchwork Tue Apr 11 21:20:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41091 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1126121ejb; Tue, 11 Apr 2023 14:22:49 -0700 (PDT) X-Google-Smtp-Source: AKy350YTr7G2MprRGZWawS7nUY1CdtpOfdnbxCg1yocNY0qbv7ZbRP7O/E66CVsmywM6xifG6NNp X-Received: by 2002:aa7:d850:0:b0:504:b5a8:dcc8 with SMTP id f16-20020aa7d850000000b00504b5a8dcc8mr5182115eds.4.1681248168926; Tue, 11 Apr 2023 14:22:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248168; cv=none; d=google.com; s=arc-20160816; b=qAjGHWXZpELZy3YqRENMqOUF63eoPVele4+0PyZLmkOUWOJFIYYLJ3IKuJa67KEELQ TiR2dRvuhcPGSMF9fk2+MoYrSRH3N2MgnmfhU6iYXZQDELdPLvDXmhRvd93day/8kfUZ BupaRUd3nBnbdEy9j5bAzuO1iR6+4adJ9qQI4vXy0q6r1XxYr7LNGdI8IdOMYd5YE4QO RXjYvrLl+mmi7Nre7hLYdN1f4+2m67AAt7uTHqHrMGGXMXcuHJCRUnMD0ID5ur39zvgb Any9wvyDxL/5bJY93JykGbElAbkdQcXCGoxwpAtKOG/GfuSoH7c6bwH89GWeogv37yLL R5RA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=BrNPuVXNqutH+hZbKKrr4KIMvWEb6a8nvcnOYkQLd9U=; b=NjPw1gsAqUOs3JN6hQ7Bx6oHk6h23Yr7Olbr1HaXn/0RMsg3n6F/XXvWCg7yaLM1Ls Wpc/81UmK9LyrKBYggjGwWmTlQtANAihmkGKarMolasZPdpTyrUTjqpsYidTDLTv2zs/ KvQpqm9Pr3iZfjdyYxskrbsiJvLrEynxFIAuwrOqMQllKZ5ymYqJ60RxBbqtfMpLOQJX 9BoXJ2u9mC3jQEzSjjxJzs7diSeCkeIrWG6Xif42bpsDd+K1M9KaM3/6QPprPDN/+Ewq he4OnYXrWd6OpGXvUMmpXt9faX/uuCWFsrHxZNPz8mt2A/zpC/zWyXpyDiPgDrVLj0sB A9Lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b="qh1pi/Er"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ay3-20020a056402202300b00504b9aab6ecsi2971865edb.240.2023.04.11.14.22.48; Tue, 11 Apr 2023 14:22:48 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b="qh1pi/Er"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E0DC568BD38; Wed, 12 Apr 2023 00:21:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 29EF068BC13 for ; Wed, 12 Apr 2023 00:21:06 +0300 (EEST) Received: by mail-lj1-f179.google.com with SMTP id x31so5874932ljq.10 for ; Tue, 11 Apr 2023 14:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248065; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=VuUFd2YhQglJgl8BAPnMMg/77YPHCNLT0ZatP7/L1OQ=; b=qh1pi/ErUf2UZB5VHdSdXdBhDqM9JXBEvuX4tEauhlWRdEamn0k6QL50sK2N9//7q2 WmCK13pVtAmfHfKcbXi+YOK5e/ZoI1rzLImOmkPTxF+OeIZvo7BzONNd2sEHS9sc/5Z9 ymWmJ/8fc+LH3ITTAO3/W/NWdh6Z+tc1hgNNLovL5CxLnMsPMc4ptwchsXxX7rMlBK63 NDxIgx+dzpYckWJvWkz1GyfUeoxEvTWU/cT72W3d7F6ho1oHkd4Sxq7RoL09drYHNimK UVPpTQcEACHypfijnvB7K1mz8oQW9khVUUL3HimXyZOg0WMnWioN1tAmJ1OykHhreb7v Q5Bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248065; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VuUFd2YhQglJgl8BAPnMMg/77YPHCNLT0ZatP7/L1OQ=; b=Fqg7tGAvuQ/IKA4mf2grgVUDw5PNL8JnKJYtCvMI4BGTvF2jVasVe6tTa3AETHjbAX 54OcJC1JJiSoYs+XJ8Uzqur0CmMvtcWLdhf3zcukz5MoMzgf2ZQLxXcQLqPemxExzhM/ IxHZKk40A8+RROK0/TUu2NJAdPnkGW29gi5Lsl1HAZatYNhlZ6QjAN6FqYTotnvPV5qk rKHmUsilZVUcUSmW5FE1+C+7gvMITyjdqdZDinY38ch8lQlXcbRcuJQStS8Lkr0B6D2n z1bIF3iMmm73Uu0eIeXXqDTOTiTqA15GwlbwiBg8znMUcUDzc7C27qSE73ssdZUbqguD chpA== X-Gm-Message-State: AAQBX9elizWiWemtbVvx/Y7yCVcaldLY/LrxIQWGHT0W+TALfbhGyZJl UlcKKP1b/EReKQE013KMjzGav2hfSIA= X-Received: by 2002:a2e:9b13:0:b0:298:aced:6676 with SMTP id u19-20020a2e9b13000000b00298aced6676mr3257764lji.48.1681248065558; Tue, 11 Apr 2023 14:21:05 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:05 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:50 +0300 Message-Id: <20230411212052.159889-11-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 10/12] avcodec/libsvtav1: add support for writing out CLL and MDCV X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: NUm0IR4zL0O2 These two were added in 28e23d7f348c78d49a726c7469f9d4e38edec341 and 3558c1f2e97455e0b89edef31b9a72ab7fa30550 for version 0.9.0 of SVT-AV1, which is also our minimum requirement right now. In other words, no additional version limiting conditions seem to be required. --- libavcodec/libsvtav1.c | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c index 9174e2753c..1bbda0b705 100644 --- a/libavcodec/libsvtav1.c +++ b/libavcodec/libsvtav1.c @@ -24,9 +24,11 @@ #include #include +#include "libavutil/bswap.h" #include "libavutil/common.h" #include "libavutil/frame.h" #include "libavutil/imgutils.h" +#include "libavutil/mastering_display_metadata.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/avassert.h" @@ -146,6 +148,72 @@ static int alloc_buffer(EbSvtAv1EncConfiguration *config, SvtContext *svt_enc) } +static void handle_mdcv(struct EbSvtAv1MasteringDisplayInfo *dst, + const AVMasteringDisplayMetadata *mdcv) +{ + struct EbSvtAv1ChromaPoints *points[] = { + &dst->r, + &dst->g, + &dst->b, + }; + + if (!mdcv->has_primaries) + goto skip_primaries; + + for (int i = 0; i < 3; i++) { + struct EbSvtAv1ChromaPoints *dst = points[i]; + const AVRational *src = mdcv->display_primaries[i]; + + dst->x = + AV_BSWAP16C(av_rescale_q(1, src[0], + (AVRational){ 1, (1 << 16) })); + dst->y = + AV_BSWAP16C(av_rescale_q(1, src[1], + (AVRational){ 1, (1 << 16) })); + } + + dst->white_point.x = + AV_BSWAP16C(av_rescale_q(1, mdcv->white_point[0], + (AVRational){ 1, (1 << 16) })); + dst->white_point.y = + AV_BSWAP16C(av_rescale_q(1, mdcv->white_point[1], + (AVRational){ 1, (1 << 16) })); + +skip_primaries: + if (!mdcv->has_luminance) + return; + + dst->max_luma = + AV_BSWAP32C(av_rescale_q(1, mdcv->max_luminance, + (AVRational){ 1, (1 << 8) })); + dst->min_luma = + AV_BSWAP32C(av_rescale_q(1, mdcv->min_luminance, + (AVRational){ 1, (1 << 14) })); +} + +static void handle_side_data(AVCodecContext *avctx, + EbSvtAv1EncConfiguration *param) +{ + const AVFrameSideDataSet set = avctx->side_data_set; + const AVFrameSideData *cll_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + const AVFrameSideData *mdcv_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + + if (cll_sd) { + const AVContentLightMetadata *cll = + (AVContentLightMetadata *)cll_sd->data; + + param->content_light_level.max_cll = AV_BSWAP16C(cll->MaxCLL); + param->content_light_level.max_fall = AV_BSWAP16C(cll->MaxFALL); + } + + if (mdcv_sd) { + handle_mdcv(¶m->mastering_display, + (AVMasteringDisplayMetadata *)mdcv_sd->data); + } +} + static int config_enc_params(EbSvtAv1EncConfiguration *param, AVCodecContext *avctx) { @@ -256,6 +324,8 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param, /* 2 = IDR, closed GOP, 1 = CRA, open GOP */ param->intra_refresh_type = avctx->flags & AV_CODEC_FLAG_CLOSED_GOP ? 2 : 1; + handle_side_data(avctx, param); + #if SVT_AV1_CHECK_VERSION(0, 9, 1) while ((en = av_dict_get(svt_enc->svtav1_opts, "", en, AV_DICT_IGNORE_SUFFIX))) { EbErrorType ret = svt_av1_enc_parse_parameter(param, en->key, en->value); From patchwork Tue Apr 11 21:20:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41101 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1126224ejb; Tue, 11 Apr 2023 14:23:01 -0700 (PDT) X-Google-Smtp-Source: AKy350YnBbj5EMuUB4t6iHqSdopVJfywWFeghxbJ9rwL+VAyCzEKs/w7y3YOV90E0zpYEQANSDOt X-Received: by 2002:a17:906:eb45:b0:94a:937a:58f1 with SMTP id mc5-20020a170906eb4500b0094a937a58f1mr7823611ejb.1.1681248181382; Tue, 11 Apr 2023 14:23:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248181; cv=none; d=google.com; s=arc-20160816; b=Z51xbAUFTi9Nm8HkAUTtSV5gZNET5sFxRrEKpN1QZJCHLfEyz11i6CT+zDjcbPPOUw BXgPAB93h4c6fcuSmB69Fxs9ZDR4MrLOTMOavH4quI1vxkEXP4IiAm9ObCoGRI+bk2cB YnGePoQiMWrQA18PQnUryk3mQ5oX3yneuoQ4kdl2zJlf18RutO7MGDuVpBNObBW2q8Sz /jGmVgnj3b4m4xswLgH4ArgW8i+q56Z4R8bUL2Aoc+be72hiu0yVU/Ea0Ufvi7GRh82z BymWGCro3s3G/ITAEriN/6Gz1bq4ZYxk+fERU4UzOTYz/rzj/rVh762UKENFRSUUe/2X Uqbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=cu8Au9QdH5Wl/ePEa0Cg7POZhyLWLrGJ97E5Jyp8p90=; b=GTVErnsrHzEO12hIngeNDpX71cglh6g9KY+upXNsBtif2e1928k+SvL9rE50QkYb1V OvH7f+fk+qLZcOELzSN76lP8ieZT4KmKzbybuMzLidYQ1YkFbp1q02fbZ9gff7uXSReY H/pwNsyyQSNbu3et6kKAI8r74GIX4JSbLJoxzfx9NluOXA7HkcjrQoyOYVlQoYqFw/ts 11B9R8OZAjM2/pay5KMsTxd50mJrH5jnUGkovSJHNLaM61WUOoRutwKfy+pQzMYfPE9V HRqwz2ZGgQnJjL5hOA0lFmxcSKo6qJT4CLAR+URvZuab12DzvmlEsx1cEpMofZLDDvxD p3PQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=fsJ754jn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id z2-20020a170906270200b00946f79be789si1301427ejc.985.2023.04.11.14.22.57; Tue, 11 Apr 2023 14:23: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=@gmail.com header.s=20221208 header.b=fsJ754jn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E80C368BD47; Wed, 12 Apr 2023 00:21:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E39CF68BC86 for ; Wed, 12 Apr 2023 00:21:06 +0300 (EEST) Received: by mail-lj1-f176.google.com with SMTP id b33so5571436ljf.2 for ; Tue, 11 Apr 2023 14:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=DqouW/mttYpdnVj1KFNE7/ofplabP1dm2S0Ys9Iegfs=; b=fsJ754jn95C0OcRB5NJAAgP2z9NHnG1bp59rH1Pqn5POmc6ZpmN4nGf4LxQD+JsZL4 aJRlYcFLiu7al6nCZBXX1qlrTpbU/Q/8oWLPSUlzOsWxFwKzXEgptd4/Cn1ib8a2GnlD 1tMJcvEEHTRR22dA6knCaGDoK6A7SyKFvbW+MbMTyoqfhAl96hpdWoh6OVPi+t82xsPE HO18nvs0hd50HPKD0Y6IM/Co10dcS7iwsnneNPRhNcvHr9jsTNoNBiUe/PpoVNVP6sfr s1O7nbNgdITGO/WPju3K8zSjOmVf2hVwuDAIHU6iHj3oXEGX2m7mPw17IyNJVuvCCsmX Hfvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DqouW/mttYpdnVj1KFNE7/ofplabP1dm2S0Ys9Iegfs=; b=oREaw+Pnltmzipij4M5Zty8Vdu/aaoeTa42he545hRYTSH/iM1KpqUKrxLG4F+njrx yLxVyB8fKJ7+1guZy27FFDLDIxbKUtgT6sEtEFAYkoRndSAydXnWW3U+6vkSOwuJBQyG fx5RQ7hjARdngfNPCKLtZFTpIAeiItvvIiCb3hIlfZgw5sJCHKYfSXt3GLDDo1dLdfHB 98MyhOrXZdt8hxgJbEX/PetCPey7cPLNpnWveAgIsq3i6bfSoIxNXFRbzuypl5BrbR5g kADKM0vZeajL30xIYZoIvCFJozCfvcCr6gMaxxU/MIFo75nhOvfr+9M8vqdkNrKiwtOY 41jA== X-Gm-Message-State: AAQBX9eFusrsyPKA85GpTR/4DeTOWZ2+TuTskCJdDf5lo0dS5alGTmoP UyIVIhmz8fWAtL52tBzHo96XFZKpmIY= X-Received: by 2002:a2e:8909:0:b0:2a7:98f8:fc4f with SMTP id d9-20020a2e8909000000b002a798f8fc4fmr210323lji.53.1681248066002; Tue, 11 Apr 2023 14:21:06 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:05 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:51 +0300 Message-Id: <20230411212052.159889-12-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 11/12] avcodec/libx264: add support for writing out CLL and MDCV X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ldQJkaPPInuS Both of these two structures were first available with X264_BUILD 163, so make relevant functionality conditional on the version being at least such. Keep handle_side_data available in all cases as this way X264_init does not require additional version based conditions within it. --- libavcodec/libx264.c | 79 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index cfdd422236..94f93e4559 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -25,6 +25,7 @@ #include "libavutil/eval.h" #include "libavutil/internal.h" #include "libavutil/opt.h" +#include "libavutil/mastering_display_metadata.h" #include "libavutil/mem.h" #include "libavutil/pixdesc.h" #include "libavutil/stereo3d.h" @@ -755,6 +756,82 @@ static int convert_pix_fmt(enum AVPixelFormat pix_fmt) return AVERROR(EINVAL);\ } +#if X264_BUILD >= 163 +static void handle_mdcv(x264_param_t *params, + const AVMasteringDisplayMetadata *mdcv) +{ + int *points[][2] = { + { + ¶ms->mastering_display.i_red_x, + ¶ms->mastering_display.i_red_y + }, + { + ¶ms->mastering_display.i_green_x, + ¶ms->mastering_display.i_green_y + }, + { + ¶ms->mastering_display.i_blue_x, + ¶ms->mastering_display.i_blue_y + }, + }; + + if (!mdcv->has_primaries && !mdcv->has_luminance) + return; + + params->mastering_display.b_mastering_display = 1; + + if (!mdcv->has_primaries) + goto skip_primaries; + + for (int i = 0; i < 3; i++) { + const AVRational *src = mdcv->display_primaries[i]; + int *dst[2] = { points[i][0], points[i][1] }; + + *dst[0] = av_rescale_q(1, src[0], (AVRational){ 1, 50000 }); + *dst[1] = av_rescale_q(1, src[1], (AVRational){ 1, 50000 }); + } + + params->mastering_display.i_white_x = + av_rescale_q(1, mdcv->white_point[0], (AVRational){ 1, 50000 }); + params->mastering_display.i_white_y = + av_rescale_q(1, mdcv->white_point[1], (AVRational){ 1, 50000 }); + +skip_primaries: + if (!mdcv->has_luminance) + return; + + params->mastering_display.i_display_max = + av_rescale_q(1, mdcv->max_luminance, (AVRational){ 1, 10000 }); + params->mastering_display.i_display_min = + av_rescale_q(1, mdcv->min_luminance, (AVRational){ 1, 10000 }); +} +#endif // X264_BUILD >= 163 + +static void handle_side_data(AVCodecContext *avctx, x264_param_t *params) +{ +#if X264_BUILD >= 163 + const AVFrameSideDataSet set = avctx->side_data_set; + const AVFrameSideData *cll_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + const AVFrameSideData *mdcv_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + + if (cll_sd) { + const AVContentLightMetadata *cll = + (AVContentLightMetadata *)cll_sd->data; + + params->content_light_level.i_max_cll = cll->MaxCLL; + params->content_light_level.i_max_fall = cll->MaxFALL; + + params->content_light_level.b_cll = 1; + } + + if (mdcv_sd) { + handle_mdcv(params, (AVMasteringDisplayMetadata *)mdcv_sd->data); + } +#endif // X264_BUILD >= 163 +} + static av_cold int X264_init(AVCodecContext *avctx) { X264Context *x4 = avctx->priv_data; @@ -1049,6 +1126,8 @@ static av_cold int X264_init(AVCodecContext *avctx) if (avctx->chroma_sample_location != AVCHROMA_LOC_UNSPECIFIED) x4->params.vui.i_chroma_loc = avctx->chroma_sample_location - 1; + handle_side_data(avctx, &x4->params); + if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) x4->params.b_repeat_headers = 0; From patchwork Tue Apr 11 21:20:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41102 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1126293ejb; Tue, 11 Apr 2023 14:23:10 -0700 (PDT) X-Google-Smtp-Source: AKy350YJ4QRkFPbh9Nyja3e0pb6FaI2Du+/8DYnrDUyLO+IdcIxvXM5NkgEjFuDhI6A4xB52xcrG X-Received: by 2002:a05:6402:2032:b0:504:70d7:e63f with SMTP id ay18-20020a056402203200b0050470d7e63fmr3539635edb.20.1681248190515; Tue, 11 Apr 2023 14:23:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248190; cv=none; d=google.com; s=arc-20160816; b=qRzsI8BwAUWYnfjLj21JJN3dRKbWGbzEnKkcrv6cDYeHgmkieccXF03qeqR5nacQSf kq7QVHtdHFA0JYJb6JCR7dAQNEUvvut6ZzVEb+/vTBgFBAoSA3HRba9lp3HC0chTkQ3V gxcGQQEUai3nyROFg+eVVib2GPb5tZ1/rZWkl3UckntHek5AiicDO6R3OPwyIei+Shuk nQubpTHZGXaGgx5BqoJhEZuiZ9X91CPjgFSyb+uonBeaJTCCO4QElD6HJdR4nFVT9+Hp N+0S11igZx6RsJWQ+R6DBUzZ9w6x4MRGXFuT8B9JkbY/d1UYeNWm8zhmjO2xQbiK5pYv 0Wdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=TUbW8Naee7WXvvvM/X1mpZnp9urlOVA7JODp7ET8A4E=; b=Zbi87pRaTU/Yg+F5B9KRWNh5DQb6CAmZSt5tCEFeBIwyl4Wv2GQdM1fKuVJdMr7Ow9 7NWNMO8umW2UBCWzyPImQV3hKIszHhKupyOil9ooTqe/tJ6yvDkDLBzl1m/2PuAFU9WM RXBrPifnidsD6dDlsHtxTwGYgsU2gSe9TOoqC7p3YlQoEMGbut6wsKsE1Il1UFSZYrpT Fy2dAg4/K4yCqI9pQPAwL+G338pjWhMCxLuiB0wBILGwMVjrRkOUFPFJKWu93pfolrvp f7px2WO//yl+hsF1NXzRVvCzoqbaTlEfa75LI7rGwaHkPeXtiO6WDqbTkN5psVqCzhzw eXmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=pD6jPxw7; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d23-20020aa7c1d7000000b00504681c62bfsi11095189edp.225.2023.04.11.14.23.06; Tue, 11 Apr 2023 14:23: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=@gmail.com header.s=20221208 header.b=pD6jPxw7; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D652868BD6B; Wed, 12 Apr 2023 00:21:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 381BF68BBEE for ; Wed, 12 Apr 2023 00:21:07 +0300 (EEST) Received: by mail-lj1-f170.google.com with SMTP id b33so5571444ljf.2 for ; Tue, 11 Apr 2023 14:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681248066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+ipIT9V1vsRg5m0MHfrDn1IxbMgxY/ZOXaTvWd57QTk=; b=pD6jPxw7SZ3qfh+Pf+OAkdxdk+4rm/ehK5A6G9qlBsE+q54BDxCxBscO8tSWIp7beZ piYjuxjctSAqZ9ig4lG1Hg7Yul63BMiUoSxjabJUzMmzBTedjFX0Rik+Z7yd44WZC4N0 3INHTGw2FRa4rYgGayWmGloUbYsGH2qmMzRG/r0kApZ+cmhnExgq/zV7AI8k9E+pi0Xz JOKnbjYN09YhFNdeGvPX69U5YuZSqKI7lEAxDVbCSmX389FMj77i/NlzCGvtcSwACgLP e8c9tsK27Ihyxs1P/fQnu+u8CUMNlNSSNaE+xWTHPoeIgcn0ceAMV8yUk/mQvOmCtRDI XCmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+ipIT9V1vsRg5m0MHfrDn1IxbMgxY/ZOXaTvWd57QTk=; b=MqbVOWL+LN/RVuyJkHI7Fv5MkYHkci59hVtin+sfAL4azLjGXzAMiwDnJAmOyl/T8u SPmxqoXKyN9y5niwUhTzDAw7Jh0dWf97F0VJ8z6YXAzrIHEku5JFjo2nEPlEMohDnAUB 4xEsnzQSMdqtR7pyU73S0uf8FPzo5P3bCYv8FGJaO2laNP42UppJ7RJ1oPEctULqUB3h c+EhqmoL56ELHpnhGBHKxNGahV5QwIzRIHZ57AyqWBfIk4IUo5oeiB8GlAeiny28iJyX rKQCj0NWw/4mVgWfRsU4uQX7hvzY54X3gk7O797nzlhj41WDat4xw23zmYxJv90TcSJl ZTVQ== X-Gm-Message-State: AAQBX9d8PVPFiQe2cRJIqG1uhmE0PiPifKpWzrLTv3AEJVvG1A89VEjI 0N44wWJQXZ6QxGnUmIr0Bwr+qHn85GM= X-Received: by 2002:a2e:994a:0:b0:29b:d488:fd87 with SMTP id r10-20020a2e994a000000b0029bd488fd87mr999920ljj.23.1681248066433; Tue, 11 Apr 2023 14:21:06 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id w21-20020a2e9995000000b002a7778bd271sm1195055lji.20.2023.04.11.14.21.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:06 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:52 +0300 Message-Id: <20230411212052.159889-13-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230411212052.159889-1-jeebjp@gmail.com> References: <20230411212052.159889-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 12/12] avcodec/libx265: add support for writing out CLL and MDCV X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: H2HItaiKzBji The newer of these two are the separate integers for content light level, introduced in 3952bf3e98c76c31594529a3fe34e056d3e3e2ea , with X265_BUILD 75. As we already require X265_BUILD of at least 89, no further conditions are required. --- libavcodec/libx265.c | 82 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index 420d0953af..4378c04996 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -28,9 +28,11 @@ #include #include "libavutil/avassert.h" +#include "libavutil/bprint.h" #include "libavutil/buffer.h" #include "libavutil/internal.h" #include "libavutil/common.h" +#include "libavutil/mastering_display_metadata.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "avcodec.h" @@ -179,6 +181,79 @@ static av_cold int libx265_param_parse_int(AVCodecContext *avctx, return 0; } +static int handle_mdcv(AVCodecContext *avctx, const x265_api *api, + x265_param *params, + const AVMasteringDisplayMetadata *mdcv) +{ + int ret = AVERROR_BUG; + static const char *option = "master-display"; + AVBPrint buf; + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC); + + // G(%hu,%hu)B(%hu,%hu)R(%hu,%hu)WP(%hu,%hu)L(%u,%u) + av_bprintf( + &buf, + "G(%"PRId64",%"PRId64")B(%"PRId64",%"PRId64")R(%"PRId64",%"PRId64")" + "WP(%"PRId64",%"PRId64")L(%"PRId64",%"PRId64")", + av_rescale_q(1, mdcv->display_primaries[1][0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[1][1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[2][0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[2][1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[0][0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->display_primaries[0][1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->white_point[0], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->white_point[1], (AVRational){ 1, 50000 }), + av_rescale_q(1, mdcv->max_luminance, (AVRational){ 1, 10000 }), + av_rescale_q(1, mdcv->min_luminance, (AVRational){ 1, 10000 })); + + if (!av_bprint_is_complete(&buf)) { + ret = AVERROR(ENOMEM); + goto end; + } + + if (api->param_parse(params, option, buf.str) == + X265_PARAM_BAD_VALUE) { + av_log(avctx, AV_LOG_ERROR, + "Invalid value \"%s\" for param \"%s\".\n", + buf.str, option); + ret = AVERROR(EINVAL); + goto end; + } + + ret = 0; + +end: + av_bprint_finalize(&buf, NULL); + + return ret; +} + +static int handle_side_data(AVCodecContext *avctx, const x265_api *api, + x265_param *params) +{ + const AVFrameSideDataSet set = avctx->side_data_set; + const AVFrameSideData *cll_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + const AVFrameSideData *mdcv_sd = + av_get_side_data_from_set(set, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + + if (cll_sd) { + const AVContentLightMetadata *cll = + (AVContentLightMetadata *)cll_sd->data; + + params->maxCLL = cll->MaxCLL; + params->maxFALL = cll->MaxFALL; + } + + if (mdcv_sd) { + int ret = handle_mdcv(avctx, api, params, (AVMasteringDisplayMetadata *)mdcv_sd->data); + if (ret < 0) + return ret; + } + + return 0; +} + static av_cold int libx265_encode_init(AVCodecContext *avctx) { libx265Context *ctx = avctx->priv_data; @@ -333,6 +408,13 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx) return AVERROR_BUG; } + ret = handle_side_data(avctx, ctx->api, ctx->params); + if (ret < 0) { + av_log(avctx, AV_LOG_ERROR, "Failed handling side data! (%s)\n", + av_err2str(ret)); + return ret; + } + if (ctx->crf >= 0) { char crf[6];