/*
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
 *
 * This source code is subject to the terms of the BSD 2 Clause License and
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 * was not distributed with this source code in the LICENSE file, you can
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
 * Media Patent License 1.0 was not distributed with this source code in the
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
 */
#ifndef AOM_AV1_ENCODER_GRAIN_TEST_VECTORS_H_
#define AOM_AV1_ENCODER_GRAIN_TEST_VECTORS_H_

/* Test vectors for emulation of different film grain types.
 * Note that bit depth would be derived from the bitstream and
 * not signaled in film grain metadata. The parameters are valid
 * for any bit depth.
 */
static aom_film_grain_t film_grain_test_vectors[16] = {
  /* Test 1 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      { { 16, 0 },
        { 25, 136 },
        { 33, 144 },
        { 41, 160 },
        { 48, 168 },
        { 56, 136 },
        { 67, 128 },
        { 82, 144 },
        { 97, 152 },
        { 113, 144 },
        { 128, 176 },
        { 143, 168 },
        { 158, 176 },
        { 178, 184 } },
      14 /* num_points_y */,
      { { 16, 0 },
        { 20, 64 },
        { 28, 88 },
        { 60, 104 },
        { 90, 136 },
        { 105, 160 },
        { 134, 168 },
        { 168, 208 } },
      8 /* num_cb_points */,
      { { 16, 0 },
        { 28, 96 },
        { 56, 80 },
        { 66, 96 },
        { 80, 104 },
        { 108, 96 },
        { 122, 112 },
        { 137, 112 },
        { 169, 176 } },
      9 /* num_cr_points */,
      11 /* scaling_shift */,
      2 /* ar_coeff_lag */,
      { 0, 0, -58, 0, 0, 0, -76, 100, -43, 0, -51, 82 },
      { 0, 0, -49, 0, 0, 0, -36, 22, -30, 0, -38, 7, 39 },
      { 0, 0, -47, 0, 0, 0, -31, 31, -25, 0, -32, 13, -100 },
      8 /* ar_coeff_shift */,
      247 /* cb_mult */,
      192 /* cb_luma_mult */,
      18 /* cb_offset */,
      229 /* cr_mult */,
      192 /* cr_luma_mult */,
      54 /* cr_offset */,
      0 /* overlap_flag */,
      1 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /* chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 2 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      { { 0, 96 }, { 255, 96 } },
      2 /* num_points_y */,
      { { 0, 64 }, { 255, 64 } },
      2 /* num_cb_points */,
      { { 0, 64 }, { 255, 64 } },
      2 /* num_cr_points */,
      11 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          4, 1,   3, 0,   1,  -3, 8,  -3, 7,  -23, 1, -25,
          0, -10, 6, -17, -4, 53, 36, 5,  -5, -17, 8, 66,
      },
      {
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127,
      },
      {
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127,
      },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 3 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      { { 0, 192 }, { 255, 192 } },
      2 /* num_points_y */,
      { { 0, 128 }, { 255, 128 } },
      2 /* num_cb_points */,
      { { 0, 128 }, { 255, 128 } },
      2 /* num_cr_points */,
      11 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          4, 1,   3, 0,   1,  -3, 8,  -3, 7,  -23, 1, -25,
          0, -10, 6, -17, -4, 53, 36, 5,  -5, -17, 8, 66,
      },
      {
          4,   -7, 2,  4,   12, -12, 5,   -8, 6,  8,   -19, -16, 19,
          -10, -2, 17, -42, 58, -2,  -13, 9,  14, -36, 67,  0,
      },
      {
          4,   -7, 2,  4,   12, -12, 5,   -8, 6,  8,   -19, -16, 19,
          -10, -2, 17, -42, 58, -2,  -13, 9,  14, -36, 67,  0,
      },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      1 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      1 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 4 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      {
          { 16, 0 },
          { 24, 137 },
          { 53, 146 },
          { 63, 155 },
          { 78, 155 },
          { 107, 150 },
          { 122, 147 },
          { 136, 147 },
          { 166, 153 },
      },
      9 /* num_points_y */,
      {
          { 16, 0 },
          { 20, 72 },
          { 27, 82 },
          { 33, 91 },
          { 69, 121 },
          { 95, 143 },
          { 108, 154 },
          { 134, 169 },
          { 147, 177 },
      },
      9 /* num_cb_points */,
      {
          { 16, 0 },
          { 24, 95 },
          { 54, 93 },
          { 65, 94 },
          { 79, 98 },
          { 109, 107 },
          { 124, 119 },
          { 139, 136 },
          { 169, 170 },
      },
      9 /* num_cr_points */,
      11 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          7,  -9,  2, 4,   7, -12, 7,  -18, 18, -30, -27, -42,
          13, -20, 7, -18, 6, 107, 55, -2,  -4, -9,  -22, 113,
      },
      {
          -3, -1, -4,  3,   -6,  -2,  3,  1,  -4, -10, -10, -5, -5,
          -3, -1, -13, -28, -25, -31, -6, -4, 14, -64, 66,  0,
      },
      {
          0,  4, -3, 13,  0,  1,   -3, 0,  -3, -10, -68, -4, -2,
          -5, 2, -3, -20, 62, -31, 0,  -4, -1, -8,  -29, 0,
      },
      8 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 5 */
  {
      1 /* apply_grain */,
      0 /* update_parameters */,
      { { 0, 64 }, { 255, 64 } },
      2 /* num_points_y */,
      {
          { 0, 96 },
          { 32, 90 },
          { 64, 83 },
          { 96, 76 },
          { 128, 68 },
          { 159, 59 },
          { 191, 48 },
          { 223, 34 },
          { 255, 0 },
      },
      9 /* num_cb_points */,
      {
          { 0, 0 },
          { 32, 34 },
          { 64, 48 },
          { 96, 59 },
          { 128, 68 },
          { 159, 76 },
          { 191, 83 },
          { 223, 90 },
          { 255, 96 },
      },
      9 /* num_cr_points */,
      11 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          4, 1,   3, 0,   1,  -3, 8,  -3, 7,  -23, 1, -25,
          0, -10, 6, -17, -4, 53, 36, 5,  -5, -17, 8, 66,
      },
      {
          -2, 2,  -5, 7,   -6, 4,   -2, -1, 1,  -2,  0,  -2, 2,
          -3, -5, 13, -13, 6,  -14, 8,  -1, 18, -36, 58, 0,
      },
      {
          -2, -1, -3, 14, -4, -1, -3, 0, -1, 7, -31, 7, 2,
          0,  1,  0,  -7, 50, -8, -2, 2, 2,  2, -4,  0,
      },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      1 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      1063 /* random_seed */
  },
  /* Test 6 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      {
          { 0, 96 },
          { 20, 92 },
          { 39, 88 },
          { 59, 84 },
          { 78, 80 },
          { 98, 75 },
          { 118, 70 },
          { 137, 65 },
          { 157, 60 },
          { 177, 53 },
          { 196, 46 },
          { 216, 38 },
          { 235, 27 },
          { 255, 0 },
      },
      14 /* num_points_y */,
      { { 0, 0 } },
      0 /* num_cb_points */,
      { { 0, 0 } },
      0 /* num_cr_points */,
      11 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          4, 1,   3, 0,   1,  -3, 8,  -3, 7,  -23, 1, -25,
          0, -10, 6, -17, -4, 53, 36, 5,  -5, -17, 8, 66,
      },
      {
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      },
      {
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      1 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      2754 /* random_seed */
  },
  /* Test 7 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      {
          { 0, 0 },
          { 20, 27 },
          { 39, 38 },
          { 59, 46 },
          { 78, 53 },
          { 98, 60 },
          { 118, 65 },
          { 137, 70 },
          { 157, 75 },
          { 177, 80 },
          { 196, 84 },
          { 216, 88 },
          { 235, 92 },
          { 255, 96 },
      },
      14 /* num_points_y */,
      { { 0, 0 }, { 255, 0 } },
      2 /* num_cb_points */,
      { { 0, 0 }, { 255, 0 } },
      2 /* num_cr_points */,
      11 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          4, 1,   3, 0,   1,  -3, 8,  -3, 7,  -23, 1, -25,
          0, -10, 6, -17, -4, 53, 36, 5,  -5, -17, 8, 66,
      },
      {
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      },
      {
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      1 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 8 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      { { 0, 96 }, { 255, 96 } },
      2 /* num_points_y */,
      { { 0, 62 }, { 255, 62 } },
      2 /* num_cb_points */,
      { { 0, 62 }, { 255, 62 } },
      2 /* num_cr_points */,
      11 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          4, 1,   3, 0,   1,  -3, 8,  -3, 7,  -23, 1, -25,
          0, -10, 6, -17, -4, 53, 36, 5,  -5, -17, 8, 66,
      },
      {
          0,  -2, -2, 8,   5,  -1, 1,   -1, 5,  16,  -33, -9,  6,
          -1, -3, 10, -47, 63, 0,  -15, 3,  11, -42, 75,  -69,
      },
      {
          1,  -1, -1, 9,   5,  0, 1,   -1, 5,  15,  -32, -10, 8,
          -2, -4, 11, -46, 62, 1, -16, 3,  13, -43, 75,  -55,
      },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 9 */
  {
      1 /* apply_grain */,
      0 /* update_parameters */,
      { { 0, 48 }, { 255, 48 } },
      2 /* num_points_y */,
      { { 0, 32 }, { 255, 32 } },
      2 /* num_cb_points */,
      { { 0, 32 }, { 255, 32 } },
      2 /* num_cr_points */,
      10 /* scaling_shift */,
      2 /* ar_coeff_lag */,
      { 10, -30, -20, -39, 1, -24, 12, 103, 60, -9, -24, 113 },
      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127 },
      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127 },
      8 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 10 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      { { 0, 48 }, { 255, 48 } },
      2 /* num_points_y */,
      { { 0, 32 }, { 255, 32 } },
      2 /* num_cb_points */,
      { { 0, 32 }, { 255, 32 } },
      2 /* num_cr_points */,
      10 /* scaling_shift */,
      2 /* ar_coeff_lag */,
      { 10, -30, -20, -39, 1, -24, 12, 103, 60, -9, -24, 113 },
      { -7, -6, -48, -22, 2, -3, -45, 73, -11, -26, -52, 76, 0 },
      { -7, -6, -48, -22, 2, -3, -45, 73, -11, -26, -52, 76, 0 },
      8 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 11 */
  {
      1 /* apply_grain */,
      0 /* update_parameters */,
      { { 0, 32 }, { 255, 32 } },
      2 /* num_points_y */,
      {
          { 0, 48 },
          { 32, 45 },
          { 64, 42 },
          { 96, 38 },
          { 128, 34 },
          { 159, 29 },
          { 191, 24 },
          { 223, 17 },
          { 255, 0 },
      },
      9 /* num_cb_points */,
      {
          { 0, 0 },
          { 32, 17 },
          { 64, 24 },
          { 96, 29 },
          { 128, 34 },
          { 159, 38 },
          { 191, 42 },
          { 223, 45 },
          { 255, 48 },
      },
      9 /* num_cr_points */,
      10 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          7,  -9,  2, 4,   7, -12, 7,  -18, 18, -30, -27, -42,
          13, -20, 7, -18, 6, 107, 55, -2,  -4, -9,  -22, 113,
      },
      {
          -3, -1, -4,  3,   -6,  -2,  3,  1,  -4, -10, -10, -5, -5,
          -3, -1, -13, -28, -25, -31, -6, -4, 14, -64, 66,  0,
      },
      {
          0,  4, -3, 13,  0,  1,   -3, 0,  -3, -10, -68, -4, -2,
          -5, 2, -3, -20, 62, -31, 0,  -4, -1, -8,  -29, 0,
      },
      8 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      1 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      1357 /* random_seed */
  },
  /* Test 12 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      {
          { 16, 0 },
          { 24, 49 },
          { 39, 69 },
          { 46, 84 },
          { 53, 91 },
          { 63, 100 },
          { 78, 114 },
          { 92, 134 },
          { 164, 139 },
      },
      9 /* num_points_y */,
      {
          { 16, 0 },
          { 20, 31 },
          { 26, 42 },
          { 33, 54 },
          { 40, 65 },
          { 47, 72 },
          { 56, 85 },
          { 84, 123 },
          { 152, 157 },
      },
      9 /* num_cb_points */,
      {
          { 16, 0 },
          { 25, 14 },
          { 39, 33 },
          { 47, 40 },
          { 54, 47 },
          { 64, 62 },
          { 79, 76 },
          { 94, 83 },
          { 167, 101 },
      },
      9 /* num_cr_points */,
      10 /* scaling_shift */,
      2 /* ar_coeff_lag */,
      { 0, 0, -58, 0, 0, 0, -76, 100, -43, 0, -51, 82 },
      { 0, 0, -49, 0, 0, 0, -36, 22, -30, 0, -38, 7, 39 },
      { 0, 0, -47, 0, 0, 0, -31, 31, -25, 0, -32, 13, -100 },
      8 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      0 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 13 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      {
          { 0, 48 },
          { 20, 46 },
          { 39, 44 },
          { 59, 42 },
          { 78, 40 },
          { 98, 38 },
          { 118, 35 },
          { 137, 33 },
          { 157, 30 },
          { 177, 27 },
          { 196, 23 },
          { 216, 19 },
          { 235, 13 },
          { 255, 0 },
      },
      14 /* num_points_y */,
      { { 0, 0 }, { 255, 0 } },
      0 /* num_cb_points */,
      { { 0, 0 }, { 255, 0 } },
      0 /* num_cr_points */,
      10 /* scaling_shift */,
      2 /* ar_coeff_lag */,
      { 10, -30, -20, -39, 1, -24, 12, 103, 60, -9, -24, 113 },
      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
      8 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 14 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      {
          { 0, 0 },
          { 20, 13 },
          { 39, 19 },
          { 59, 23 },
          { 78, 27 },
          { 98, 30 },
          { 118, 33 },
          { 137, 35 },
          { 157, 38 },
          { 177, 40 },
          { 196, 42 },
          { 216, 44 },
          { 235, 46 },
          { 255, 48 },
      },
      14 /* num_points_y */,
      { { 0, 0 }, { 255, 0 } },
      0 /* num_cb_points */,
      { { 0, 0 }, { 255, 0 } },
      0 /* num_cr_points */,
      10 /* scaling_shift */,
      2 /* ar_coeff_lag */,
      { 10, -30, -20, -39, 1, -24, 12, 103, 60, -9, -24, 113 },
      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
      8 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      1 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 15 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      { { 0, 96 }, { 255, 96 } },
      1 /* num_points_y */,
      { { 0, 96 }, { 255, 96 } },
      0 /* num_cb_points */,
      { { 0, 96 }, { 255, 96 } },
      0 /* num_cr_points */,
      11 /* scaling_shift */,
      2 /* ar_coeff_lag */,
      { 5, -15, -10, -19, 0, -12, 6, 51, 30, -5, -12, 56 },
      { 2, 2, -24, -5, 1, 1, -18, 37, -2, 0, -15, 39, -70 },
      { 2, 3, -24, -5, -1, 0, -18, 38, -2, 0, -15, 39, -55 },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      1 /*chroma_scaling_from_luma*/,
      0 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
  /* Test 16 */
  {
      1 /* apply_grain */,
      1 /* update_parameters */,
      {
          { 16, 0 },
          { 58, 126 },
          { 87, 120 },
          { 97, 122 },
          { 112, 125 },
          { 126, 131 },
          { 141, 139 },
          { 199, 153 },
      },
      8 /* num_points_y */,
      {
          { 16, 0 },
          { 59, 68 },
          { 66, 76 },
          { 73, 82 },
          { 79, 85 },
          { 86, 86 },
          { 151, 95 },
          { 192, 101 },
      },
      8 /* num_cb_points */,
      {
          { 16, 0 },
          { 59, 64 },
          { 89, 80 },
          { 99, 86 },
          { 114, 90 },
          { 129, 93 },
          { 144, 97 },
          { 203, 85 },
      },
      8 /* num_cr_points */,
      10 /* scaling_shift */,
      3 /* ar_coeff_lag */,
      {
          4, 1,   3, 0,   1,  -3, 8,  -3, 7,  -23, 1, -25,
          0, -10, 6, -17, -4, 53, 36, 5,  -5, -17, 8, 66,
      },
      {
          0,  -2, -2, 8,   5,  -1, 1,   -1, 5,  16,  -33, -9,  6,
          -1, -3, 10, -47, 63, 0,  -15, 3,  11, -42, 75,  -69,
      },
      {
          1,  -1, -1, 9,   5,  0, 1,   -1, 5,  15,  -32, -10, 8,
          -2, -4, 11, -46, 62, 1, -16, 3,  13, -43, 75,  -55,
      },
      7 /* ar_coeff_shift */,
      128 /* cb_mult */,
      192 /* cb_luma_mult */,
      256 /* cb_offset */,
      128 /* cr_mult */,
      192 /* cr_luma_mult */,
      256 /* cr_offset */,
      1 /* overlap_flag */,
      0 /* clip_to_restricted_range */,
      8 /* bit_depth */,
      0 /*chroma_scaling_from_luma*/,
      2 /* grain_scale_shift*/,
      45231 /* random_seed */
  },
};
#endif  // AOM_AV1_ENCODER_GRAIN_TEST_VECTORS_H_
