/* * VVC shared tables * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include <stdint.h> #include "libavutil/avassert.h" #include "data.h" const uint8_t ff_vvc_diag_scan_x[5][5][16*16] = { { //1x1 { 0, }, //1x2 { 0, 0, }, //1x4 { 0, 0, 0, 0, }, //1x8 { 0, 0, 0, 0, 0, 0, 0, 0, }, //1x16 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { //2x1 { 0, 1, }, //2x2 { 0, 0, 1, 1, }, //2x4 { 0, 0, 1, 0, 1, 0, 1, 1, }, //2x8 { 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, }, //2x16 { 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, }, }, { //4x1 { 0, 1, 2, 3, }, //4x2 { 0, 0, 1, 1, 2, 2, 3, 3, }, //4x4 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 1, 2, 3, 2, 3, 3, }, //4x8 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 2, 3, 3, }, //4x16 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 2, 3, 3, }, }, { //8x1 { 0, 1, 2, 3, 4, 5, 6, 7, }, //8x2 { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, }, //8x4 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 6, 7, 7, }, //8x8 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 4, 5, 6, 7, 5, 6, 7, 6, 7, 7, }, //8x16 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 4, 5, 6, 7, 5, 6, 7, 6, 7, 7, }, }, { //16x1 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, }, //16x2 { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, }, //16x4 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8, 6, 7, 8, 9, 7, 8, 9, 10, 8, 9, 10, 11, 9, 10, 11, 12, 10, 11, 12, 13, 11, 12, 13, 14, 12, 13, 14, 15, 13, 14, 15, 14, 15, 15, }, //16x8 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7, 8, 9, 10, 4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 12, 13, 7, 8, 9, 10, 11, 12, 13, 14, 8, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, 15, 10, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 12, 13, 14, 15, 13, 14, 15, 14, 15, 15, }, //16x16 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, 15, 10, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 12, 13, 14, 15, 13, 14, 15, 14, 15, 15, }, },}; const uint8_t ff_vvc_diag_scan_y[5][5][16*16] = { { //1x1 { 0, }, //1x2 { 0, 1, }, //1x4 { 0, 1, 2, 3, }, //1x8 { 0, 1, 2, 3, 4, 5, 6, 7, }, //1x16 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, }, }, { //2x1 { 0, 0, }, //2x2 { 0, 1, 0, 1, }, //2x4 { 0, 1, 0, 2, 1, 3, 2, 3, }, //2x8 { 0, 1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 7, }, //2x16 { 0, 1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 10, 12, 11, 13, 12, 14, 13, 15, 14, 15, }, }, { //4x1 { 0, 0, 0, 0, }, //4x2 { 0, 1, 0, 1, 0, 1, 0, 1, }, //4x4 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 3, 2, 3, }, //4x8 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 5, 4, 3, 2, 6, 5, 4, 3, 7, 6, 5, 4, 7, 6, 5, 7, 6, 7, }, //4x16 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 5, 4, 3, 2, 6, 5, 4, 3, 7, 6, 5, 4, 8, 7, 6, 5, 9, 8, 7, 6, 10, 9, 8, 7, 11, 10, 9, 8, 12, 11, 10, 9, 13, 12, 11, 10, 14, 13, 12, 11, 15, 14, 13, 12, 15, 14, 13, 15, 14, 15, }, }, { //8x1 { 0, 0, 0, 0, 0, 0, 0, 0, }, //8x2 { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, }, //8x4 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 3, 2, 3, }, //8x8 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 7, 6, 5, 4, 7, 6, 5, 7, 6, 7, }, //8x16 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 8, 7, 6, 5, 4, 3, 2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 10, 9, 8, 7, 6, 5, 4, 3, 11, 10, 9, 8, 7, 6, 5, 4, 12, 11, 10, 9, 8, 7, 6, 5, 13, 12, 11, 10, 9, 8, 7, 6, 14, 13, 12, 11, 10, 9, 8, 7, 15, 14, 13, 12, 11, 10, 9, 8, 15, 14, 13, 12, 11, 10, 9, 15, 14, 13, 12, 11, 10, 15, 14, 13, 12, 11, 15, 14, 13, 12, 15, 14, 13, 15, 14, 15, }, }, { //16x1 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, //16x2 { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, }, //16x4 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 3, 2, 3, }, //16x8 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 7, 6, 5, 4, 7, 6, 5, 7, 6, 7, }, //16x16 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 15, 14, 13, 12, 11, 10, 9, 8, 7, 15, 14, 13, 12, 11, 10, 9, 8, 15, 14, 13, 12, 11, 10, 9, 15, 14, 13, 12, 11, 10, 15, 14, 13, 12, 11, 15, 14, 13, 12, 15, 14, 13, 15, 14, 15, }, },}; const uint8_t ff_vvc_scaling_pred_8[8 * 8] = { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,}; const uint8_t ff_vvc_scaling_pred_16[8 * 8] = { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,}; const int ff_vvc_scaling_list0[8 * 8] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; static const uint8_t mip_matrix_4x4[16][16][4] = { { { 32, 30, 90, 28 }, { 32, 32, 72, 28 }, { 34, 77, 53, 30 }, { 51, 124, 36, 37 }, { 31, 31, 95, 37 }, { 33, 31, 70, 50 }, { 52, 80, 25, 60 }, { 78, 107, 1, 65 }, { 31, 29, 37, 95 }, { 38, 34, 19, 101 }, { 73, 85, 0, 81 }, { 92, 99, 0, 65 }, { 34, 29, 14, 111 }, { 48, 48, 7, 100 }, { 80, 91, 0, 74 }, { 89, 97, 0, 64 } }, { { 31, 23, 34, 29 }, { 31, 43, 34, 31 }, { 30, 95, 34, 32 }, { 29, 100, 35, 33 }, { 31, 23, 34, 29 }, { 31, 43, 34, 31 }, { 30, 95, 34, 32 }, { 29, 99, 35, 33 }, { 31, 24, 35, 29 }, { 31, 44, 34, 31 }, { 30, 95, 35, 32 }, { 29, 99, 35, 33 }, { 31, 24, 35, 30 }, { 31, 44, 35, 31 }, { 30, 95, 35, 32 }, { 29, 99, 35, 33 } }, { { 32, 32, 36, 58 }, { 32, 29, 26, 66 }, { 36, 37, 23, 61 }, { 79, 84, 3, 37 }, { 32, 32, 30, 69 }, { 33, 29, 24, 71 }, { 44, 16, 21, 70 }, { 96, 18, 0, 57 }, { 32, 31, 24, 74 }, { 33, 30, 23, 71 }, { 36, 24, 24, 71 }, { 59, 9, 16, 68 }, { 32, 32, 23, 75 }, { 33, 30, 24, 70 }, { 32, 30, 25, 71 }, { 36, 26, 25, 70 } }, { { 32, 33, 34, 32 }, { 32, 30, 22, 38 }, { 29, 46, 25, 38 }, { 53, 123, 28, 22 }, { 32, 33, 30, 37 }, { 32, 30, 21, 38 }, { 32, 40, 24, 38 }, { 64, 116, 26, 17 }, { 32, 32, 23, 49 }, { 32, 30, 21, 39 }, { 34, 39, 24, 37 }, { 72, 109, 23, 16 }, { 33, 31, 17, 60 }, { 32, 31, 21, 39 }, { 35, 41, 24, 37 }, { 72, 106, 22, 18 } }, { { 34, 25, 89, 20 }, { 38, 32, 47, 24 }, { 40, 86, 29, 27 }, { 38, 98, 32, 29 }, { 34, 31, 94, 40 }, { 44, 25, 83, 27 }, { 54, 72, 43, 16 }, { 47, 94, 33, 22 }, { 33, 31, 36, 94 }, { 43, 23, 51, 76 }, { 62, 55, 64, 25 }, { 57, 89, 38, 15 }, { 32, 32, 28, 101 }, { 38, 26, 33, 94 }, { 55, 38, 68, 47 }, { 59, 80, 52, 16 } }, { { 28, 30, 68, 29 }, { 23, 48, 23, 48 }, { 39, 98, 16, 42 }, { 84, 86, 20, 17 }, { 25, 31, 52, 74 }, { 38, 68, 5, 70 }, { 95, 78, 7, 21 }, { 127, 54, 12, 0 }, { 30, 47, 14, 107 }, { 79, 76, 0, 53 }, { 127, 59, 7, 1 }, { 127, 51, 9, 0 }, { 50, 71, 1, 96 }, { 109, 69, 7, 25 }, { 127, 56, 9, 0 }, { 123, 53, 13, 0 } }, { { 40, 20, 72, 18 }, { 48, 29, 44, 18 }, { 53, 81, 35, 18 }, { 48, 96, 33, 22 }, { 45, 23, 79, 49 }, { 61, 21, 56, 49 }, { 72, 52, 32, 48 }, { 65, 69, 20, 50 }, { 41, 27, 29, 96 }, { 49, 22, 28, 94 }, { 52, 22, 28, 93 }, { 49, 27, 27, 92 }, { 37, 29, 26, 98 }, { 39, 28, 28, 97 }, { 38, 28, 30, 97 }, { 38, 29, 30, 95 } }, { { 33, 27, 43, 27 }, { 32, 29, 31, 31 }, { 31, 73, 33, 31 }, { 35, 104, 34, 28 }, { 32, 30, 63, 22 }, { 33, 26, 33, 29 }, { 33, 57, 33, 30 }, { 37, 100, 35, 27 }, { 32, 31, 85, 25 }, { 34, 25, 39, 25 }, { 35, 39, 32, 28 }, { 40, 91, 35, 25 }, { 32, 30, 77, 50 }, { 34, 26, 54, 22 }, { 37, 31, 34, 27 }, { 45, 75, 34, 23 } }, { { 34, 25, 77, 19 }, { 36, 34, 56, 24 }, { 41, 83, 39, 30 }, { 47, 96, 28, 35 }, { 34, 31, 70, 65 }, { 38, 29, 53, 77 }, { 43, 36, 37, 83 }, { 48, 39, 28, 83 }, { 33, 31, 31, 98 }, { 33, 31, 30, 99 }, { 34, 30, 31, 98 }, { 36, 29, 31, 96 }, { 32, 32, 30, 97 }, { 32, 32, 31, 96 }, { 31, 33, 33, 96 }, { 32, 33, 34, 94 } }, { { 30, 30, 93, 19 }, { 31, 59, 67, 34 }, { 31, 79, 36, 59 }, { 30, 67, 17, 79 }, { 30, 38, 68, 69 }, { 29, 40, 43, 91 }, { 26, 35, 32, 101 }, { 23, 32, 30, 101 }, { 26, 34, 30, 101 }, { 23, 33, 30, 102 }, { 20, 32, 31, 102 }, { 18, 33, 32, 102 }, { 23, 33, 31, 100 }, { 20, 34, 32, 100 }, { 18, 35, 33, 100 }, { 18, 35, 33, 100 } }, { { 31, 54, 90, 26 }, { 32, 60, 53, 61 }, { 34, 49, 37, 84 }, { 34, 39, 35, 89 }, { 35, 38, 41, 88 }, { 35, 35, 32, 96 }, { 35, 31, 33, 96 }, { 35, 32, 35, 94 }, { 34, 34, 30, 97 },Lines 1–500 of 3565. Load more
/* * VVC shared tables * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include <stdint.h> #include "libavutil/avassert.h" #include "data.h" const uint8_t ff_vvc_diag_scan_x[5][5][16*16] = { { //1x1 { 0, }, //1x2 { 0, 0, }, //1x4 { 0, 0, 0, 0, }, //1x8 { 0, 0, 0, 0, 0, 0, 0, 0, }, //1x16 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { //2x1 { 0, 1, }, //2x2 { 0, 0, 1, 1, }, //2x4 { 0, 0, 1, 0, 1, 0, 1, 1, }, //2x8 { 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, }, //2x16 { 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, }, }, { //4x1 { 0, 1, 2, 3, }, //4x2 { 0, 0, 1, 1, 2, 2, 3, 3, }, //4x4 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 1, 2, 3, 2, 3, 3, }, //4x8 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 2, 3, 3, }, //4x16 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 2, 3, 3, }, }, { //8x1 { 0, 1, 2, 3, 4, 5, 6, 7, }, //8x2 { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, }, //8x4 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 6, 7, 7, }, //8x8 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 4, 5, 6, 7, 5, 6, 7, 6, 7, 7, }, //8x16 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 4, 5, 6, 7, 5, 6, 7, 6, 7, 7, }, }, { //16x1 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, }, //16x2 { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, }, //16x4 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8, 6, 7, 8, 9, 7, 8, 9, 10, 8, 9, 10, 11, 9, 10, 11, 12, 10, 11, 12, 13, 11, 12, 13, 14, 12, 13, 14, 15, 13, 14, 15, 14, 15, 15, }, //16x8 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7, 8, 9, 10, 4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 12, 13, 7, 8, 9, 10, 11, 12, 13, 14, 8, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, 15, 10, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 12, 13, 14, 15, 13, 14, 15, 14, 15, 15, }, //16x16 { 0, 0, 1, 0, 1, 2, 0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, 15, 10, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 12, 13, 14, 15, 13, 14, 15, 14, 15, 15, }, }, }; const uint8_t ff_vvc_diag_scan_y[5][5][16*16] = { { //1x1 { 0, }, //1x2 { 0, 1, }, //1x4 { 0, 1, 2, 3, }, //1x8 { 0, 1, 2, 3, 4, 5, 6, 7, }, //1x16 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, }, }, { //2x1 { 0, 0, }, //2x2 { 0, 1, 0, 1, }, //2x4 { 0, 1, 0, 2, 1, 3, 2, 3, }, //2x8 { 0, 1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 7, }, //2x16 { 0, 1, 0, 2, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 10, 12, 11, 13, 12, 14, 13, 15, 14, 15, }, }, { //4x1 { 0, 0, 0, 0, }, //4x2 { 0, 1, 0, 1, 0, 1, 0, 1, }, //4x4 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 3, 2, 3, }, //4x8 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 5, 4, 3, 2, 6, 5, 4, 3, 7, 6, 5, 4, 7, 6, 5, 7, 6, 7, }, //4x16 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 5, 4, 3, 2, 6, 5, 4, 3, 7, 6, 5, 4, 8, 7, 6, 5, 9, 8, 7, 6, 10, 9, 8, 7, 11, 10, 9, 8, 12, 11, 10, 9, 13, 12, 11, 10, 14, 13, 12, 11, 15, 14, 13, 12, 15, 14, 13, 15, 14, 15, }, }, { //8x1 { 0, 0, 0, 0, 0, 0, 0, 0, }, //8x2 { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, }, //8x4 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 3, 2, 3, }, //8x8 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 7, 6, 5, 4, 7, 6, 5, 7, 6, 7, }, //8x16 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 8, 7, 6, 5, 4, 3, 2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 10, 9, 8, 7, 6, 5, 4, 3, 11, 10, 9, 8, 7, 6, 5, 4, 12, 11, 10, 9, 8, 7, 6, 5, 13, 12, 11, 10, 9, 8, 7, 6, 14, 13, 12, 11, 10, 9, 8, 7, 15, 14, 13, 12, 11, 10, 9, 8, 15, 14, 13, 12, 11, 10, 9, 15, 14, 13, 12, 11, 10, 15, 14, 13, 12, 11, 15, 14, 13, 12, 15, 14, 13, 15, 14, 15, }, }, { //16x1 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, //16x2 { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, }, //16x4 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 0, 3, 2, 1, 3, 2, 3, }, //16x8 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 7, 6, 5, 4, 7, 6, 5, 7, 6, 7, }, //16x16 { 0, 1, 0, 2, 1, 0, 3, 2, 1, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0, 8, 7, 6, 5, 4, 3, 2, 1, 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 15, 14, 13, 12, 11, 10, 9, 8, 7, 15, 14, 13, 12, 11, 10, 9, 8, 15, 14, 13, 12, 11, 10, 9, 15, 14, 13, 12, 11, 10, 15, 14, 13, 12, 11, 15, 14, 13, 12, 15, 14, 13, 15, 14, 15, }, }, }; const uint8_t ff_vvc_scaling_pred_8[8 * 8] = { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }; const uint8_t ff_vvc_scaling_pred_16[8 * 8] = { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }; const int ff_vvc_scaling_list0[8 * 8] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static const uint8_t mip_matrix_4x4[16][16][4] = { { { 32, 30, 90, 28 }, { 32, 32, 72, 28 }, { 34, 77, 53, 30 }, { 51, 124, 36, 37 }, { 31, 31, 95, 37 }, { 33, 31, 70, 50 }, { 52, 80, 25, 60 }, { 78, 107, 1, 65 }, { 31, 29, 37, 95 }, { 38, 34, 19, 101 }, { 73, 85, 0, 81 }, { 92, 99, 0, 65 }, { 34, 29, 14, 111 }, { 48, 48, 7, 100 }, { 80, 91, 0, 74 }, { 89, 97, 0, 64 } }, { { 31, 23, 34, 29 }, { 31, 43, 34, 31 }, { 30, 95, 34, 32 }, { 29, 100, 35, 33 }, { 31, 23, 34, 29 }, { 31, 43, 34, 31 }, { 30, 95, 34, 32 }, { 29, 99, 35, 33 }, { 31, 24, 35, 29 }, { 31, 44, 34, 31 }, { 30, 95, 35, 32 }, { 29, 99, 35, 33 }, { 31, 24, 35, 30 }, { 31, 44, 35, 31 }, { 30, 95, 35, 32 }, { 29, 99, 35, 33 } }, { { 32, 32, 36, 58 }, { 32, 29, 26, 66 }, { 36, 37, 23, 61 }, { 79, 84, 3, 37 }, { 32, 32, 30, 69 }, { 33, 29, 24, 71 }, { 44, 16, 21, 70 }, { 96, 18, 0, 57 }, { 32, 31, 24, 74 }, { 33, 30, 23, 71 }, { 36, 24, 24, 71 }, { 59, 9, 16, 68 }, { 32, 32, 23, 75 }, { 33, 30, 24, 70 }, { 32, 30, 25, 71 }, { 36, 26, 25, 70 } }, { { 32, 33, 34, 32 }, { 32, 30, 22, 38 }, { 29, 46, 25, 38 }, { 53, 123, 28, 22 }, { 32, 33, 30, 37 }, { 32, 30, 21, 38 }, { 32, 40, 24, 38 }, { 64, 116, 26, 17 }, { 32, 32, 23, 49 }, { 32, 30, 21, 39 }, { 34, 39, 24, 37 }, { 72, 109, 23, 16 }, { 33, 31, 17, 60 }, { 32, 31, 21, 39 }, { 35, 41, 24, 37 }, { 72, 106, 22, 18 } }, { { 34, 25, 89, 20 }, { 38, 32, 47, 24 }, { 40, 86, 29, 27 }, { 38, 98, 32, 29 }, { 34, 31, 94, 40 }, { 44, 25, 83, 27 }, { 54, 72, 43, 16 }, { 47, 94, 33, 22 }, { 33, 31, 36, 94 }, { 43, 23, 51, 76 }, { 62, 55, 64, 25 }, { 57, 89, 38, 15 }, { 32, 32, 28, 101 }, { 38, 26, 33, 94 }, { 55, 38, 68, 47 }, { 59, 80, 52, 16 } }, { { 28, 30, 68, 29 }, { 23, 48, 23, 48 }, { 39, 98, 16, 42 }, { 84, 86, 20, 17 }, { 25, 31, 52, 74 }, { 38, 68, 5, 70 }, { 95, 78, 7, 21 }, { 127, 54, 12, 0 }, { 30, 47, 14, 107 }, { 79, 76, 0, 53 }, { 127, 59, 7, 1 }, { 127, 51, 9, 0 }, { 50, 71, 1, 96 }, { 109, 69, 7, 25 }, { 127, 56, 9, 0 }, { 123, 53, 13, 0 } }, { { 40, 20, 72, 18 }, { 48, 29, 44, 18 }, { 53, 81, 35, 18 }, { 48, 96, 33, 22 }, { 45, 23, 79, 49 }, { 61, 21, 56, 49 }, { 72, 52, 32, 48 }, { 65, 69, 20, 50 }, { 41, 27, 29, 96 }, { 49, 22, 28, 94 }, { 52, 22, 28, 93 }, { 49, 27, 27, 92 }, { 37, 29, 26, 98 }, { 39, 28, 28, 97 }, { 38, 28, 30, 97 }, { 38, 29, 30, 95 } }, { { 33, 27, 43, 27 }, { 32, 29, 31, 31 }, { 31, 73, 33, 31 }, { 35, 104, 34, 28 }, { 32, 30, 63, 22 }, { 33, 26, 33, 29 }, { 33, 57, 33, 30 }, { 37, 100, 35, 27 }, { 32, 31, 85, 25 }, { 34, 25, 39, 25 }, { 35, 39, 32, 28 }, { 40, 91, 35, 25 }, { 32, 30, 77, 50 }, { 34, 26, 54, 22 }, { 37, 31, 34, 27 }, { 45, 75, 34, 23 } }, { { 34, 25, 77, 19 }, { 36, 34, 56, 24 }, { 41, 83, 39, 30 }, { 47, 96, 28, 35 }, { 34, 31, 70, 65 }, { 38, 29, 53, 77 }, { 43, 36, 37, 83 }, { 48, 39, 28, 83 }, { 33, 31, 31, 98 }, { 33, 31, 30, 99 }, { 34, 30, 31, 98 }, { 36, 29, 31, 96 }, { 32, 32, 30, 97 }, { 32, 32, 31, 96 }, { 31, 33, 33, 96 }, { 32, 33, 34, 94 } }, { { 30, 30, 93, 19 }, { 31, 59, 67, 34 }, { 31, 79, 36, 59 }, { 30, 67, 17, 79 }, { 30, 38, 68, 69 }, { 29, 40, 43, 91 }, { 26, 35, 32, 101 }, { 23, 32, 30, 101 }, { 26, 34, 30, 101 }, { 23, 33, 30, 102 }, { 20, 32, 31, 102 }, { 18, 33, 32, 102 }, { 23, 33, 31, 100 }, { 20, 34, 32, 100 }, { 18, 35, 33, 100 }, { 18, 35, 33, 100 } }, { { 31, 54, 90, 26 }, { 32, 60, 53, 61 }, { 34, 49, 37, 84 }, { 34, 39, 35, 89 }, { 35, 38, 41, 88 }, { 35, 35, 32, 96 }, { 35, 31, 33, 96 }, { 35, 32, 35, 94 }, { 34, 34, 30, 97 },