/*
 *  Copyright (c) 2015 The WebM project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef AV1_INV_TXFM2D_CFG_H_
#define AV1_INV_TXFM2D_CFG_H_
#include "av1/common/av1_inv_txfm1d.h"
//  ---------------- config inv_dct_dct_4 ----------------
static const int8_t inv_shift_dct_dct_4[2] = { 0, -4 };
static const int8_t inv_stage_range_col_dct_dct_4[4] = { 18, 18, 17, 17 };
static const int8_t inv_stage_range_row_dct_dct_4[4] = { 18, 18, 18, 18 };
static const int8_t inv_cos_bit_col_dct_dct_4[4] = { 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_dct_4[4] = { 13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_dct_4 = {
  4,  // .txfm_size
  4,  // .stage_num_col
  4,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_dct_dct_4,            // .shift
  inv_stage_range_col_dct_dct_4,  // .stage_range_col
  inv_stage_range_row_dct_dct_4,  // .stage_range_row
  inv_cos_bit_col_dct_dct_4,      // .cos_bit_col
  inv_cos_bit_row_dct_dct_4,      // .cos_bit_row
  TXFM_TYPE_DCT4,                 // .txfm_type_col
  TXFM_TYPE_DCT4
};  // .txfm_type_row

//  ---------------- config inv_dct_dct_8 ----------------
static const int8_t inv_shift_dct_dct_8[2] = { 0, -5 };
static const int8_t inv_stage_range_col_dct_dct_8[6] = {
  19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_dct_dct_8[6] = {
  19, 19, 19, 19, 19, 19
};
static const int8_t inv_cos_bit_col_dct_dct_8[6] = { 13, 13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_dct_8[6] = { 13, 13, 13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_dct_8 = {
  8,  // .txfm_size
  6,  // .stage_num_col
  6,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_dct_dct_8,            // .shift
  inv_stage_range_col_dct_dct_8,  // .stage_range_col
  inv_stage_range_row_dct_dct_8,  // .stage_range_row
  inv_cos_bit_col_dct_dct_8,      // .cos_bit_col
  inv_cos_bit_row_dct_dct_8,      // .cos_bit_row
  TXFM_TYPE_DCT8,                 // .txfm_type_col
  TXFM_TYPE_DCT8
};  // .txfm_type_row

//  ---------------- config inv_dct_dct_16 ----------------
static const int8_t inv_shift_dct_dct_16[2] = { -1, -5 };
static const int8_t inv_stage_range_col_dct_dct_16[8] = { 19, 19, 19, 19,
                                                          19, 19, 18, 18 };
static const int8_t inv_stage_range_row_dct_dct_16[8] = { 20, 20, 20, 20,
                                                          20, 20, 20, 20 };
static const int8_t inv_cos_bit_col_dct_dct_16[8] = { 13, 13, 13, 13,
                                                      13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_dct_16[8] = { 12, 12, 12, 12,
                                                      12, 12, 12, 12 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_dct_16 = {
  16,  // .txfm_size
  8,   // .stage_num_col
  8,   // .stage_num_row
  // 0,  // .log_scale
  inv_shift_dct_dct_16,            // .shift
  inv_stage_range_col_dct_dct_16,  // .stage_range_col
  inv_stage_range_row_dct_dct_16,  // .stage_range_row
  inv_cos_bit_col_dct_dct_16,      // .cos_bit_col
  inv_cos_bit_row_dct_dct_16,      // .cos_bit_row
  TXFM_TYPE_DCT16,                 // .txfm_type_col
  TXFM_TYPE_DCT16
};  // .txfm_type_row

//  ---------------- config inv_dct_dct_32 ----------------
static const int8_t inv_shift_dct_dct_32[2] = { -1, -5 };
static const int8_t inv_stage_range_col_dct_dct_32[10] = { 19, 19, 19, 19, 19,
                                                           19, 19, 19, 18, 18 };
static const int8_t inv_stage_range_row_dct_dct_32[10] = { 20, 20, 20, 20, 20,
                                                           20, 20, 20, 20, 20 };
static const int8_t inv_cos_bit_col_dct_dct_32[10] = { 13, 13, 13, 13, 13,
                                                       13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_dct_32[10] = { 12, 12, 12, 12, 12,
                                                       12, 12, 12, 12, 12 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_dct_32 = {
  32,  // .txfm_size
  10,  // .stage_num_col
  10,  // .stage_num_row
  // 1,  // .log_scale
  inv_shift_dct_dct_32,            // .shift
  inv_stage_range_col_dct_dct_32,  // .stage_range_col
  inv_stage_range_row_dct_dct_32,  // .stage_range_row
  inv_cos_bit_col_dct_dct_32,      // .cos_bit_col
  inv_cos_bit_row_dct_dct_32,      // .cos_bit_row
  TXFM_TYPE_DCT32,                 // .txfm_type_col
  TXFM_TYPE_DCT32
};  // .txfm_type_row

//  ---------------- config inv_dct_dct_64 ----------------
static const int8_t inv_shift_dct_dct_64[2] = { -1, -7 };
static const int8_t inv_stage_range_col_dct_dct_64[12] = {
  19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_dct_dct_64[12] = {
  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
static const int8_t inv_cos_bit_col_dct_dct_64[12] = { 13, 13, 13, 13, 13, 13,
                                                       13, 13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_dct_64[12] = { 12, 12, 12, 12, 12, 12,
                                                       12, 12, 12, 12, 12, 12 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_dct_64 = {
  64,                              // .txfm_size
  12,                              // .stage_num_col
  12,                              // .stage_num_row
  inv_shift_dct_dct_64,            // .shift
  inv_stage_range_col_dct_dct_64,  // .stage_range_col
  inv_stage_range_row_dct_dct_64,  // .stage_range_row
  inv_cos_bit_col_dct_dct_64,      // .cos_bit_col
  inv_cos_bit_row_dct_dct_64,      // .cos_bit_row
  TXFM_TYPE_DCT64,                 // .txfm_type_col
  TXFM_TYPE_DCT64
};  // .txfm_type_row

//  ---------------- config inv_dct_adst_4 ----------------
static const int8_t inv_shift_dct_adst_4[2] = { 0, -4 };
static const int8_t inv_stage_range_col_dct_adst_4[4] = { 18, 18, 17, 17 };
static const int8_t inv_stage_range_row_dct_adst_4[6] = {
  18, 18, 18, 18, 18, 18
};
static const int8_t inv_cos_bit_col_dct_adst_4[4] = { 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_adst_4[6] = { 13, 13, 13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_adst_4 = {
  4,  // .txfm_size
  4,  // .stage_num_col
  6,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_dct_adst_4,            // .shift
  inv_stage_range_col_dct_adst_4,  // .stage_range_col
  inv_stage_range_row_dct_adst_4,  // .stage_range_row
  inv_cos_bit_col_dct_adst_4,      // .cos_bit_col
  inv_cos_bit_row_dct_adst_4,      // .cos_bit_row
  TXFM_TYPE_DCT4,                  // .txfm_type_col
  TXFM_TYPE_ADST4
};  // .txfm_type_row

//  ---------------- config inv_dct_adst_8 ----------------
static const int8_t inv_shift_dct_adst_8[2] = { 0, -5 };
static const int8_t inv_stage_range_col_dct_adst_8[6] = {
  19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_dct_adst_8[8] = { 19, 19, 19, 19,
                                                          19, 19, 19, 19 };
static const int8_t inv_cos_bit_col_dct_adst_8[6] = { 13, 13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_adst_8[8] = { 13, 13, 13, 13,
                                                      13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_adst_8 = {
  8,  // .txfm_size
  6,  // .stage_num_col
  8,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_dct_adst_8,            // .shift
  inv_stage_range_col_dct_adst_8,  // .stage_range_col
  inv_stage_range_row_dct_adst_8,  // .stage_range_row
  inv_cos_bit_col_dct_adst_8,      // .cos_bit_col
  inv_cos_bit_row_dct_adst_8,      // .cos_bit_row
  TXFM_TYPE_DCT8,                  // .txfm_type_col
  TXFM_TYPE_ADST8
};  // .txfm_type_row

//  ---------------- config inv_dct_adst_16 ----------------
static const int8_t inv_shift_dct_adst_16[2] = { -1, -5 };
static const int8_t inv_stage_range_col_dct_adst_16[8] = { 19, 19, 19, 19,
                                                           19, 19, 18, 18 };
static const int8_t inv_stage_range_row_dct_adst_16[10] = {
  20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
static const int8_t inv_cos_bit_col_dct_adst_16[8] = { 13, 13, 13, 13,
                                                       13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_adst_16[10] = { 12, 12, 12, 12, 12,
                                                        12, 12, 12, 12, 12 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_adst_16 = {
  16,  // .txfm_size
  8,   // .stage_num_col
  10,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_dct_adst_16,            // .shift
  inv_stage_range_col_dct_adst_16,  // .stage_range_col
  inv_stage_range_row_dct_adst_16,  // .stage_range_row
  inv_cos_bit_col_dct_adst_16,      // .cos_bit_col
  inv_cos_bit_row_dct_adst_16,      // .cos_bit_row
  TXFM_TYPE_DCT16,                  // .txfm_type_col
  TXFM_TYPE_ADST16
};  // .txfm_type_row

//  ---------------- config inv_dct_adst_32 ----------------
static const int8_t inv_shift_dct_adst_32[2] = { -1, -5 };
static const int8_t inv_stage_range_col_dct_adst_32[10] = {
  19, 19, 19, 19, 19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_dct_adst_32[12] = {
  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
static const int8_t inv_cos_bit_col_dct_adst_32[10] = { 13, 13, 13, 13, 13,
                                                        13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_dct_adst_32[12] = {
  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12
};

static const TXFM_2D_CFG inv_txfm_2d_cfg_dct_adst_32 = {
  32,  // .txfm_size
  10,  // .stage_num_col
  12,  // .stage_num_row
  // 1,  // .log_scale
  inv_shift_dct_adst_32,            // .shift
  inv_stage_range_col_dct_adst_32,  // .stage_range_col
  inv_stage_range_row_dct_adst_32,  // .stage_range_row
  inv_cos_bit_col_dct_adst_32,      // .cos_bit_col
  inv_cos_bit_row_dct_adst_32,      // .cos_bit_row
  TXFM_TYPE_DCT32,                  // .txfm_type_col
  TXFM_TYPE_ADST32
};  // .txfm_type_row

//  ---------------- config inv_adst_adst_4 ----------------
static const int8_t inv_shift_adst_adst_4[2] = { 0, -4 };
static const int8_t inv_stage_range_col_adst_adst_4[6] = { 18, 18, 18,
                                                           18, 17, 17 };
static const int8_t inv_stage_range_row_adst_adst_4[6] = { 18, 18, 18,
                                                           18, 18, 18 };
static const int8_t inv_cos_bit_col_adst_adst_4[6] = { 13, 13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_adst_adst_4[6] = { 13, 13, 13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_adst_4 = {
  4,  // .txfm_size
  6,  // .stage_num_col
  6,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_adst_adst_4,            // .shift
  inv_stage_range_col_adst_adst_4,  // .stage_range_col
  inv_stage_range_row_adst_adst_4,  // .stage_range_row
  inv_cos_bit_col_adst_adst_4,      // .cos_bit_col
  inv_cos_bit_row_adst_adst_4,      // .cos_bit_row
  TXFM_TYPE_ADST4,                  // .txfm_type_col
  TXFM_TYPE_ADST4
};  // .txfm_type_row

//  ---------------- config inv_adst_adst_8 ----------------
static const int8_t inv_shift_adst_adst_8[2] = { 0, -5 };
static const int8_t inv_stage_range_col_adst_adst_8[8] = { 19, 19, 19, 19,
                                                           19, 19, 18, 18 };
static const int8_t inv_stage_range_row_adst_adst_8[8] = { 19, 19, 19, 19,
                                                           19, 19, 19, 19 };
static const int8_t inv_cos_bit_col_adst_adst_8[8] = { 13, 13, 13, 13,
                                                       13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_adst_adst_8[8] = { 13, 13, 13, 13,
                                                       13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_adst_8 = {
  8,  // .txfm_size
  8,  // .stage_num_col
  8,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_adst_adst_8,            // .shift
  inv_stage_range_col_adst_adst_8,  // .stage_range_col
  inv_stage_range_row_adst_adst_8,  // .stage_range_row
  inv_cos_bit_col_adst_adst_8,      // .cos_bit_col
  inv_cos_bit_row_adst_adst_8,      // .cos_bit_row
  TXFM_TYPE_ADST8,                  // .txfm_type_col
  TXFM_TYPE_ADST8
};  // .txfm_type_row

//  ---------------- config inv_adst_adst_16 ----------------
static const int8_t inv_shift_adst_adst_16[2] = { -1, -5 };
static const int8_t inv_stage_range_col_adst_adst_16[10] = {
  19, 19, 19, 19, 19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_adst_adst_16[10] = {
  20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
static const int8_t inv_cos_bit_col_adst_adst_16[10] = { 13, 13, 13, 13, 13,
                                                         13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_adst_adst_16[10] = { 12, 12, 12, 12, 12,
                                                         12, 12, 12, 12, 12 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_adst_16 = {
  16,  // .txfm_size
  10,  // .stage_num_col
  10,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_adst_adst_16,            // .shift
  inv_stage_range_col_adst_adst_16,  // .stage_range_col
  inv_stage_range_row_adst_adst_16,  // .stage_range_row
  inv_cos_bit_col_adst_adst_16,      // .cos_bit_col
  inv_cos_bit_row_adst_adst_16,      // .cos_bit_row
  TXFM_TYPE_ADST16,                  // .txfm_type_col
  TXFM_TYPE_ADST16
};  // .txfm_type_row

//  ---------------- config inv_adst_adst_32 ----------------
static const int8_t inv_shift_adst_adst_32[2] = { -1, -5 };
static const int8_t inv_stage_range_col_adst_adst_32[12] = {
  19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_adst_adst_32[12] = {
  20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
static const int8_t inv_cos_bit_col_adst_adst_32[12] = {
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
};
static const int8_t inv_cos_bit_row_adst_adst_32[12] = {
  12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12
};

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_adst_32 = {
  32,  // .txfm_size
  12,  // .stage_num_col
  12,  // .stage_num_row
  // 1,  // .log_scale
  inv_shift_adst_adst_32,            // .shift
  inv_stage_range_col_adst_adst_32,  // .stage_range_col
  inv_stage_range_row_adst_adst_32,  // .stage_range_row
  inv_cos_bit_col_adst_adst_32,      // .cos_bit_col
  inv_cos_bit_row_adst_adst_32,      // .cos_bit_row
  TXFM_TYPE_ADST32,                  // .txfm_type_col
  TXFM_TYPE_ADST32
};  // .txfm_type_row

//  ---------------- config inv_adst_dct_4 ----------------
static const int8_t inv_shift_adst_dct_4[2] = { 0, -4 };
static const int8_t inv_stage_range_col_adst_dct_4[6] = {
  18, 18, 18, 18, 17, 17
};
static const int8_t inv_stage_range_row_adst_dct_4[4] = { 18, 18, 18, 18 };
static const int8_t inv_cos_bit_col_adst_dct_4[6] = { 13, 13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_adst_dct_4[4] = { 13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_dct_4 = {
  4,  // .txfm_size
  6,  // .stage_num_col
  4,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_adst_dct_4,            // .shift
  inv_stage_range_col_adst_dct_4,  // .stage_range_col
  inv_stage_range_row_adst_dct_4,  // .stage_range_row
  inv_cos_bit_col_adst_dct_4,      // .cos_bit_col
  inv_cos_bit_row_adst_dct_4,      // .cos_bit_row
  TXFM_TYPE_ADST4,                 // .txfm_type_col
  TXFM_TYPE_DCT4
};  // .txfm_type_row

//  ---------------- config inv_adst_dct_8 ----------------
static const int8_t inv_shift_adst_dct_8[2] = { 0, -5 };
static const int8_t inv_stage_range_col_adst_dct_8[8] = { 19, 19, 19, 19,
                                                          19, 19, 18, 18 };
static const int8_t inv_stage_range_row_adst_dct_8[6] = {
  19, 19, 19, 19, 19, 19
};
static const int8_t inv_cos_bit_col_adst_dct_8[8] = { 13, 13, 13, 13,
                                                      13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_adst_dct_8[6] = { 13, 13, 13, 13, 13, 13 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_dct_8 = {
  8,  // .txfm_size
  8,  // .stage_num_col
  6,  // .stage_num_row
  // 0,  // .log_scale
  inv_shift_adst_dct_8,            // .shift
  inv_stage_range_col_adst_dct_8,  // .stage_range_col
  inv_stage_range_row_adst_dct_8,  // .stage_range_row
  inv_cos_bit_col_adst_dct_8,      // .cos_bit_col
  inv_cos_bit_row_adst_dct_8,      // .cos_bit_row
  TXFM_TYPE_ADST8,                 // .txfm_type_col
  TXFM_TYPE_DCT8
};  // .txfm_type_row

//  ---------------- config inv_adst_dct_16 ----------------
static const int8_t inv_shift_adst_dct_16[2] = { -1, -5 };
static const int8_t inv_stage_range_col_adst_dct_16[10] = {
  19, 19, 19, 19, 19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_adst_dct_16[8] = { 20, 20, 20, 20,
                                                           20, 20, 20, 20 };
static const int8_t inv_cos_bit_col_adst_dct_16[10] = { 13, 13, 13, 13, 13,
                                                        13, 13, 13, 13, 13 };
static const int8_t inv_cos_bit_row_adst_dct_16[8] = { 12, 12, 12, 12,
                                                       12, 12, 12, 12 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_dct_16 = {
  16,  // .txfm_size
  10,  // .stage_num_col
  8,   // .stage_num_row
  // 0,  // .log_scale
  inv_shift_adst_dct_16,            // .shift
  inv_stage_range_col_adst_dct_16,  // .stage_range_col
  inv_stage_range_row_adst_dct_16,  // .stage_range_row
  inv_cos_bit_col_adst_dct_16,      // .cos_bit_col
  inv_cos_bit_row_adst_dct_16,      // .cos_bit_row
  TXFM_TYPE_ADST16,                 // .txfm_type_col
  TXFM_TYPE_DCT16
};  // .txfm_type_row

//  ---------------- config inv_adst_dct_32 ----------------
static const int8_t inv_shift_adst_dct_32[2] = { -1, -5 };
static const int8_t inv_stage_range_col_adst_dct_32[12] = {
  19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 18
};
static const int8_t inv_stage_range_row_adst_dct_32[10] = {
  20, 20, 20, 20, 20, 20, 20, 20, 20, 20
};
static const int8_t inv_cos_bit_col_adst_dct_32[12] = {
  13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
};
static const int8_t inv_cos_bit_row_adst_dct_32[10] = { 12, 12, 12, 12, 12,
                                                        12, 12, 12, 12, 12 };

static const TXFM_2D_CFG inv_txfm_2d_cfg_adst_dct_32 = {
  32,  // .txfm_size
  12,  // .stage_num_col
  10,  // .stage_num_row
  // 1,  // .log_scale
  inv_shift_adst_dct_32,            // .shift
  inv_stage_range_col_adst_dct_32,  // .stage_range_col
  inv_stage_range_row_adst_dct_32,  // .stage_range_row
  inv_cos_bit_col_adst_dct_32,      // .cos_bit_col
  inv_cos_bit_row_adst_dct_32,      // .cos_bit_row
  TXFM_TYPE_ADST32,                 // .txfm_type_col
  TXFM_TYPE_DCT32
};  // .txfm_type_row

#endif  // AV1_INV_TXFM2D_CFG_H_
