From patchwork Fri Feb 3 15:53:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 40237 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp1297363pzk; Fri, 3 Feb 2023 07:53:30 -0800 (PST) X-Google-Smtp-Source: AK7set/sxi9axMnqDyjfZGqfJT/iv0+IBZWo7vAlVKPxmDMpZxr0nnQg0GbQHonRFr5jSmqY9A3V X-Received: by 2002:a17:907:3e82:b0:885:8f79:d6d7 with SMTP id hs2-20020a1709073e8200b008858f79d6d7mr14336409ejc.61.1675439609743; Fri, 03 Feb 2023 07:53:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675439609; cv=none; d=google.com; s=arc-20160816; b=HxTTPstyoq4uj3i0djP4+01cnEi/JVlPZsL5PcwyrMEJXo/is8d7FgKSDyDWAX7aaB mQwFBA3e7T6T4XPWR66LZZDI10sr5IANyarWKc3qRqIh4t12vJ2gHvQe+3COeqTbi4qV LDH1STSPXnzs+rR6r03Mxxm7W/4DcuroBQZuhnthj+zW8E43S0Jn1I2plHIXzokoL2nf z4UfpO5nI0mFKV2OugB3h/QH5a+FRIzLtdLKJAEWcPSATIUSzlkph0UNYaGj41knWJjh aofTKLIYgUj/PqyoZ0vsWaLu0vDqZOLxtVFS107wIRHsojLSDqbnsAGWBxfwfgBj+3Pu PZjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:date:to:from:message-id:delivered-to; bh=t/t8D2zbDBESxFB6gtNl4tTnJPuy5FXokP5RGzmAMdA=; b=O3sHobhptJogSZxDKFz119CLTb6big7DxQzUnT583UUjn+7IB9TeCWaXr0sZ2rBE0N 5dkzNxn+EUzsXae/e1joko7qEHVVZfMwQaYjoDG6HwNWOmY1fMwX+/qSd8VSx6h37Aag sTbGb22cGm0NpZFid94fSSs2YYgZrmV+EqavWCETcA+aNemsB6HTLZJxivTuGuOTVFz7 mcguVW9W5kifROZZHoL4Qvt4mCvm2WNkTpvKgYGTOb3kNVu5hkYt7pTHEv7HBHheXkYZ nXoemLGRHZZqq6o6e3VqzUvL+IlPebPwLRPzUvTKzR07ewRsD6UsU27gjppnigd7eb7E /Wqw== ARC-Authentication-Results: i=1; mx.google.com; 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 14-20020a170906024e00b0087879f8c291si3670032ejl.703.2023.02.03.07.53.29; Fri, 03 Feb 2023 07:53:29 -0800 (PST) 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; 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 2E70568BDA1; Fri, 3 Feb 2023 17:53:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail.frobbit.se (mail.frobbit.se [85.30.129.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 90D9368BA48 for ; Fri, 3 Feb 2023 17:53:19 +0200 (EET) Received: from [10.10.150.68] (1346516434.ip.84grams.net [134.65.164.34]) by mail.frobbit.se (Postfix) with ESMTPSA id 1D79321C6C for ; Fri, 3 Feb 2023 16:53:19 +0100 (CET) Message-ID: From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Fri, 03 Feb 2023 16:53:18 +0100 User-Agent: Evolution 3.38.3-1+deb11u1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavfi/vf_colorspace: Add support for 14- and 16-bit YUV 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: BI5uydierLn9 From 33c0ff957b5a37c1d59069ee414282bb45d21298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Fri, 3 Feb 2023 15:00:05 +0100 Subject: [PATCH 1/2] lavfi/vf_colorspace: Add support for 14- and 16-bit YUV --- libavfilter/colorspacedsp.c | 36 +++++++++++++++++++++++++++- libavfilter/colorspacedsp.h | 2 ++ libavfilter/colorspacedsp_template.c | 8 +++++++ libavfilter/vf_colorspace.c | 10 +++++++- 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/libavfilter/colorspacedsp.c b/libavfilter/colorspacedsp.c index 72207ffaf3..75a442fb66 100644 --- a/libavfilter/colorspacedsp.c +++ b/libavfilter/colorspacedsp.c @@ -39,6 +39,14 @@ #define BIT_DEPTH 12 #include "colorspacedsp_template.c" +#undef BIT_DEPTH +#define BIT_DEPTH 14 +#include "colorspacedsp_template.c" + +#undef BIT_DEPTH +#define BIT_DEPTH 16 +#include "colorspacedsp_template.c" + #undef SS_W #undef SS_H @@ -57,6 +65,14 @@ #define BIT_DEPTH 12 #include "colorspacedsp_template.c" +#undef BIT_DEPTH +#define BIT_DEPTH 14 +#include "colorspacedsp_template.c" + +#undef BIT_DEPTH +#define BIT_DEPTH 16 +#include "colorspacedsp_template.c" + #undef SS_W #undef SS_H @@ -75,6 +91,14 @@ #define BIT_DEPTH 12 #include "colorspacedsp_template.c" +#undef BIT_DEPTH +#define BIT_DEPTH 14 +#include "colorspacedsp_template.c" + +#undef BIT_DEPTH +#define BIT_DEPTH 16 +#include "colorspacedsp_template.c" + static void multiply3x3_c(int16_t *buf[3], ptrdiff_t stride, int w, int h, const int16_t m[3][3][8]) { @@ -109,6 +133,8 @@ void ff_colorspacedsp_init(ColorSpaceDSPContext *dsp) init_yuv2rgb_fn( 8); init_yuv2rgb_fn(10); init_yuv2rgb_fn(12); + init_yuv2rgb_fn(14); + init_yuv2rgb_fn(16); #define init_rgb2yuv_fn(bit) \ dsp->rgb2yuv[BPP_##bit][SS_444] = rgb2yuv_444p##bit##_c; \ @@ -118,6 +144,8 @@ void ff_colorspacedsp_init(ColorSpaceDSPContext *dsp) init_rgb2yuv_fn( 8); init_rgb2yuv_fn(10); init_rgb2yuv_fn(12); + init_rgb2yuv_fn(14); + init_rgb2yuv_fn(16); #define init_rgb2yuv_fsb_fn(bit) \ dsp->rgb2yuv_fsb[BPP_##bit][SS_444] = rgb2yuv_fsb_444p##bit##_c; \ @@ -127,6 +155,8 @@ void ff_colorspacedsp_init(ColorSpaceDSPContext *dsp) init_rgb2yuv_fsb_fn( 8); init_rgb2yuv_fsb_fn(10); init_rgb2yuv_fsb_fn(12); + init_rgb2yuv_fsb_fn(14); + init_rgb2yuv_fsb_fn(16); #define init_yuv2yuv_fn(idx1, bit1, bit2) \ dsp->yuv2yuv[idx1][BPP_##bit2][SS_444] = yuv2yuv_444p##bit1##to##bit2##_c; \ @@ -135,11 +165,15 @@ void ff_colorspacedsp_init(ColorSpaceDSPContext *dsp) #define init_yuv2yuv_fns(bit1) \ init_yuv2yuv_fn(BPP_##bit1, bit1, 8); \ init_yuv2yuv_fn(BPP_##bit1, bit1, 10); \ - init_yuv2yuv_fn(BPP_##bit1, bit1, 12) + init_yuv2yuv_fn(BPP_##bit1, bit1, 12); \ + init_yuv2yuv_fn(BPP_##bit1, bit1, 14); \ + init_yuv2yuv_fn(BPP_##bit1, bit1, 16) init_yuv2yuv_fns( 8); init_yuv2yuv_fns(10); init_yuv2yuv_fns(12); + init_yuv2yuv_fns(14); + init_yuv2yuv_fns(16); dsp->multiply3x3 = multiply3x3_c; diff --git a/libavfilter/colorspacedsp.h b/libavfilter/colorspacedsp.h index a81e4f0a52..c994bcfe67 100644 --- a/libavfilter/colorspacedsp.h +++ b/libavfilter/colorspacedsp.h @@ -46,6 +46,8 @@ enum BitDepthIndex { BPP_8, BPP_10, BPP_12, + BPP_14, + BPP_16, NB_BPP, }; diff --git a/libavfilter/colorspacedsp_template.c b/libavfilter/colorspacedsp_template.c index 53ac0d7224..08d809979f 100644 --- a/libavfilter/colorspacedsp_template.c +++ b/libavfilter/colorspacedsp_template.c @@ -340,3 +340,11 @@ static void fn(rgb2yuv_fsb)(uint8_t *_yuv[3], const ptrdiff_t yuv_stride[3], #undef IN_BIT_DEPTH #define IN_BIT_DEPTH 12 #include "colorspacedsp_yuv2yuv_template.c" + +#undef IN_BIT_DEPTH +#define IN_BIT_DEPTH 14 +#include "colorspacedsp_yuv2yuv_template.c" + +#undef IN_BIT_DEPTH +#define IN_BIT_DEPTH 16 +#include "colorspacedsp_yuv2yuv_template.c" diff --git a/libavfilter/vf_colorspace.c b/libavfilter/vf_colorspace.c index 21916b7b7a..1e1ab5fb34 100644 --- a/libavfilter/vf_colorspace.c +++ b/libavfilter/vf_colorspace.c @@ -402,7 +402,7 @@ static int create_filtergraph(AVFilterContext *ctx, const AVPixFmtDescriptor *out_desc = av_pix_fmt_desc_get(out->format); int emms = 0, m, n, o, res, fmt_identical, redo_yuv2rgb = 0, redo_rgb2yuv = 0; -#define supported_depth(d) ((d) == 8 || (d) == 10 || (d) == 12) +#define supported_depth(d) ((d) == 8 || (d) == 10 || (d) == 12 || (d) == 14 || (d) == 16) #define supported_subsampling(lcw, lch) \ (((lcw) == 0 && (lch) == 0) || ((lcw) == 1 && (lch) == 0) || ((lcw) == 1 && (lch) == 1)) #define supported_format(d) \ @@ -842,6 +842,8 @@ static int query_formats(AVFilterContext *ctx) AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV444P12, + AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV444P14, + AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16, AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_NONE }; @@ -961,12 +963,18 @@ static const AVOption colorspace_options[] = { ENUM("yuv420p", AV_PIX_FMT_YUV420P, "fmt"), ENUM("yuv420p10", AV_PIX_FMT_YUV420P10, "fmt"), ENUM("yuv420p12", AV_PIX_FMT_YUV420P12, "fmt"), + ENUM("yuv420p14", AV_PIX_FMT_YUV420P14, "fmt"), + ENUM("yuv420p16", AV_PIX_FMT_YUV420P16, "fmt"), ENUM("yuv422p", AV_PIX_FMT_YUV422P, "fmt"), ENUM("yuv422p10", AV_PIX_FMT_YUV422P10, "fmt"), ENUM("yuv422p12", AV_PIX_FMT_YUV422P12, "fmt"), + ENUM("yuv422p14", AV_PIX_FMT_YUV422P14, "fmt"), + ENUM("yuv422p16", AV_PIX_FMT_YUV422P16, "fmt"), ENUM("yuv444p", AV_PIX_FMT_YUV444P, "fmt"), ENUM("yuv444p10", AV_PIX_FMT_YUV444P10, "fmt"), ENUM("yuv444p12", AV_PIX_FMT_YUV444P12, "fmt"), + ENUM("yuv444p14", AV_PIX_FMT_YUV444P14, "fmt"), + ENUM("yuv444p16", AV_PIX_FMT_YUV444P16, "fmt"), { "fast", "Ignore primary chromaticity and gamma correction", OFFSET(fast_mode), AV_OPT_TYPE_BOOL, { .i64 = 0 }, -- 2.30.2 From patchwork Fri Feb 3 15:54:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Tomas_H=C3=A4rdin?= X-Patchwork-Id: 40238 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp1298002pzk; Fri, 3 Feb 2023 07:54:34 -0800 (PST) X-Google-Smtp-Source: AK7set8hunwFqnGfiiPvOn719cgRrgk2NMLnBtohBLsErS28LkoKBJR9pQ3Iqv0NvoC6EYen1R3o X-Received: by 2002:a17:907:8dcd:b0:87b:db29:61af with SMTP id tg13-20020a1709078dcd00b0087bdb2961afmr11103514ejc.24.1675439673781; Fri, 03 Feb 2023 07:54:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675439673; cv=none; d=google.com; s=arc-20160816; b=FzsuwdCcclG5ybaBj9ZIqoXoRcTYlPnSBG6U50w+VTxuhFt1/t/GleFj3VFrjCeZdv 0INSFuoVC6eUc/a9GlKon5nQT4LlzL4n4OZCrYtAk1UBaoMDaOGYRupd0YJomh5Ni6Ku Ip+aTeK5u1i+FisbFPJgVcb9MCYLs/L1LqnWHwmxiuIa1BOOXzJPEhq0TYpPSlh4HlDU OzbDtaTpX5ynxjlvpVF0zis3Fu7S9yixOYkiYrtT8yI4molH6Vn7y6YbOBJV1HobCqnc ZznWn1FTTVl/0ViBAJTgWVjkqU3poAj31MK0uTGU0JmTvP4Yyf26AhKNmw5UEhbDbM6L +HEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:user-agent:references:in-reply-to:date:to:from :message-id:delivered-to; bh=eqsoz10Oo2SIZrxgw/vo/HZNLjZ+SFcs53Flpdur7ZI=; b=Yx4htgvFrxKevdnu4mioU628ipHJ9fPF65A4OiXTSzm5xrlpT625qCTJi+xyC0PZmb s50EN+B8Z16r9gRKTfwTH9rVnYcVQPOBfFZbUMohlh37Pg32HZQvfzxkFYwqEKVJINNB XEgCNwB5uRLe9ovvg72rCNn5lUR9oOTXdoWyf+iSrUk41vF08q9tn+GO6TVjjb3SKGr7 pHgDEvnGzAdQfuFWBbI8zwu4in9BGKxneApo965Xi+EfwF2ruHIVPFulpqc/hfH95JDn GYtGikG1mRJ2FMGgcbK+eYRwgcyUXFSi8ZyX9aZutmp6Cv9eJEmNQv4NOj7XHWQ3fuSO mOwA== ARC-Authentication-Results: i=1; mx.google.com; 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 ay5-20020a170907900500b007a1d4f0e7fcsi967082ejc.655.2023.02.03.07.54.32; Fri, 03 Feb 2023 07:54:33 -0800 (PST) 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; 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 52B5268BBC9; Fri, 3 Feb 2023 17:54:30 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail.frobbit.se (mail.frobbit.se [85.30.129.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4357768BC2A for ; Fri, 3 Feb 2023 17:54:23 +0200 (EET) Received: from [10.10.150.68] (1346516434.ip.84grams.net [134.65.164.34]) by mail.frobbit.se (Postfix) with ESMTPSA id D23CD21C6C for ; Fri, 3 Feb 2023 16:54:22 +0100 (CET) Message-ID: <22244352f670c17aee4d2ba0f97cc894dfa4199b.camel@haerdin.se> From: Tomas =?iso-8859-1?q?H=E4rdin?= To: FFmpeg development discussions and patches Date: Fri, 03 Feb 2023 16:54:22 +0100 In-Reply-To: References: User-Agent: Evolution 3.38.3-1+deb11u1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] lavfi/vf_colorspace: Add SMPTE ST 2084 support 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: bU5622tAu2Qn We need something better for proper tonemap support, but this is at least useful for getting the HDR discussion going. /Tomas From fd7a789fbffdd0f7e41b77a9d70ae0696142c6db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Fri, 3 Feb 2023 14:00:38 +0100 Subject: [PATCH 2/2] lavfi/vf_colorspace: Add SMPTE ST 2084 support This makes 10000 nits == 65535 in 16-bit, meaning SDR white is 65535*203/10000 = 1330. --- libavfilter/vf_colorspace.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/libavfilter/vf_colorspace.c b/libavfilter/vf_colorspace.c index 1e1ab5fb34..081c1c9d0e 100644 --- a/libavfilter/vf_colorspace.c +++ b/libavfilter/vf_colorspace.c @@ -173,6 +173,7 @@ static const struct TransferCharacteristics transfer_characteristics[AVCOL_TRC_N [AVCOL_TRC_IEC61966_2_4] = { 1.099, 0.018, 0.45, 4.5 }, [AVCOL_TRC_BT2020_10] = { 1.099, 0.018, 0.45, 4.5 }, [AVCOL_TRC_BT2020_12] = { 1.0993, 0.0181, 0.45, 4.5 }, + [AVCOL_TRC_SMPTE2084] = { 1.0, 0, 0, 0 }, // fake entry, actual TRC uses entirely separate formula }; static const struct TransferCharacteristics * @@ -197,6 +198,8 @@ static int fill_gamma_table(ColorSpaceContext *s) double in_ialpha = 1.0 / in_alpha, in_igamma = 1.0 / in_gamma, in_idelta = 1.0 / in_delta; double out_alpha = s->out_txchr->alpha, out_beta = s->out_txchr->beta; double out_gamma = s->out_txchr->gamma, out_delta = s->out_txchr->delta; + double m1 = 1305.0/8192, m2 = 2523.0/32, c2 = 2413.0/128, c3 = 2392.0/128, c1 = c3 - c2 + 1; + double im1 = 1.0 / m1, im2 = 1.0 / m2; s->lin_lut = av_malloc(sizeof(*s->lin_lut) * 32768 * 2); if (!s->lin_lut) @@ -206,7 +209,15 @@ static int fill_gamma_table(ColorSpaceContext *s) double v = (n - 2048.0) / 28672.0, d, l; // delinearize - if (v <= -out_beta) { + if (s->out_trc == AVCOL_TRC_SMPTE2084) { + // see BT.2100-2 + if (v >= 0) { + double vm1 = pow(v, m1); + d = pow((c1 + c2 * vm1)/(1 + c3 * vm1), m2); + } else { + d = 0; + } + } else if (v <= -out_beta) { d = -out_alpha * pow(-v, out_gamma) + (out_alpha - 1.0); } else if (v < out_beta) { d = out_delta * v; @@ -216,7 +227,16 @@ static int fill_gamma_table(ColorSpaceContext *s) s->delin_lut[n] = av_clip_int16(lrint(d * 28672.0)); // linearize - if (v <= -in_beta * in_delta) { + if (s->in_trc == AVCOL_TRC_SMPTE2084) { + // see BT.2100-2 + if (v >= 0) { + double vim2 = pow(v, im2); + // note that [0,1] here corresponds to [0,100] in SDR + l = pow((vim2 - c1 > 0 ? vim2 - c1 : 0) / (c2 - c3 * vim2), im1); + } else { + l = 0; + } + } else if (v <= -in_beta * in_delta) { l = -pow((1.0 - in_alpha - v) * in_ialpha, in_igamma); } else if (v < in_beta * in_delta) { l = v * in_idelta; @@ -956,6 +976,7 @@ static const AVOption colorspace_options[] = { ENUM("iec61966-2-4", AVCOL_TRC_IEC61966_2_4, "trc"), ENUM("bt2020-10", AVCOL_TRC_BT2020_10, "trc"), ENUM("bt2020-12", AVCOL_TRC_BT2020_12, "trc"), + ENUM("smpte2084", AVCOL_TRC_SMPTE2084, "trc"), { "format", "Output pixel format", OFFSET(user_format), AV_OPT_TYPE_INT, { .i64 = AV_PIX_FMT_NONE }, -- 2.30.2