From patchwork Tue Apr 11 21:20:40 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: 34910 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a17:907:3203:b0:94c:9d7a:e065 with SMTP id xg3csp1125601ejb; Tue, 11 Apr 2023 14:21:31 -0700 (PDT) X-Google-Smtp-Source: AKy350YDCGJeQ4hnq4RdF17LDFPb/ZOhg84uAE6YEQYRBxdRqBHwuup+7Y1lAT9xLJ3BOaJquqky X-Received: by 2002:aa7:cd50:0:b0:4fc:709f:7abd with SMTP id v16-20020aa7cd50000000b004fc709f7abdmr15263923edw.2.1681248090986; Tue, 11 Apr 2023 14:21:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681248090; cv=none; d=google.com; s=arc-20160816; b=Fe+NkO8MmK3OybKE+VvzFTn0O8ClvXTasJs8scZJ6iCn4D4Cea/9J3sUXeAUNQEUwQ iTQdyEdyfeUtIMqyg9FGux+boCN0nh+yVTslepaDo0Rn9zsBfscWOnI7015U7UdWvINM MwiJ+HLRT/kFYKmuzF4JfN0kqguFmKjaHkGX2eqJXcJw+1qQE0KAr2y+bVKjum7z0LXF yGzGMlwhdvMWvl38/BEeE+AJzBC4k2BfihlzY/k8g8nT5I8uP9OYe0d1mFMk2PRfEnIF 4uOaTVkxxFDaxhlfwGbjg+2rgEzEyf2DrFauPY8GTlipsTTa2EB78pgcvLre8WTnh7Kk FSMw== 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=4ZjeQb8foZXtHJULvgJAR5R3pVC89RRSzekPTmBCPoo=; b=qz/LWKgYuuAgSKELcCD/iysf2I7haRF46nlf1+FeHgBhWWAXVxbHOF8SZwrgTiFM8q KHZVNRHgt+QrodI12SS0yrTKvGihf9tbzFF/qBCG0Xu/SGYHxhO0YVK+0inBJB3AGBV+ uV+zgUt7mGTPuDTyP9mw5UfEv5Z6RgOowG5Z7WwV5Hq/XpoCvMIF/9DOrpXwkLfHzCKe UpdTLYrn75bkAbU7pUgHX4vbP4a3VRri73ztEgMDeS6p9AuEuZdyPJiFu8iOu0vtACOn JCM5gPlhZo3bvw3Ex/dkZeaXzF1KgN+i6s9BtvxDCBWWRdwi3kiJ2Wax40aXPdsXqtyz Bh4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=EHpaNvcr; 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 o6-20020aa7dd46000000b00504aeb03322si4381697edw.472.2023.04.11.14.21.13; Tue, 11 Apr 2023 14:21: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=EHpaNvcr; 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 1F57E68BB66; Wed, 12 Apr 2023 00:21:09 +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 640A7680A4D for ; Wed, 12 Apr 2023 00:21:02 +0300 (EEST) Received: by mail-lj1-f170.google.com with SMTP id a3so4399856ljr.11 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=1681248061; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=MI/iTHRDEcN1M06/zCiT3urVMxqN0k5pE/sKEppowgE=; b=EHpaNvcrWoazQNgafAjX8pF5OJGSN67onuNWJYdl/n+tmBVYGYB01mFBcKBLj2p3nz 9oaDAXkdJ8pRnr7g0DRJ/9yf9f+i/SJ8dShBzjyRM35o5mVwFhnVU8NYXXSwfdKmEP1Z IJ+3bFEqWtfqq9sIWgrBRRcDLazukfI0MFEZeSiiZ8M+uC9uIEKiT0trggTX3XXkUiM4 uxvixzYEoueJCep+tDLEN3Uw2PVQNCYga9pcKqxprAiUhp5Bugx1vaR+sNz3Y4zgbCKQ Z2cqD6XXSH/oGky+PRGB+l1E9v+7q/DSZNWge0RbMyqEnCuGZY3/V90O16hyTBQEZ7Vg eC0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681248061; 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=MI/iTHRDEcN1M06/zCiT3urVMxqN0k5pE/sKEppowgE=; b=Y3LYNLdo+gdOshjLvAvpvt1sPgax3HPVezrhKGIhvzbr2tfMabRjS7qgTvAxEPhhgM rs085I5RePKWQnALR0DU+00d3/T9r7j5xGv8hpJCXN99+TaxYCFQuHPI5H50Y2LJnWtP zgNpt5sbSWRHNM1+S9Ub8zvcePZErF1D8qXLW1LiDlGGI/h0C7/i6lyMx5LKWdlQVe43 H1iDcz0jzg6jt+4vyJp9entPMmdC7vCvbQ8qRkjWaas1IcP95qHYPKR1j2p09IEQeqG9 v2OFS+YG5zKYT1lo9Q1rfSpxv7dJc03jXneCYRugYeu1eu8X3vO4QMl5hZ0GHYMLbtK/ b5Ug== X-Gm-Message-State: AAQBX9e3sOgVRawRNh4wGegyoWQR7lGRaqlBRoefHpjI1IV932kjSEHf StLn3CJObqYPeNMcMRqj4L+G5EPAOdk= X-Received: by 2002:a2e:9c0a:0:b0:29f:6fd7:697c with SMTP id s10-20020a2e9c0a000000b0029f6fd7697cmr4965207lji.28.1681248061304; 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.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 14:21:00 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Apr 2023 00:20:40 +0300 Message-Id: <20230411212052.159889-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 00/12] 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: 2fILju9n6SMI Differences to v1: 1. rebased on top of current master (ffmpeg_enc.c addition etc) 2. removal of a stray "private" word from commit message in the avctx side data set addition commit. 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. 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 an AVFrameSideDataSet in avctx as everything seems to presume that extradata etc are available after opening the encoder. Jan Jan Ekström (12): 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 avutil/frame: add helper for extending a set of side data avcodec: add side data set to AVCodecContext 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_enc.c | 12 +++++ libavcodec/avcodec.h | 7 +++ libavcodec/libsvtav1.c | 70 ++++++++++++++++++++++++++ libavcodec/libx264.c | 79 +++++++++++++++++++++++++++++ libavcodec/libx265.c | 82 ++++++++++++++++++++++++++++++ libavcodec/options.c | 1 + libavutil/frame.c | 112 +++++++++++++++++++++++++++++++++-------- libavutil/frame.h | 49 ++++++++++++++++++ 8 files changed, 391 insertions(+), 21 deletions(-)