1/****************************************************************************** 2* 3* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 4* 5* Licensed under the Apache License, Version 2.0 (the "License"); 6* you may not use this file except in compliance with the License. 7* You may obtain a copy of the License at: 8* 9* http://www.apache.org/licenses/LICENSE-2.0 10* 11* Unless required by applicable law or agreed to in writing, software 12* distributed under the License is distributed on an "AS IS" BASIS, 13* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14* See the License for the specific language governing permissions and 15* limitations under the License. 16* 17******************************************************************************/ 18/** 19******************************************************************************* 20* @file 21* ihevc_trans_tables.c 22* 23* @brief 24* Contains tables used for forward and inverse transform 25* 26* @author 27* 100470 28* 29* @par List of Tables: 30* g_ihevc_iquant_scales 31* g_ihevc_iquant_intr_scales 32* g_ihevc_quant_scales 33* g_ai4_ihevc_trans_4_ttype1 34* g_ai4_ihevc_trans_4_ttype0 35* g_ai2_ihevc_trans_dst_4 36* g_ai4_ihevc_trans_dst_intr_4 37* g_ai2_ihevc_trans_4 38* g_ai2_ihevc_trans_4_transpose 39* g_ai4_ihevc_trans_4_intr 40* g_ai2_ihevc_trans_4_intr 41* g_ai2_ihevc_trans_8 42* g_ai2_ihevc_trans_8_transpose 43* g_ai4_ihevc_trans_8_intr 44* g_ai2_ihevc_trans_8_intr 45* g_ai4_ihevc_trans_intr_even_8 46* g_ai4_ihevc_trans_intr_odd_8 47* g_ai2_ihevc_trans_16 48* g_ai2_ihevc_trans_16_transpose 49* g_ai2_ihevc_trans_32_intr_8 50* g_ai4_ihevc_trans_16_even 51* g_ai4_ihevc_trans_16_odd 52* g_ai2_ihevc_trans_32_transpose 53* g_ai2_ihevc_trans_32 54* g_ai2_ihevc_trans_32_intr_16 55* g_ai2_ihevc_trans_16_intr_odd 56* g_ai2_ihevc_trans_16_intr_even 57* g_ai2_ihevc_trans_32_intr_even 58* g_ai2_ihevc_trans_32_intr_odd 59* g_ai2_ihevc_trans_16_even_packed 60* g_ai2_ihevc_trans_32_intr_packed 61* g_ai2_ihevc_trans_32_intr_odd_packed 62* g_ai2_ihevc_trans_16_even 63* g_ai2_ihevc_trans_16_odd 64* g_ai2_ihevc_trans_intr_even_8 65* g_ai2_ihevc_trans_intr_odd_8 66* g_ai2_ihevc_trans_intr_4 67* IHEVCE_CHROMA_SHUFFLEMASK_HBD 68* g_ai4_ihevc_trans_8_intr_avx2 69* g_ai2_ihevc_trans_8_intr_avx2 70* g_ai2_ihevc_trans_32_intr_8_avx2 71* g_ai2_ihevc_trans_32_intr_16_avx2 72* g_ai2_ihevc_trans_16_intr_odd_avx2 73* g_ai2_ihevc_trans_16_intr_even_avx2 74 75* 76* @remarks 77* None 78* 79******************************************************************************* 80*/ 81 82#include "ihevc_typedefs.h" 83#include "ihevc_macros.h" 84 85#include "ihevc_platform_macros.h" 86#include "ihevc_func_selector.h" 87#include "ihevc_macros.h" 88#include "ihevc_trans_tables.h" 89#include "ihevc_defs.h" 90 91const WORD32 g_ihevc_iquant_scales[6] = 92{ 93 40, 45, 51, 57, 64, 72 94}; 95 96const WORD16 g_ihevc_iquant_intr_scales[6][8] = 97{ 98 { 40, 40, 40, 40, 40, 40, 40, 40 }, 99 { 45, 45, 45, 45, 45, 45, 45, 45 }, 100 { 51, 51, 51, 51, 51, 51, 51, 51 }, 101 { 57, 57, 57, 57, 57, 57, 57, 57 }, 102 { 64, 64, 64, 64, 64, 64, 64, 64 }, 103 { 72, 72, 72, 72, 72, 72, 72, 72 } 104}; 105 106const WORD32 g_ihevc_quant_scales[6] = 107{ 108 26214, 23302, 20560, 18396, 16384, 14564 109}; 110 111//DST coeffs 112const WORD32 g_ai4_ihevc_trans_4_ttype1[3][4] = 113{ 114 { 55, 55, 55, 55 }, 115 { 29, 29, 29, 29 }, 116 { 74, 74, 74, 74 } 117}; 118 119//DCT coeffs 120const WORD32 g_ai4_ihevc_trans_4_ttype0[3][4] = 121{ 122 { 36, 36, 36, 36 }, 123 { 64, 64, 64, 64 }, 124 { 83, 83, 83, 83 } 125}; 126 127const WORD16 g_ai2_ihevc_trans_dst_4[4][4] = 128{ 129 { 29, 55, 74, 84 }, 130 { 74, 74, 0, -74 }, 131 { 84, -29, -74, 55 }, 132 { 55, -84, 74, -29 } 133}; 134 135const WORD32 g_ai4_ihevc_trans_dst_intr_4[3][4] = 136{ /* 4*32 = 128 bit */ 137 { 29, 29, 29, 29 }, 138 { 55, 55, 55, 55 }, 139 { 74, 74, 74, 74 } 140}; 141 142const WORD16 g_ai2_ihevc_trans_4[4][4] = 143{ 144 { 64, 64, 64, 64 }, 145 { 83, 36, -36, -83 }, 146 { 64, -64, -64, 64 }, 147 { 36, -83, 83, -36 } 148}; 149 150const WORD16 g_ai2_ihevc_trans_4_transpose[4][4] = 151{ 152 { 64, 83, 64, 36 }, 153 { 64, 36, -64, -83 }, 154 { 64, -36, -64, 83 }, 155 { 64, -83, 64, -36 } 156}; 157 158const WORD32 g_ai4_ihevc_trans_4_intr[3][4] = 159{ /* 4*32 = 128 bit */ 160 { 64, 64, 64, 64 }, 161 { 83, 83, 83, 83 }, 162 { 36, 36, 36, 36 } 163}; 164 165const WORD16 g_ai2_ihevc_trans_4_intr[8] = { 64, 64, 83, 36, 64, -64, 36, -83 }; 166 167 168const WORD16 g_ai2_ihevc_trans_8[8][8] = 169{ 170 { 64, 64, 64, 64, 64, 64, 64, 64 }, 171 { 89, 75, 50, 18, -18, -50, -75, -89 }, 172 { 83, 36, -36, -83, -83, -36, 36, 83 }, 173 { 75, -18, -89, -50, 50, 89, 18, -75 }, 174 { 64, -64, -64, 64, 64, -64, -64, 64 }, 175 { 50, -89, 18, 75, -75, -18, 89, -50 }, 176 { 36, -83, 83, -36, -36, 83, -83, 36 }, 177 { 18, -50, 75, -89, 89, -75, 50, -18 } 178}; 179 180/* Used by itrans_recon_8x8 */ 181const WORD16 g_ai2_ihevc_trans_8_transpose[8][8] = 182{ 183 { 64, 89, 83, 75, 64, 50, 36, 18 }, 184 { 64, 75, 36, -18, -64, -89, -83, -50 }, 185 { 64, 50, -36, -89, -64, 18, 83, 75 }, 186 { 64, 18, -83, -50, 64, 75, -36, -89 }, 187 { 64, -18, -83, 50, 64, -75, -36, 89 }, 188 { 64, -50, -36, 89, -64, -18, 83, -75 }, 189 { 64, -75, 36, 18, -64, 89, -83, 50 }, 190 { 64, -89, 83, -75, 64, -50, 36, -18 } 191}; 192 193const WORD32 g_ai4_ihevc_trans_8_intr[7][4] = 194{ /* 4*32 = 128 bit */ 195 { 64, 64, 64, 64 }, 196 { 83, 83, 83, 83 }, 197 { 36, 36, 36, 36 }, 198 { 75, 75, 75, 75 }, 199 { 18, 18, 18, 18 }, 200 { 89, 89, 89, 89 }, 201 { 50, 50, 50, 50 }, 202}; 203 204 205const WORD16 g_ai2_ihevc_trans_8_intr[8][8] = 206{ /* 4*32 = 128 bit */ 207 { 64, 64, 64, 64, 64, 64, 64, 64 }, 208 { 89, 75, 18, 50, 89, 75, 18, 50 }, 209 { 83, 36, 83, 36, 83, 36, 83, 36 }, 210 { 75, -18, -50, -89, 75, -18, -50, -89 }, 211 { 64, -64, 64, -64, 64, -64, 64, -64 }, 212 { 50, -89, 75, 18, 50, -89, 75, 18 }, 213 { 36, -83, 36, -83, 36, -83, 36, -83 }, 214 { 18, -50, -89, 75, 18, -50, -89, 75 } 215}; 216 217 218const WORD32 g_ai4_ihevc_trans_intr_even_8[3][4] = 219{ 220 { 64, 64, 64, 64 }, 221 { 83, 83, 83, 83 }, 222 { 36, 36, 36, 36 }, 223}; 224 225const WORD32 g_ai4_ihevc_trans_intr_odd_8[4][4] = 226{ 227 { 89, 89, 89, 89 }, 228 { 75, 75, 75, 75 }, 229 { 50, 50, 50, 50 }, 230 { 18, 18, 18, 18 } 231}; 232 233const WORD16 g_ai2_ihevc_trans_16[16][16] = 234{ 235 { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 }, 236 { 90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, -57, -70, -80, -87, -90 }, 237 { 89, 75, 50, 18, -18, -50, -75, -89, -89, -75, -50, -18, 18, 50, 75, 89 }, 238 { 87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87 }, 239 { 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83 }, 240 { 80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80 }, 241 { 75, -18, -89, -50, 50, 89, 18, -75, -75, 18, 89, 50, -50, -89, -18, 75 }, 242 { 70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70 }, 243 { 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64, 64, -64, -64, 64 }, 244 { 57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57 }, 245 { 50, -89, 18, 75, -75, -18, 89, -50, -50, 89, -18, -75, 75, 18, -89, 50 }, 246 { 43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43 }, 247 { 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36 }, 248 { 25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -25 }, 249 { 18, -50, 75, -89, 89, -75, 50, -18, -18, 50, -75, 89, -89, 75, -50, 18 }, 250 { 9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9 } 251}; 252 253const WORD16 g_ai2_ihevc_trans_16_transpose[1][16] = 254{ 255 { 64, 90, 89, 87, 83, 80, 75, 70, 64, 57, 50, 43, 36, 25, 18, 9 } 256}; 257 258const WORD32 g_ai2_ihevc_trans_32_intr_8[8][4] = 259{ /* 4*32 = 128 bit */ 260 { 90, 90, 90, 90 }, 261 { 87, 87, 87, 87 }, 262 { 80, 80, 80, 80 }, 263 { 70, 70, 70, 70 }, 264 { 57, 57, 57, 57 }, 265 { 43, 43, 43, 43 }, 266 { 25, 25, 25, 25 }, 267 { 9, 9, 9, 9 } 268}; 269 270const WORD32 g_ai4_ihevc_trans_16_even[7][4] = 271{ 272 { 64, 64, 64, 64 }, 273 { 89, 89, 89, 89 }, 274 { 75, 75, 75, 75 }, 275 { 83, 83, 83, 83 }, 276 { 36, 36, 36, 36 }, 277 { 18, 18, 18, 18 }, 278 { 50, 50, 50, 50 }, 279}; 280 281const WORD32 g_ai4_ihevc_trans_16_odd[8][4] = 282{ 283 { 90, 90, 90, 90 }, 284 { 87, 87, 87, 87 }, 285 { 80, 80, 80, 80 }, 286 { 70, 70, 70, 70 }, 287 { 57, 57, 57, 57 }, 288 { 43, 43, 43, 43 }, 289 { 25, 25, 25, 25 }, 290 { 9, 9, 9, 9 } 291}; 292 293const WORD16 g_ai2_ihevc_trans_32_transpose[1][32] = 294{ 295 { 64, 90, 90, 90, 89, 88, 87, 85, 83, 82, 80, 78, 75, 73, 70, 67, 64, 61, 57, 54, 50, 46, 43, 38, 36, 31, 25, 22, 18, 13, 9, 4 } 296}; 297const WORD16 g_ai2_ihevc_trans_32[32][32] = 298{ 299 { 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 }, 300 { 90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 46, 38, 31, 22, 13, 4, -4, -13, -22, -31, -38, -46, -54, -61, -67, -73, -78, -82, -85, -88, -90, -90 }, 301 { 90, 87, 80, 70, 57, 43, 25, 9, -9, -25, -43, -57, -70, -80, -87, -90, -90, -87, -80, -70, -57, -43, -25, -9, 9, 25, 43, 57, 70, 80, 87, 90 }, 302 { 90, 82, 67, 46, 22, -4, -31, -54, -73, -85, -90, -88, -78, -61, -38, -13, 13, 38, 61, 78, 88, 90, 85, 73, 54, 31, 4, -22, -46, -67, -82, -90 }, 303 { 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 }, 304 { 88, 67, 31, -13, -54, -82, -90, -78, -46, -4, 38, 73, 90, 85, 61, 22, -22, -61, -85, -90, -73, -38, 4, 46, 78, 90, 82, 54, 13, -31, -67, -88 }, 305 { 87, 57, 9, -43, -80, -90, -70, -25, 25, 70, 90, 80, 43, -9, -57, -87, -87, -57, -9, 43, 80, 90, 70, 25, -25, -70, -90, -80, -43, 9, 57, 87 }, 306 { 85, 46, -13, -67, -90, -73, -22, 38, 82, 88, 54, -4, -61, -90, -78, -31, 31, 78, 90, 61, 4, -54, -88, -82, -38, 22, 73, 90, 67, 13, -46, -85 }, 307 { 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83, 83, 36, -36, -83, -83, -36, 36, 83 }, 308 { 82, 22, -54, -90, -61, 13, 78, 85, 31, -46, -90, -67, 4, 73, 88, 38, -38, -88, -73, -4, 67, 90, 46, -31, -85, -78, -13, 61, 90, 54, -22, -82 }, 309 { 80, 9, -70, -87, -25, 57, 90, 43, -43, -90, -57, 25, 87, 70, -9, -80, -80, -9, 70, 87, 25, -57, -90, -43, 43, 90, 57, -25, -87, -70, 9, 80 }, 310 { 78, -4, -82, -73, 13, 85, 67, -22, -88, -61, 31, 90, 54, -38, -90, -46, 46, 90, 38, -54, -90, -31, 61, 88, 22, -67, -85, -13, 73, 82, 4, -78 }, 311 { 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 }, 312 { 73, -31, -90, -22, 78, 67, -38, -90, -13, 82, 61, -46, -88, -4, 85, 54, -54, -85, 4, 88, 46, -61, -82, 13, 90, 38, -67, -78, 22, 90, 31, -73 }, 313 { 70, -43, -87, 9, 90, 25, -80, -57, 57, 80, -25, -90, -9, 87, 43, -70, -70, 43, 87, -9, -90, -25, 80, 57, -57, -80, 25, 90, 9, -87, -43, 70 }, 314 { 67, -54, -78, 38, 85, -22, -90, 4, 90, 13, -88, -31, 82, 46, -73, -61, 61, 73, -46, -82, 31, 88, -13, -90, -4, 90, 22, -85, -38, 78, 54, -67 }, 315 { 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 }, 316 { 61, -73, -46, 82, 31, -88, -13, 90, -4, -90, 22, 85, -38, -78, 54, 67, -67, -54, 78, 38, -85, -22, 90, 4, -90, 13, 88, -31, -82, 46, 73, -61 }, 317 { 57, -80, -25, 90, -9, -87, 43, 70, -70, -43, 87, 9, -90, 25, 80, -57, -57, 80, 25, -90, 9, 87, -43, -70, 70, 43, -87, -9, 90, -25, -80, 57 }, 318 { 54, -85, -4, 88, -46, -61, 82, 13, -90, 38, 67, -78, -22, 90, -31, -73, 73, 31, -90, 22, 78, -67, -38, 90, -13, -82, 61, 46, -88, 4, 85, -54 }, 319 { 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 }, 320 { 46, -90, 38, 54, -90, 31, 61, -88, 22, 67, -85, 13, 73, -82, 4, 78, -78, -4, 82, -73, -13, 85, -67, -22, 88, -61, -31, 90, -54, -38, 90, -46 }, 321 { 43, -90, 57, 25, -87, 70, 9, -80, 80, -9, -70, 87, -25, -57, 90, -43, -43, 90, -57, -25, 87, -70, -9, 80, -80, 9, 70, -87, 25, 57, -90, 43 }, 322 { 38, -88, 73, -4, -67, 90, -46, -31, 85, -78, 13, 61, -90, 54, 22, -82, 82, -22, -54, 90, -61, -13, 78, -85, 31, 46, -90, 67, 4, -73, 88, -38 }, 323 { 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36, 36, -83, 83, -36, -36, 83, -83, 36 }, 324 { 31, -78, 90, -61, 4, 54, -88, 82, -38, -22, 73, -90, 67, -13, -46, 85, -85, 46, 13, -67, 90, -73, 22, 38, -82, 88, -54, -4, 61, -90, 78, -31 }, 325 { 25, -70, 90, -80, 43, 9, -57, 87, -87, 57, -9, -43, 80, -90, 70, -25, -25, 70, -90, 80, -43, -9, 57, -87, 87, -57, 9, 43, -80, 90, -70, 25 }, 326 { 22, -61, 85, -90, 73, -38, -4, 46, -78, 90, -82, 54, -13, -31, 67, -88, 88, -67, 31, 13, -54, 82, -90, 78, -46, 4, 38, -73, 90, -85, 61, -22 }, 327 { 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 }, 328 { 13, -38, 61, -78, 88, -90, 85, -73, 54, -31, 4, 22, -46, 67, -82, 90, -90, 82, -67, 46, -22, -4, 31, -54, 73, -85, 90, -88, 78, -61, 38, -13 }, 329 { 9, -25, 43, -57, 70, -80, 87, -90, 90, -87, 80, -70, 57, -43, 25, -9, -9, 25, -43, 57, -70, 80, -87, 90, -90, 87, -80, 70, -57, 43, -25, 9 }, 330 { 4, -13, 22, -31, 38, -46, 54, -61, 67, -73, 78, -82, 85, -88, 90, -90, 90, -90, 88, -85, 82, -78, 73, -67, 61, -54, 46, -38, 31, -22, 13, -4 } 331}; 332 333 334 335const WORD32 g_ai2_ihevc_trans_32_intr_16[15][4] = 336{ /* 4*32 = 128 bit */ 337 { 90, 90, 90, 90 }, 338 { 88, 88, 88, 88 }, 339 { 85, 85, 85, 85 }, 340 { 82, 82, 82, 82 }, 341 { 78, 78, 78, 78 }, 342 { 73, 73, 73, 73 }, 343 { 67, 67, 67, 67 }, 344 { 61, 61, 61, 61 }, 345 { 54, 54, 54, 54 }, 346 { 46, 46, 46, 46 }, 347 { 38, 38, 38, 38 }, 348 { 31, 31, 31, 31 }, 349 { 22, 22, 22, 22 }, 350 { 13, 13, 13, 13 }, 351 { 4, 4, 4, 4 } 352}; 353 354const WORD16 g_ai2_ihevc_trans_16_intr_odd[32][8] = 355{ 356 { 90, 87, 90, 87, 90, 87, 90, 87 }, 357 { 70, 80, 70, 80, 70, 80, 70, 80 }, 358 { 57, 43, 57, 43, 57, 43, 57, 43 }, 359 { 9, 25, 9, 25, 9, 25, 9, 25 }, 360 { 87, 57, 87, 57, 87, 57, 87, 57 }, 361 { -43, 9, -43, 9, -43, 9, -43, 9 }, 362 { -80, -90, -80, -90, -80, -90, -80, -90 }, 363 { -25, -70, -25, -70, -25, -70, -25, -70 }, 364 { 80, 9, 80, 9, 80, 9, 80, 9 }, 365 { -87, -70, -87, -70, -87, -70, -87, -70 }, 366 { -25, 57, -25, 57, -25, 57, -25, 57 }, 367 { 43, 90, 43, 90, 43, 90, 43, 90 }, 368 { 70, -43, 70, -43, 70, -43, 70, -43 }, 369 { 9, -87, 9, -87, 9, -87, 9, -87 }, 370 { 90, 25, 90, 25, 90, 25, 90, 25 }, 371 { -57, -80, -57, -80, -57, -80, -57, -80 }, 372 { 57, -80, 57, -80, 57, -80, 57, -80 }, 373 { 90, -25, 90, -25, 90, -25, 90, -25 }, 374 { -9, -87, -9, -87, -9, -87, -9, -87 }, 375 { 70, 43, 70, 43, 70, 43, 70, 43 }, 376 { 43, -90, 43, -90, 43, -90, 43, -90 }, 377 { 25, 57, 25, 57, 25, 57, 25, 57 }, 378 { -87, 70, -87, 70, -87, 70, -87, 70 }, 379 { -80, 9, -80, 9, -80, 9, -80, 9 }, 380 { 25, -70, 25, -70, 25, -70, 25, -70 }, 381 { -80, 90, -80, 90, -80, 90, -80, 90 }, 382 { 43, 9, 43, 9, 43, 9, 43, 9 }, 383 { 87, -57, 87, -57, 87, -57, 87, -57 }, 384 { 9, -25, 9, -25, 9, -25, 9, -25 }, 385 { -57, 43, -57, 43, -57, 43, -57, 43 }, 386 { 70, -80, 70, -80, 70, -80, 70, -80 }, 387 { -90, 87, -90, 87, -90, 87, -90, 87 } 388}; 389 390const WORD16 g_ai2_ihevc_trans_16_intr_even[12][8] = 391{ 392 { 64, 64, 64, 64, 64, 64, 64, 64 }, 393 { 89, 75, 89, 75, 89, 75, 89, 75 }, 394 { 18, 50, 18, 50, 18, 50, 18, 50 }, 395 { 83, 36, 83, 36, 83, 36, 83, 36 }, 396 { 75, -18, 75, -18, 75, -18, 75, -18 }, 397 { -50, -89, -50, -89, -50, -89, -50, -89 }, 398 { 64, -64, 64, -64, 64, -64, 64, -64 }, 399 { 50, -89, 50, -89, 50, -89, 50, -89 }, 400 { 75, 18, 75, 18, 75, 18, 75, 18 }, 401 { 36, -83, 36, -83, 36, -83, 36, -83 }, 402 { 18, -50, 18, -50, 18, -50, 18, -50 }, 403 { -89, 75, -89, 75, -89, 75, -89, 75 } 404}; 405 406 407const WORD16 g_ai2_ihevc_trans_32_intr_even[22][8] = 408{ 409 { 64, 64, 64, 64, 83, 36, 83, 36 }, 410 { 64, -64, 64, -64, 36, -83, 36, -83 }, 411 { 89, 18, 89, 18, 75, 50, 75, 50 }, 412 { 75, -50, 75, -50, -18, -89, -18, -89 }, 413 { 50, 75, 50, 75, -89, 18, -89, 18 }, 414 { 18, -89, 18, -89, -50, 75, -50, 75 }, 415 416 { 90, 70, 90, 70, 87, 80, 87, 80 }, 417 { 9, 57, 9, 57, 25, 43, 25, 43 }, 418 { 87, -43, 87, -43, 57, 9, 57, 9 }, 419 { -25, -80, -25, -80, -70, -90, -70, -90 }, 420 { 80, -87, 80, -87, 9, -70, 9, -70 }, 421 { 43, -25, 43, -25, 90, 57, 90, 57 }, 422 { 70, 9, 70, 9, -43, -87, -43, -87 }, 423 { -57, 90, -57, 90, -80, 25, -80, 25 }, 424 { 57, 90, 57, 90, -80, -25, -80, -25 }, 425 { 70, -9, 70, -9, 43, -87, 43, -87 }, 426 { 43, 25, 43, 25, -90, 57, -90, 57 }, 427 { -80, -87, -80, -87, 9, 70, 9, 70 }, 428 { 25, -80, 25, -80, -70, 90, -70, 90 }, 429 { 87, 43, 87, 43, -57, 9, -57, 9 }, 430 { 9, -57, 9, -57, -25, 43, -25, 43 }, 431 { -90, 70, -90, 70, 87, -80, 87, -80 } 432}; 433 434 435const WORD16 g_ai2_ihevc_trans_32_intr_odd[32][16] = 436{ 437 { 90, 85, 90, 85, 90, 88, 90, 88, 61, 82, 61, 82, -73, -46, -73, -46 }, 438 { 67, 82, 67, 82, 73, 78, 73, 78, 90, 31, 90, 31, -13, -88, -13, -88 }, 439 { 61, 38, 61, 38, 54, 46, 54, 46, -4, 85, -4, 85, -90, 22, -90, 22 }, 440 { 4, 31, 4, 31, 13, 22, 13, 22, 67, -38, 67, -38, 54, -78, 54, -78 }, 441 442 { 90, 46, 90, 46, 82, 67, 82, 67, 54, 88, 54, 88, -85, -4, -85, -4 }, 443 { -54, 22, -54, 22, -31, -4, -31, -4, 13, -46, 13, -46, 82, -61, 82, -61 }, 444 { -73, -88, -73, -88, -85, -90, -85, -90, -90, -78, -90, -78, 38, 67, 38, 67 }, 445 { -13, -78, -13, -78, -38, -61, -38, -61, -73, -22, -73, -22, -31, 90, -31, 90 }, 446 447 { 88, -13, 88, -13, 67, 31, 67, 31, 46, 54, 46, 54, -90, 38, -90, 38 }, 448 { -78, -54, -78, -54, -90, -82, -90, -82, -88, -90, -88, -90, 61, 31, 61, 31 }, 449 { -46, 73, -46, 73, -4, 38, -4, 38, 22, 13, 22, 13, 67, -85, 67, -85 }, 450 { 22, 90, 22, 90, 61, 85, 61, 85, 78, 73, 78, 73, 4, -82, 4, -82 }, 451 452 { 85, -67, 85, -67, 46, -13, 46, -13, 38, -4, 38, -4, -88, 73, -88, 73 }, 453 { 38, -90, 38, -90, -22, -73, -22, -73, -31, -67, -31, -67, -46, 90, -46, 90 }, 454 { 82, -4, 82, -4, 88, 54, 88, 54, 85, 61, 85, 61, -78, 13, -78, 13 }, 455 { -31, -61, -31, -61, -78, -90, -78, -90, -82, -90, -82, -90, 22, 54, 22, 54 }, 456 457 { 82, -90, 82, -90, 22, -54, 22, -54, 31, -61, 31, -61, -78, 90, -78, 90 }, 458 { 85, -61, 85, -61, 78, 13, 78, 13, 82, 4, 82, 4, -88, 54, -88, 54 }, 459 { 31, -67, 31, -67, -46, -90, -46, -90, -38, -90, -38, -90, -22, 73, -22, 73 }, 460 { 38, 4, 38, 4, 88, 73, 88, 73, 85, 67, 85, 67, -46, -13, -46, -13 }, 461 462 { 78, -73, 78, -73, -4, -82, -4, -82, 22, -90, 22, -90, -61, 85, -61, 85 }, 463 { -22, 13, -22, 13, 67, 85, 67, 85, 46, 73, 46, 73, -4, -38, -4, -38 }, 464 { -88, 90, -88, 90, -61, 31, -61, 31, -78, 54, -78, 54, 90, -82, 90, -82 }, 465 { -46, 54, -46, 54, -90, -38, -90, -38, -88, -13, -88, -13, 67, -31, 67, -31 }, 466 467 { 73, -22, 73, -22, -31, -90, -31, -90, 13, -78, 13, -78, -38, 61, -38, 61 }, 468 { -90, 78, -90, 78, -38, 67, -38, 67, -73, 88, -73, 88, 85, -90, 85, -90 }, 469 { -13, -46, -13, -46, 82, 61, 82, 61, 54, 22, 54, 22, -31, 4, -31, 4 }, 470 { 54, -88, 54, -88, 85, -4, 85, -4, 90, -46, 90, -46, -82, 67, -82, 67 }, 471 472 { 67, 38, 67, 38, -54, -78, -54, -78, 4, -31, 4, -31, -13, 22, -13, 22 }, 473 { 4, 85, 4, 85, -90, -22, -90, -22, -61, 38, -61, 38, 54, -46, 54, -46 }, 474 { 90, -31, 90, -31, 13, -88, 13, -88, 67, -82, 67, -82, -73, 78, -73, 78 }, 475 { -61, 82, -61, 82, -73, 46, -73, 46, -90, 85, -90, 85, 90, -88, 90, -88 } 476 477}; 478 479 480/*Tables for itrans_recon functions*/ 481const WORD16 g_ai2_ihevc_trans_16_even_packed[12][8] = 482{ 483 { 83, 36, 83, 36, 83, 36, 83, 36 }, 484 485 { 36, -83, 36, -83, 36, -83, 36, -83 }, 486 487 { 64, 64, 64, 64, 64, 64, 64, 64 }, 488 489 { 64, -64, 64, -64, 64, -64, 64, -64 }, 490 491 { 89, 75, 89, 75, 89, 75, 89, 75 }, 492 493 { 50, 18, 50, 18, 50, 18, 50, 18 }, 494 495 { 75, -18, 75, -18, 75, -18, 75, -18 }, 496 497 { 89, 50, 89, 50, 89, 50, 89, 50 }, 498 499 { 50, -89, 50, -89, 50, -89, 50, -89 }, 500 501 { 18, 75, 18, 75, 18, 75, 18, 75 }, 502 503 { 18, -50, 18, -50, 18, -50, 18, -50 }, 504 505 { 75, -89, 75, -89, 75, -89, 75, -89 }, 506 507 508}; 509 510const WORD16 g_ai2_ihevc_trans_32_intr_packed[32][8] = 511{ 512 { 90, 87, 90, 87, 90, 87, 90, 87 }, 513 514 { 80, 70, 80, 70, 80, 70, 80, 70 }, 515 516 { 57, 43, 57, 43, 57, 43, 57, 43 }, 517 518 { 25, 9, 25, 9, 25, 9, 25, 9 }, 519 520 { 87, 57, 87, 57, 87, 57, 87, 57 }, 521 522 { 9, -43, 9, -43, 9, -43, 9, -43 }, 523 524 { 80, 90, 80, 90, 80, 90, 80, 90 }, 525 526 { 70, 25, 70, 25, 70, 25, 70, 25 }, 527 528 { 80, 9, 80, 9, 80, 9, 80, 9 }, 529 530 { 70, 87, 70, 87, 70, 87, 70, 87 }, 531 532 { -25, 57, -25, 57, -25, 57, -25, 57 }, 533 534 { 90, 43, 90, 43, 90, 43, 90, 43 }, 535 536 { 70, -43, 70, -43, 70, -43, 70, -43 }, 537 538 { -87, 9, -87, 9, -87, 9, -87, 9 }, 539 540 { 90, 25, 90, 25, 90, 25, 90, 25 }, 541 542 { 80, 57, 80, 57, 80, 57, 80, 57 }, 543 544 { 57, -80, 57, -80, 57, -80, 57, -80 }, 545 546 { -25, 90, -25, 90, -25, 90, -25, 90 }, 547 548 { 9, 87, 9, 87, 9, 87, 9, 87 }, 549 550 { 43, 70, 43, 70, 43, 70, 43, 70 }, 551 552 { 43, -90, 43, -90, 43, -90, 43, -90 }, 553 554 { 57, 25, 57, 25, 57, 25, 57, 25 }, 555 556 { -87, 70, -87, 70, -87, 70, -87, 70 }, 557 558 { 9, -80, 9, -80, 9, -80, 9, -80 }, 559 560 { 25, -70, 25, -70, 25, -70, 25, -70 }, 561 562 { 90, -80, 90, -80, 90, -80, 90, -80 }, 563 564 { 43, 9, 43, 9, 43, 9, 43, 9 }, 565 566 { -57, 87, -57, 87, -57, 87, -57, 87 }, 567 568 { 9, -25, 9, -25, 9, -25, 9, -25 }, 569 570 { 43, -57, 43, -57, 43, -57, 43, -57 }, 571 572 { 70, -80, 70, -80, 70, -80, 70, -80 }, 573 574 { 87, -90, 87, -90, 87, -90, 87, -90 }, 575 576}; 577 578const WORD16 g_ai2_ihevc_trans_32_intr_odd_packed[128][8] = 579{ 580 /*o0*/ 581 { 90, 90, 90, 90, 90, 90, 90, 90 }, 582 { 88, 85, 88, 85, 88, 85, 88, 85 }, 583 { 82, 78, 82, 78, 82, 78, 82, 78 }, 584 { 73, 67, 73, 67, 73, 67, 73, 67 }, 585 { 61, 54, 61, 54, 61, 54, 61, 54 }, 586 { 46, 38, 46, 38, 46, 38, 46, 38 }, 587 { 31, 22, 31, 22, 31, 22, 31, 22 }, 588 { 13, 4, 13, 4, 13, 4, 13, 4 }, 589 590 /*o1*/ 591 592 { 90, 82, 90, 82, 90, 82, 90, 82 }, 593 { 67, 46, 67, 46, 67, 46, 67, 46 }, 594 { -22, 4, -22, 4, -22, 4, -22, 4 }, 595 { 31, 54, 31, 54, 31, 54, 31, 54 }, 596 { 73, 85, 73, 85, 73, 85, 73, 85 }, 597 { 90, 88, 90, 88, 90, 88, 90, 88 }, 598 { 78, 61, 78, 61, 78, 61, 78, 61 }, 599 { 38, 13, 38, 13, 38, 13, 38, 13 }, 600 601 /*o2*/ 602 { 88, 67, 88, 67, 88, 67, 88, 67 }, 603 { -31, 13, -31, 13, -31, 13, -31, 13 }, 604 { 54, 82, 54, 82, 54, 82, 54, 82 }, 605 { 90, 78, 90, 78, 90, 78, 90, 78 }, 606 { 46, 4, 46, 4, 46, 4, 46, 4 }, 607 { 38, 73, 38, 73, 38, 73, 38, 73 }, 608 { 90, 85, 90, 85, 90, 85, 90, 85 }, 609 { 61, 22, 61, 22, 61, 22, 61, 22 }, 610 611 /*o3*/ 612 { 85, 46, 85, 46, 85, 46, 85, 46 }, 613 { 13, 67, 13, 67, 13, 67, 13, 67 }, 614 { 90, 73, 90, 73, 90, 73, 90, 73 }, 615 { 22, -38, 22, -38, 22, -38, 22, -38 }, 616 { 82, 88, 82, 88, 82, 88, 82, 88 }, 617 { -54, 4, -54, 4, -54, 4, -54, 4 }, 618 { 61, 90, 61, 90, 61, 90, 61, 90 }, 619 { 78, 31, 78, 31, 78, 31, 78, 31 }, 620 621 /*o4*/ 622 { -82, -22, -82, -22, -82, -22, -82, -22 }, 623 { 54, 90, 54, 90, 54, 90, 54, 90 }, 624 { 61, -13, 61, -13, 61, -13, 61, -13 }, 625 { -78, -85, -78, -85, -78, -85, -78, -85 }, 626 { -31, 46, -31, 46, -31, 46, -31, 46 }, 627 { 90, 67, 90, 67, 90, 67, 90, 67 }, 628 { -4, -73, -4, -73, -4, -73, -4, -73 }, 629 { -88, -38, -88, -38, -88, -38, -88, -38 }, 630 631 /*o5*/ 632 { -78, 4, -78, 4, -78, 4, -78, 4 }, 633 { 82, 73, 82, 73, 82, 73, 82, 73 }, 634 { -13, -85, -13, -85, -13, -85, -13, -85 }, 635 { -67, 22, -67, 22, -67, 22, -67, 22 }, 636 { 88, 61, 88, 61, 88, 61, 88, 61 }, 637 { -31, -90, -31, -90, -31, -90, -31, -90 }, 638 { -54, 38, -54, 38, -54, 38, -54, 38 }, 639 { 90, 46, 90, 46, 90, 46, 90, 46 }, 640 641 /*o6*/ 642 { -73, 31, -73, 31, -73, 31, -73, 31 }, 643 { 90, 22, 90, 22, 90, 22, 90, 22 }, 644 { -78, -67, -78, -67, -78, -67, -78, -67 }, 645 { 38, 90, 38, 90, 38, 90, 38, 90 }, 646 { 13, -82, 13, -82, 13, -82, 13, -82 }, 647 { -61, 46, -61, 46, -61, 46, -61, 46 }, 648 { 88, 4, 88, 4, 88, 4, 88, 4 }, 649 { -85, -54, -85, -54, -85, -54, -85, -54 }, 650 651 /*o7*/ 652 { -67, 54, -67, 54, -67, 54, -67, 54 }, 653 { 78, -38, 78, -38, 78, -38, 78, -38 }, 654 { -85, 22, -85, 22, -85, 22, -85, 22 }, 655 { 90, -4, 90, -4, 90, -4, 90, -4 }, 656 { -90, -13, -90, -13, -90, -13, -90, -13 }, 657 { 88, 31, 88, 31, 88, 31, 88, 31 }, 658 { -82, -46, -82, -46, -82, -46, -82, -46 }, 659 { 73, 61, 73, 61, 73, 61, 73, 61 }, 660 661 /*o8*/ 662 { -61, 73, -61, 73, -61, 73, -61, 73 }, 663 { 46, -82, 46, -82, 46, -82, 46, -82 }, 664 { -31, 88, -31, 88, -31, 88, -31, 88 }, 665 { 13, -90, 13, -90, 13, -90, 13, -90 }, 666 { 4, 90, 4, 90, 4, 90, 4, 90 }, 667 { -22, -85, -22, -85, -22, -85, -22, -85 }, 668 { 38, 78, 38, 78, 38, 78, 38, 78 }, 669 { -54, -67, -54, -67, -54, -67, -54, -67 }, 670 671 /*o9*/ 672 { -54, 85, -54, 85, -54, 85, -54, 85 }, 673 { 4, -88, 4, -88, 4, -88, 4, -88 }, 674 { 46, 61, 46, 61, 46, 61, 46, 61 }, 675 { -82, -13, -82, -13, -82, -13, -82, -13 }, 676 { 90, -38, 90, -38, 90, -38, 90, -38 }, 677 { -67, 78, -67, 78, -67, 78, -67, 78 }, 678 { 22, -90, 22, -90, 22, -90, 22, -90 }, 679 { 31, 73, 31, 73, 31, 73, 31, 73 }, 680 681 /*o10*/ 682 { -46, 90, -46, 90, -46, 90, -46, 90 }, 683 { -38, -54, -38, -54, -38, -54, -38, -54 }, 684 { 90, -31, 90, -31, 90, -31, 90, -31 }, 685 { -61, 88, -61, 88, -61, 88, -61, 88 }, 686 { -22, -67, -22, -67, -22, -67, -22, -67 }, 687 { 85, -13, 85, -13, 85, -13, 85, -13 }, 688 { -73, 82, -73, 82, -73, 82, -73, 82 }, 689 { -4, -78, -4, -78, -4, -78, -4, -78 }, 690 691 /*o11*/ 692 { -38, 88, -38, 88, -38, 88, -38, 88 }, 693 { -73, 4, -73, 4, -73, 4, -73, 4 }, 694 { 67, -90, 67, -90, 67, -90, 67, -90 }, 695 { 46, 31, 46, 31, 46, 31, 46, 31 }, 696 { -85, 78, -85, 78, -85, 78, -85, 78 }, 697 { -13, -61, -13, -61, -13, -61, -13, -61 }, 698 { 90, -54, 90, -54, 90, -54, 90, -54 }, 699 { -22, 82, -22, 82, -22, 82, -22, 82 }, 700 701 702 /*012*/ 703 { -31, 78, -31, 78, -31, 78, -31, 78 }, 704 { -90, 61, -90, 61, -90, 61, -90, 61 }, 705 { -4, -54, -4, -54, -4, -54, -4, -54 }, 706 { 88, -82, 88, -82, 88, -82, 88, -82 }, 707 { 38, 22, 38, 22, 38, 22, 38, 22 }, 708 { -73, 90, -73, 90, -73, 90, -73, 90 }, 709 { -67, 13, -67, 13, -67, 13, -67, 13 }, 710 { 46, -85, 46, -85, 46, -85, 46, -85 }, 711 712 /*o13*/ 713 { -22, 61, -22, 61, -22, 61, -22, 61 }, 714 { -85, 90, -85, 90, -85, 90, -85, 90 }, 715 { -73, 38, -73, 38, -73, 38, -73, 38 }, 716 { 4, -46, 4, -46, 4, -46, 4, -46 }, 717 { 78, -90, 78, -90, 78, -90, 78, -90 }, 718 { 82, -54, 82, -54, 82, -54, 82, -54 }, 719 { 13, 31, 13, 31, 13, 31, 13, 31 }, 720 { -67, 88, -67, 88, -67, 88, -67, 88 }, 721 722 /*o14*/ 723 { -13, 38, -13, 38, -13, 38, -13, 38 }, 724 { -61, 78, -61, 78, -61, 78, -61, 78 }, 725 { -88, 90, -88, 90, -88, 90, -88, 90 }, 726 { -85, 73, -85, 73, -85, 73, -85, 73 }, 727 { -54, 31, -54, 31, -54, 31, -54, 31 }, 728 { -4, -22, -4, -22, -4, -22, -4, -22 }, 729 { 46, -67, 46, -67, 46, -67, 46, -67 }, 730 { 82, -90, 82, -90, 82, -90, 82, -90 }, 731 732 /*o15*/ 733 { -4, 13, -4, 13, -4, 13, -4, 13 }, 734 { -22, 31, -22, 31, -22, 31, -22, 31 }, 735 { -38, 46, -38, 46, -38, 46, -38, 46 }, 736 { -54, 61, -54, 61, -54, 61, -54, 61 }, 737 { -67, 73, -67, 73, -67, 73, -67, 73 }, 738 { -78, 82, -78, 82, -78, 82, -78, 82 }, 739 { -85, 88, -85, 88, -85, 88, -85, 88 }, 740 { -90, 90, -90, 90, -90, 90, -90, 90 }, 741 742}; 743const WORD16 g_ai2_ihevc_trans_16_even[12][8] = 744{ 745 { 64, 64, 64, 64, 64, 64, 64, 64 }, 746 { 64, -64, 64, -64, 64, -64, 64, -64 }, 747 { 89, 75, 89, 75, 89, 75, 89, 75 }, 748 { 75, -18, 75, -18, 75, -18, 75, -18 }, 749 { 50, 18, 50, 18, 50, 18, 50, 18 }, 750 { 89, 50, 89, 50, 89, 50, 89, 50 }, 751 { 83, 36, 83, 36, 83, 36, 83, 36 }, 752 { 36, -83, 36, -83, 36, -83, 36, -83 }, 753 { 50, -89, 50, -89, 50, -89, 50, -89 }, 754 { 18, -50, 18, -50, 18, -50, 18, -50 }, 755 { 18, 75, 18, 75, 18, 75, 18, 75 }, 756 { 75, -89, 75, -89, 75, -89, 75, -89 }, 757}; 758const WORD16 g_ai2_ihevc_trans_16_odd[32][8] = 759{ 760 { 90, 87, 90, 87, 90, 87, 90, 87 }, 761 { 80, 70, 80, 70, 80, 70, 80, 70 }, 762 { 57, 43, 57, 43, 57, 43, 57, 43 }, 763 { 25, 9, 25, 9, 25, 9, 25, 9 }, 764 { 87, 57, 87, 57, 87, 57, 87, 57 }, 765 { 9, -43, 9, -43, 9, -43, 9, -43 }, 766 { 80, 90, 80, 90, 80, 90, 80, 90 }, 767 { 70, 25, 70, 25, 70, 25, 70, 25 }, 768 { 80, 9, 80, 9, 80, 9, 80, 9 }, 769 { 70, 87, 70, 87, 70, 87, 70, 87 }, 770 { 25, -57, 25, -57, 25, -57, 25, -57 }, 771 { 90, 43, 90, 43, 90, 43, 90, 43 }, 772 { 70, -43, 70, -43, 70, -43, 70, -43 }, 773 { 87, -9, 87, -9, 87, -9, 87, -9 }, 774 { 90, 25, 90, 25, 90, 25, 90, 25 }, 775 { 80, 57, 80, 57, 80, 57, 80, 57 }, 776 { 57, -80, 57, -80, 57, -80, 57, -80 }, 777 { 25, -90, 25, -90, 25, -90, 25, -90 }, 778 { 9, 87, 9, 87, 9, 87, 9, 87 }, 779 { 43, 70, 43, 70, 43, 70, 43, 70 }, 780 { 43, -90, 43, -90, 43, -90, 43, -90 }, 781 { 57, 25, 57, 25, 57, 25, 57, 25 }, 782 { 87, -70, 87, -70, 87, -70, 87, -70 }, 783 { 9, -80, 9, -80, 9, -80, 9, -80 }, 784 { 25, -70, 25, -70, 25, -70, 25, -70 }, 785 { 90, -80, 90, -80, 90, -80, 90, -80 }, 786 { 43, 9, 43, 9, 43, 9, 43, 9 }, 787 { 57, -87, 57, -87, 57, -87, 57, -87 }, 788 { 9, -25, 9, -25, 9, -25, 9, -25 }, 789 { 43, -57, 43, -57, 43, -57, 43, -57 }, 790 { 70, -80, 70, -80, 70, -80, 70, -80 }, 791 { 87, -90, 87, -90, 87, -90, 87, -90 }, 792}; 793const WORD16 g_ai2_ihevc_trans_intr_even_8[4][8] = 794{ 795 { 64, 64, 64, 64, 64, 64, 64, 64 }, 796 { 36, -83, 36, -83, 36, -83, 36, -83 }, 797 { 83, 36, 83, 36, 83, 36, 83, 36 }, 798 { 64, -64, 64, -64, 64, -64, 64, -64 } 799}; 800const WORD16 g_ai2_ihevc_trans_intr_odd_8[8][8] = 801{ 802 { 89, 75, 89, 75, 89, 75, 89, 75 }, 803 { 50, 18, 50, 18, 50, 18, 50, 18 }, 804 { 75, -18, 75, -18, 75, -18, 75, -18 }, 805 { 89, 50, 89, 50, 89, 50, 89, 50 }, 806 { 50, -89, 50, -89, 50, -89, 50, -89 }, 807 { 18, 75, 18, 75, 18, 75, 18, 75 }, 808 { 18, -50, 18, -50, 18, -50, 18, -50 }, 809 { 75, -89, 75, -89, 75, -89, 75, -89 }, 810}; 811const WORD16 g_ai2_ihevc_trans_intr_4[4][8] = 812{ 813 { 83, 36, 83, 36, 83, 36, 83, 36 }, 814 { 36, -83, 36, -83, 36, -83, 36, -83 }, 815 { 64, 64, 64, 64, 64, 64, 64, 64 }, 816 { 64, -64, 64, -64, 64, -64, 64, -64 } 817}; 818 819const UWORD8 IHEVCE_CHROMA_SHUFFLEMASK_HBD[8] = { 0x00, 0x01, 0x04, 0x05, 820 0x08, 0x09, 0x0C, 0x0D }; 821#ifndef DISABLE_AVX2 822const WORD32 g_ai4_ihevc_trans_8_intr_avx2[7][8] = 823{ /* 4*32 = 128 bit */ 824 { 64, 64, 64, 64, 64, 64, 64, 64 }, 825 { 83, 83, 83, 83, 83, 83, 83, 83 }, 826 { 36, 36, 36, 36, 36, 36, 36, 36 }, 827 { 75, 75, 75, 75, 75, 75, 75, 75 }, 828 { 18, 18, 18, 18, 18, 18, 18, 18 }, 829 { 89, 89, 89, 89, 89, 89, 89, 89 }, 830 { 50, 50, 50, 50, 50, 50, 50, 50 }, 831}; 832const WORD16 g_ai2_ihevc_trans_8_intr_avx2[8][16] = 833{ /* 4*32 = 128 bit */ 834 { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 }, 835 { 89, 75, 18, 50, 89, 75, 18, 50, 89, 75, 18, 50, 89, 75, 18, 50 }, 836 { 83, 36, 83, 36, 83, 36, 83, 36, 83, 36, 83, 36, 83, 36, 83, 36 }, 837 { 75, -18, -50, -89, 75, -18, -50, -89, 75, -18, -50, -89, 75, -18, -50, -89 }, 838 { 64, -64, 64, -64, 64, -64, 64, -64, 64, -64, 64, -64, 64, -64, 64, -64 }, 839 { 50, -89, 75, 18, 50, -89, 75, 18, 50, -89, 75, 18, 50, -89, 75, 18 }, 840 { 36, -83, 36, -83, 36, -83, 36, -83, 36, -83, 36, -83, 36, -83, 36, -83 }, 841 { 18, -50, -89, 75, 18, -50, -89, 75, 18, -50, -89, 75, 18, -50, -89, 75 } 842}; 843 844const WORD32 g_ai2_ihevc_trans_32_intr_8_avx2[8][8] = 845{ /* 4*32 = 128 bit */ 846 { 90, 90, 90, 90, 90, 90, 90, 90 }, 847 { 87, 87, 87, 87, 87, 87, 87, 87 }, 848 { 80, 80, 80, 80, 80, 80, 80, 80 }, 849 { 70, 70, 70, 70, 70, 70, 70, 70 }, 850 { 57, 57, 57, 57, 57, 57, 57, 57 }, 851 { 43, 43, 43, 43, 43, 43, 43, 43 }, 852 { 25, 25, 25, 25, 25, 25, 25, 25 }, 853 { 9, 9, 9, 9, 9, 9, 9, 9 } 854}; 855const WORD32 g_ai2_ihevc_trans_32_intr_16_avx2[15][8] = 856{ /* 4*32 = 128 bit */ 857 { 90, 90, 90, 90, 90, 90, 90, 90, }, 858 { 88, 88, 88, 88, 88, 88, 88, 88, }, 859 { 85, 85, 85, 85, 85, 85, 85, 85, }, 860 { 82, 82, 82, 82, 82, 82, 82, 82, }, 861 { 78, 78, 78, 78, 78, 78, 78, 78, }, 862 { 73, 73, 73, 73, 73, 73, 73, 73, }, 863 { 67, 67, 67, 67, 67, 67, 67, 67, }, 864 { 61, 61, 61, 61, 61, 61, 61, 61, }, 865 { 54, 54, 54, 54, 54, 54, 54, 54, }, 866 { 46, 46, 46, 46, 46, 46, 46, 46, }, 867 { 38, 38, 38, 38, 38, 38, 38, 38, }, 868 { 31, 31, 31, 31, 31, 31, 31, 31, }, 869 { 22, 22, 22, 22, 22, 22, 22, 22, }, 870 { 13, 13, 13, 13, 13, 13, 13, 13, }, 871 { 4, 4, 4, 4, 4, 4, 4, 4, } 872}; 873const WORD16 g_ai2_ihevc_trans_16_intr_odd_avx2[32][16] = 874{ 875 { 90, 87, 90, 87, 90, 87, 90, 87, 90, 87, 90, 87, 90, 87, 90, 87 }, 876 { 70, 80, 70, 80, 70, 80, 70, 80, 70, 80, 70, 80, 70, 80, 70, 80 }, 877 { 57, 43, 57, 43, 57, 43, 57, 43, 57, 43, 57, 43, 57, 43, 57, 43 }, 878 { 9, 25, 9, 25, 9, 25, 9, 25, 9, 25, 9, 25, 9, 25, 9, 25 }, 879 { 87, 57, 87, 57, 87, 57, 87, 57, 87, 57, 87, 57, 87, 57, 87, 57 }, 880 { -43, 9, -43, 9, -43, 9, -43, 9, -43, 9, -43, 9, -43, 9, -43, 9 }, 881 { -80, -90, -80, -90, -80, -90, -80, -90, -80, -90, -80, -90, -80, -90, -80, -90 }, 882 { -25, -70, -25, -70, -25, -70, -25, -70, -25, -70, -25, -70, -25, -70, -25, -70 }, 883 { 80, 9, 80, 9, 80, 9, 80, 9, 80, 9, 80, 9, 80, 9, 80, 9 }, 884 { -87, -70, -87, -70, -87, -70, -87, -70, -87, -70, -87, -70, -87, -70, -87, -70 }, 885 { -25, 57, -25, 57, -25, 57, -25, 57, -25, 57, -25, 57, -25, 57, -25, 57 }, 886 { 43, 90, 43, 90, 43, 90, 43, 90, 43, 90, 43, 90, 43, 90, 43, 90 }, 887 { 70, -43, 70, -43, 70, -43, 70, -43, 70, -43, 70, -43, 70, -43, 70, -43 }, 888 { 9, -87, 9, -87, 9, -87, 9, -87, 9, -87, 9, -87, 9, -87, 9, -87 }, 889 { 90, 25, 90, 25, 90, 25, 90, 25, 90, 25, 90, 25, 90, 25, 90, 25 }, 890 { -57, -80, -57, -80, -57, -80, -57, -80, -57, -80, -57, -80, -57, -80, -57, -80 }, 891 { 57, -80, 57, -80, 57, -80, 57, -80, 57, -80, 57, -80, 57, -80, 57, -80 }, 892 { 90, -25, 90, -25, 90, -25, 90, -25, 90, -25, 90, -25, 90, -25, 90, -25 }, 893 { -9, -87, -9, -87, -9, -87, -9, -87, -9, -87, -9, -87, -9, -87, -9, -87 }, 894 { 70, 43, 70, 43, 70, 43, 70, 43, 70, 43, 70, 43, 70, 43, 70, 43 }, 895 { 43, -90, 43, -90, 43, -90, 43, -90, 43, -90, 43, -90, 43, -90, 43, -90 }, 896 { 25, 57, 25, 57, 25, 57, 25, 57, 25, 57, 25, 57, 25, 57, 25, 57 }, 897 { -87, 70, -87, 70, -87, 70, -87, 70, -87, 70, -87, 70, -87, 70, -87, 70 }, 898 { -80, 9, -80, 9, -80, 9, -80, 9, -80, 9, -80, 9, -80, 9, -80, 9 }, 899 { 25, -70, 25, -70, 25, -70, 25, -70, 25, -70, 25, -70, 25, -70, 25, -70 }, 900 { -80, 90, -80, 90, -80, 90, -80, 90, -80, 90, -80, 90, -80, 90, -80, 90 }, 901 { 43, 9, 43, 9, 43, 9, 43, 9, 43, 9, 43, 9, 43, 9, 43, 9 }, 902 { 87, -57, 87, -57, 87, -57, 87, -57, 87, -57, 87, -57, 87, -57, 87, -57 }, 903 { 9, -25, 9, -25, 9, -25, 9, -25, 9, -25, 9, -25, 9, -25, 9, -25 }, 904 { -57, 43, -57, 43, -57, 43, -57, 43, -57, 43, -57, 43, -57, 43, -57, 43 }, 905 { 70, -80, 70, -80, 70, -80, 70, -80, 70, -80, 70, -80, 70, -80, 70, -80 }, 906 { -90, 87, -90, 87, -90, 87, -90, 87, -90, 87, -90, 87, -90, 87, -90, 87 } 907}; 908 909const WORD16 g_ai2_ihevc_trans_16_intr_even_avx2[12][16] = 910{ 911 { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 }, 912 { 89, 75, 89, 75, 89, 75, 89, 75, 89, 75, 89, 75, 89, 75, 89, 75 }, 913 { 18, 50, 18, 50, 18, 50, 18, 50, 18, 50, 18, 50, 18, 50, 18, 50 }, 914 { 83, 36, 83, 36, 83, 36, 83, 36, 83, 36, 83, 36, 83, 36, 83, 36 }, 915 { 75, -18, 75, -18, 75, -18, 75, -18, 75, -18, 75, -18, 75, -18, 75, -18 }, 916 { -50, -89, -50, -89, -50, -89, -50, -89, -50, -89, -50, -89, -50, -89, -50, -89 }, 917 { 64, -64, 64, -64, 64, -64, 64, -64, 64, -64, 64, -64, 64, -64, 64, -64 }, 918 { 50, -89, 50, -89, 50, -89, 50, -89, 50, -89, 50, -89, 50, -89, 50, -89 }, 919 { 75, 18, 75, 18, 75, 18, 75, 18, 75, 18, 75, 18, 75, 18, 75, 18 }, 920 { 36, -83, 36, -83, 36, -83, 36, -83, 36, -83, 36, -83, 36, -83, 36, -83 }, 921 { 18, -50, 18, -50, 18, -50, 18, -50, 18, -50, 18, -50, 18, -50, 18, -50 }, 922 { -89, 75, -89, 75, -89, 75, -89, 75, -89, 75, -89, 75, -89, 75, -89, 75 } 923}; 924 925 926#endif 927