From patchwork Thu Nov 12 20:52:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23605 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 730B144AC00 for ; Thu, 12 Nov 2020 22:52:57 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5AAD468C1C8; Thu, 12 Nov 2020 22:52:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f196.google.com (mail-qt1-f196.google.com [209.85.160.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4968868B6DF for ; Thu, 12 Nov 2020 22:52:51 +0200 (EET) Received: by mail-qt1-f196.google.com with SMTP id b16so4906891qtb.6 for ; Thu, 12 Nov 2020 12:52:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ipE0Vv5hMtnBnxYE0BNotTXCIDLgUjLyuV49xgwjo/Q=; b=PE9x/69lTtqvPSYVEOobvGXy1mZB/VrQh4a42PT7NCZ7uOw/vlW+AMpsgkYIwRQEd5 tnDIPdWYKbhQS/XMg5CoXNm1oZe512H8DYfqEc9NwEzasi3Fo1DrWwsCoveWvNrm/k6Q LUt+LnoWXVvkzTRJa0M4U0pm+R9qi7ZysZo6f7QVbFNf/ogacQNO1FL0R1DAejKTWbHD BDwi5du1JoEHaHvy1YwwKZGisyqOa93aci43h1IxEVXdWAMYS/6eDaGwfbchm+jt5/ry bsc5G2EqutoSKQiaRb1nqpuzGtp86Vr3LOgngE9wsOqzJeLRlkeqtpF3DJv0jOJ+8SAh lpRA== 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:mime-version :content-transfer-encoding; bh=ipE0Vv5hMtnBnxYE0BNotTXCIDLgUjLyuV49xgwjo/Q=; b=A0AIpd57ACasnhOXYank6aDQz8uklZLVJZEZXHuw6tUPHHD8MvhzkTKPzbhPdNp/6A jqGAKbAikllDpWWPslHm5Mu52ud5Q6rVvXvFfr+W3Oj2w+ax981L55xRMReCKMHo3nDv Ym88TCnGq6b91bJwnJw4Wz9e4SvYGA4x+fIEeFDq7YO87E3q+Ni7k5jzgXWbOA5Nmn7W UFl2m+1WBFE4V6rxkiIln5hIFciIuWKbpJrYfBEjjzXvspCYYTNYDxZqyrdDDezcCftr xo9OAUktCfO1grMfeWfEpuXoCGkvKWjn6k1X33gcaZjQaABe3Z7WPgqRdtAHtEtfR4ZE f6FA== X-Gm-Message-State: AOAM532V0FF5gPpDA4jXVLnFP9JnWuHstHEt6rX4ONkTiP2Imjfh8T1b 9Dstauk1gYGLXWUggDnLSDScyG9ATbs= X-Google-Smtp-Source: ABdhPJyxvyQ46Fd63e8k7MHPD8AYqVpZZivPMrCpaW/no/8zrULzY5puvsy/n/WhsbUIfcDgrU8EGg== X-Received: by 2002:aed:3809:: with SMTP id j9mr1051007qte.197.1605214369681; Thu, 12 Nov 2020 12:52:49 -0800 (PST) Received: from localhost.localdomain ([181.23.94.194]) by smtp.gmail.com with ESMTPSA id l8sm5335219qtj.93.2020.11.12.12.52.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Nov 2020 12:52:48 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Nov 2020 17:52:11 -0300 Message-Id: <20201112205213.1179-1-jamrial@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/av1dec: add a reference to the raw frame header to 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/av1dec.c | 14 ++++++++++++++ libavcodec/av1dec.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index ad8e7d1dd5..84c9ca93d5 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -442,6 +442,8 @@ static void av1_frame_unref(AVCodecContext *avctx, AV1Frame *f) ff_thread_release_buffer(avctx, &f->tf); av_buffer_unref(&f->hwaccel_priv_buf); f->hwaccel_picture_private = NULL; + av_buffer_unref(&f->header_ref); + f->raw_frame_header = NULL; f->spatial_id = f->temporal_id = 0; f->order_hint = 0; memset(f->skip_mode_frame_idx, 0, @@ -457,6 +459,12 @@ static int av1_frame_ref(AVCodecContext *avctx, AV1Frame *dst, const AV1Frame *s if (ret < 0) return ret; + dst->header_ref = av_buffer_ref(src->header_ref); + if (!dst->header_ref) + goto fail; + + dst->raw_frame_header = src->raw_frame_header; + if (src->hwaccel_picture_private) { dst->hwaccel_priv_buf = av_buffer_ref(src->hwaccel_priv_buf); if (!dst->hwaccel_priv_buf) @@ -643,6 +651,12 @@ static int av1_frame_alloc(AVCodecContext *avctx, AV1Frame *f) AVFrame *frame; int ret; + f->header_ref = av_buffer_ref(s->header_ref); + if (!f->header_ref) + return AVERROR(ENOMEM); + + f->raw_frame_header = s->raw_frame_header; + ret = update_context_with_frame_header(avctx, header); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, "Failed to update context with frame header\n"); diff --git a/libavcodec/av1dec.h b/libavcodec/av1dec.h index bed9376a36..533ca2b30f 100644 --- a/libavcodec/av1dec.h +++ b/libavcodec/av1dec.h @@ -36,6 +36,9 @@ typedef struct AV1Frame { AVBufferRef *hwaccel_priv_buf; void *hwaccel_picture_private; + AVBufferRef *header_ref; + AV1RawFrameHeader *raw_frame_header; + int temporal_id; int spatial_id; From patchwork Thu Nov 12 20:52:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23607 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 2420844A0CA for ; Thu, 12 Nov 2020 23:00:12 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E9D8268C1CC; Thu, 12 Nov 2020 23:00:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 95E3C68BA37 for ; Thu, 12 Nov 2020 23:00:05 +0200 (EET) Received: by mail-qk1-f193.google.com with SMTP id d9so6824116qke.8 for ; Thu, 12 Nov 2020 13:00:05 -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=YLY8KUaN2iFW3XX1BofTh+JnnTZH/jKFxhsXYGvghpQ=; b=uw6o0WuP/5TqG2C3SH9s66DCFcWelK/CGJOp8zimRIfLn69tGT/UMmk0SRJD4+SanG SIR3NXvKh2X4QvF3+MuYBw5w0swmF36fe0R8aQnZ3lQMcy+2PhrV1uzQPw8jLHszRFFK U1kZZ5J3Hac3IH/AYvtD1HeLw8EgTYC0DIsuj8l02+WgpkFsyfeV+Gj2BL5Mug/fMumB tsHKqUyXP58kOVuzz7V5bk/NOuQ2WICzAiijySdJ5Kt5XH2s/ifqDgMPAQi7Sc8aL/1E 4HxE/VPQD2qIPWbaEEBVk3UZ+qeCNXYSECr7kDe4QFqCxXJZ/yLzpGRoAa2F/q3xGYsB J5Sg== 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=YLY8KUaN2iFW3XX1BofTh+JnnTZH/jKFxhsXYGvghpQ=; b=kpI6NdzmznGCkT30bVVHuO7WVUSGE5SyMZQs66MmWbgMBfZHoXeKmXRir6hBSguEDs HePcL/dugg5i+WhAmV52SWt6atAiCKQqPd4WoMb2AMMqcCcHZlR6ws4dmY+4sTvD8/8Q Ykgk6nnsdyJRYnDM775XPGf7RC7aOJZJOaiYnHdcTLUg7QoD6A0TNI5mc1QLwLEv33fv YvWkXqZV94PBKuh6H1+1dmFw8iuanmkSNCRHKtfJlV14J+Ud9r4Fl7IiZ0NvL3sbF8um V2wVz66DuzQHvKPhJaj6L12SGHskwWI9WWk4pfSw59SX3szabpjkoqvPL3sIAidrRJ44 EvRw== X-Gm-Message-State: AOAM531uD7BKelb8EUtiwtVI7LJ35vySa+M1eX9XPLlqmdr7yYCKPt2k G3PbV6tjd+m1Eirq5/YZY62+RXNpGMo= X-Google-Smtp-Source: ABdhPJwKtN+PBb7BAgMmekhD4C/Kv9a393b44pvgiOVZdAItCegC6BBa1/xtMjDGqOK8nR/X3u1RtA== X-Received: by 2002:a05:620a:1647:: with SMTP id c7mr1706139qko.455.1605214371232; Thu, 12 Nov 2020 12:52:51 -0800 (PST) Received: from localhost.localdomain ([181.23.94.194]) by smtp.gmail.com with ESMTPSA id l8sm5335219qtj.93.2020.11.12.12.52.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Nov 2020 12:52:50 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Nov 2020 17:52:12 -0300 Message-Id: <20201112205213.1179-2-jamrial@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201112205213.1179-1-jamrial@gmail.com> References: <20201112205213.1179-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/av1dec: remove order_hint from AV1Frame 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" We now have access to the raw frame header, so use that Signed-off-by: James Almer --- libavcodec/av1dec.c | 8 ++------ libavcodec/av1dec.h | 1 - 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index 84c9ca93d5..c1967f03bd 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -169,7 +169,7 @@ static void skip_mode_params(AV1DecContext *s) forward_idx = -1; backward_idx = -1; for (i = 0; i < AV1_REFS_PER_FRAME; i++) { - ref_hint = s->ref[header->ref_frame_idx[i]].order_hint; + ref_hint = s->ref[header->ref_frame_idx[i]].raw_frame_header->order_hint; dist = get_relative_dist(seq, ref_hint, header->order_hint); if (dist < 0) { if (forward_idx < 0 || @@ -198,7 +198,7 @@ static void skip_mode_params(AV1DecContext *s) second_forward_idx = -1; for (i = 0; i < AV1_REFS_PER_FRAME; i++) { - ref_hint = s->ref[header->ref_frame_idx[i]].order_hint; + ref_hint = s->ref[header->ref_frame_idx[i]].raw_frame_header->order_hint; if (get_relative_dist(seq, ref_hint, forward_hint) < 0) { if (second_forward_idx < 0 || get_relative_dist(seq, ref_hint, second_forward_hint) > 0) { @@ -445,7 +445,6 @@ static void av1_frame_unref(AVCodecContext *avctx, AV1Frame *f) av_buffer_unref(&f->header_ref); f->raw_frame_header = NULL; f->spatial_id = f->temporal_id = 0; - f->order_hint = 0; memset(f->skip_mode_frame_idx, 0, 2 * sizeof(uint8_t)); f->coded_lossless = 0; @@ -480,7 +479,6 @@ static int av1_frame_ref(AVCodecContext *avctx, AV1Frame *dst, const AV1Frame *s memcpy(dst->gm_params, src->gm_params, AV1_NUM_REF_FRAMES * 6 * sizeof(int32_t)); - dst->order_hint = src->order_hint; memcpy(dst->skip_mode_frame_idx, src->skip_mode_frame_idx, 2 * sizeof(uint8_t)); @@ -890,8 +888,6 @@ static int av1_decode_frame(AVCodecContext *avctx, void *frame, s->cur_frame.spatial_id = header->spatial_id; s->cur_frame.temporal_id = header->temporal_id; - s->cur_frame.order_hint = s->raw_frame_header->order_hint; - if (avctx->hwaccel) { ret = avctx->hwaccel->start_frame(avctx, unit->data, unit->data_size); diff --git a/libavcodec/av1dec.h b/libavcodec/av1dec.h index 533ca2b30f..4b218f64bb 100644 --- a/libavcodec/av1dec.h +++ b/libavcodec/av1dec.h @@ -45,7 +45,6 @@ typedef struct AV1Frame { uint8_t gm_type[AV1_NUM_REF_FRAMES]; int32_t gm_params[AV1_NUM_REF_FRAMES][6]; - uint8_t order_hint; uint8_t skip_mode_frame_idx[2]; uint8_t coded_lossless; From patchwork Thu Nov 12 20:52:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23608 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 3B11744A0CA for ; Thu, 12 Nov 2020 23:00:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1F78D68BA6E; Thu, 12 Nov 2020 23:00:42 +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 E403868A2B6 for ; Thu, 12 Nov 2020 23:00:35 +0200 (EET) Received: by mail-qk1-f195.google.com with SMTP id n132so6850426qke.1 for ; Thu, 12 Nov 2020 13:00:35 -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=8ztZ8RMpJ5LjF7stQ21WHSBYt2HGO9tUXz2sngWEnHw=; b=c4F33NTPwL/SMsu603pLG7zWUhFHEJoSHLrhvZQ+9hotCjHAP4V3lyZs/4O7pog1Sy 01nYJs8rjLgGEdQre3ek8zlAX9RctITd5sJEHuXaLrVpUXilCYfeaMDl4BD9J+r1yRsO gMK9EQX5jBsPC7yL/LYM/fAPbh/IIRjqbvuQwf7HA3kCScVQ0bk2ut9unl8/tsr1JFUs okFNczB1CaGV/diRrQ36IXNb4toJ2vMmjFC9cRd9b5UcTcDd6BtFnPlYwg6Uk93Hc5wo 9j3Mk1lE6XM1c5CsNBpT9Dbauq+zigJgnEGtb4bbSFf6njNFtDFqZLRVkrgE8r2D3Ysk L3Yw== 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=8ztZ8RMpJ5LjF7stQ21WHSBYt2HGO9tUXz2sngWEnHw=; b=PVf+SH8BGib4A8GyO5q4Hz2/9xqoPs2svoQduMsO8GzWsUtEea9bgrD/bgkzFaP/6c T+WJax3psBaV8oL6a1ybzkRexwpKohybN6HVuh8XkdhLacrWGEf/zPVXPG5dSm78SDTJ DMq/KOAdxOkHl5GEeKVUpO8amTTyt8m0hz4CpzNv07FFWTrDlO4Yp4JwxxOgLEmDp071 6R8xcw0QOsRyAhLNYEgorOB4eFYQbaGTiR5GJx/t5CQ/CRBP2M6vHxzC3S16GIxVFeIB uEpG8m1WHDLvNO1WB4F3YANC2vqfz1ReX9oAafZbEC/F3whvWLUhjIvhwRvYHpMGgTzK ZMQQ== X-Gm-Message-State: AOAM533p9/5cUw7NHHznItTrdhD8t7rFJADyTaMPo83QbNl1RZASOWsZ vIAWVbts1+Nb7CM9Yq2LwHlY3DQiISI= X-Google-Smtp-Source: ABdhPJxKVbKbuYvtxfVO/5KtcooN0rNgLYkAJhKEIVclCftHbRdff5SpXLsAi1R9DA3vhGrg9XnYNw== X-Received: by 2002:a37:6b07:: with SMTP id g7mr1776429qkc.265.1605214372771; Thu, 12 Nov 2020 12:52:52 -0800 (PST) Received: from localhost.localdomain ([181.23.94.194]) by smtp.gmail.com with ESMTPSA id l8sm5335219qtj.93.2020.11.12.12.52.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Nov 2020 12:52:52 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Nov 2020 17:52:13 -0300 Message-Id: <20201112205213.1179-3-jamrial@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201112205213.1179-1-jamrial@gmail.com> References: <20201112205213.1179-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/nvdec_av1: fix setting film grain parameters for frames with update_grain == 0 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" The spec in section 6.8.20 states the parameters should be loaded from a reference frame indexed by film_grain_params_ref_idx. Signed-off-by: James Almer --- Untested. libavcodec/nvdec_av1.c | 58 ++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/libavcodec/nvdec_av1.c b/libavcodec/nvdec_av1.c index 9da1c840e3..5117c97eda 100644 --- a/libavcodec/nvdec_av1.c +++ b/libavcodec/nvdec_av1.c @@ -182,23 +182,7 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u /* Film Grain Params */ .apply_grain = frame_header->apply_grain, - .overlap_flag = frame_header->overlap_flag, - .scaling_shift_minus8 = frame_header->grain_scaling_minus_8, - .chroma_scaling_from_luma = frame_header->chroma_scaling_from_luma, - .ar_coeff_lag = frame_header->ar_coeff_lag, - .ar_coeff_shift_minus6 = frame_header->ar_coeff_shift_minus_6, - .grain_scale_shift = frame_header->grain_scale_shift, - .clip_to_restricted_range = frame_header->clip_to_restricted_range, - .num_y_points = frame_header->num_y_points, - .num_cb_points = frame_header->num_cb_points, - .num_cr_points = frame_header->num_cr_points, .random_seed = frame_header->grain_seed, - .cb_mult = frame_header->cb_mult, - .cb_luma_mult = frame_header->cb_luma_mult, - .cb_offset = frame_header->cb_offset, - .cr_mult = frame_header->cr_mult, - .cr_luma_mult = frame_header->cr_luma_mult, - .cr_offset = frame_header->cr_offset } }; @@ -259,22 +243,46 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u /* Film Grain Params */ if (frame_header->apply_grain) { + const AV1RawFrameHeader *fg_header; + + if (frame_header->update_grain) + fg_header = frame_header; + else + fg_header = s->ref[frame_header->film_grain_params_ref_idx].raw_frame_header; + + ppc->overlap_flag = fg_header->overlap_flag; + ppc->scaling_shift_minus8 = fg_header->grain_scaling_minus_8; + ppc->chroma_scaling_from_luma = fg_header->chroma_scaling_from_luma; + ppc->ar_coeff_lag = fg_header->ar_coeff_lag; + ppc->ar_coeff_shift_minus6 = fg_header->ar_coeff_shift_minus_6; + ppc->grain_scale_shift = fg_header->grain_scale_shift; + ppc->clip_to_restricted_range = fg_header->clip_to_restricted_range; + ppc->num_y_points = fg_header->num_y_points; + ppc->num_cb_points = fg_header->num_cb_points; + ppc->num_cr_points = fg_header->num_cr_points; + ppc->cb_mult = fg_header->cb_mult; + ppc->cb_luma_mult = fg_header->cb_luma_mult; + ppc->cb_offset = fg_header->cb_offset; + ppc->cr_mult = fg_header->cr_mult; + ppc->cr_luma_mult = fg_header->cr_luma_mult; + ppc->cr_offset = fg_header->cr_offset; + for (i = 0; i < 14; ++i) { - ppc->scaling_points_y[i][0] = frame_header->point_y_value[i]; - ppc->scaling_points_y[i][1] = frame_header->point_y_scaling[i]; + ppc->scaling_points_y[i][0] = fg_header->point_y_value[i]; + ppc->scaling_points_y[i][1] = fg_header->point_y_scaling[i]; } for (i = 0; i < 10; ++i) { - ppc->scaling_points_cb[i][0] = frame_header->point_cb_value[i]; - ppc->scaling_points_cb[i][1] = frame_header->point_cb_scaling[i]; - ppc->scaling_points_cr[i][0] = frame_header->point_cr_value[i]; - ppc->scaling_points_cr[i][1] = frame_header->point_cr_scaling[i]; + ppc->scaling_points_cb[i][0] = fg_header->point_cb_value[i]; + ppc->scaling_points_cb[i][1] = fg_header->point_cb_scaling[i]; + ppc->scaling_points_cr[i][0] = fg_header->point_cr_value[i]; + ppc->scaling_points_cr[i][1] = fg_header->point_cr_scaling[i]; } for (i = 0; i < 24; ++i) { - ppc->ar_coeffs_y[i] = (short)frame_header->ar_coeffs_y_plus_128[i] - 128; + ppc->ar_coeffs_y[i] = (short)fg_header->ar_coeffs_y_plus_128[i] - 128; } for (i = 0; i < 25; ++i) { - ppc->ar_coeffs_cb[i] = (short)frame_header->ar_coeffs_cb_plus_128[i] - 128; - ppc->ar_coeffs_cr[i] = (short)frame_header->ar_coeffs_cr_plus_128[i] - 128; + ppc->ar_coeffs_cb[i] = (short)fg_header->ar_coeffs_cb_plus_128[i] - 128; + ppc->ar_coeffs_cr[i] = (short)fg_header->ar_coeffs_cr_plus_128[i] - 128; } }