3565 lines · 374.9 KB · C
RawDownload
/* * 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.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t