From patchwork Tue Jun 1 19:18:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valerii Zapodovnikov X-Patchwork-Id: 28037 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp4118540iof; Tue, 1 Jun 2021 12:18:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwT82qYeNCn87dXJi1k55YK+uJesh0+1XbtQ8yu0dz1zIsWWDNxu0oBfVN/fMlGWkiARZme X-Received: by 2002:aa7:c359:: with SMTP id j25mr33823711edr.171.1622575124207; Tue, 01 Jun 2021 12:18:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622575124; cv=none; d=google.com; s=arc-20160816; b=EI3AegdHOpbm+j64kewBBWEpYUgRgGp4sWhw0kCrbIN4muJPJ6B9/UI1LnZ+AQ6dJH A5Qi6tIRqw8ALMou/Mgi1pc3rHoLx0Y2isc1EZRsXCRozSBFZsKPtXeBJVCRF4uOMm0K D3H76Jj4s6TKb+wI/uk+PKVSNh8vnU5fD1F2IICwKDqhHHilCjrgf6Qi1+tnzgBXffwi AOtGVAkDIFaNP7Gntfhil4pqeoQuYbnmbOhh7nito90CmHI5jkLaYnjOGSSWsF/7dAqY 4q0Fl4zmSIR+J31ij1OKvx+2aGryvYDDy4TBVgp5dWPgZeexOawEzxRTk1THpVngiWlR Dvug== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=Tt2kDjhAkzWgzq1VetX+SC/nEgoP+cDcI0O5b+a1kNY=; b=yuiMhAjjIX0oG5U3k9oIQp7gjQ6YbePT9rJY8wkargRfG0lWkLALqgcfK3tjo+VXpp N+ZTmu++xhimPo6VQ7Sm1LLEhWO1WWWIJ78iJ1xRwLgt+gl7bCIySLrnLoVJsDD4KgiV fbm01ACggVmntwOWzqdQafM+75pp2ZLd837gVZ5uQwA/s9wBnYoHw+c/NiROvJImq9A2 wqNUlRqjlyxizhLWSjr0pqmDuBtIVRY+2YuWRU+zrsP1tP2gya7TOkmciWpWfDoi13pO 4IFZ2QFtkjC6RFGOln9juF1Uv+CnQTpmX3WnP240Brz2BK42Ep6g4LdkBscoKy5a7v0T EAUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=CEST6pqe; 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 u21si13280711ejz.696.2021.06.01.12.18.43; Tue, 01 Jun 2021 12:18:44 -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=20161025 header.b=CEST6pqe; 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 BAB436899A2; Tue, 1 Jun 2021 22:18:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5ADB66899A2 for ; Tue, 1 Jun 2021 22:18:32 +0300 (EEST) Received: by mail-lj1-f176.google.com with SMTP id m3so368290lji.12 for ; Tue, 01 Jun 2021 12:18:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=u4MCf6tDsfxe2w3h5hdVPv5P9WUxPSUbwHZlZu91/g0=; b=CEST6pqe4V/aetiKCfudmIl9Wb2tyKnVtUp/AYEN+hi6zZOsLsodZxTMDO5K2tBt5j JadgvzLo5+Iwl74Z0/2e3fsQwezrk4LwI9MHl6xTrWwgsRge/TV2DUd/2YlsB1i+7XKM sg0gbHSBTU+NkT0Rh4XFO7ZfzR+DA4AgWstSkW+s3W4gUlysrx/nsH+oG+6UakzdgzpO imSh8ZwT8St0WVS5CUdaNW/Wld2DzZkuwccjXmUgRAVc/0Ld52p+gluFEZrDI9kY5sVc aBbfscnHt0NqIuoYMnln2muaheJamnVpAoo8bH7JiX4aURzAJ0O/7gHY8cDy8IKcndRu j1Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=u4MCf6tDsfxe2w3h5hdVPv5P9WUxPSUbwHZlZu91/g0=; b=mrFy5ijwPvezLFiEZyj3Bam+76y6zdr5bMFJy5w+KY24mUXbJ/kkwLWKbO0oz8xq+X Qo6GG2s6YH2++dHG2FdsCdYUmKicDFNnKIriJ+Gw1gq5/DK0SOFCWfadDqCs4tSLmi2P pkDBh8jyGrtA6eJxMI8repgs3rG2ZcY1tTZF+divpdeVyjlNlEDq8+gn7VCafgBiwfrk ORDp4xRU1PPvCS+6GdJniMhBAVkKpobsv5xKPDcydFqcjo6KYjFaZNDAyMH6ptD4tc9c cIeh9vL+Md3wnGRuEDrfmBFmvqRZQOlIt2ilFw+T8I3IHulXdPV8Ph4y0fBp//zpB2Rv vvLQ== X-Gm-Message-State: AOAM530D4cfVaFyTBBjhfGrDBN0DGipgLBLZZIBZoJOTeEGoPBZ2rguz I9tN0ESn4260zY3/BiQu8bhqHKxIqtTXdbtsZcg= X-Received: by 2002:a2e:9083:: with SMTP id l3mr22228518ljg.315.1622575110585; Tue, 01 Jun 2021 12:18:30 -0700 (PDT) Received: from localhost ([109.252.91.149]) by smtp.gmail.com with ESMTPSA id h16sm2089047ljb.128.2021.06.01.12.18.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 01 Jun 2021 12:18:30 -0700 (PDT) From: Valerii Zapodovnikov To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Jun 2021 22:18:28 +0300 Message-Id: <20210601191828.6957-1-val.zapod.vz@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avcodec/dpxenc: stop hardcoding color trc/primaries 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: Paul B Mahol Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Zug7uaxaeRA9 Updated FATE hashes and added gamma 2.8. Also please note that FATE samples are useless. I also fixed gamma 2.2 to System M. Also this does not do YCbCr stuff, so no matrices are here. Fixes more or less #6023, except for printing density stuff. Co-authored-by: Paul B Mahol --- libavcodec/dpxenc.c | 38 +++++++++++++++++++++++++++++++++-- tests/ref/lavf/dpx | 2 +- tests/ref/lavf/gbrp10le.dpx | 2 +- tests/ref/lavf/gbrp12le.dpx | 2 +- tests/ref/lavf/rgb48le.dpx | 2 +- tests/ref/lavf/rgb48le_10.dpx | 2 +- tests/ref/lavf/rgba64le.dpx | 2 +- 7 files changed, 42 insertions(+), 8 deletions(-) diff --git a/libavcodec/dpxenc.c b/libavcodec/dpxenc.c index fa8b7d5ddc..90a47dc21e 100644 --- a/libavcodec/dpxenc.c +++ b/libavcodec/dpxenc.c @@ -174,6 +174,40 @@ static void encode_gbrp12(AVCodecContext *avctx, const AVFrame *pic, uint8_t *ds } } +static int get_dpx_pri(int color_pri) +{ + switch (color_pri) { + case AVCOL_PRI_BT709: + return 6; + case AVCOL_PRI_SMPTE240M: + case AVCOL_PRI_SMPTE170M: + return 9; + case AVCOL_PRI_BT470BG: + return 10; + default: + return 0; + } +} + +static int get_dpx_trc(int color_trc) +{ + switch (color_trc) { + case AVCOL_TRC_LINEAR: + return 2; + case AVCOL_TRC_BT709: + return 6; + case AVCOL_TRC_SMPTE240M: + case AVCOL_TRC_SMPTE170M: + return 9; + case AVCOL_TRC_GAMMA22: + return 8; + case AVCOL_TRC_GAMMA28: + return 7; + default: + return 0; + } +} + static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet) { @@ -219,8 +253,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, write32(buf + 772, avctx->width); write32(buf + 776, avctx->height); buf[800] = s->descriptor; - buf[801] = 2; /* linear transfer */ - buf[802] = 2; /* linear colorimetric */ + buf[801] = get_dpx_trc(avctx->color_trc); + buf[802] = get_dpx_pri(avctx->color_primaries); buf[803] = s->bits_per_component; write16(buf + 804, (s->bits_per_component == 10 || s->bits_per_component == 12) ? 1 : 0); /* packing method */ diff --git a/tests/ref/lavf/dpx b/tests/ref/lavf/dpx index 68fe25afcd..39e513430a 100644 --- a/tests/ref/lavf/dpx +++ b/tests/ref/lavf/dpx @@ -1,3 +1,3 @@ -4c8880d5835ffb5fe37c1ed8c8d404de *tests/data/images/dpx/02.dpx +233e219cbfa61e0b77f8e4fad05b2404 *tests/data/images/dpx/02.dpx tests/data/images/dpx/%02d.dpx CRC=0x6da01946 305792 tests/data/images/dpx/02.dpx diff --git a/tests/ref/lavf/gbrp10le.dpx b/tests/ref/lavf/gbrp10le.dpx index b33da34e20..16ac9ebc66 100644 --- a/tests/ref/lavf/gbrp10le.dpx +++ b/tests/ref/lavf/gbrp10le.dpx @@ -1,3 +1,3 @@ -7ca935d5d5e00c54acbc85565d3039b6 *tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx +69b9da05fa73a4495ea04ce5f45b51d6 *tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx tests/data/images/gbrp10le.dpx/%02d.gbrp10le.dpx CRC=0xe6663fba 407168 tests/data/images/gbrp10le.dpx/02.gbrp10le.dpx diff --git a/tests/ref/lavf/gbrp12le.dpx b/tests/ref/lavf/gbrp12le.dpx index e2e794ecc6..8b9dae4fbc 100644 --- a/tests/ref/lavf/gbrp12le.dpx +++ b/tests/ref/lavf/gbrp12le.dpx @@ -1,3 +1,3 @@ -a4cfea1797c928f2eff73573e559675d *tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx +056a0852dcd8e4d8727114df4a247dd4 *tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx tests/data/images/gbrp12le.dpx/%02d.gbrp12le.dpx CRC=0x1c755633 609920 tests/data/images/gbrp12le.dpx/02.gbrp12le.dpx diff --git a/tests/ref/lavf/rgb48le.dpx b/tests/ref/lavf/rgb48le.dpx index 073153898a..803bb0f5e6 100644 --- a/tests/ref/lavf/rgb48le.dpx +++ b/tests/ref/lavf/rgb48le.dpx @@ -1,3 +1,3 @@ -075963c3c08978b6a20555ba09161434 *tests/data/images/rgb48le.dpx/02.rgb48le.dpx +6e7d757279eaa914a92be107f8f01077 *tests/data/images/rgb48le.dpx/02.rgb48le.dpx tests/data/images/rgb48le.dpx/%02d.rgb48le.dpx CRC=0xe5b9c023 609920 tests/data/images/rgb48le.dpx/02.rgb48le.dpx diff --git a/tests/ref/lavf/rgb48le_10.dpx b/tests/ref/lavf/rgb48le_10.dpx index ce36e5079f..dfeb059787 100644 --- a/tests/ref/lavf/rgb48le_10.dpx +++ b/tests/ref/lavf/rgb48le_10.dpx @@ -1,3 +1,3 @@ -b9f22728f8ff393bf30cf6cbd624fa95 *tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx +097c4ff8138d76bffa51c1e8c36ea90f *tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx tests/data/images/rgb48le_10.dpx/%02d.rgb48le_10.dpx CRC=0xf38d5830 407168 tests/data/images/rgb48le_10.dpx/02.rgb48le_10.dpx diff --git a/tests/ref/lavf/rgba64le.dpx b/tests/ref/lavf/rgba64le.dpx index b4092c9fd8..82771c41bd 100644 --- a/tests/ref/lavf/rgba64le.dpx +++ b/tests/ref/lavf/rgba64le.dpx @@ -1,3 +1,3 @@ -545603630f30dec2768c8ae8d12eb8ea *tests/data/images/rgba64le.dpx/02.rgba64le.dpx +51ccad3d05c1cef9db958adf01c9b55f *tests/data/images/rgba64le.dpx/02.rgba64le.dpx tests/data/images/rgba64le.dpx/%02d.rgba64le.dpx CRC=0xe72ce131 812672 tests/data/images/rgba64le.dpx/02.rgba64le.dpx