From patchwork Mon Mar 20 23:33:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 34901 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp2165738pzb; Mon, 20 Mar 2023 16:34:26 -0700 (PDT) X-Google-Smtp-Source: AK7set+xis3Y3D9TyC+pzIdpmx4cTlwAUmiPzgvcnRzSW6sd0Sy+ZA8MJo/bswTMxMVRo8YQXx6f X-Received: by 2002:a17:906:7c4a:b0:92d:9767:8e0a with SMTP id g10-20020a1709067c4a00b0092d97678e0amr929159ejp.13.1679355266515; Mon, 20 Mar 2023 16:34:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679355266; cv=none; d=google.com; s=arc-20160816; b=iJne1E/pA8hV+CralXi+VLDkucz6mxQIJiGhvcIyU9iWnF34lhM0MvOLXaFzoLRWT3 EDE5REG55sFDYIUwJqsAiQwJuLPTvDQxlJsiKg0PAFUsqbrN/iX5JbixgP9vzjY5GqG2 h5q6HPVAtgy/l5nRWO2fIlnjNhp8R31cbt1kBC9u6/KDqi9D/w0cJeWvPPfv5uu9RUQk OwxibT9i39AwzyOIDu71onnejMvNRgomMcu9L+e0LNlD8KldZ9lE8Ukcjr/ayJACaAr6 cPAfwOEfurEh+bMdHpr8NgbPe7n+0YWuOSGFh0HlqcEzEwkaPvN1ZFuQvDb+mPDJlV/x +D4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=ELzX5s9REBiTiYd5gp+0bORHEEG6laxslq60FAm1chk=; b=vH20PJY7zKoH5vGq9TJzM5MkVNWePOT/MEMxvjlZozpj+bofK/dICbHo5FxJdZAZh7 7IvSnlk+fE/z8u5aUW/2fJsQjcdiuoGAwNJROmOXGuLYRDh+6kn4KkHfD4+23e4NbuNs x1+O96rGq4fJqIU9zC731aSIWu1PuOIF638Rj6DCUq0aHlc8+hcbBJumDjM518P46NVE qJWOR5VRd1XriRr5OaRD9Vc6xDuygCWOQssQP5t98u8afHqxg2LqH1pgNfhwnLHf13ge ceZBOV8xVh72c4VaU6ukYbJ6o3W0fs6EgLug4fzVm89jVYx0uEqfrVvOT1iUo9McUaOr ohNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=pY41dqhu; 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 by27-20020a0564021b1b00b00501dd7cb827si623edb.285.2023.03.20.16.34.25; Mon, 20 Mar 2023 16:34:26 -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=pY41dqhu; 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 7543068C5A1; Tue, 21 Mar 2023 01:34:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 92F4C68C4B6 for ; Tue, 21 Mar 2023 01:34:15 +0200 (EET) Received: by mail-lf1-f51.google.com with SMTP id y15so16988179lfa.7 for ; Mon, 20 Mar 2023 16:34:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679355255; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=0LKLWswSPwSUNAxtBFqnGQtWOtsebkbgupq4XrOF5uE=; b=pY41dqhuKl/IAi3v772KC+2Z0fbpsP1FJjMg1081BqOPpP0rb2qIrxvL5V1yvzW19o XSdi5KW9j3Vaw7gBWRDqgT4GJPL7roTsseC0yK94UCu2wKZSGQhQqKdoQpToSyoIku8v 3qxwcgbcc8WAnhGIRSfStP0iOvs8ypvs95jOMc0bqmyPik2ggWX+Wgr7bRgzrPQgYPZX aLuZstugrTEUWxkJ90zBbD3u6iMgHZM1OI4gtP5oMfxV2p/Rul4JHh/euSJoqLT420fw LSd0NNV+krfCdLChMRRnpy2gqTNtuU9DKZEJXhzhSvV1SO/y8nbnyHMpRcDID87fxJuj 0+GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679355255; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=0LKLWswSPwSUNAxtBFqnGQtWOtsebkbgupq4XrOF5uE=; b=5c0uX/IFQ4ERCc7on6eOAdkMRMf+svUul258KYffGZWWiLzU0zb6Q0j7CWWHSmxQrr RbPJP0PJAX1GlmTcpeqN+N2cfeCiS77ocowx1m49qGGn5g3qkzXeMaqonlXWoQwsw2M7 rsz6jFyCqHm3XwSt4PCugW9pHQySgxKJ3iGz+pELs68DEnVAGYWiH8Czi0HVLdf0R03c gwpHqbH2VtQXfkeA9Nw6WX0NgX3cN1PfqMHlgex0CSpT1Q09Ldxbk4cDL80LsqFVFLM4 SKbTicbl3EX+1vwKY/NQI7tGJBGwi83wBAR3UWc1auipOsx8hg0jpm0bpX6VUV6HfTN1 IP4Q== X-Gm-Message-State: AO0yUKUDHfOoPyEep5AjrECKJdh6qP1J4TVVDhpvMUyzmckyGS6DPx+i 46eClFHpVbR3r5jFD8J2YmfJd7j4dNQ= X-Received: by 2002:a19:f609:0:b0:4dd:a76e:dfff with SMTP id x9-20020a19f609000000b004dda76edfffmr200851lfe.23.1679355254650; Mon, 20 Mar 2023 16:34:14 -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.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Mar 2023 16:34:14 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Mar 2023 01:33:54 +0200 Message-Id: <20230320233408.134255-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v0 00/14] encoder AVCodecContext configuration 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: +QYKNKBEYUFo This patch set I've now been working for a while since I felt like it was weird we couldn't pass through information such as static HDR metadata to encoders from decoded input. This initial version adds the necessary framework, as well as adds static HDR metadata support for libsvtav1, libx264 as well as libx265 wrappers. The first patch, poking at loop counters, was already posted earlier separately, and only part of this set in order to make the patch set applicable on top of master, as the patch had not yet received any ACKs. An alternative to this would be to make encoders only properly initialize when they receive the first AVFrame, but that seems to be a bigger, nastier change than introducing a private AVFrameSideDataSet in avctx as everything seems to presume that extradata etc are available after opening the encoder. Jan Jan Ekström (14): avutil/frame: move counters utilized in loops to their scope avcodec: move AVCodecInternal allocation to avcodec_alloc_context3 avutil/frame: add AVFrameSideDataSet for passing sets of side data avutil/frame: split side data list wiping out to non-AVFrame function avutil/frame: add helper for clearing out side data sets avutil/frame: split side_data_from_buf to base and AVFrame func avutil/frame: add helper for adding side data to set avutil/frame: add helper for getting side data from set avcodec: add private side data set to AVCodecInternal avcodec: add function for setting avctx side data ffmpeg: pass first video AVFrame's side data to encoder avcodec/libsvtav1: add support for writing out CLL and MDCV avcodec/libx264: add support for writing out CLL and MDCV avcodec/libx265: add support for writing out CLL and MDCV fftools/ffmpeg.c | 12 +++ libavcodec/avcodec.c | 49 +++++++-- libavcodec/avcodec.h | 12 +++ libavcodec/frame_thread_encoder.c | 7 +- libavcodec/internal.h | 12 +++ libavcodec/libsvtav1.c | 70 +++++++++++++ libavcodec/libx264.c | 79 +++++++++++++++ libavcodec/libx265.c | 82 +++++++++++++++ libavcodec/options.c | 25 ++++- libavutil/frame.c | 161 ++++++++++++++++++------------ libavutil/frame.h | 38 +++++++ 11 files changed, 474 insertions(+), 73 deletions(-)