blob: 8a0a1fe3094ad79ead98d2c984e9c071303bb9e1 [file] [log] [blame] [edit]
/*
* Copyright (c) 2021, Alliance for Open Media. All rights reserved
*
* This source code is subject to the terms of the BSD 3-Clause Clear License
* and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear
* License was not distributed with this source code in the LICENSE file, you
* can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. 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
* aomedia.org/license/patent-license/.
*/
#include "aom/aom_integer.h"
#include "av1/common/av1_common_int.h"
#include "av1/common/txb_common.h"
// The ctx offset table when TX is TX_CLASS_2D.
// TX col and row indices are clamped to 4
const int8_t av1_nz_map_ctx_offset_4x4[16] = {
0, 1, 6, 6, 1, 6, 6, 21, 6, 6, 21, 21, 6, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_8x8[64] = {
0, 1, 6, 6, 21, 21, 21, 21, 1, 6, 6, 21, 21, 21, 21, 21,
6, 6, 21, 21, 21, 21, 21, 21, 6, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_16x16[256] = {
0, 1, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 6, 6,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 6, 6, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 6, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_32x32[1024] = {
0, 1, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 1, 6, 6, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_8x4[32] = {
0, 16, 6, 6, 21, 21, 21, 21, 16, 16, 6, 21, 21, 21, 21, 21,
16, 16, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_8x16[128] = {
0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 21,
21, 21, 21, 21, 21, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_16x8[128] = {
0, 16, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 6,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_16x32[512] = {
0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 6, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_32x16[512] = {
0, 16, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 6, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_32x64[1024] = {
0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_64x32[1024] = {
0, 16, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 6, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16,
16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_4x16[64] = {
0, 11, 11, 11, 11, 11, 11, 11, 6, 6, 21, 21, 6, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_16x4[64] = {
0, 16, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
16, 16, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_8x32[256] = {
0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 21,
21, 21, 21, 21, 21, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_32x8[256] = {
0, 16, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 6, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_4x32[128] = {
0, 11, 11, 11, 11, 11, 11, 11, 6, 6, 21, 21, 6, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t av1_nz_map_ctx_offset_32x4[128] = {
0, 16, 6, 6, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 16, 16, 6, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 16, 16, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
};
const int8_t *av1_nz_map_ctx_offset[TX_SIZES_ALL] = {
av1_nz_map_ctx_offset_4x4, // TX_4x4
av1_nz_map_ctx_offset_8x8, // TX_8x8
av1_nz_map_ctx_offset_16x16, // TX_16x16
av1_nz_map_ctx_offset_32x32, // TX_32x32
av1_nz_map_ctx_offset_32x32, // TX_32x32
av1_nz_map_ctx_offset_4x16, // TX_4x8
av1_nz_map_ctx_offset_8x4, // TX_8x4
av1_nz_map_ctx_offset_8x32, // TX_8x16
av1_nz_map_ctx_offset_16x8, // TX_16x8
av1_nz_map_ctx_offset_16x32, // TX_16x32
av1_nz_map_ctx_offset_32x16, // TX_32x16
av1_nz_map_ctx_offset_32x64, // TX_32x64
av1_nz_map_ctx_offset_64x32, // TX_64x32
av1_nz_map_ctx_offset_4x16, // TX_4x16
av1_nz_map_ctx_offset_16x4, // TX_16x4
av1_nz_map_ctx_offset_8x32, // TX_8x32
av1_nz_map_ctx_offset_32x8, // TX_32x8
av1_nz_map_ctx_offset_16x32, // TX_16x64
av1_nz_map_ctx_offset_64x32, // TX_64x16
av1_nz_map_ctx_offset_4x32, // TX_4x32
av1_nz_map_ctx_offset_32x4, // TX_32x4
av1_nz_map_ctx_offset_8x32, // TX_8x64
av1_nz_map_ctx_offset_32x8, // TX_64x8
av1_nz_map_ctx_offset_4x32, // TX_4x64
av1_nz_map_ctx_offset_32x4, // TX_64x4
};
const int16_t av1_eob_group_start[12] = { 0, 1, 2, 3, 5, 9,
17, 33, 65, 129, 257, 513 };
const int16_t av1_eob_offset_bits[12] = { 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// DCT-2
const int tx_kernel_dct2_size4[TXFM_DIRECTIONS][4][4] = {
{
{ 64, 64, 64, 64 },
{ 83, 35, -35, -83 },
{ 64, -64, -64, 64 },
{ 35, -83, 83, -35 },
},
{
{ 64, 64, 64, 64 },
{ 83, 35, -35, -83 },
{ 64, -64, -64, 64 },
{ 35, -83, 83, -35 },
},
};
const int tx_kernel_dct2_size8[TXFM_DIRECTIONS][8][8] = {
{
{ 64, 64, 64, 64, 64, 64, 64, 64 },
{ 89, 75, 50, 18, -18, -50, -75, -89 },
{ 83, 35, -35, -83, -83, -35, 35, 83 },
{ 75, -18, -89, -50, 50, 89, 18, -75 },
{ 64, -64, -64, 64, 64, -64, -64, 64 },
{ 50, -89, 18, 75, -75, -18, 89, -50 },
{ 35, -83, 83, -35, -35, 83, -83, 35 },
{ 18, -50, 75, -89, 89, -75, 50, -18 },
},
{
{ 64, 64, 64, 64, 64, 64, 64, 64 },
{ 89, 75, 50, 18, -18, -50, -75, -89 },
{ 83, 35, -35, -83, -83, -35, 35, 83 },
{ 75, -18, -89, -50, 50, 89, 18, -75 },
{ 64, -64, -64, 64, 64, -64, -64, 64 },
{ 50, -89, 18, 75, -75, -18, 89, -50 },
{ 35, -83, 83, -35, -35, 83, -83, 35 },
{ 18, -50, 75, -89, 89, -75, 50, -18 },
},
};
const int tx_kernel_dct2_size16[TXFM_DIRECTIONS][16][16] = {
{
{ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 },
{ 90, 87, 80, 70, 57, 43, 26, 9, -9, -26, -43, -57, -70, -80, -87, -90 },
{ 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75,
89 },
{ 87, 57, 9, -43, -80, -90, -70, -26, 26, 70, 90, 80, 43, -9, -57, -87 },
{ 83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35, -83, -83, -35, 35,
83 },
{ 80, 9, -70, -87, -26, 57, 90, 43, -43, -90, -57, 26, 87, 70, -9, -80 },
{ 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18,
75 },
{ 70, -43, -87, 9, 90, 26, -80, -57, 57, 80, -26, -90, -9, 87, 43, -70 },
{ 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64,
64 },
{ 57, -80, -26, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 26, 80, -57 },
{ 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89,
50 },
{ 43, -90, 57, 26, -87, 70, 9, -80, 80, -9, -70, 87, -26, -57, 90, -43 },
{ 35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83, -35, -35, 83, -83,
35 },
{ 26, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -26 },
{ 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50,
18 },
{ 9, -26, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 26, -9 },
},
{
{ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 },
{ 90, 87, 80, 70, 57, 43, 26, 9, -9, -26, -43, -57, -70, -80, -87, -90 },
{ 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75,
89 },
{ 87, 57, 9, -43, -80, -90, -70, -26, 26, 70, 90, 80, 43, -9, -57, -87 },
{ 83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35, -83, -83, -35, 35,
83 },
{ 80, 9, -70, -87, -26, 57, 90, 43, -43, -90, -57, 26, 87, 70, -9, -80 },
{ 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18,
75 },
{ 70, -43, -87, 9, 90, 26, -80, -57, 57, 80, -26, -90, -9, 87, 43, -70 },
{ 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64,
64 },
{ 57, -80, -26, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 26, 80, -57 },
{ 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89,
50 },
{ 43, -90, 57, 26, -87, 70, 9, -80, 80, -9, -70, 87, -26, -57, 90, -43 },
{ 35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83, -35, -35, 83, -83,
35 },
{ 26, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -26 },
{ 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50,
18 },
{ 9, -26, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 26, -9 },
},
};
const int tx_kernel_dct2_size32[TXFM_DIRECTIONS][32][32] = {
{
{
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
},
{
90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 47,
39, 30, 22, 13, 4, -4, -13, -22, -30, -39, -47,
-54, -61, -67, -73, -78, -82, -85, -88, -90, -90,
},
{
90, 87, 80, 70, 57, 43, 26, 9, -9, -26, -43,
-57, -70, -80, -87, -90, -90, -87, -80, -70, -57, -43,
-26, -9, 9, 26, 43, 57, 70, 80, 87, 90,
},
{
90, 82, 67, 47, 22, -4, -30, -54, -73, -85, -90,
-88, -78, -61, -39, -13, 13, 39, 61, 78, 88, 90,
85, 73, 54, 30, 4, -22, -47, -67, -82, -90,
},
{
89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50,
-18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50,
-75, -89, -89, -75, -50, -18, 18, 50, 75, 89,
},
{
88, 67, 30, -13, -54, -82, -90, -78, -47, -4, 39,
73, 90, 85, 61, 22, -22, -61, -85, -90, -73, -39,
4, 47, 78, 90, 82, 54, 13, -30, -67, -88,
},
{
87, 57, 9, -43, -80, -90, -70, -26, 26, 70, 90,
80, 43, -9, -57, -87, -87, -57, -9, 43, 80, 90,
70, 26, -26, -70, -90, -80, -43, 9, 57, 87,
},
{
85, 47, -13, -67, -90, -73, -22, 39, 82, 88, 54,
-4, -61, -90, -78, -30, 30, 78, 90, 61, 4, -54,
-88, -82, -39, 22, 73, 90, 67, 13, -47, -85,
},
{
83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35,
-83, -83, -35, 35, 83, 83, 35, -35, -83, -83, -35,
35, 83, 83, 35, -35, -83, -83, -35, 35, 83,
},
{
82, 22, -54, -90, -61, 13, 78, 85, 30, -47, -90,
-67, 4, 73, 88, 39, -39, -88, -73, -4, 67, 90,
47, -30, -85, -78, -13, 61, 90, 54, -22, -82,
},
{
80, 9, -70, -87, -26, 57, 90, 43, -43, -90, -57,
26, 87, 70, -9, -80, -80, -9, 70, 87, 26, -57,
-90, -43, 43, 90, 57, -26, -87, -70, 9, 80,
},
{
78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 30,
90, 54, -39, -90, -47, 47, 90, 39, -54, -90, -30,
61, 88, 22, -67, -85, -13, 73, 82, 4, -78,
},
{
75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89,
50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89,
18, -75, -75, 18, 89, 50, -50, -89, -18, 75,
},
{
73, -30, -90, -22, 78, 67, -39, -90, -13, 82, 61,
-47, -88, -4, 85, 54, -54, -85, 4, 88, 47, -61,
-82, 13, 90, 39, -67, -78, 22, 90, 30, -73,
},
{
70, -43, -87, 9, 90, 26, -80, -57, 57, 80, -26,
-90, -9, 87, 43, -70, -70, 43, 87, -9, -90, -26,
80, 57, -57, -80, 26, 90, 9, -87, -43, 70,
},
{
67, -54, -78, 39, 85, -22, -90, 4, 90, 13, -88,
-30, 82, 47, -73, -61, 61, 73, -47, -82, 30, 88,
-13, -90, -4, 90, 22, -85, -39, 78, 54, -67,
},
{
64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64,
64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64,
-64, 64, 64, -64, -64, 64, 64, -64, -64, 64,
},
{
61, -73, -47, 82, 30, -88, -13, 90, -4, -90, 22,
85, -39, -78, 54, 67, -67, -54, 78, 39, -85, -22,
90, 4, -90, 13, 88, -30, -82, 47, 73, -61,
},
{
57, -80, -26, 90, -9, -87, 43, 70, -70, -43, 87,
9, -90, 26, 80, -57, -57, 80, 26, -90, 9, 87,
-43, -70, 70, 43, -87, -9, 90, -26, -80, 57,
},
{
54, -85, -4, 88, -47, -61, 82, 13, -90, 39, 67,
-78, -22, 90, -30, -73, 73, 30, -90, 22, 78, -67,
-39, 90, -13, -82, 61, 47, -88, 4, 85, -54,
},
{
50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18,
-75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18,
89, -50, -50, 89, -18, -75, 75, 18, -89, 50,
},
{
47, -90, 39, 54, -90, 30, 61, -88, 22, 67, -85,
13, 73, -82, 4, 78, -78, -4, 82, -73, -13, 85,
-67, -22, 88, -61, -30, 90, -54, -39, 90, -47,
},
{
43, -90, 57, 26, -87, 70, 9, -80, 80, -9, -70,
87, -26, -57, 90, -43, -43, 90, -57, -26, 87, -70,
-9, 80, -80, 9, 70, -87, 26, 57, -90, 43,
},
{
39, -88, 73, -4, -67, 90, -47, -30, 85, -78, 13,
61, -90, 54, 22, -82, 82, -22, -54, 90, -61, -13,
78, -85, 30, 47, -90, 67, 4, -73, 88, -39,
},
{
35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83,
-35, -35, 83, -83, 35, 35, -83, 83, -35, -35, 83,
-83, 35, 35, -83, 83, -35, -35, 83, -83, 35,
},
{
30, -78, 90, -61, 4, 54, -88, 82, -39, -22, 73,
-90, 67, -13, -47, 85, -85, 47, 13, -67, 90, -73,
22, 39, -82, 88, -54, -4, 61, -90, 78, -30,
},
{
26, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9,
-43, 80, -90, 70, -26, -26, 70, -90, 80, -43, -9,
57, -87, 87, -57, 9, 43, -80, 90, -70, 26,
},
{
22, -61, 85, -90, 73, -39, -4, 47, -78, 90, -82,
54, -13, -30, 67, -88, 88, -67, 30, 13, -54, 82,
-90, 78, -47, 4, 39, -73, 90, -85, 61, -22,
},
{
18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75,
89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75,
50, -18, -18, 50, -75, 89, -89, 75, -50, 18,
},
{
13, -39, 61, -78, 88, -90, 85, -73, 54, -30, 4,
22, -47, 67, -82, 90, -90, 82, -67, 47, -22, -4,
30, -54, 73, -85, 90, -88, 78, -61, 39, -13,
},
{
9, -26, 43, -57, 70, -80, 87, -90, 90, -87, 80,
-70, 57, -43, 26, -9, -9, 26, -43, 57, -70, 80,
-87, 90, -90, 87, -80, 70, -57, 43, -26, 9,
},
{
4, -13, 22, -30, 39, -47, 54, -61, 67, -73, 78,
-82, 85, -88, 90, -90, 90, -90, 88, -85, 82, -78,
73, -67, 61, -54, 47, -39, 30, -22, 13, -4,
},
},
{
{
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
},
{
90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 47,
39, 30, 22, 13, 4, -4, -13, -22, -30, -39, -47,
-54, -61, -67, -73, -78, -82, -85, -88, -90, -90,
},
{
90, 87, 80, 70, 57, 43, 26, 9, -9, -26, -43,
-57, -70, -80, -87, -90, -90, -87, -80, -70, -57, -43,
-26, -9, 9, 26, 43, 57, 70, 80, 87, 90,
},
{
90, 82, 67, 47, 22, -4, -30, -54, -73, -85, -90,
-88, -78, -61, -39, -13, 13, 39, 61, 78, 88, 90,
85, 73, 54, 30, 4, -22, -47, -67, -82, -90,
},
{
89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50,
-18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50,
-75, -89, -89, -75, -50, -18, 18, 50, 75, 89,
},
{
88, 67, 30, -13, -54, -82, -90, -78, -47, -4, 39,
73, 90, 85, 61, 22, -22, -61, -85, -90, -73, -39,
4, 47, 78, 90, 82, 54, 13, -30, -67, -88,
},
{
87, 57, 9, -43, -80, -90, -70, -26, 26, 70, 90,
80, 43, -9, -57, -87, -87, -57, -9, 43, 80, 90,
70, 26, -26, -70, -90, -80, -43, 9, 57, 87,
},
{
85, 47, -13, -67, -90, -73, -22, 39, 82, 88, 54,
-4, -61, -90, -78, -30, 30, 78, 90, 61, 4, -54,
-88, -82, -39, 22, 73, 90, 67, 13, -47, -85,
},
{
83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35,
-83, -83, -35, 35, 83, 83, 35, -35, -83, -83, -35,
35, 83, 83, 35, -35, -83, -83, -35, 35, 83,
},
{
82, 22, -54, -90, -61, 13, 78, 85, 30, -47, -90,
-67, 4, 73, 88, 39, -39, -88, -73, -4, 67, 90,
47, -30, -85, -78, -13, 61, 90, 54, -22, -82,
},
{
80, 9, -70, -87, -26, 57, 90, 43, -43, -90, -57,
26, 87, 70, -9, -80, -80, -9, 70, 87, 26, -57,
-90, -43, 43, 90, 57, -26, -87, -70, 9, 80,
},
{
78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 30,
90, 54, -39, -90, -47, 47, 90, 39, -54, -90, -30,
61, 88, 22, -67, -85, -13, 73, 82, 4, -78,
},
{
75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89,
50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89,
18, -75, -75, 18, 89, 50, -50, -89, -18, 75,
},
{
73, -30, -90, -22, 78, 67, -39, -90, -13, 82, 61,
-47, -88, -4, 85, 54, -54, -85, 4, 88, 47, -61,
-82, 13, 90, 39, -67, -78, 22, 90, 30, -73,
},
{
70, -43, -87, 9, 90, 26, -80, -57, 57, 80, -26,
-90, -9, 87, 43, -70, -70, 43, 87, -9, -90, -26,
80, 57, -57, -80, 26, 90, 9, -87, -43, 70,
},
{
67, -54, -78, 39, 85, -22, -90, 4, 90, 13, -88,
-30, 82, 47, -73, -61, 61, 73, -47, -82, 30, 88,
-13, -90, -4, 90, 22, -85, -39, 78, 54, -67,
},
{
64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64,
64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64,
-64, 64, 64, -64, -64, 64, 64, -64, -64, 64,
},
{
61, -73, -47, 82, 30, -88, -13, 90, -4, -90, 22,
85, -39, -78, 54, 67, -67, -54, 78, 39, -85, -22,
90, 4, -90, 13, 88, -30, -82, 47, 73, -61,
},
{
57, -80, -26, 90, -9, -87, 43, 70, -70, -43, 87,
9, -90, 26, 80, -57, -57, 80, 26, -90, 9, 87,
-43, -70, 70, 43, -87, -9, 90, -26, -80, 57,
},
{
54, -85, -4, 88, -47, -61, 82, 13, -90, 39, 67,
-78, -22, 90, -30, -73, 73, 30, -90, 22, 78, -67,
-39, 90, -13, -82, 61, 47, -88, 4, 85, -54,
},
{
50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18,
-75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18,
89, -50, -50, 89, -18, -75, 75, 18, -89, 50,
},
{
47, -90, 39, 54, -90, 30, 61, -88, 22, 67, -85,
13, 73, -82, 4, 78, -78, -4, 82, -73, -13, 85,
-67, -22, 88, -61, -30, 90, -54, -39, 90, -47,
},
{
43, -90, 57, 26, -87, 70, 9, -80, 80, -9, -70,
87, -26, -57, 90, -43, -43, 90, -57, -26, 87, -70,
-9, 80, -80, 9, 70, -87, 26, 57, -90, 43,
},
{
39, -88, 73, -4, -67, 90, -47, -30, 85, -78, 13,
61, -90, 54, 22, -82, 82, -22, -54, 90, -61, -13,
78, -85, 30, 47, -90, 67, 4, -73, 88, -39,
},
{
35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83,
-35, -35, 83, -83, 35, 35, -83, 83, -35, -35, 83,
-83, 35, 35, -83, 83, -35, -35, 83, -83, 35,
},
{
30, -78, 90, -61, 4, 54, -88, 82, -39, -22, 73,
-90, 67, -13, -47, 85, -85, 47, 13, -67, 90, -73,
22, 39, -82, 88, -54, -4, 61, -90, 78, -30,
},
{
26, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9,
-43, 80, -90, 70, -26, -26, 70, -90, 80, -43, -9,
57, -87, 87, -57, 9, 43, -80, 90, -70, 26,
},
{
22, -61, 85, -90, 73, -39, -4, 47, -78, 90, -82,
54, -13, -30, 67, -88, 88, -67, 30, 13, -54, 82,
-90, 78, -47, 4, 39, -73, 90, -85, 61, -22,
},
{
18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75,
89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75,
50, -18, -18, 50, -75, 89, -89, 75, -50, 18,
},
{
13, -39, 61, -78, 88, -90, 85, -73, 54, -30, 4,
22, -47, 67, -82, 90, -90, 82, -67, 47, -22, -4,
30, -54, 73, -85, 90, -88, 78, -61, 39, -13,
},
{
9, -26, 43, -57, 70, -80, 87, -90, 90, -87, 80,
-70, 57, -43, 26, -9, -9, 26, -43, 57, -70, 80,
-87, 90, -90, 87, -80, 70, -57, 43, -26, 9,
},
{
4, -13, 22, -30, 39, -47, 54, -61, 67, -73, 78,
-82, 85, -88, 90, -90, 90, -90, 88, -85, 82, -78,
73, -67, 61, -54, 47, -39, 30, -22, 13, -4,
},
},
};
const int tx_kernel_dct2_size64[TXFM_DIRECTIONS][64][64] = {
{
{
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
},
{
90, 90, 90, 89, 88, 87, 86, 84, 83, 81, 79, 76, 74,
71, 69, 66, 62, 59, 56, 52, 48, 45, 41, 37, 33, 28,
24, 20, 15, 11, 7, 2, -2, -7, -11, -15, -20, -24, -28,
-33, -37, -41, -45, -48, -52, -56, -59, -62, -66, -69, -71, -74,
-76, -79, -81, -83, -84, -86, -87, -88, -89, -90, -90, -90,
},
{
90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 47, 39, 30,
22, 13, 4, -4, -13, -22, -30, -39, -47, -54, -61, -67, -73,
-78, -82, -85, -88, -90, -90, -90, -90, -88, -85, -82, -78, -73,
-67, -61, -54, -47, -39, -30, -22, -13, -4, 4, 13, 22, 30,
39, 47, 54, 61, 67, 73, 78, 82, 85, 88, 90, 90,
},
{
90, 88, 84, 79, 71, 62, 52, 41, 28, 15, 2, -11, -24,
-37, -48, -59, -69, -76, -83, -87, -90, -90, -89, -86, -81, -74,
-66, -56, -45, -33, -20, -7, 7, 20, 33, 45, 56, 66, 74,
81, 86, 89, 90, 90, 87, 83, 76, 69, 59, 48, 37, 24,
11, -2, -15, -28, -41, -52, -62, -71, -79, -84, -88, -90,
},
{
90, 87, 80, 70, 57, 43, 26, 9, -9, -26, -43, -57, -70,
-80, -87, -90, -90, -87, -80, -70, -57, -43, -26, -9, 9, 26,
43, 57, 70, 80, 87, 90, 90, 87, 80, 70, 57, 43, 26,
9, -9, -26, -43, -57, -70, -80, -87, -90, -90, -87, -80, -70,
-57, -43, -26, -9, 9, 26, 43, 57, 70, 80, 87, 90,
},
{
90, 84, 74, 59, 41, 20, -2, -24, -45, -62, -76, -86, -90,
-89, -83, -71, -56, -37, -15, 7, 28, 48, 66, 79, 87, 90,
88, 81, 69, 52, 33, 11, -11, -33, -52, -69, -81, -88, -90,
-87, -79, -66, -48, -28, -7, 15, 37, 56, 71, 83, 89, 90,
86, 76, 62, 45, 24, 2, -20, -41, -59, -74, -84, -90,
},
{
90, 82, 67, 47, 22, -4, -30, -54, -73, -85, -90, -88, -78,
-61, -39, -13, 13, 39, 61, 78, 88, 90, 85, 73, 54, 30,
4, -22, -47, -67, -82, -90, -90, -82, -67, -47, -22, 4, 30,
54, 73, 85, 90, 88, 78, 61, 39, 13, -13, -39, -61, -78,
-88, -90, -85, -73, -54, -30, -4, 22, 47, 67, 82, 90,
},
{
89, 79, 59, 33, 2, -28, -56, -76, -88, -90, -81, -62, -37,
-7, 24, 52, 74, 87, 90, 83, 66, 41, 11, -20, -48, -71,
-86, -90, -84, -69, -45, -15, 15, 45, 69, 84, 90, 86, 71,
48, 20, -11, -41, -66, -83, -90, -87, -74, -52, -24, 7, 37,
62, 81, 90, 88, 76, 56, 28, -2, -33, -59, -79, -89,
},
{
89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18,
50, 75, 89, 89, 75, 50, 18, -18, -50, -75, -89, -89, -75,
-50, -18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50, -75,
-89, -89, -75, -50, -18, 18, 50, 75, 89, 89, 75, 50, 18,
-18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89,
},
{
88, 71, 41, 2, -37, -69, -87, -89, -74, -45, -7, 33, 66,
86, 90, 76, 48, 11, -28, -62, -84, -90, -79, -52, -15, 24,
59, 83, 90, 81, 56, 20, -20, -56, -81, -90, -83, -59, -24,
15, 52, 79, 90, 84, 62, 28, -11, -48, -76, -90, -86, -66,
-33, 7, 45, 74, 89, 87, 69, 37, -2, -41, -71, -88,
},
{
88, 67, 30, -13, -54, -82, -90, -78, -47, -4, 39, 73, 90,
85, 61, 22, -22, -61, -85, -90, -73, -39, 4, 47, 78, 90,
82, 54, 13, -30, -67, -88, -88, -67, -30, 13, 54, 82, 90,
78, 47, 4, -39, -73, -90, -85, -61, -22, 22, 61, 85, 90,
73, 39, -4, -47, -78, -90, -82, -54, -13, 30, 67, 88,
},
{
87, 62, 20, -28, -69, -89, -84, -56, -11, 37, 74, 90, 81,
48, 2, -45, -79, -90, -76, -41, 7, 52, 83, 90, 71, 33,
-15, -59, -86, -88, -66, -24, 24, 66, 88, 86, 59, 15, -33,
-71, -90, -83, -52, -7, 41, 76, 90, 79, 45, -2, -48, -81,
-90, -74, -37, 11, 56, 84, 89, 69, 28, -20, -62, -87,
},
{
87, 57, 9, -43, -80, -90, -70, -26, 26, 70, 90, 80, 43,
-9, -57, -87, -87, -57, -9, 43, 80, 90, 70, 26, -26, -70,
-90, -80, -43, 9, 57, 87, 87, 57, 9, -43, -80, -90, -70,
-26, 26, 70, 90, 80, 43, -9, -57, -87, -87, -57, -9, 43,
80, 90, 70, 26, -26, -70, -90, -80, -43, 9, 57, 87,
},
{
86, 52, -2, -56, -87, -84, -48, 7, 59, 88, 83, 45, -11,
-62, -89, -81, -41, 15, 66, 90, 79, 37, -20, -69, -90, -76,
-33, 24, 71, 90, 74, 28, -28, -74, -90, -71, -24, 33, 76,
90, 69, 20, -37, -79, -90, -66, -15, 41, 81, 89, 62, 11,
-45, -83, -88, -59, -7, 48, 84, 87, 56, 2, -52, -86,
},
{
85, 47, -13, -67, -90, -73, -22, 39, 82, 88, 54, -4, -61,
-90, -78, -30, 30, 78, 90, 61, 4, -54, -88, -82, -39, 22,
73, 90, 67, 13, -47, -85, -85, -47, 13, 67, 90, 73, 22,
-39, -82, -88, -54, 4, 61, 90, 78, 30, -30, -78, -90, -61,
-4, 54, 88, 82, 39, -22, -73, -90, -67, -13, 47, 85,
},
{
84, 41, -24, -76, -89, -56, 7, 66, 90, 69, 11, -52, -88,
-79, -28, 37, 83, 86, 45, -20, -74, -90, -59, 2, 62, 90,
71, 15, -48, -87, -81, -33, 33, 81, 87, 48, -15, -71, -90,
-62, -2, 59, 90, 74, 20, -45, -86, -83, -37, 28, 79, 88,
52, -11, -69, -90, -66, -7, 56, 89, 76, 24, -41, -84,
},
{
83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35, -83, -83,
-35, 35, 83, 83, 35, -35, -83, -83, -35, 35, 83, 83, 35,
-35, -83, -83, -35, 35, 83, 83, 35, -35, -83, -83, -35, 35,
83, 83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35, -83,
-83, -35, 35, 83, 83, 35, -35, -83, -83, -35, 35, 83,
},
{
83, 28, -45, -88, -74, -11, 59, 90, 62, -7, -71, -89, -48,
24, 81, 84, 33, -41, -87, -76, -15, 56, 90, 66, -2, -69,
-90, -52, 20, 79, 86, 37, -37, -86, -79, -20, 52, 90, 69,
2, -66, -90, -56, 15, 76, 87, 41, -33, -84, -81, -24, 48,
89, 71, 7, -62, -90, -59, 11, 74, 88, 45, -28, -83,
},
{
82, 22, -54, -90, -61, 13, 78, 85, 30, -47, -90, -67, 4,
73, 88, 39, -39, -88, -73, -4, 67, 90, 47, -30, -85, -78,
-13, 61, 90, 54, -22, -82, -82, -22, 54, 90, 61, -13, -78,
-85, -30, 47, 90, 67, -4, -73, -88, -39, 39, 88, 73, 4,
-67, -90, -47, 30, 85, 78, 13, -61, -90, -54, 22, 82,
},
{
81, 15, -62, -90, -45, 37, 88, 69, -7, -76, -84, -24, 56,
90, 52, -28, -86, -74, -2, 71, 87, 33, -48, -90, -59, 20,
83, 79, 11, -66, -89, -41, 41, 89, 66, -11, -79, -83, -20,
59, 90, 48, -33, -87, -71, 2, 74, 86, 28, -52, -90, -56,
24, 84, 76, 7, -69, -88, -37, 45, 90, 62, -15, -81,
},
{
80, 9, -70, -87, -26, 57, 90, 43, -43, -90, -57, 26, 87,
70, -9, -80, -80, -9, 70, 87, 26, -57, -90, -43, 43, 90,
57, -26, -87, -70, 9, 80, 80, 9, -70, -87, -26, 57, 90,
43, -43, -90, -57, 26, 87, 70, -9, -80, -80, -9, 70, 87,
26, -57, -90, -43, 43, 90, 57, -26, -87, -70, 9, 80,
},
{
79, 2, -76, -81, -7, 74, 83, 11, -71, -84, -15, 69, 86,
20, -66, -87, -24, 62, 88, 28, -59, -89, -33, 56, 90, 37,
-52, -90, -41, 48, 90, 45, -45, -90, -48, 41, 90, 52, -37,
-90, -56, 33, 89, 59, -28, -88, -62, 24, 87, 66, -20, -86,
-69, 15, 84, 71, -11, -83, -74, 7, 81, 76, -2, -79,
},
{
78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 30, 90, 54,
-39, -90, -47, 47, 90, 39, -54, -90, -30, 61, 88, 22, -67,
-85, -13, 73, 82, 4, -78, -78, 4, 82, 73, -13, -85, -67,
22, 88, 61, -30, -90, -54, 39, 90, 47, -47, -90, -39, 54,
90, 30, -61, -88, -22, 67, 85, 13, -73, -82, -4, 78,
},
{
76, -11, -86, -62, 33, 90, 45, -52, -89, -24, 69, 83, 2,
-81, -71, 20, 88, 56, -41, -90, -37, 59, 87, 15, -74, -79,
7, 84, 66, -28, -90, -48, 48, 90, 28, -66, -84, -7, 79,
74, -15, -87, -59, 37, 90, 41, -56, -88, -20, 71, 81, -2,
-83, -69, 24, 89, 52, -45, -90, -33, 62, 86, 11, -76,
},
{
75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50,
-89, -18, 75, 75, -18, -89, -50, 50, 89, 18, -75, -75, 18,
89, 50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89, 18,
-75, -75, 18, 89, 50, -50, -89, -18, 75, 75, -18, -89, -50,
50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75,
},
{
74, -24, -90, -37, 66, 81, -11, -88, -48, 56, 86, 2, -84,
-59, 45, 89, 15, -79, -69, 33, 90, 28, -71, -76, 20, 90,
41, -62, -83, 7, 87, 52, -52, -87, -7, 83, 62, -41, -90,
-20, 76, 71, -28, -90, -33, 69, 79, -15, -89, -45, 59, 84,
-2, -86, -56, 48, 88, 11, -81, -66, 37, 90, 24, -74,
},
{
73, -30, -90, -22, 78, 67, -39, -90, -13, 82, 61, -47, -88,
-4, 85, 54, -54, -85, 4, 88, 47, -61, -82, 13, 90, 39,
-67, -78, 22, 90, 30, -73, -73, 30, 90, 22, -78, -67, 39,
90, 13, -82, -61, 47, 88, 4, -85, -54, 54, 85, -4, -88,
-47, 61, 82, -13, -90, -39, 67, 78, -22, -90, -30, 73,
},
{
71, -37, -89, -7, 86, 48, -62, -79, 24, 90, 20, -81, -59,
52, 84, -11, -90, -33, 74, 69, -41, -88, -2, 87, 45, -66,
-76, 28, 90, 15, -83, -56, 56, 83, -15, -90, -28, 76, 66,
-45, -87, 2, 88, 41, -69, -74, 33, 90, 11, -84, -52, 59,
81, -20, -90, -24, 79, 62, -48, -86, 7, 89, 37, -71,
},
{
70, -43, -87, 9, 90, 26, -80, -57, 57, 80, -26, -90, -9,
87, 43, -70, -70, 43, 87, -9, -90, -26, 80, 57, -57, -80,
26, 90, 9, -87, -43, 70, 70, -43, -87, 9, 90, 26, -80,
-57, 57, 80, -26, -90, -9, 87, 43, -70, -70, 43, 87, -9,
-90, -26, 80, 57, -57, -80, 26, 90, 9, -87, -43, 70,
},
{
69, -48, -83, 24, 90, 2, -89, -28, 81, 52, -66, -71, 45,
84, -20, -90, -7, 88, 33, -79, -56, 62, 74, -41, -86, 15,
90, 11, -87, -37, 76, 59, -59, -76, 37, 87, -11, -90, -15,
86, 41, -74, -62, 56, 79, -33, -88, 7, 90, 20, -84, -45,
71, 66, -52, -81, 28, 89, -2, -90, -24, 83, 48, -69,
},
{
67, -54, -78, 39, 85, -22, -90, 4, 90, 13, -88, -30, 82,
47, -73, -61, 61, 73, -47, -82, 30, 88, -13, -90, -4, 90,
22, -85, -39, 78, 54, -67, -67, 54, 78, -39, -85, 22, 90,
-4, -90, -13, 88, 30, -82, -47, 73, 61, -61, -73, 47, 82,
-30, -88, 13, 90, 4, -90, -22, 85, 39, -78, -54, 67,
},
{
66, -59, -71, 52, 76, -45, -81, 37, 84, -28, -87, 20, 89,
-11, -90, 2, 90, 7, -90, -15, 88, 24, -86, -33, 83, 41,
-79, -48, 74, 56, -69, -62, 62, 69, -56, -74, 48, 79, -41,
-83, 33, 86, -24, -88, 15, 90, -7, -90, -2, 90, 11, -89,
-20, 87, 28, -84, -37, 81, 45, -76, -52, 71, 59, -66,
},
{
64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64,
-64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64,
-64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64,
64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64,
64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64,
},
{
62, -69, -56, 74, 48, -79, -41, 83, 33, -86, -24, 88, 15,
-90, -7, 90, -2, -90, 11, 89, -20, -87, 28, 84, -37, -81,
45, 76, -52, -71, 59, 66, -66, -59, 71, 52, -76, -45, 81,
37, -84, -28, 87, 20, -89, -11, 90, 2, -90, 7, 90, -15,
-88, 24, 86, -33, -83, 41, 79, -48, -74, 56, 69, -62,
},
{
61, -73, -47, 82, 30, -88, -13, 90, -4, -90, 22, 85, -39,
-78, 54, 67, -67, -54, 78, 39, -85, -22, 90, 4, -90, 13,
88, -30, -82, 47, 73, -61, -61, 73, 47, -82, -30, 88, 13,
-90, 4, 90, -22, -85, 39, 78, -54, -67, 67, 54, -78, -39,
85, 22, -90, -4, 90, -13, -88, 30, 82, -47, -73, 61,
},
{
59, -76, -37, 87, 11, -90, 15, 86, -41, -74, 62, 56, -79,
-33, 88, 7, -90, 20, 84, -45, -71, 66, 52, -81, -28, 89,
2, -90, 24, 83, -48, -69, 69, 48, -83, -24, 90, -2, -89,
28, 81, -52, -66, 71, 45, -84, -20, 90, -7, -88, 33, 79,
-56, -62, 74, 41, -86, -15, 90, -11, -87, 37, 76, -59,
},
{
57, -80, -26, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90,
26, 80, -57, -57, 80, 26, -90, 9, 87, -43, -70, 70, 43,
-87, -9, 90, -26, -80, 57, 57, -80, -26, 90, -9, -87, 43,
70, -70, -43, 87, 9, -90, 26, 80, -57, -57, 80, 26, -90,
9, 87, -43, -70, 70, 43, -87, -9, 90, -26, -80, 57,
},
{
56, -83, -15, 90, -28, -76, 66, 45, -87, -2, 88, -41, -69,
74, 33, -90, 11, 84, -52, -59, 81, 20, -90, 24, 79, -62,
-48, 86, 7, -89, 37, 71, -71, -37, 89, -7, -86, 48, 62,
-79, -24, 90, -20, -81, 59, 52, -84, -11, 90, -33, -74, 69,
41, -88, 2, 87, -45, -66, 76, 28, -90, 15, 83, -56,
},
{
54, -85, -4, 88, -47, -61, 82, 13, -90, 39, 67, -78, -22,
90, -30, -73, 73, 30, -90, 22, 78, -67, -39, 90, -13, -82,
61, 47, -88, 4, 85, -54, -54, 85, 4, -88, 47, 61, -82,
-13, 90, -39, -67, 78, 22, -90, 30, 73, -73, -30, 90, -22,
-78, 67, 39, -90, 13, 82, -61, -47, 88, -4, -85, 54,
},
{
52, -87, 7, 83, -62, -41, 90, -20, -76, 71, 28, -90, 33,
69, -79, -15, 89, -45, -59, 84, 2, -86, 56, 48, -88, 11,
81, -66, -37, 90, -24, -74, 74, 24, -90, 37, 66, -81, -11,
88, -48, -56, 86, -2, -84, 59, 45, -89, 15, 79, -69, -33,
90, -28, -71, 76, 20, -90, 41, 62, -83, -7, 87, -52,
},
{
50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75,
18, -89, 50, 50, -89, 18, 75, -75, -18, 89, -50, -50, 89,
-18, -75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18, 89,
-50, -50, 89, -18, -75, 75, 18, -89, 50, 50, -89, 18, 75,
-75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50,
},
{
48, -90, 28, 66, -84, 7, 79, -74, -15, 87, -59, -37, 90,
-41, -56, 88, -20, -71, 81, 2, -83, 69, 24, -89, 52, 45,
-90, 33, 62, -86, 11, 76, -76, -11, 86, -62, -33, 90, -45,
-52, 89, -24, -69, 83, -2, -81, 71, 20, -88, 56, 41, -90,
37, 59, -87, 15, 74, -79, -7, 84, -66, -28, 90, -48,
},
{
47, -90, 39, 54, -90, 30, 61, -88, 22, 67, -85, 13, 73,
-82, 4, 78, -78, -4, 82, -73, -13, 85, -67, -22, 88, -61,
-30, 90, -54, -39, 90, -47, -47, 90, -39, -54, 90, -30, -61,
88, -22, -67, 85, -13, -73, 82, -4, -78, 78, 4, -82, 73,
13, -85, 67, 22, -88, 61, 30, -90, 54, 39, -90, 47,
},
{
45, -90, 48, 41, -90, 52, 37, -90, 56, 33, -89, 59, 28,
-88, 62, 24, -87, 66, 20, -86, 69, 15, -84, 71, 11, -83,
74, 7, -81, 76, 2, -79, 79, -2, -76, 81, -7, -74, 83,
-11, -71, 84, -15, -69, 86, -20, -66, 87, -24, -62, 88, -28,
-59, 89, -33, -56, 90, -37, -52, 90, -41, -48, 90, -45,
},
{
43, -90, 57, 26, -87, 70, 9, -80, 80, -9, -70, 87, -26,
-57, 90, -43, -43, 90, -57, -26, 87, -70, -9, 80, -80, 9,
70, -87, 26, 57, -90, 43, 43, -90, 57, 26, -87, 70, 9,
-80, 80, -9, -70, 87, -26, -57, 90, -43, -43, 90, -57, -26,
87, -70, -9, 80, -80, 9, 70, -87, 26, 57, -90, 43,
},
{
41, -89, 66, 11, -79, 83, -20, -59, 90, -48, -33, 87, -71,
-2, 74, -86, 28, 52, -90, 56, 24, -84, 76, -7, -69, 88,
-37, -45, 90, -62, -15, 81, -81, 15, 62, -90, 45, 37, -88,
69, 7, -76, 84, -24, -56, 90, -52, -28, 86, -74, 2, 71,
-87, 33, 48, -90, 59, 20, -83, 79, -11, -66, 89, -41,
},
{
39, -88, 73, -4, -67, 90, -47, -30, 85, -78, 13, 61, -90,
54, 22, -82, 82, -22, -54, 90, -61, -13, 78, -85, 30, 47,
-90, 67, 4, -73, 88, -39, -39, 88, -73, 4, 67, -90, 47,
30, -85, 78, -13, -61, 90, -54, -22, 82, -82, 22, 54, -90,
61, 13, -78, 85, -30, -47, 90, -67, -4, 73, -88, 39,
},
{
37, -86, 79, -20, -52, 90, -69, 2, 66, -90, 56, 15, -76,
87, -41, -33, 84, -81, 24, 48, -89, 71, -7, -62, 90, -59,
-11, 74, -88, 45, 28, -83, 83, -28, -45, 88, -74, 11, 59,
-90, 62, 7, -71, 89, -48, -24, 81, -84, 33, 41, -87, 76,
-15, -56, 90, -66, -2, 69, -90, 52, 20, -79, 86, -37,
},
{
35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83, -35, -35,
83, -83, 35, 35, -83, 83, -35, -35, 83, -83, 35, 35, -83,
83, -35, -35, 83, -83, 35, 35, -83, 83, -35, -35, 83, -83,
35, 35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83, -35,
-35, 83, -83, 35, 35, -83, 83, -35, -35, 83, -83, 35,
},
{
33, -81, 87, -48, -15, 71, -90, 62, -2, -59, 90, -74, 20,
45, -86, 83, -37, -28, 79, -88, 52, 11, -69, 90, -66, 7,
56, -89, 76, -24, -41, 84, -84, 41, 24, -76, 89, -56, -7,
66, -90, 69, -11, -52, 88, -79, 28, 37, -83, 86, -45, -20,
74, -90, 59, 2, -62, 90, -71, 15, 48, -87, 81, -33,
},
{
30, -78, 90, -61, 4, 54, -88, 82, -39, -22, 73, -90, 67,
-13, -47, 85, -85, 47, 13, -67, 90, -73, 22, 39, -82, 88,
-54, -4, 61, -90, 78, -30, -30, 78, -90, 61, -4, -54, 88,
-82, 39, 22, -73, 90, -67, 13, 47, -85, 85, -47, -13, 67,
-90, 73, -22, -39, 82, -88, 54, 4, -61, 90, -78, 30,
},
{
28, -74, 90, -71, 24, 33, -76, 90, -69, 20, 37, -79, 90,
-66, 15, 41, -81, 89, -62, 11, 45, -83, 88, -59, 7, 48,
-84, 87, -56, 2, 52, -86, 86, -52, -2, 56, -87, 84, -48,
-7, 59, -88, 83, -45, -11, 62, -89, 81, -41, -15, 66, -90,
79, -37, -20, 69, -90, 76, -33, -24, 71, -90, 74, -28,
},
{
26, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80,
-90, 70, -26, -26, 70, -90, 80, -43, -9, 57, -87, 87, -57,
9, 43, -80, 90, -70, 26, 26, -70, 90, -80, 43, 9, -57,
87, -87, 57, -9, -43, 80, -90, 70, -26, -26, 70, -90, 80,
-43, -9, 57, -87, 87, -57, 9, 43, -80, 90, -70, 26,
},
{
24, -66, 88, -86, 59, -15, -33, 71, -90, 83, -52, 7, 41,
-76, 90, -79, 45, 2, -48, 81, -90, 74, -37, -11, 56, -84,
89, -69, 28, 20, -62, 87, -87, 62, -20, -28, 69, -89, 84,
-56, 11, 37, -74, 90, -81, 48, -2, -45, 79, -90, 76, -41,
-7, 52, -83, 90, -71, 33, 15, -59, 86, -88, 66, -24,
},
{
22, -61, 85, -90, 73, -39, -4, 47, -78, 90, -82, 54, -13,
-30, 67, -88, 88, -67, 30, 13, -54, 82, -90, 78, -47, 4,
39, -73, 90, -85, 61, -22, -22, 61, -85, 90, -73, 39, 4,
-47, 78, -90, 82, -54, 13, 30, -67, 88, -88, 67, -30, -13,
54, -82, 90, -78, 47, -4, -39, 73, -90, 85, -61, 22,
},
{
20, -56, 81, -90, 83, -59, 24, 15, -52, 79, -90, 84, -62,
28, 11, -48, 76, -90, 86, -66, 33, 7, -45, 74, -89, 87,
-69, 37, 2, -41, 71, -88, 88, -71, 41, -2, -37, 69, -87,
89, -74, 45, -7, -33, 66, -86, 90, -76, 48, -11, -28, 62,
-84, 90, -79, 52, -15, -24, 59, -83, 90, -81, 56, -20,
},
{
18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89,
75, -50, 18, 18, -50, 75, -89, 89, -75, 50, -18, -18, 50,
-75, 89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75, 50,
-18, -18, 50, -75, 89, -89, 75, -50, 18, 18, -50, 75, -89,
89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18,
},
{
15, -45, 69, -84, 90, -86, 71, -48, 20, 11, -41, 66, -83,
90, -87, 74, -52, 24, 7, -37, 62, -81, 90, -88, 76, -56,
28, 2, -33, 59, -79, 89, -89, 79, -59, 33, -2, -28, 56,
-76, 88, -90, 81, -62, 37, -7, -24, 52, -74, 87, -90, 83,
-66, 41, -11, -20, 48, -71, 86, -90, 84, -69, 45, -15,
},
{
13, -39, 61, -78, 88, -90, 85, -73, 54, -30, 4, 22, -47,
67, -82, 90, -90, 82, -67, 47, -22, -4, 30, -54, 73, -85,
90, -88, 78, -61, 39, -13, -13, 39, -61, 78, -88, 90, -85,
73, -54, 30, -4, -22, 47, -67, 82, -90, 90, -82, 67, -47,
22, 4, -30, 54, -73, 85, -90, 88, -78, 61, -39, 13,
},
{
11, -33, 52, -69, 81, -88, 90, -87, 79, -66, 48, -28, 7,
15, -37, 56, -71, 83, -89, 90, -86, 76, -62, 45, -24, 2,
20, -41, 59, -74, 84, -90, 90, -84, 74, -59, 41, -20, -2,
24, -45, 62, -76, 86, -90, 89, -83, 71, -56, 37, -15, -7,
28, -48, 66, -79, 87, -90, 88, -81, 69, -52, 33, -11,
},
{
9, -26, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57,
-43, 26, -9, -9, 26, -43, 57, -70, 80, -87, 90, -90, 87,
-80, 70, -57, 43, -26, 9, 9, -26, 43, -57, 70, -80, 87,
-90, 90, -87, 80, -70, 57, -43, 26, -9, -9, 26, -43, 57,
-70, 80, -87, 90, -90, 87, -80, 70, -57, 43, -26, 9,
},
{
7, -20, 33, -45, 56, -66, 74, -81, 86, -89, 90, -90, 87,
-83, 76, -69, 59, -48, 37, -24, 11, 2, -15, 28, -41, 52,
-62, 71, -79, 84, -88, 90, -90, 88, -84, 79, -71, 62, -52,
41, -28, 15, -2, -11, 24, -37, 48, -59, 69, -76, 83, -87,
90, -90, 89, -86, 81, -74, 66, -56, 45, -33, 20, -7,
},
{
4, -13, 22, -30, 39, -47, 54, -61, 67, -73, 78, -82, 85,
-88, 90, -90, 90, -90, 88, -85, 82, -78, 73, -67, 61, -54,
47, -39, 30, -22, 13, -4, -4, 13, -22, 30, -39, 47, -54,
61, -67, 73, -78, 82, -85, 88, -90, 90, -90, 90, -88, 85,
-82, 78, -73, 67, -61, 54, -47, 39, -30, 22, -13, 4,
},
{
2, -7, 11, -15, 20, -24, 28, -33, 37, -41, 45, -48, 52,
-56, 59, -62, 66, -69, 71, -74, 76, -79, 81, -83, 84, -86,
87, -88, 89, -90, 90, -90, 90, -90, 90, -89, 88, -87, 86,
-84, 83, -81, 79, -76, 74, -71, 69, -66, 62, -59, 56, -52,
48, -45, 41, -37, 33, -28, 24, -20, 15, -11, 7, -2,
},
},
{
{
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
},
{
90, 90, 90, 89, 88, 87, 86, 84, 83, 81, 79, 76, 74,
71, 69, 66, 62, 59, 56, 52, 48, 45, 41, 37, 33, 28,
24, 20, 15, 11, 7, 2, -2, -7, -11, -15, -20, -24, -28,
-33, -37, -41, -45, -48, -52, -56, -59, -62, -66, -69, -71, -74,
-76, -79, -81, -83, -84, -86, -87, -88, -89, -90, -90, -90,
},
{
90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 47, 39, 30,
22, 13, 4, -4, -13, -22, -30, -39, -47, -54, -61, -67, -73,
-78, -82, -85, -88, -90, -90, -90, -90, -88, -85, -82, -78, -73,
-67, -61, -54, -47, -39, -30, -22, -13, -4, 4, 13, 22, 30,
39, 47, 54, 61, 67, 73, 78, 82, 85, 88, 90, 90,
},
{
90, 88, 84, 79, 71, 62, 52, 41, 28, 15, 2, -11, -24,
-37, -48, -59, -69, -76, -83, -87, -90, -90, -89, -86, -81, -74,
-66, -56, -45, -33, -20, -7, 7, 20, 33, 45, 56, 66, 74,
81, 86, 89, 90, 90, 87, 83, 76, 69, 59, 48, 37, 24,
11, -2, -15, -28, -41, -52, -62, -71, -79, -84, -88, -90,
},
{
90, 87, 80, 70, 57, 43, 26, 9, -9, -26, -43, -57, -70,
-80, -87, -90, -90, -87, -80, -70, -57, -43, -26, -9, 9, 26,
43, 57, 70, 80, 87, 90, 90, 87, 80, 70, 57, 43, 26,
9, -9, -26, -43, -57, -70, -80, -87, -90, -90, -87, -80, -70,
-57, -43, -26, -9, 9, 26, 43, 57, 70, 80, 87, 90,
},
{
90, 84, 74, 59, 41, 20, -2, -24, -45, -62, -76, -86, -90,
-89, -83, -71, -56, -37, -15, 7, 28, 48, 66, 79, 87, 90,
88, 81, 69, 52, 33, 11, -11, -33, -52, -69, -81, -88, -90,
-87, -79, -66, -48, -28, -7, 15, 37, 56, 71, 83, 89, 90,
86, 76, 62, 45, 24, 2, -20, -41, -59, -74, -84, -90,
},
{
90, 82, 67, 47, 22, -4, -30, -54, -73, -85, -90, -88, -78,
-61, -39, -13, 13, 39, 61, 78, 88, 90, 85, 73, 54, 30,
4, -22, -47, -67, -82, -90, -90, -82, -67, -47, -22, 4, 30,
54, 73, 85, 90, 88, 78, 61, 39, 13, -13, -39, -61, -78,
-88, -90, -85, -73, -54, -30, -4, 22, 47, 67, 82, 90,
},
{
89, 79, 59, 33, 2, -28, -56, -76, -88, -90, -81, -62, -37,
-7, 24, 52, 74, 87, 90, 83, 66, 41, 11, -20, -48, -71,
-86, -90, -84, -69, -45, -15, 15, 45, 69, 84, 90, 86, 71,
48, 20, -11, -41, -66, -83, -90, -87, -74, -52, -24, 7, 37,
62, 81, 90, 88, 76, 56, 28, -2, -33, -59, -79, -89,
},
{
89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18,
50, 75, 89, 89, 75, 50, 18, -18, -50, -75, -89, -89, -75,
-50, -18, 18, 50, 75, 89, 89, 75, 50, 18, -18, -50, -75,
-89, -89, -75, -50, -18, 18, 50, 75, 89, 89, 75, 50, 18,
-18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89,
},
{
88, 71, 41, 2, -37, -69, -87, -89, -74, -45, -7, 33, 66,
86, 90, 76, 48, 11, -28, -62, -84, -90, -79, -52, -15, 24,
59, 83, 90, 81, 56, 20, -20, -56, -81, -90, -83, -59, -24,
15, 52, 79, 90, 84, 62, 28, -11, -48, -76, -90, -86, -66,
-33, 7, 45, 74, 89, 87, 69, 37, -2, -41, -71, -88,
},
{
88, 67, 30, -13, -54, -82, -90, -78, -47, -4, 39, 73, 90,
85, 61, 22, -22, -61, -85, -90, -73, -39, 4, 47, 78, 90,
82, 54, 13, -30, -67, -88, -88, -67, -30, 13, 54, 82, 90,
78, 47, 4, -39, -73, -90, -85, -61, -22, 22, 61, 85, 90,
73, 39, -4, -47, -78, -90, -82, -54, -13, 30, 67, 88,
},
{
87, 62, 20, -28, -69, -89, -84, -56, -11, 37, 74, 90, 81,
48, 2, -45, -79, -90, -76, -41, 7, 52, 83, 90, 71, 33,
-15, -59, -86, -88, -66, -24, 24, 66, 88, 86, 59, 15, -33,
-71, -90, -83, -52, -7, 41, 76, 90, 79, 45, -2, -48, -81,
-90, -74, -37, 11, 56, 84, 89, 69, 28, -20, -62, -87,
},
{
87, 57, 9, -43, -80, -90, -70, -26, 26, 70, 90, 80, 43,
-9, -57, -87, -87, -57, -9, 43, 80, 90, 70, 26, -26, -70,
-90, -80, -43, 9, 57, 87, 87, 57, 9, -43, -80, -90, -70,
-26, 26, 70, 90, 80, 43, -9, -57, -87, -87, -57, -9, 43,
80, 90, 70, 26, -26, -70, -90, -80, -43, 9, 57, 87,
},
{
86, 52, -2, -56, -87, -84, -48, 7, 59, 88, 83, 45, -11,
-62, -89, -81, -41, 15, 66, 90, 79, 37, -20, -69, -90, -76,
-33, 24, 71, 90, 74, 28, -28, -74, -90, -71, -24, 33, 76,
90, 69, 20, -37, -79, -90, -66, -15, 41, 81, 89, 62, 11,
-45, -83, -88, -59, -7, 48, 84, 87, 56, 2, -52, -86,
},
{
85, 47, -13, -67, -90, -73, -22, 39, 82, 88, 54, -4, -61,
-90, -78, -30, 30, 78, 90, 61, 4, -54, -88, -82, -39, 22,
73, 90, 67, 13, -47, -85, -85, -47, 13, 67, 90, 73, 22,
-39, -82, -88, -54, 4, 61, 90, 78, 30, -30, -78, -90, -61,
-4, 54, 88, 82, 39, -22, -73, -90, -67, -13, 47, 85,
},
{
84, 41, -24, -76, -89, -56, 7, 66, 90, 69, 11, -52, -88,
-79, -28, 37, 83, 86, 45, -20, -74, -90, -59, 2, 62, 90,
71, 15, -48, -87, -81, -33, 33, 81, 87, 48, -15, -71, -90,
-62, -2, 59, 90, 74, 20, -45, -86, -83, -37, 28, 79, 88,
52, -11, -69, -90, -66, -7, 56, 89, 76, 24, -41, -84,
},
{
83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35, -83, -83,
-35, 35, 83, 83, 35, -35, -83, -83, -35, 35, 83, 83, 35,
-35, -83, -83, -35, 35, 83, 83, 35, -35, -83, -83, -35, 35,
83, 83, 35, -35, -83, -83, -35, 35, 83, 83, 35, -35, -83,
-83, -35, 35, 83, 83, 35, -35, -83, -83, -35, 35, 83,
},
{
83, 28, -45, -88, -74, -11, 59, 90, 62, -7, -71, -89, -48,
24, 81, 84, 33, -41, -87, -76, -15, 56, 90, 66, -2, -69,
-90, -52, 20, 79, 86, 37, -37, -86, -79, -20, 52, 90, 69,
2, -66, -90, -56, 15, 76, 87, 41, -33, -84, -81, -24, 48,
89, 71, 7, -62, -90, -59, 11, 74, 88, 45, -28, -83,
},
{
82, 22, -54, -90, -61, 13, 78, 85, 30, -47, -90, -67, 4,
73, 88, 39, -39, -88, -73, -4, 67, 90, 47, -30, -85, -78,
-13, 61, 90, 54, -22, -82, -82, -22, 54, 90, 61, -13, -78,
-85, -30, 47, 90, 67, -4, -73, -88, -39, 39, 88, 73, 4,
-67, -90, -47, 30, 85, 78, 13, -61, -90, -54, 22, 82,
},
{
81, 15, -62, -90, -45, 37, 88, 69, -7, -76, -84, -24, 56,
90, 52, -28, -86, -74, -2, 71, 87, 33, -48, -90, -59, 20,
83, 79, 11, -66, -89, -41, 41, 89, 66, -11, -79, -83, -20,
59, 90, 48, -33, -87, -71, 2, 74, 86, 28, -52, -90, -56,
24, 84, 76, 7, -69, -88, -37, 45, 90, 62, -15, -81,
},
{
80, 9, -70, -87, -26, 57, 90, 43, -43, -90, -57, 26, 87,
70, -9, -80, -80, -9, 70, 87, 26, -57, -90, -43, 43, 90,
57, -26, -87, -70, 9, 80, 80, 9, -70, -87, -26, 57, 90,
43, -43, -90, -57, 26, 87, 70, -9, -80, -80, -9, 70, 87,
26, -57, -90, -43, 43, 90, 57, -26, -87, -70, 9, 80,
},
{
79, 2, -76, -81, -7, 74, 83, 11, -71, -84, -15, 69, 86,
20, -66, -87, -24, 62, 88, 28, -59, -89, -33, 56, 90, 37,
-52, -90, -41, 48, 90, 45, -45, -90, -48, 41, 90, 52, -37,
-90, -56, 33, 89, 59, -28, -88, -62, 24, 87, 66, -20, -86,
-69, 15, 84, 71, -11, -83, -74, 7, 81, 76, -2, -79,
},
{
78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 30, 90, 54,
-39, -90, -47, 47, 90, 39, -54, -90, -30, 61, 88, 22, -67,
-85, -13, 73, 82, 4, -78, -78, 4, 82, 73, -13, -85, -67,
22, 88, 61, -30, -90, -54, 39, 90, 47, -47, -90, -39, 54,
90, 30, -61, -88, -22, 67, 85, 13, -73, -82, -4, 78,
},
{
76, -11, -86, -62, 33, 90, 45, -52, -89, -24, 69, 83, 2,
-81, -71, 20, 88, 56, -41, -90, -37, 59, 87, 15, -74, -79,
7, 84, 66, -28, -90, -48, 48, 90, 28, -66, -84, -7, 79,
74, -15, -87, -59, 37, 90, 41, -56, -88, -20, 71, 81, -2,
-83, -69, 24, 89, 52, -45, -90, -33, 62, 86, 11, -76,
},
{
75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50,
-89, -18, 75, 75, -18, -89, -50, 50, 89, 18, -75, -75, 18,
89, 50, -50, -89, -18, 75, 75, -18, -89, -50, 50, 89, 18,
-75, -75, 18, 89, 50, -50, -89, -18, 75, 75, -18, -89, -50,
50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75,
},
{
74, -24, -90, -37, 66, 81, -11, -88, -48, 56, 86, 2, -84,
-59, 45, 89, 15, -79, -69, 33, 90, 28, -71, -76, 20, 90,
41, -62, -83, 7, 87, 52, -52, -87, -7, 83, 62, -41, -90,
-20, 76, 71, -28, -90, -33, 69, 79, -15, -89, -45, 59, 84,
-2, -86, -56, 48, 88, 11, -81, -66, 37, 90, 24, -74,
},
{
73, -30, -90, -22, 78, 67, -39, -90, -13, 82, 61, -47, -88,
-4, 85, 54, -54, -85, 4, 88, 47, -61, -82, 13, 90, 39,
-67, -78, 22, 90, 30, -73, -73, 30, 90, 22, -78, -67, 39,
90, 13, -82, -61, 47, 88, 4, -85, -54, 54, 85, -4, -88,
-47, 61, 82, -13, -90, -39, 67, 78, -22, -90, -30, 73,
},
{
71, -37, -89, -7, 86, 48, -62, -79, 24, 90, 20, -81, -59,
52, 84, -11, -90, -33, 74, 69, -41, -88, -2, 87, 45, -66,
-76, 28, 90, 15, -83, -56, 56, 83, -15, -90, -28, 76, 66,
-45, -87, 2, 88, 41, -69, -74, 33, 90, 11, -84, -52, 59,
81, -20, -90, -24, 79, 62, -48, -86, 7, 89, 37, -71,
},
{
70, -43, -87, 9, 90, 26, -80, -57, 57, 80, -26, -90, -9,
87, 43, -70, -70, 43, 87, -9, -90, -26, 80, 57, -57, -80,
26, 90, 9, -87, -43, 70, 70, -43, -87, 9, 90, 26, -80,
-57, 57, 80, -26, -90, -9, 87, 43, -70, -70, 43, 87, -9,
-90, -26, 80, 57, -57, -80, 26, 90, 9, -87, -43, 70,
},
{
69, -48, -83, 24, 90, 2, -89, -28, 81, 52, -66, -71, 45,
84, -20, -90, -7, 88, 33, -79, -56, 62, 74, -41, -86, 15,
90, 11, -87, -37, 76, 59, -59, -76, 37, 87, -11, -90, -15,
86, 41, -74, -62, 56, 79, -33, -88, 7, 90, 20, -84, -45,
71, 66, -52, -81, 28, 89, -2, -90, -24, 83, 48, -69,
},
{
67, -54, -78, 39, 85, -22, -90, 4, 90, 13, -88, -30, 82,
47, -73, -61, 61, 73, -47, -82, 30, 88, -13, -90, -4, 90,
22, -85, -39, 78, 54, -67, -67, 54, 78, -39, -85, 22, 90,
-4, -90, -13, 88, 30, -82, -47, 73, 61, -61, -73, 47, 82,
-30, -88, 13, 90, 4, -90, -22, 85, 39, -78, -54, 67,
},
{
66, -59, -71, 52, 76, -45, -81, 37, 84, -28, -87, 20, 89,
-11, -90, 2, 90, 7, -90, -15, 88, 24, -86, -33, 83, 41,
-79, -48, 74, 56, -69, -62, 62, 69, -56, -74, 48, 79, -41,
-83, 33, 86, -24, -88, 15, 90, -7, -90, -2, 90, 11, -89,
-20, 87, 28, -84, -37, 81, 45, -76, -52, 71, 59, -66,
},
{
64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64,
-64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64,
-64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64,
64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64,
64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64,
},
{
62, -69, -56, 74, 48, -79, -41, 83, 33, -86, -24, 88, 15,
-90, -7, 90, -2, -90, 11, 89, -20, -87, 28, 84, -37, -81,
45, 76, -52, -71, 59, 66, -66, -59, 71, 52, -76, -45, 81,
37, -84, -28, 87, 20, -89, -11, 90, 2, -90, 7, 90, -15,
-88, 24, 86, -33, -83, 41, 79, -48, -74, 56, 69, -62,
},
{
61, -73, -47, 82, 30, -88, -13, 90, -4, -90, 22, 85, -39,
-78, 54, 67, -67, -54, 78, 39, -85, -22, 90, 4, -90, 13,
88, -30, -82, 47, 73, -61, -61, 73, 47, -82, -30, 88, 13,
-90, 4, 90, -22, -85, 39, 78, -54, -67, 67, 54, -78, -39,
85, 22, -90, -4, 90, -13, -88, 30, 82, -47, -73, 61,
},
{
59, -76, -37, 87, 11, -90, 15, 86, -41, -74, 62, 56, -79,
-33, 88, 7, -90, 20, 84, -45, -71, 66, 52, -81, -28, 89,
2, -90, 24, 83, -48, -69, 69, 48, -83, -24, 90, -2, -89,
28, 81, -52, -66, 71, 45, -84, -20, 90, -7, -88, 33, 79,
-56, -62, 74, 41, -86, -15, 90, -11, -87, 37, 76, -59,
},
{
57, -80, -26, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90,
26, 80, -57, -57, 80, 26, -90, 9, 87, -43, -70, 70, 43,
-87, -9, 90, -26, -80, 57, 57, -80, -26, 90, -9, -87, 43,
70, -70, -43, 87, 9, -90, 26, 80, -57, -57, 80, 26, -90,
9, 87, -43, -70, 70, 43, -87, -9, 90, -26, -80, 57,
},
{
56, -83, -15, 90, -28, -76, 66, 45, -87, -2, 88, -41, -69,
74, 33, -90, 11, 84, -52, -59, 81, 20, -90, 24, 79, -62,
-48, 86, 7, -89, 37, 71, -71, -37, 89, -7, -86, 48, 62,
-79, -24, 90, -20, -81, 59, 52, -84, -11, 90, -33, -74, 69,
41, -88, 2, 87, -45, -66, 76, 28, -90, 15, 83, -56,
},
{
54, -85, -4, 88, -47, -61, 82, 13, -90, 39, 67, -78, -22,
90, -30, -73, 73, 30, -90, 22, 78, -67, -39, 90, -13, -82,
61, 47, -88, 4, 85, -54, -54, 85, 4, -88, 47, 61, -82,
-13, 90, -39, -67, 78, 22, -90, 30, 73, -73, -30, 90, -22,
-78, 67, 39, -90, 13, 82, -61, -47, 88, -4, -85, 54,
},
{
52, -87, 7, 83, -62, -41, 90, -20, -76, 71, 28, -90, 33,
69, -79, -15, 89, -45, -59, 84, 2, -86, 56, 48, -88, 11,
81, -66, -37, 90, -24, -74, 74, 24, -90, 37, 66, -81, -11,
88, -48, -56, 86, -2, -84, 59, 45, -89, 15, 79, -69, -33,
90, -28, -71, 76, 20, -90, 41, 62, -83, -7, 87, -52,
},
{
50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75,
18, -89, 50, 50, -89, 18, 75, -75, -18, 89, -50, -50, 89,
-18, -75, 75, 18, -89, 50, 50, -89, 18, 75, -75, -18, 89,
-50, -50, 89, -18, -75, 75, 18, -89, 50, 50, -89, 18, 75,
-75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50,
},
{
48, -90, 28, 66, -84, 7, 79, -74, -15, 87, -59, -37, 90,
-41, -56, 88, -20, -71, 81, 2, -83, 69, 24, -89, 52, 45,
-90, 33, 62, -86, 11, 76, -76, -11, 86, -62, -33, 90, -45,
-52, 89, -24, -69, 83, -2, -81, 71, 20, -88, 56, 41, -90,
37, 59, -87, 15, 74, -79, -7, 84, -66, -28, 90, -48,
},
{
47, -90, 39, 54, -90, 30, 61, -88, 22, 67, -85, 13, 73,
-82, 4, 78, -78, -4, 82, -73, -13, 85, -67, -22, 88, -61,
-30, 90, -54, -39, 90, -47, -47, 90, -39, -54, 90, -30, -61,
88, -22, -67, 85, -13, -73, 82, -4, -78, 78, 4, -82, 73,
13, -85, 67, 22, -88, 61, 30, -90, 54, 39, -90, 47,
},
{
45, -90, 48, 41, -90, 52, 37, -90, 56, 33, -89, 59, 28,
-88, 62, 24, -87, 66, 20, -86, 69, 15, -84, 71, 11, -83,
74, 7, -81, 76, 2, -79, 79, -2, -76, 81, -7, -74, 83,
-11, -71, 84, -15, -69, 86, -20, -66, 87, -24, -62, 88, -28,
-59, 89, -33, -56, 90, -37, -52, 90, -41, -48, 90, -45,
},
{
43, -90, 57, 26, -87, 70, 9, -80, 80, -9, -70, 87, -26,
-57, 90, -43, -43, 90, -57, -26, 87, -70, -9, 80, -80, 9,
70, -87, 26, 57, -90, 43, 43, -90, 57, 26, -87, 70, 9,
-80, 80, -9, -70, 87, -26, -57, 90, -43, -43, 90, -57, -26,
87, -70, -9, 80, -80, 9, 70, -87, 26, 57, -90, 43,
},
{
41, -89, 66, 11, -79, 83, -20, -59, 90, -48, -33, 87, -71,
-2, 74, -86, 28, 52, -90, 56, 24, -84, 76, -7, -69, 88,
-37, -45, 90, -62, -15, 81, -81, 15, 62, -90, 45, 37, -88,
69, 7, -76, 84, -24, -56, 90, -52, -28, 86, -74, 2, 71,
-87, 33, 48, -90, 59, 20, -83, 79, -11, -66, 89, -41,
},
{
39, -88, 73, -4, -67, 90, -47, -30, 85, -78, 13, 61, -90,
54, 22, -82, 82, -22, -54, 90, -61, -13, 78, -85, 30, 47,
-90, 67, 4, -73, 88, -39, -39, 88, -73, 4, 67, -90, 47,
30, -85, 78, -13, -61, 90, -54, -22, 82, -82, 22, 54, -90,
61, 13, -78, 85, -30, -47, 90, -67, -4, 73, -88, 39,
},
{
37, -86, 79, -20, -52, 90, -69, 2, 66, -90, 56, 15, -76,
87, -41, -33, 84, -81, 24, 48, -89, 71, -7, -62, 90, -59,
-11, 74, -88, 45, 28, -83, 83, -28, -45, 88, -74, 11, 59,
-90, 62, 7, -71, 89, -48, -24, 81, -84, 33, 41, -87, 76,
-15, -56, 90, -66, -2, 69, -90, 52, 20, -79, 86, -37,
},
{
35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83, -35, -35,
83, -83, 35, 35, -83, 83, -35, -35, 83, -83, 35, 35, -83,
83, -35, -35, 83, -83, 35, 35, -83, 83, -35, -35, 83, -83,
35, 35, -83, 83, -35, -35, 83, -83, 35, 35, -83, 83, -35,
-35, 83, -83, 35, 35, -83, 83, -35, -35, 83, -83, 35,
},
{
33, -81, 87, -48, -15, 71, -90, 62, -2, -59, 90, -74, 20,
45, -86, 83, -37, -28, 79, -88, 52, 11, -69, 90, -66, 7,
56, -89, 76, -24, -41, 84, -84, 41, 24, -76, 89, -56, -7,
66, -90, 69, -11, -52, 88, -79, 28, 37, -83, 86, -45, -20,
74, -90, 59, 2, -62, 90, -71, 15, 48, -87, 81, -33,
},
{
30, -78, 90, -61, 4, 54, -88, 82, -39, -22, 73, -90, 67,
-13, -47, 85, -85, 47, 13, -67, 90, -73, 22, 39, -82, 88,
-54, -4, 61, -90, 78, -30, -30, 78, -90, 61, -4, -54, 88,
-82, 39, 22, -73, 90, -67, 13, 47, -85, 85, -47, -13, 67,
-90, 73, -22, -39, 82, -88, 54, 4, -61, 90, -78, 30,
},
{
28, -74, 90, -71, 24, 33, -76, 90, -69, 20, 37, -79, 90,
-66, 15, 41, -81, 89, -62, 11, 45, -83, 88, -59, 7, 48,
-84, 87, -56, 2, 52, -86, 86, -52, -2, 56, -87, 84, -48,
-7, 59, -88, 83, -45, -11, 62, -89, 81, -41, -15, 66, -90,
79, -37, -20, 69, -90, 76, -33, -24, 71, -90, 74, -28,
},
{
26, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80,
-90, 70, -26, -26, 70, -90, 80, -43, -9, 57, -87, 87, -57,
9, 43, -80, 90, -70, 26, 26, -70, 90, -80, 43, 9, -57,
87, -87, 57, -9, -43, 80, -90, 70, -26, -26, 70, -90, 80,
-43, -9, 57, -87, 87, -57, 9, 43, -80, 90, -70, 26,
},
{
24, -66, 88, -86, 59, -15, -33, 71, -90, 83, -52, 7, 41,
-76, 90, -79, 45, 2, -48, 81, -90, 74, -37, -11, 56, -84,
89, -69, 28, 20, -62, 87, -87, 62, -20, -28, 69, -89, 84,
-56, 11, 37, -74, 90, -81, 48, -2, -45, 79, -90, 76, -41,
-7, 52, -83, 90, -71, 33, 15, -59, 86, -88, 66, -24,
},
{
22, -61, 85, -90, 73, -39, -4, 47, -78, 90, -82, 54, -13,
-30, 67, -88, 88, -67, 30, 13, -54, 82, -90, 78, -47, 4,
39, -73, 90, -85, 61, -22, -22, 61, -85, 90, -73, 39, 4,
-47, 78, -90, 82, -54, 13, 30, -67, 88, -88, 67, -30, -13,
54, -82, 90, -78, 47, -4, -39, 73, -90, 85, -61, 22,
},
{
20, -56, 81, -90, 83, -59, 24, 15, -52, 79, -90, 84, -62,
28, 11, -48, 76, -90, 86, -66, 33, 7, -45, 74, -89, 87,
-69, 37, 2, -41, 71, -88, 88, -71, 41, -2, -37, 69, -87,
89, -74, 45, -7, -33, 66, -86, 90, -76, 48, -11, -28, 62,
-84, 90, -79, 52, -15, -24, 59, -83, 90, -81, 56, -20,
},
{
18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89,
75, -50, 18, 18, -50, 75, -89, 89, -75, 50, -18, -18, 50,
-75, 89, -89, 75, -50, 18, 18, -50, 75, -89, 89, -75, 50,
-18, -18, 50, -75, 89, -89, 75, -50, 18, 18, -50, 75, -89,
89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18,
},
{
15, -45, 69, -84, 90, -86, 71, -48, 20, 11, -41, 66, -83,
90, -87, 74, -52, 24, 7, -37, 62, -81, 90, -88, 76, -56,
28, 2, -33, 59, -79, 89, -89, 79, -59, 33, -2, -28, 56,
-76, 88, -90, 81, -62, 37, -7, -24, 52, -74, 87, -90, 83,
-66, 41, -11, -20, 48, -71, 86, -90, 84, -69, 45, -15,
},
{
13, -39, 61, -78, 88, -90, 85, -73, 54, -30, 4, 22, -47,
67, -82, 90, -90, 82, -67, 47, -22, -4, 30, -54, 73, -85,
90, -88, 78, -61, 39, -13, -13, 39, -61, 78, -88, 90, -85,
73, -54, 30, -4, -22, 47, -67, 82, -90, 90, -82, 67, -47,
22, 4, -30, 54, -73, 85, -90, 88, -78, 61, -39, 13,
},
{
11, -33, 52, -69, 81, -88, 90, -87, 79, -66, 48, -28, 7,
15, -37, 56, -71, 83, -89, 90, -86, 76, -62, 45, -24, 2,
20, -41, 59, -74, 84, -90, 90, -84, 74, -59, 41, -20, -2,
24, -45, 62, -76, 86, -90, 89, -83, 71, -56, 37, -15, -7,
28, -48, 66, -79, 87, -90, 88, -81, 69, -52, 33, -11,
},
{
9, -26, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57,
-43, 26, -9, -9, 26, -43, 57, -70, 80, -87, 90, -90, 87,
-80, 70, -57, 43, -26, 9, 9, -26, 43, -57, 70, -80, 87,
-90, 90, -87, 80, -70, 57, -43, 26, -9, -9, 26, -43, 57,
-70, 80, -87, 90, -90, 87, -80, 70, -57, 43, -26, 9,
},
{
7, -20, 33, -45, 56, -66, 74, -81, 86, -89, 90, -90, 87,
-83, 76, -69, 59, -48, 37, -24, 11, 2, -15, 28, -41, 52,
-62, 71, -79, 84, -88, 90, -90, 88, -84, 79, -71, 62, -52,
41, -28, 15, -2, -11, 24, -37, 48, -59, 69, -76, 83, -87,
90, -90, 89, -86, 81, -74, 66, -56, 45, -33, 20, -7,
},
{
4, -13, 22, -30, 39, -47, 54, -61, 67, -73, 78, -82, 85,
-88, 90, -90, 90, -90, 88, -85, 82, -78, 73, -67, 61, -54,
47, -39, 30, -22, 13, -4, -4, 13, -22, 30, -39, 47, -54,
61, -67, 73, -78, 82, -85, 88, -90, 90, -90, 90, -88, 85,
-82, 78, -73, 67, -61, 54, -47, 39, -30, 22, -13, 4,
},
{
2, -7, 11, -15, 20, -24, 28, -33, 37, -41, 45, -48, 52,
-56, 59, -62, 66, -69, 71, -74, 76, -79, 81, -83, 84, -86,
87, -88, 89, -90, 90, -90, 90, -90, 90, -89, 88, -87, 86,
-84, 83, -81, 79, -76, 74, -71, 69, -66, 62, -59, 56, -52,
48, -45, 41, -37, 33, -28, 24, -20, 15, -11, 7, -2,
},
},
};
// ADST
const int tx_kernel_adst_size4[TXFM_DIRECTIONS][4][4] = {
#if USE_TUNED_ADST4
{
{ 18, 50, 75, 89 },
{ 50, 89, 18, -75 },
{ 75, 18, -89, 50 },
{ 89, -75, 50, -18 },
},
{
{ 18, 50, 75, 89 },
{ 50, 89, 18, -75 },
{ 75, 18, -89, 50 },
{ 89, -75, 50, -18 },
},
#else
{
{ 29, 55, 74, 84 },
{ 74, 74, 0, -74 },
{ 84, -29, -74, 55 },
{ 55, -84, 74, -29 },
},
{
{ 29, 55, 74, 84 },
{ 74, 74, 0, -74 },
{ 84, -29, -74, 55 },
{ 55, -84, 74, -29 },
},
#endif
};
const int tx_kernel_adst_size8[TXFM_DIRECTIONS][8][8] = {
#if USE_TUNED_ADST8
{
{ 11, 28, 44, 58, 70, 79, 86, 89 },
{ 34, 74, 89, 76, 39, -12, -58, -86 },
{ 54, 89, 48, -34, -87, -66, 12, 79 },
{ 71, 68, -41, -86, 1, 87, 38, -70 },
{ 84, 17, -89, 10, 86, -35, -75, 58 },
{ 88, -44, -44, 88, -44, -44, 88, -44 },
{ 79, -83, 50, 6, -59, 86, -74, 29 },
{ 50, -69, 81, -84, 78, -62, 40, -14 },
},
{
{ 11, 28, 44, 58, 70, 79, 86, 89 },
{ 34, 74, 89, 76, 39, -12, -58, -86 },
{ 54, 89, 48, -34, -87, -66, 12, 79 },
{ 71, 68, -41, -86, 1, 87, 38, -70 },
{ 84, 17, -89, 10, 86, -35, -75, 58 },
{ 88, -44, -44, 88, -44, -44, 88, -44 },
{ 79, -83, 50, 6, -59, 86, -74, 29 },
{ 50, -69, 81, -84, 78, -62, 40, -14 },
},
#else
{
{ 9, 26, 43, 57, 70, 80, 87, 90 },
{ 26, 70, 90, 80, 43, -9, -57, -87 },
{ 43, 90, 57, -26, -87, -70, 9, 80 },
{ 57, 80, -26, -90, -9, 87, 43, -70 },
{ 70, 43, -87, -9, 90, -26, -80, 57 },
{ 80, -9, -70, 87, -26, -57, 90, -43 },
{ 87, -57, 9, 43, -80, 90, -70, 26 },
{ 90, -87, 80, -70, 57, -43, 26, -9 },
},
{
{ 9, 26, 43, 57, 70, 80, 87, 90 },
{ 26, 70, 90, 80, 43, -9, -57, -87 },
{ 43, 90, 57, -26, -87, -70, 9, 80 },
{ 57, 80, -26, -90, -9, 87, 43, -70 },
{ 70, 43, -87, -9, 90, -26, -80, 57 },
{ 80, -9, -70, 87, -26, -57, 90, -43 },
{ 87, -57, 9, 43, -80, 90, -70, 26 },
{ 90, -87, 80, -70, 57, -43, 26, -9 },
},
#endif
};
const int tx_kernel_adst_size16[TXFM_DIRECTIONS][16][16] = {
#if USE_TUNED_ADST16
{
{ 8, 17, 25, 33, 41, 48, 55, 62, 67, 73, 77, 81, 84, 87, 88, 89 },
{ 25, 48, 67, 81, 88, 88, 81, 67, 48, 25, 0, -25, -48, -67, -81, -88 },
{ 41, 73, 88, 84, 62, 25, -17, -55, -81, -89, -77, -48, -8, 33, 67, 87 },
{ 55, 87, 81, 41, -17, -67, -89, -73, -25, 33, 77, 88, 62, 8, -48, -84 },
{ 67, 88, 48, -25, -81, -81, -25, 48, 88, 67, 0, -67, -88, -48, 25, 81 },
{ 77, 77, 0, -77, -77, 0, 77, 77, 0, -77, -77, 0, 77, 77, 0, -77 },
{ 84, 55, -48, -87, -8, 81, 62, -41, -88, -17, 77, 67, -33, -89, -25,
73 },
{ 88, 25, -81, -48, 67, 67, -48, -81, 25, 88, 0, -88, -25, 81, 48, -67 },
{ 89, -8, -88, 17, 87, -25, -84, 33, 81, -41, -77, 48, 73, -55, -67, 62 },
{ 87, -41, -67, 73, 33, -88, 8, 84, -48, -62, 77, 25, -89, 17, 81, -55 },
{ 81, -67, -25, 88, -48, -48, 88, -25, -67, 81, 0, -81, 67, 25, -88, 48 },
{ 73, -84, 25, 55, -89, 48, 33, -87, 67, 8, -77, 81, -17, -62, 88, -41 },
{ 62, -89, 67, -8, -55, 88, -73, 17, 48, -87, 77, -25, -41, 84, -81, 33 },
{ 48, -81, 88, -67, 25, 25, -67, 88, -81, 48, 0, -48, 81, -88, 67, -25 },
{ 33, -62, 81, -89, 84, -67, 41, -8, -25, 55, -77, 88, -87, 73, -48, 17 },
{ 17, -33, 48, -62, 73, -81, 87, -89, 88, -84, 77, -67, 55, -41, 25, -8 },
},
{
{ 8, 17, 25, 33, 41, 48, 55, 62, 67, 73, 77, 81, 84, 87, 88, 89 },
{ 25, 48, 67, 81, 88, 88, 81, 67, 48, 25, 0, -25, -48, -67, -81, -88 },
{ 41, 73, 88, 84, 62, 25, -17, -55, -81, -89, -77, -48, -8, 33, 67, 87 },
{ 55, 87, 81, 41, -17, -67, -89, -73, -25, 33, 77, 88, 62, 8, -48, -84 },
{ 67, 88, 48, -25, -81, -81, -25, 48, 88, 67, 0, -67, -88, -48, 25, 81 },
{ 77, 77, 0, -77, -77, 0, 77, 77, 0, -77, -77, 0, 77, 77, 0, -77 },
{ 84, 55, -48, -87, -8, 81, 62, -41, -88, -17, 77, 67, -33, -89, -25,
73 },
{ 88, 25, -81, -48, 67, 67, -48, -81, 25, 88, 0, -88, -25, 81, 48, -67 },
{ 89, -8, -88, 17, 87, -25, -84, 33, 81, -41, -77, 48, 73, -55, -67, 62 },
{ 87, -41, -67, 73, 33, -88, 8, 84, -48, -62, 77, 25, -89, 17, 81, -55 },
{ 81, -67, -25, 88, -48, -48, 88, -25, -67, 81, 0, -81, 67, 25, -88, 48 },
{ 73, -84, 25, 55, -89, 48, 33, -87, 67, 8, -77, 81, -17, -62, 88, -41 },
{ 62, -89, 67, -8, -55, 88, -73, 17, 48, -87, 77, -25, -41, 84, -81, 33 },
{ 48, -81, 88, -67, 25, 25, -67, 88, -81, 48, 0, -48, 81, -88, 67, -25 },
{ 33, -62, 81, -89, 84, -67, 41, -8, -25, 55, -77, 88, -87, 73, -48, 17 },
{ 17, -33, 48, -62, 73, -81, 87, -89, 88, -84, 77, -67, 55, -41, 25, -8 },
},
#else
{
{ 4, 13, 22, 30, 39, 47, 54, 61, 67, 73, 78, 82, 85, 88, 90, 90 },
{ 13, 39, 61, 78, 88, 90, 85, 73, 54, 30, 4, -22, -47, -67, -82, -90 },
{ 22, 61, 85, 90, 73, 39, -4, -47, -78, -90, -82, -54, -13, 30, 67, 88 },
{ 30, 78, 90, 61, 4, -54, -88, -82, -39, 22, 73, 90, 67, 13, -47, -85 },
{ 39, 88, 73, 4, -67, -90, -47, 30, 85, 78, 13, -61, -90, -54, 22, 82 },
{ 47, 90, 39, -54, -90, -30, 61, 88, 22, -67, -85, -13, 73, 82, 4, -78 },
{ 54, 85, -4, -88, -47, 61, 82, -13, -90, -39, 67, 78, -22, -90, -30,
73 },
{ 61, 73, -47, -82, 30, 88, -13, -90, -4, 90, 22, -85, -39, 78, 54, -67 },
{ 67, 54, -78, -39, 85, 22, -90, -4, 90, -13, -88, 30, 82, -47, -73, 61 },
{ 73, 30, -90, 22, 78, -67, -39, 90, -13, -82, 61, 47, -88, 4, 85, -54 },
{ 78, 4, -82, 73, 13, -85, 67, 22, -88, 61, 30, -90, 54, 39, -90, 47 },
{ 82, -22, -54, 90, -61, -13, 78, -85, 30, 47, -90, 67, 4, -73, 88, -39 },
{ 85, -47, -13, 67, -90, 73, -22, -39, 82, -88, 54, 4, -61, 90, -78, 30 },
{ 88, -67, 30, 13, -54, 82, -90, 78, -47, 4, 39, -73, 90, -85, 61, -22 },
{ 90, -82, 67, -47, 22, 4, -30, 54, -73, 85, -90, 88, -78, 61, -39, 13 },
{ 90, -90, 88, -85, 82, -78, 73, -67, 61, -54, 47, -39, 30, -22, 13, -4 },
},
{
{ 4, 13, 22, 30, 39, 47, 54, 61, 67, 73, 78, 82, 85, 88, 90, 90 },
{ 13, 39, 61, 78, 88, 90, 85, 73, 54, 30, 4, -22, -47, -67, -82, -90 },
{ 22, 61, 85, 90, 73, 39, -4, -47, -78, -90, -82, -54, -13, 30, 67, 88 },
{ 30, 78, 90, 61, 4, -54, -88, -82, -39, 22, 73, 90, 67, 13, -47, -85 },
{ 39, 88, 73, 4, -67, -90, -47, 30, 85, 78, 13, -61, -90, -54, 22, 82 },
{ 47, 90, 39, -54, -90, -30, 61, 88, 22, -67, -85, -13, 73, 82, 4, -78 },
{ 54, 85, -4, -88, -47, 61, 82, -13, -90, -39, 67, 78, -22, -90, -30,
73 },
{ 61, 73, -47, -82, 30, 88, -13, -90, -4, 90, 22, -85, -39, 78, 54, -67 },
{ 67, 54, -78, -39, 85, 22, -90, -4, 90, -13, -88, 30, 82, -47, -73, 61 },
{ 73, 30, -90, 22, 78, -67, -39, 90, -13, -82, 61, 47, -88, 4, 85, -54 },
{ 78, 4, -82, 73, 13, -85, 67, 22, -88, 61, 30, -90, 54, 39, -90, 47 },
{ 82, -22, -54, 90, -61, -13, 78, -85, 30, 47, -90, 67, 4, -73, 88, -39 },
{ 85, -47, -13, 67, -90, 73, -22, -39, 82, -88, 54, 4, -61, 90, -78, 30 },
{ 88, -67, 30, 13, -54, 82, -90, 78, -47, 4, 39, -73, 90, -85, 61, -22 },
{ 90, -82, 67, -47, 22, 4, -30, 54, -73, 85, -90, 88, -78, 61, -39, 13 },
{ 90, -90, 88, -85, 82, -78, 73, -67, 61, -54, 47, -39, 30, -22, 13, -4 },
},
#endif
};
const int tx_kernel_fdst_size4[TXFM_DIRECTIONS][4][4] = {
#if USE_TUNED_ADST4
{
{ 89, 75, 50, 18 },
{ 75, -18, -89, -50 },
{ 50, -89, 18, 75 },
{ 18, -50, 75, -89 },
},
{
{ 89, 75, 50, 18 },
{ 75, -18, -89, -50 },
{ 50, -89, 18, 75 },
{ 18, -50, 75, -89 },
},
#else
{
{ 84, 74, 55, 29 },
{ 74, 0, -74, -74 },
{ 55, -74, -29, 84 },
{ 29, -74, 84, -55 },
},
{
{ 84, 74, 55, 29 },
{ 74, 0, -74, -74 },
{ 55, -74, -29, 84 },
{ 29, -74, 84, -55 },
},
#endif
};
const int tx_kernel_fdst_size8[TXFM_DIRECTIONS][8][8] = {
#if USE_TUNED_ADST8
{
{ 89, 86, 79, 70, 58, 44, 28, 11 },
{ -86, -58, -12, 39, 76, 89, 74, 34 },
{ 79, 12, -66, -87, -34, 48, 89, 54 },
{ -70, 38, 87, 1, -86, -41, 68, 71 },
{ 58, -75, -35, 86, 10, -89, 17, 84 },
{ -44, 88, -44, -44, 88, -44, -44, 88 },
{ 29, -74, 86, -59, 6, 50, -83, 79 },
{ -14, 40, -62, 78, -84, 81, -69, 50 },
},
{
{ 89, 86, 79, 70, 58, 44, 28, 11 },
{ -86, -58, -12, 39, 76, 89, 74, 34 },
{ 79, 12, -66, -87, -34, 48, 89, 54 },
{ -70, 38, 87, 1, -86, -41, 68, 71 },
{ 58, -75, -35, 86, 10, -89, 17, 84 },
{ -44, 88, -44, -44, 88, -44, -44, 88 },
{ 29, -74, 86, -59, 6, 50, -83, 79 },
{ -14, 40, -62, 78, -84, 81, -69, 50 },
},
#else
{
{ 90, 87, 80, 70, 57, 43, 26, 9 },
{ 87, 57, 9, -43, -80, -90, -70, -26 },
{ 80, 9, -70, -87, -26, 57, 90, 43 },
{ 70, -43, -87, 9, 90, 26, -80, -57 },
{ 57, -80, -26, 90, -9, -87, 43, 70 },
{ 43, -90, 57, 26, -87, 70, 9, -80 },
{ 26, -70, 90, -80, 43, 9, -57, 87 },
{ 9, -26, 43, -57, 70, -80, 87, -90 },
},
{
{ 90, 87, 80, 70, 57, 43, 26, 9 },
{ 87, 57, 9, -43, -80, -90, -70, -26 },
{ 80, 9, -70, -87, -26, 57, 90, 43 },
{ 70, -43, -87, 9, 90, 26, -80, -57 },
{ 57, -80, -26, 90, -9, -87, 43, 70 },
{ 43, -90, 57, 26, -87, 70, 9, -80 },
{ 26, -70, 90, -80, 43, 9, -57, 87 },
{ 9, -26, 43, -57, 70, -80, 87, -90 },
},
#endif
};
const int tx_kernel_fdst_size16[TXFM_DIRECTIONS][16][16] = {
#if USE_TUNED_ADST16
{
{ 89, 88, 87, 84, 81, 77, 73, 67, 62, 55, 48, 41, 33, 25, 17, 8 },
{ 88, 81, 67, 48, 25, 0, -25, -48, -67, -81, -88, -88, -81, -67, -48,
-25 },
{ 87, 67, 33, -8, -48, -77, -89, -81, -55, -17, 25, 62, 84, 88, 73, 41 },
{ 84, 48, -8, -62, -88, -77, -33, 25, 73, 89, 67, 17, -41, -81, -87,
-55 },
{ 81, 25, -48, -88, -67, 0, 67, 88, 48, -25, -81, -81, -25, 48, 88, 67 },
{ 77, 0, -77, -77, 0, 77, 77, 0, -77, -77, 0, 77, 77, 0, -77, -77 },
{ 73, -25, -89, -33, 67, 77, -17, -88, -41, 62, 81, -8, -87, -48, 55,
84 },
{ 67, -48, -81, 25, 88, 0, -88, -25, 81, 48, -67, -67, 48, 81, -25, -88 },
{ 62, -67, -55, 73, 48, -77, -41, 81, 33, -84, -25, 87, 17, -88, -8, 89 },
{ 55, -81, -17, 89, -25, -77, 62, 48, -84, -8, 88, -33, -73, 67, 41,
-87 },
{ 48, -88, 25, 67, -81, 0, 81, -67, -25, 88, -48, -48, 88, -25, -67, 81 },
{ 41, -88, 62, 17, -81, 77, -8, -67, 87, -33, -48, 89, -55, -25, 84,
-73 },
{ 33, -81, 84, -41, -25, 77, -87, 48, 17, -73, 88, -55, -8, 67, -89, 62 },
{ 25, -67, 88, -81, 48, 0, -48, 81, -88, 67, -25, -25, 67, -88, 81, -48 },
{ 17, -48, 73, -87, 88, -77, 55, -25, -8, 41, -67, 84, -89, 81, -62, 33 },
{ 8, -25, 41, -55, 67, -77, 84, -88, 89, -87, 81, -73, 62, -48, 33, -17 },
},
{
{ 89, 88, 87, 84, 81, 77, 73, 67, 62, 55, 48, 41, 33, 25, 17, 8 },
{ 88, 81, 67, 48, 25, 0, -25, -48, -67, -81, -88, -88, -81, -67, -48,
-25 },
{ 87, 67, 33, -8, -48, -77, -89, -81, -55, -17, 25, 62, 84, 88, 73, 41 },
{ 84, 48, -8, -62, -88, -77, -33, 25, 73, 89, 67, 17, -41, -81, -87,
-55 },
{ 81, 25, -48, -88, -67, 0, 67, 88, 48, -25, -81, -81, -25, 48, 88, 67 },
{ 77, 0, -77, -77, 0, 77, 77, 0, -77, -77, 0, 77, 77, 0, -77, -77 },
{ 73, -25, -89, -33, 67, 77, -17, -88, -41, 62, 81, -8, -87, -48, 55,
84 },
{ 67, -48, -81, 25, 88, 0, -88, -25, 81, 48, -67, -67, 48, 81, -25, -88 },
{ 62, -67, -55, 73, 48, -77, -41, 81, 33, -84, -25, 87, 17, -88, -8, 89 },
{ 55, -81, -17, 89, -25, -77, 62, 48, -84, -8, 88, -33, -73, 67, 41,
-87 },
{ 48, -88, 25, 67, -81, 0, 81, -67, -25, 88, -48, -48, 88, -25, -67, 81 },
{ 41, -88, 62, 17, -81, 77, -8, -67, 87, -33, -48, 89, -55, -25, 84,
-73 },
{ 33, -81, 84, -41, -25, 77, -87, 48, 17, -73, 88, -55, -8, 67, -89, 62 },
{ 25, -67, 88, -81, 48, 0, -48, 81, -88, 67, -25, -25, 67, -88, 81, -48 },
{ 17, -48, 73, -87, 88, -77, 55, -25, -8, 41, -67, 84, -89, 81, -62, 33 },
{ 8, -25, 41, -55, 67, -77, 84, -88, 89, -87, 81, -73, 62, -48, 33, -17 },
},
#else
{
{ 90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 47, 39, 30, 22, 13, 4 },
{ 90, 82, 67, 47, 22, -4, -30, -54, -73, -85, -90, -88, -78, -61, -39,
-13 },
{ 88, 67, 30, -13, -54, -82, -90, -78, -47, -4, 39, 73, 90, 85, 61, 22 },
{ 85, 47, -13, -67, -90, -73, -22, 39, 82, 88, 54, -4, -61, -90, -78,
-30 },
{ 82, 22, -54, -90, -61, 13, 78, 85, 30, -47, -90, -67, 4, 73, 88, 39 },
{ 78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 30, 90, 54, -39, -90,
-47 },
{ 73, -30, -90, -22, 78, 67, -39, -90, -13, 82, 61, -47, -88, -4, 85,
54 },
{ 67, -54, -78, 39, 85, -22, -90, 4, 90, 13, -88, -30, 82, 47, -73, -61 },
{ 61, -73, -47, 82, 30, -88, -13, 90, -4, -90, 22, 85, -39, -78, 54, 67 },
{ 54, -85, -4, 88, -47, -61, 82, 13, -90, 39, 67, -78, -22, 90, -30,
-73 },
{ 47, -90, 39, 54, -90, 30, 61, -88, 22, 67, -85, 13, 73, -82, 4, 78 },
{ 39, -88, 73, -4, -67, 90, -47, -30, 85, -78, 13, 61, -90, 54, 22, -82 },
{ 30, -78, 90, -61, 4, 54, -88, 82, -39, -22, 73, -90, 67, -13, -47, 85 },
{ 22, -61, 85, -90, 73, -39, -4, 47, -78, 90, -82, 54, -13, -30, 67,
-88 },
{ 13, -39, 61, -78, 88, -90, 85, -73, 54, -30, 4, 22, -47, 67, -82, 90 },
{ 4, -13, 22, -30, 39, -47, 54, -61, 67, -73, 78, -82, 85, -88, 90, -90 },
},
{
{ 90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 47, 39, 30, 22, 13, 4 },
{ 90, 82, 67, 47, 22, -4, -30, -54, -73, -85, -90, -88, -78, -61, -39,
-13 },
{ 88, 67, 30, -13, -54, -82, -90, -78, -47, -4, 39, 73, 90, 85, 61, 22 },
{ 85, 47, -13, -67, -90, -73, -22, 39, 82, 88, 54, -4, -61, -90, -78,
-30 },
{ 82, 22, -54, -90, -61, 13, 78, 85, 30, -47, -90, -67, 4, 73, 88, 39 },
{ 78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 30, 90, 54, -39, -90,
-47 },
{ 73, -30, -90, -22, 78, 67, -39, -90, -13, 82, 61, -47, -88, -4, 85,
54 },
{ 67, -54, -78, 39, 85, -22, -90, 4, 90, 13, -88, -30, 82, 47, -73, -61 },
{ 61, -73, -47, 82, 30, -88, -13, 90, -4, -90, 22, 85, -39, -78, 54, 67 },
{ 54, -85, -4, 88, -47, -61, 82, 13, -90, 39, 67, -78, -22, 90, -30,
-73 },
{ 47, -90, 39, 54, -90, 30, 61, -88, 22, 67, -85, 13, 73, -82, 4, 78 },
{ 39, -88, 73, -4, -67, 90, -47, -30, 85, -78, 13, 61, -90, 54, 22, -82 },
{ 30, -78, 90, -61, 4, 54, -88, 82, -39, -22, 73, -90, 67, -13, -47, 85 },
{ 22, -61, 85, -90, 73, -39, -4, 47, -78, 90, -82, 54, -13, -30, 67,
-88 },
{ 13, -39, 61, -78, 88, -90, 85, -73, 54, -30, 4, 22, -47, 67, -82, 90 },
{ 4, -13, 22, -30, 39, -47, 54, -61, 67, -73, 78, -82, 85, -88, 90, -90 },
},
#endif
};
const int tx_kernel_ddtx_size4[TXFM_DIRECTIONS][4][4] = {
{ { 2, 20, 72, 104 },
{ 14, 68, 81, -69 },
{ 67, 86, -61, 25 },
{ 108, -61, 27, -8 } },
{ { 2, 20, 72, 104 },
{ 14, 68, 81, -69 },
{ 67, 86, -61, 25 },
{ 108, -61, 27, -8 } },
};
const int tx_kernel_ddtx_size8[TXFM_DIRECTIONS][8][8] = {
{ { 4, 7, 15, 33, 65, 98, 106, 80 },
{ 6, 14, 36, 77, 100, 45, -57, -98 },
{ 22, 48, 85, 88, 0, -86, -23, 82 },
{ 57, 94, 76, -26, -73, 34, 54, -66 },
{ 96, 73, -43, -69, 55, 20, -71, 53 },
{ 103, -17, -80, 56, 15, -66, 75, -41 },
{ 78, -79, 7, 56, -82, 79, -56, 26 },
{ 56, -96, 98, -77, 54, -33, 19, -6 } },
{ { 4, 7, 15, 33, 65, 98, 106, 80 },
{ 6, 14, 36, 77, 100, 45, -57, -98 },
{ 22, 48, 85, 88, 0, -86, -23, 82 },
{ 57, 94, 76, -26, -73, 34, 54, -66 },
{ 96, 73, -43, -69, 55, 20, -71, 53 },
{ 103, -17, -80, 56, 15, -66, 75, -41 },
{ 78, -79, 7, 56, -82, 79, -56, 26 },
{ 56, -96, 98, -77, 54, -33, 19, -6 } },
};
const int tx_kernel_ddtx_size16[TXFM_DIRECTIONS][16][16] = {
{ { 12, 15, 19, 23, 30, 39, 51, 66, 78, 88, 94, 97, 93, 83, 68, 50 },
{ 17, 23, 30, 38, 48, 61, 76, 87, 83, 59, 19, -30, -73, -99, -99, -76 },
{ 37, 49, 60, 69, 75, 75, 61, 29, -18, -67, -96, -83, -28, 40, 84, 83 },
{ 45, 60, 69, 73, 66, 40, -8, -65, -91, -57, 21, 86, 81, 8, -69, -90 },
{ 47, 60, 61, 49, 19, -29, -77, -83, -16, 75, 93, 3, -92, -74, 32, 97 },
{ 60, 74, 64, 28, -31, -87, -82, 4, 88, 54, -55, -77, 29, 88, 3, -86 },
{ 64, 70, 40, -19, -79, -78, 11, 92, 28, -85, -41, 82, 39, -83, -37, 83 },
{ 82, 73, 3, -80, -91, 10, 94, 18, -84, -5, 80, -17, -70, 47, 55, -68 },
{ 89, 48, -53, -96, -5, 89, 16, -83, 12, 75, -51, -43, 81, -14, -75, 67 },
{ 100, 9, -99, -45, 84, 36, -81, 4, 73, -60, -17, 76, -55, -21, 81, -56 },
{ 92, -35, -91, 42, 71, -69, -22, 85, -60, -17, 77, -70, 11, 56, -83, 49 },
{ 84, -71, -46, 88, -16, -67, 79, -22, -46, 84, -68, 15, 46, -83, 82, -40 },
{ 69, -83, 2, 75, -78, 18, 50, -85, 81, -43, -6, 53, -81, 88, -69, 32 },
{ 50, -79, 47, 14, -60, 67, -37, -6, 49, -80, 98, -99, 90, -71, 48, -19 },
{ 51, -89, 73, -17, -45, 89, -103, 97, -83, 71, -56, 44, -31, 22, -11, 5 },
{ 44, -95, 124, -126, 108, -81, 54, -30, 16, -6, 1, 3, -4, 5, -3, 2 } },
{ { 12, 15, 19, 23, 30, 39, 51, 66, 78, 88, 94, 97, 93, 83, 68, 50 },
{ 17, 23, 30, 38, 48, 61, 76, 87, 83, 59, 19, -30, -73, -99, -99, -76 },
{ 37, 49, 60, 69, 75, 75, 61, 29, -18, -67, -96, -83, -28, 40, 84, 83 },
{ 45, 60, 69, 73, 66, 40, -8, -65, -91, -57, 21, 86, 81, 8, -69, -90 },
{ 47, 60, 61, 49, 19, -29, -77, -83, -16, 75, 93, 3, -92, -74, 32, 97 },
{ 60, 74, 64, 28, -31, -87, -82, 4, 88, 54, -55, -77, 29, 88, 3, -86 },
{ 64, 70, 40, -19, -79, -78, 11, 92, 28, -85, -41, 82, 39, -83, -37, 83 },
{ 82, 73, 3, -80, -91, 10, 94, 18, -84, -5, 80, -17, -70, 47, 55, -68 },
{ 89, 48, -53, -96, -5, 89, 16, -83, 12, 75, -51, -43, 81, -14, -75, 67 },
{ 100, 9, -99, -45, 84, 36, -81, 4, 73, -60, -17, 76, -55, -21, 81, -56 },
{ 92, -35, -91, 42, 71, -69, -22, 85, -60, -17, 77, -70, 11, 56, -83, 49 },
{ 84, -71, -46, 88, -16, -67, 79, -22, -46, 84, -68, 15, 46, -83, 82, -40 },
{ 69, -83, 2, 75, -78, 18, 50, -85, 81, -43, -6, 53, -81, 88, -69, 32 },
{ 50, -79, 47, 14, -60, 67, -37, -6, 49, -80, 98, -99, 90, -71, 48, -19 },
{ 51, -89, 73, -17, -45, 89, -103, 97, -83, 71, -56, 44, -31, 22, -11, 5 },
{ 44, -95, 124, -126, 108, -81, 54, -30, 16, -6, 1, 3, -4, 5, -3, 2 } },
};