From patchwork Fri Oct 13 14:24:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 44240 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4b15:b0:15d:8365:d4b8 with SMTP id fp21csp1039249pzb; Fri, 13 Oct 2023 07:27:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFQWunCNnD7pk6JchkwrF3opKiABIDk3DqOqXDEkwuTUo1DqfofR6XjXA/6C6qfrsIecED0 X-Received: by 2002:a05:6402:500d:b0:53d:be55:5fc with SMTP id p13-20020a056402500d00b0053dbe5505fcmr7383364eda.27.1697207257807; Fri, 13 Oct 2023 07:27:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697207257; cv=none; d=google.com; s=arc-20160816; b=1D5Y262DWNrJ6HcLJXnnCOwMcMngnfwTXzuFFN7+A6+0mNDf3+jTVJ1Egkyr3zWcri Zg0voS91K6jR0NzcUrcmGQkyRT02kI8953QTJIpzlOqtyG8a8SjeYd7BQXfleB/wfY5b uy2YYMWkkbrv7yScRZFojzreFTjL3qjZdngf8N8OCCyHyMq4WD4jZdaJNcAtLo4dJTRU z1FMtLcVPXhXZynSkdLM/9mqLmo1/y9z12FKD2WYJyxdriN9HS/3X5cys6lvaCDxJFoi HXW8KFlisX/RRIP0xNCcvFORDHqzRS8oDePWYQ2wkB799BQCIy7lYKaMK/fUsupSN4Yo hr3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=waGr3a/98eiVtyfzVlc4czpuMbhWBqiOk7c6BaA7B8I=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=pnlyw46AEQCCqWGMCpSJGeh9XH5PFzn6u2kyhedGLeWwKtmkDdGrpckwkeTaW5U6Sw GmHzM6DMRymPkiof1OTTcwRBSg/rfpBO8np/naaL2T99emjNT/Mps0l4/cTj+uw56i4H UEVzPY0x4582AqYz4hw8SBv01bnapcZH0zXDc6dIxvhBD37PwfETdwreHL+0AKDya7VF 7lm6hQMWX1B7M+Isj0k0u077cejDdTeRA89irFx68/sHfGO9PzPoPv6jQjeBexuLdJBk 3lRDnn4RQdFk9lTUa4eAOpZCpy37F01Uyk9sr/zt7dAhvj4g+5VQQwtNf0VmbErujQqT Pcdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@haasn.xyz header.s=mail header.b=bo4KVuwM; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n23-20020a509357000000b0053e5b75dd3bsi247126eda.601.2023.10.13.07.27.37; Fri, 13 Oct 2023 07:27:37 -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=@haasn.xyz header.s=mail header.b=bo4KVuwM; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9A1C968C909; Fri, 13 Oct 2023 17:27:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C531E68BDD0 for ; Fri, 13 Oct 2023 17:27:10 +0300 (EEST) Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 824AF4B456; Fri, 13 Oct 2023 16:27:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1697207230; bh=fNK5GmC3o4uSDcFoqMutT6y63YhzRgVeIxI2Sf2KS5w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bo4KVuwMsX4zStI3MWSLcoqu5DOvOlPpxRUb4u6zMe5ClbaWVtIVGgpk8ivh+SjFX 1/TgSSFbZ1fhpWMW5UcITaefj6QKIP5SQ8Np67VeUpMZ5vWopNg/ArWHiA2lJUGvLG 9MBtZAsZl65Fej2Gp6gdhuVY67WycAuwRqjaP710= From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Fri, 13 Oct 2023 16:24:40 +0200 Message-ID: <20231013142706.23971-3-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231013142706.23971-1-ffmpeg@haasn.xyz> References: <20231013142706.23971-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 02/13] avcodec: add extended AVCodec color metadata X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Niklas Haas Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: j1IoYgxK980B From: Niklas Haas This is motivated primarily by a desire for YUVJ removal, which will require signalling the supported color ranges as part of the codec capabilities. But since we're here anyway, we might as well add all of the metadata, which I foresee seeing more use in the future (e.g. automatic conversion from HDR to SDR when encoding to formats that don't support AVCOL_TRC_SMPTE2084, ...) --- doc/APIchanges | 4 ++++ libavcodec/codec.h | 7 +++++++ libavcodec/version.h | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 9b109e6fa7..f91e855e70 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,10 @@ The last version increases of all libraries were on 2023-02-09 API changes, most recent first: +2023-10-xx - xxxxxxxxxx - lavc 60.23.100 - avcodec.h + Add AVCodec.csps, AVCodec.color_ranges, AVCodec.chroma_locs, AVCodec.primaries, + AVCodec.trcs. + 2023-10-06 - xxxxxxxxxx - lavc 60.30.101 - avcodec.h AVCodecContext.coded_side_data may now be used during decoding, to be set by user before calling avcodec_open2() for initialization. diff --git a/libavcodec/codec.h b/libavcodec/codec.h index 8034f1a53c..5bc8f21868 100644 --- a/libavcodec/codec.h +++ b/libavcodec/codec.h @@ -235,6 +235,13 @@ typedef struct AVCodec { * Array of supported channel layouts, terminated with a zeroed layout. */ const AVChannelLayout *ch_layouts; + + /* Extended colorspace support metadata */ + const enum AVColorSpace *csps; ///< array of supported color spaces, or NULL if unknown, array is terminated by AVCOL_SPC_UNSPECIFIED + const enum AVColorRange *color_ranges; ///< array of supported color ranges, or NULL if unknown, array is terminated by 0 + const enum AVChromaLocation *chroma_locs; ///< array of supported chroma locations, or NULL if unknown, array is terminated by 0 + const enum AVColorPrimaries *primaries; ///< array of supported color primaries, or NULL if unknown, array is terminated by 0 + const enum AVColorTransferCharacteristic *trcs; ///< array of supported transfer characteristics, or NULL if known, array is terminated by 0 } AVCodec; /** diff --git a/libavcodec/version.h b/libavcodec/version.h index 6b46100aae..497389d3f3 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,8 +29,8 @@ #include "version_major.h" -#define LIBAVCODEC_VERSION_MINOR 30 -#define LIBAVCODEC_VERSION_MICRO 102 +#define LIBAVCODEC_VERSION_MINOR 31 +#define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \