From patchwork Mon Mar 20 23:34:03 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: 40743 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2166274pzb; Mon, 20 Mar 2023 16:35:43 -0700 (PDT) X-Google-Smtp-Source: AK7set8cgVxWVhogFjCylIOnl7OXYmkOd33OQ4k3OVR5YTJAtOnMmsVJ+/ITTqVu2RmOcbupgO+N X-Received: by 2002:a17:906:ce53:b0:888:456a:cb76 with SMTP id se19-20020a170906ce5300b00888456acb76mr760804ejb.70.1679355343738; Mon, 20 Mar 2023 16:35:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355343; cv=none; d=google.com; s=arc-20160816; b=h309AQHBq684y3bFCIe4a3YNQ68nhl9NJ131obMRT5XSFhqWHs6g0/LqytiDm8nxwM BmgIRB4ed/fGBKuTa+0Jr3CW2gRxnOaib4pBpuPE1BLUwzhPWKUaaViCZtD7BRu3t0LB T+Ehs5EJLMJA+6zHbnxZob4e+nKW5VKnJAy+zQaVmAUumRitJjqy+UqhWyhfPei8aK6E IImy1loTTpN6+eyfgPQeB4VuvWUjfBBRk7DZadyrHHnhWJCi0pYEbivDSxrMJ26gyl28 zs9LaU8g4VZe2Ewib9oqjG0rQWwXnb5dG1Tk6vTc/+f2t5P8T4KssrnOxEXqHyGqc/hi jRXg== 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=jAnZDvWq0V2Szsq2pcWkdy1Wjdev/01mrAFoLrIIT/U=; b=Mb61VKliDDGfkV6d1UbSREjZFB/VAs18Ys4rAFuwefWFVz5JKWwbjxlfn4YFQv9eFF 1S1qgWtD3WFSUOsk6tNVgdrZguFqxejivNySNBOBZ2d8C7Z87JbQqsxhnr9B6H94Oo9q 8kkxmNixr08RztqZdjKSM41S6ZEndgoUlMQPrcVxFunMwqrQU9lJBwQM38gl5eXphZe0 VsuT5xCPa2stlXkehMK5q9KUb18vv77A+i5Jwd3nVWUfARldq8tcBOkvS3aM4JNp49RI RCXB6NYO74tEIp8vyoSZaunrFSkkEkRpbjKix+LH+hYTl1AUYVjVaX6+YykJAt/kOmu/ bZiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=BbnNDxHQ; 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 kj7-20020a170907764700b0092d01b8d3aasi11354994ejc.808.2023.03.20.16.35.43; Mon, 20 Mar 2023 16:35: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=20210112 header.b=BbnNDxHQ; 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 0B81F68C607; Tue, 21 Mar 2023 01:34:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B07BD68C5C2 for ; Tue, 21 Mar 2023 01:34:19 +0200 (EET) Received: by mail-lf1-f52.google.com with SMTP id bi9so16971225lfb.12 for ; Mon, 20 Mar 2023 16:34:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355259; 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=KXaft0q7HTLTnqLTqKKWcumjEw7waIyWWZ/AAC1m16M=; b=BbnNDxHQxkfstX6kVjS+ywVv+5sjBJi7q2Wyk05lBC0C/lFZTbSaoPkzryByAWiVNV Thph3Lt6Z2/fouP/DKD0NOGvPTWvNr/x6Xh+ZFdy6t3X7JKpeES/Nm5f7T6L/rNgauLe 1FJAzOTrVnHbZCW6ScmJ1irUKr+cMYnV4UTi52v5QNVcAByGy4hOB36ExyWxgzc49OWR EwcjdLAEtrt5YGYq82OyAPWVeCt3VlQ9jtrT9L4rv1LSs575OZ0D470AO0yjEmA2z3c6 qYsHYzXhhRnk59Y1ptTuo6Y73ApaGDR9acqERzRbh2DzQdCubqk0rGDhWnCqT5eEnNqy yApw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355259; 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=KXaft0q7HTLTnqLTqKKWcumjEw7waIyWWZ/AAC1m16M=; b=e+bHHIqLHXJzJH/78UCFVIFCtPVIACnm+b/DwAuOLC51Ab/FcjPx1JKQWiKksxkF4w HjoL93iHMW+AL5nqE/RWZ3q3VIF0Mx4T8mD6hz0cilIEJFKyauWJKmPUQADdopWi3YAu XEjQFbJOaPfP5NrXxWED/HonTT31Qdese6WaT8dN4pEgBiW63+psUSRMfV7qFFVDHjQU o8OkHbO0cvGZaT7qR8qJ8MKRxyO939CqQrNBDxhFlUhTap1MqexSO5HEKNp2TGY22IU3 l/x/4Fwd3cpA5ienfIL5CqgT3oCjWsNhji0uzwBKCPPBKwblLeCABbFJTDqXPRrzlVg6 og4w== X-Gm-Message-State: AO0yUKXa71LNyJ+/Q7vGCuqhUMmoIeOKsFAWm6fWTgpJHSbnv1uSpIpY 3u2auXpzfGv7wZvX93RYU0G5tKMXSZU= X-Received: by 2002:ac2:446e:0:b0:4dd:abb9:dae4 with SMTP id y14-20020ac2446e000000b004ddabb9dae4mr174422lfl.25.1679355258925; Mon, 20 Mar 2023 16:34:18 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id j19-20020a19f513000000b004e84b79de9bsm1900701lfb.254.2023.03.20.16.34.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:18 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:34:03 +0200 Message-Id: <20230320233408.134255-10-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320233408.134255-1-jeebjp@gmail.com> References: <20230320233408.134255-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 09/14] avcodec: add private side data set to AVCodecInternal 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: Gy9+FOJH0r9T This allows configuring an encoder by using AVFrameSideData. --- libavcodec/avcodec.c | 1 + libavcodec/internal.h | 7 +++++++ libavcodec/options.c | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index c110b19e08..3faabe77d1 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -403,6 +403,7 @@ void avcodec_flush_buffers(AVCodecContext *avctx) avci->nb_draining_errors = 0; av_frame_unref(avci->buffer_frame); av_packet_unref(avci->buffer_pkt); + av_side_data_set_wipe(&avci->side_data_set); if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME) ff_thread_flush(avctx); diff --git a/libavcodec/internal.h b/libavcodec/internal.h index f21101752d..c658e97313 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -168,6 +168,13 @@ typedef struct AVCodecInternal { * a boolean to describe whether context is opened or not. */ unsigned int ctx_opened; + + /** + * Set holding static side data, such as HDR10 CLL / MDCV structures. + * - encoding: set by user + * - decoding: unused + */ + AVFrameSideDataSet side_data_set; } AVCodecInternal; /** diff --git a/libavcodec/options.c b/libavcodec/options.c index f8fab164fb..acd3472fde 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -184,12 +184,17 @@ AVCodecContext *avcodec_alloc_context3(const AVCodec *codec) void avcodec_free_context(AVCodecContext **pavctx) { AVCodecContext *avctx = *pavctx; + AVCodecInternal *avci = NULL; if (!avctx) return; avcodec_close(avctx); + avci = avctx->internal; + if (avci) + av_side_data_set_wipe(&avci->side_data_set); + av_freep(&avctx->internal); av_freep(&avctx->extradata);