From patchwork Wed Nov 25 20:54:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 24034 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 721AB44B368 for ; Wed, 25 Nov 2020 22:56:18 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5751468B8A1; Wed, 25 Nov 2020 22:56:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f195.google.com (mail-qk1-f195.google.com [209.85.222.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7A38E689F22 for ; Wed, 25 Nov 2020 22:56:09 +0200 (EET) Received: by mail-qk1-f195.google.com with SMTP id d9so6020542qke.8 for ; Wed, 25 Nov 2020 12:56:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=9tp9OfOVUtVi1qiCXwUw8DIOTy+uZhV4GUpeu33U2n8=; b=QRAuvOnx8BsKQd0RyUwYWG+iWRKHUHy4iRhRFOppuXwdU0pwsoShCIqa1P3/2hw0YD feDjgPECBkH3twDh+uPj+tioc/UF6WUu7sAPneuAX9eOGmEMcs7srreIrsAmXsijK0md LV7vhsQT3Xyei53yGGZtlsF7FnFJXukLbmfcYLhnH6bzakZz7Vf5i6hDmTvrTF0cyXGh FZVzGEQ+kL2QYNSxo1hY/wtJDk69bPWxhMgpEjcvfphCfH+zJccGQ0a1gETad9AHV0Jz WZ4bNQabcdKoG0vLxzglb4hpB6yyjsnY99X2fLiY5BHvsQVzZxtX5ne9cddTye6PBB05 Xltw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9tp9OfOVUtVi1qiCXwUw8DIOTy+uZhV4GUpeu33U2n8=; b=ZL2taCiHvXcZgQeV6CvuFg7kz9CBv458UEQ0YMEsInpCfeLJk7TWKubaYGQ5sFbhmk CRLw7+MaNmyPAUvNWUoPx4rghXHWLI+TqWMWc87eBPkpXnWZ+HsgUCVeC5pK//AZaCOT 2Lx11YPW7EZDWK6g+yUjvQ0UzksRTA4Qwki0DQtmeS8zb71SrDIGmaTew1DVH8gu40qN bd8adgqQUcZW2jEJM6uFYevKwY8pl7i2qo68+jhCXUVsOKg/aZvvRFRyK6z5y8wPUMEX ny3BvKkWf0nXWmUr1ISzNIcuIYn9VMB32MhKpc/Vl+ds5L+HZyTfNX/0UbCCyRsGpu1r tr1g== X-Gm-Message-State: AOAM533zgUhm289+ln+TA7jwoUh5H79y6qUKeWuCcNDNW3vHxE4XoQqt Z57/a+G5BFcFwn7Bdz7aXLfT6kpWBvE= X-Google-Smtp-Source: ABdhPJyEBEUdOstHHCjOfEp8HeEjpQ9LqHWvBoDwAjNgY00P668aJ5AB2rZ7wHqOqUybbm0pAwD+9Q== X-Received: by 2002:ae9:f204:: with SMTP id m4mr816635qkg.227.1606337767913; Wed, 25 Nov 2020 12:56:07 -0800 (PST) Received: from localhost.localdomain ([181.23.86.176]) by smtp.gmail.com with ESMTPSA id v15sm436274qti.92.2020.11.25.12.56.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Nov 2020 12:56:07 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Nov 2020 17:54:45 -0300 Message-Id: <20201125205445.10859-5-jamrial@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201125205445.10859-1-jamrial@gmail.com> References: <20201125205445.10859-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/5] avcodec/dxva2_av1: read film grain param values from AV1Frames X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: James Almer --- libavcodec/dxva2_av1.c | 63 +++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/libavcodec/dxva2_av1.c b/libavcodec/dxva2_av1.c index c6cbd48f5f..72c38f5d12 100644 --- a/libavcodec/dxva2_av1.c +++ b/libavcodec/dxva2_av1.c @@ -59,6 +59,7 @@ static int fill_picture_parameters(const AVCodecContext *avctx, AVDXVAContext *c int i,j, uses_lr; const AV1RawSequenceHeader *seq = h->raw_seq; const AV1RawFrameHeader *frame_header = h->raw_frame_header; + const AV1RawFilmGrainParams *film_grain = &h->cur_frame.film_grain; unsigned char remap_lr_type[4] = { AV1_RESTORE_NONE, AV1_RESTORE_SWITCHABLE, AV1_RESTORE_WIENER, AV1_RESTORE_SGRPROJ }; @@ -214,47 +215,47 @@ static int fill_picture_parameters(const AVCodecContext *avctx, AVDXVAContext *c } /* Film grain */ - if (frame_header->apply_grain) { + if (film_grain->apply_grain) { pp->film_grain.apply_grain = 1; - pp->film_grain.scaling_shift_minus8 = frame_header->grain_scaling_minus_8; - pp->film_grain.chroma_scaling_from_luma = frame_header->chroma_scaling_from_luma; - pp->film_grain.ar_coeff_lag = frame_header->ar_coeff_lag; - pp->film_grain.ar_coeff_shift_minus6 = frame_header->ar_coeff_shift_minus_6; - pp->film_grain.grain_scale_shift = frame_header->grain_scale_shift; - pp->film_grain.overlap_flag = frame_header->overlap_flag; - pp->film_grain.clip_to_restricted_range = frame_header->clip_to_restricted_range; + pp->film_grain.scaling_shift_minus8 = film_grain->grain_scaling_minus_8; + pp->film_grain.chroma_scaling_from_luma = film_grain->chroma_scaling_from_luma; + pp->film_grain.ar_coeff_lag = film_grain->ar_coeff_lag; + pp->film_grain.ar_coeff_shift_minus6 = film_grain->ar_coeff_shift_minus_6; + pp->film_grain.grain_scale_shift = film_grain->grain_scale_shift; + pp->film_grain.overlap_flag = film_grain->overlap_flag; + pp->film_grain.clip_to_restricted_range = film_grain->clip_to_restricted_range; pp->film_grain.matrix_coeff_is_identity = (seq->color_config.matrix_coefficients == AVCOL_SPC_RGB); - pp->film_grain.grain_seed = frame_header->grain_seed; - pp->film_grain.num_y_points = frame_header->num_y_points; - for (i = 0; i < frame_header->num_y_points; i++) { - pp->film_grain.scaling_points_y[i][0] = frame_header->point_y_value[i]; - pp->film_grain.scaling_points_y[i][1] = frame_header->point_y_scaling[i]; + pp->film_grain.grain_seed = film_grain->grain_seed; + pp->film_grain.num_y_points = film_grain->num_y_points; + for (i = 0; i < film_grain->num_y_points; i++) { + pp->film_grain.scaling_points_y[i][0] = film_grain->point_y_value[i]; + pp->film_grain.scaling_points_y[i][1] = film_grain->point_y_scaling[i]; } - pp->film_grain.num_cb_points = frame_header->num_cb_points; - for (i = 0; i < frame_header->num_cb_points; i++) { - pp->film_grain.scaling_points_cb[i][0] = frame_header->point_cb_value[i]; - pp->film_grain.scaling_points_cb[i][1] = frame_header->point_cb_scaling[i]; + pp->film_grain.num_cb_points = film_grain->num_cb_points; + for (i = 0; i < film_grain->num_cb_points; i++) { + pp->film_grain.scaling_points_cb[i][0] = film_grain->point_cb_value[i]; + pp->film_grain.scaling_points_cb[i][1] = film_grain->point_cb_scaling[i]; } - pp->film_grain.num_cr_points = frame_header->num_cr_points; - for (i = 0; i < frame_header->num_cr_points; i++) { - pp->film_grain.scaling_points_cr[i][0] = frame_header->point_cr_value[i]; - pp->film_grain.scaling_points_cr[i][1] = frame_header->point_cr_scaling[i]; + pp->film_grain.num_cr_points = film_grain->num_cr_points; + for (i = 0; i < film_grain->num_cr_points; i++) { + pp->film_grain.scaling_points_cr[i][0] = film_grain->point_cr_value[i]; + pp->film_grain.scaling_points_cr[i][1] = film_grain->point_cr_scaling[i]; } for (i = 0; i < 24; i++) { - pp->film_grain.ar_coeffs_y[i] = frame_header->ar_coeffs_y_plus_128[i]; + pp->film_grain.ar_coeffs_y[i] = film_grain->ar_coeffs_y_plus_128[i]; } for (i = 0; i < 25; i++) { - pp->film_grain.ar_coeffs_cb[i] = frame_header->ar_coeffs_cb_plus_128[i]; - pp->film_grain.ar_coeffs_cr[i] = frame_header->ar_coeffs_cr_plus_128[i]; + pp->film_grain.ar_coeffs_cb[i] = film_grain->ar_coeffs_cb_plus_128[i]; + pp->film_grain.ar_coeffs_cr[i] = film_grain->ar_coeffs_cr_plus_128[i]; } - pp->film_grain.cb_mult = frame_header->cb_mult; - pp->film_grain.cb_luma_mult = frame_header->cb_luma_mult; - pp->film_grain.cr_mult = frame_header->cr_mult; - pp->film_grain.cr_luma_mult = frame_header->cr_luma_mult; - pp->film_grain.cb_offset = frame_header->cb_offset; - pp->film_grain.cr_offset = frame_header->cr_offset; - pp->film_grain.cr_offset = frame_header->cr_offset; + pp->film_grain.cb_mult = film_grain->cb_mult; + pp->film_grain.cb_luma_mult = film_grain->cb_luma_mult; + pp->film_grain.cr_mult = film_grain->cr_mult; + pp->film_grain.cr_luma_mult = film_grain->cr_luma_mult; + pp->film_grain.cb_offset = film_grain->cb_offset; + pp->film_grain.cr_offset = film_grain->cr_offset; + pp->film_grain.cr_offset = film_grain->cr_offset; } // XXX: Setting the StatusReportFeedbackNumber breaks decoding on some drivers (tested on NVIDIA 457.09)