xref: /third_party/ffmpeg/libavcodec/vp5data.h (revision cabdff1a)
1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci * Copyright (C) 2006  Aurelien Jacobs <aurel@gnuage.org>
3cabdff1aSopenharmony_ci *
4cabdff1aSopenharmony_ci * This file is part of FFmpeg.
5cabdff1aSopenharmony_ci *
6cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or
7cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public
8cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either
9cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version.
10cabdff1aSopenharmony_ci *
11cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful,
12cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of
13cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14cabdff1aSopenharmony_ci * Lesser General Public License for more details.
15cabdff1aSopenharmony_ci *
16cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public
17cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software
18cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19cabdff1aSopenharmony_ci */
20cabdff1aSopenharmony_ci
21cabdff1aSopenharmony_ci/**
22cabdff1aSopenharmony_ci * @file
23cabdff1aSopenharmony_ci * VP5 compatible video decoder
24cabdff1aSopenharmony_ci */
25cabdff1aSopenharmony_ci
26cabdff1aSopenharmony_ci#ifndef AVCODEC_VP5DATA_H
27cabdff1aSopenharmony_ci#define AVCODEC_VP5DATA_H
28cabdff1aSopenharmony_ci
29cabdff1aSopenharmony_ci#include <stdint.h>
30cabdff1aSopenharmony_ci
31cabdff1aSopenharmony_cistatic const uint8_t vp5_coeff_groups[] = {
32cabdff1aSopenharmony_ci    -1, 0, 1, 1, 2, 1, 1, 2,
33cabdff1aSopenharmony_ci     2, 1, 1, 2, 2, 2, 1, 2,
34cabdff1aSopenharmony_ci     2, 2, 2, 2, 1, 1, 2, 2,
35cabdff1aSopenharmony_ci     3, 3, 4, 3, 4, 4, 4, 3,
36cabdff1aSopenharmony_ci     3, 3, 3, 3, 4, 3, 3, 3,
37cabdff1aSopenharmony_ci     4, 4, 4, 4, 4, 3, 3, 4,
38cabdff1aSopenharmony_ci     4, 4, 3, 4, 4, 4, 4, 4,
39cabdff1aSopenharmony_ci     4, 4, 5, 5, 5, 5, 5, 5,
40cabdff1aSopenharmony_ci};
41cabdff1aSopenharmony_ci
42cabdff1aSopenharmony_cistatic const uint8_t vp5_vmc_pct[2][11] = {
43cabdff1aSopenharmony_ci    { 243, 220, 251, 253, 237, 232, 241, 245, 247, 251, 253 },
44cabdff1aSopenharmony_ci    { 235, 211, 246, 249, 234, 231, 248, 249, 252, 252, 254 },
45cabdff1aSopenharmony_ci};
46cabdff1aSopenharmony_ci
47cabdff1aSopenharmony_cistatic const uint8_t vp5_dccv_pct[2][11] = {
48cabdff1aSopenharmony_ci    { 146, 197, 181, 207, 232, 243, 238, 251, 244, 250, 249 },
49cabdff1aSopenharmony_ci    { 179, 219, 214, 240, 250, 254, 244, 254, 254, 254, 254 },
50cabdff1aSopenharmony_ci};
51cabdff1aSopenharmony_ci
52cabdff1aSopenharmony_cistatic const uint8_t vp5_ract_pct[3][2][6][11] = {
53cabdff1aSopenharmony_ci    { { { 227, 246, 230, 247, 244, 254, 254, 254, 254, 254, 254 },
54cabdff1aSopenharmony_ci        { 202, 254, 209, 231, 231, 249, 249, 253, 254, 254, 254 },
55cabdff1aSopenharmony_ci        { 206, 254, 225, 242, 241, 251, 253, 254, 254, 254, 254 },
56cabdff1aSopenharmony_ci        { 235, 254, 241, 253, 252, 254, 254, 254, 254, 254, 254 },
57cabdff1aSopenharmony_ci        { 234, 254, 248, 254, 254, 254, 254, 254, 254, 254, 254 },
58cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } },
59cabdff1aSopenharmony_ci      { { 240, 254, 248, 254, 254, 254, 254, 254, 254, 254, 254 },
60cabdff1aSopenharmony_ci        { 238, 254, 240, 253, 254, 254, 254, 254, 254, 254, 254 },
61cabdff1aSopenharmony_ci        { 244, 254, 251, 254, 254, 254, 254, 254, 254, 254, 254 },
62cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
63cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
64cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } } },
65cabdff1aSopenharmony_ci    { { { 206, 203, 227, 239, 247, 254, 253, 254, 254, 254, 254 },
66cabdff1aSopenharmony_ci        { 207, 199, 220, 236, 243, 252, 252, 254, 254, 254, 254 },
67cabdff1aSopenharmony_ci        { 212, 219, 230, 243, 244, 253, 252, 254, 254, 254, 254 },
68cabdff1aSopenharmony_ci        { 236, 237, 247, 252, 253, 254, 254, 254, 254, 254, 254 },
69cabdff1aSopenharmony_ci        { 240, 240, 248, 254, 254, 254, 254, 254, 254, 254, 254 },
70cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } },
71cabdff1aSopenharmony_ci      { { 230, 233, 249, 254, 254, 254, 254, 254, 254, 254, 254 },
72cabdff1aSopenharmony_ci        { 238, 238, 250, 254, 254, 254, 254, 254, 254, 254, 254 },
73cabdff1aSopenharmony_ci        { 248, 251, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
74cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
75cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
76cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } } },
77cabdff1aSopenharmony_ci    { { { 225, 239, 227, 231, 244, 253, 243, 254, 254, 253, 254 },
78cabdff1aSopenharmony_ci        { 232, 234, 224, 228, 242, 249, 242, 252, 251, 251, 254 },
79cabdff1aSopenharmony_ci        { 235, 249, 238, 240, 251, 254, 249, 254, 253, 253, 254 },
80cabdff1aSopenharmony_ci        { 249, 253, 251, 250, 254, 254, 254, 254, 254, 254, 254 },
81cabdff1aSopenharmony_ci        { 251, 250, 249, 254, 254, 254, 254, 254, 254, 254, 254 },
82cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } },
83cabdff1aSopenharmony_ci      { { 243, 244, 250, 250, 254, 254, 254, 254, 254, 254, 254 },
84cabdff1aSopenharmony_ci        { 249, 248, 250, 253, 254, 254, 254, 254, 254, 254, 254 },
85cabdff1aSopenharmony_ci        { 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
86cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
87cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 },
88cabdff1aSopenharmony_ci        { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } } },
89cabdff1aSopenharmony_ci};
90cabdff1aSopenharmony_ci
91cabdff1aSopenharmony_cistatic const int16_t vp5_dccv_lc[5][36][2] = {
92cabdff1aSopenharmony_ci    { {154,  61}, {141,  54}, { 90,  45}, { 54,  34}, { 54,  13}, {128, 109},
93cabdff1aSopenharmony_ci      {136,  54}, {148,  45}, { 92,  41}, { 54,  33}, { 51,  15}, { 87, 113},
94cabdff1aSopenharmony_ci      { 87,  44}, { 97,  40}, { 67,  36}, { 46,  29}, { 41,  15}, { 64,  80},
95cabdff1aSopenharmony_ci      { 59,  33}, { 61,  31}, { 51,  28}, { 44,  22}, { 33,  12}, { 49,  63},
96cabdff1aSopenharmony_ci      { 69,  12}, { 59,  16}, { 46,  14}, { 31,  13}, { 26,   6}, { 92,  26},
97cabdff1aSopenharmony_ci      {128, 108}, { 77, 119}, { 54,  84}, { 26,  71}, { 87,  19}, { 95, 155} },
98cabdff1aSopenharmony_ci    { {154,   4}, {182,   0}, {159,  -8}, {128,  -5}, {143,  -5}, {187,  55},
99cabdff1aSopenharmony_ci      {182,   0}, {228,  -3}, {187,  -7}, {174,  -9}, {189, -11}, {169,  79},
100cabdff1aSopenharmony_ci      {161,  -9}, {192,  -8}, {187,  -9}, {169, -10}, {136,  -9}, {184,  40},
101cabdff1aSopenharmony_ci      {164, -11}, {179, -10}, {174, -10}, {161, -10}, {115,  -7}, {197,  20},
102cabdff1aSopenharmony_ci      {195, -11}, {195, -11}, {146, -10}, {110,  -6}, { 95,  -4}, {195,  39},
103cabdff1aSopenharmony_ci      {182,  55}, {172,  77}, {177,  37}, {169,  29}, {172,  52}, { 92, 162} },
104cabdff1aSopenharmony_ci    { {174,  80}, {164,  80}, { 95,  80}, { 46,  66}, { 56,  24}, { 36, 193},
105cabdff1aSopenharmony_ci      {164,  80}, {166,  77}, {105,  76}, { 49,  68}, { 46,  31}, { 49, 186},
106cabdff1aSopenharmony_ci      { 97,  78}, {110,  74}, { 72,  72}, { 44,  60}, { 33,  30}, { 69, 131},
107cabdff1aSopenharmony_ci      { 61,  61}, { 69,  63}, { 51,  57}, { 31,  48}, { 26,  27}, { 64,  89},
108cabdff1aSopenharmony_ci      { 67,  23}, { 51,  32}, { 36,  33}, { 26,  28}, { 20,  12}, { 44,  68},
109cabdff1aSopenharmony_ci      { 26, 197}, { 41, 189}, { 61, 129}, { 28, 103}, { 49,  52}, {-12, 245} },
110cabdff1aSopenharmony_ci    { {102, 141}, { 79, 166}, { 72, 162}, { 97, 125}, {179,   4}, {307,   0},
111cabdff1aSopenharmony_ci      { 72, 168}, { 69, 175}, { 84, 160}, {105, 127}, {148,  34}, {310,   0},
112cabdff1aSopenharmony_ci      { 84, 151}, { 82, 161}, { 87, 153}, { 87, 135}, {115,  51}, {317,   0},
113cabdff1aSopenharmony_ci      { 97, 125}, {102, 131}, {105, 125}, { 87, 122}, { 84,  64}, { 54, 184},
114cabdff1aSopenharmony_ci      {166,  18}, {146,  43}, {125,  51}, { 90,  64}, { 95,   7}, { 38, 154},
115cabdff1aSopenharmony_ci      {294,   0}, { 13, 225}, { 10, 225}, { 67, 168}, {  0, 167}, {161,  94} },
116cabdff1aSopenharmony_ci    { {172,  76}, {172,  75}, {136,  80}, { 64,  98}, { 74,  67}, {315,   0},
117cabdff1aSopenharmony_ci      {169,  76}, {207,  56}, {164,  66}, { 97,  80}, { 67,  72}, {328,   0},
118cabdff1aSopenharmony_ci      {136,  80}, {187,  53}, {154,  62}, { 72,  85}, { -2, 105}, {305,   0},
119cabdff1aSopenharmony_ci      { 74,  91}, {128,  64}, {113,  64}, { 61,  77}, { 41,  75}, {259,   0},
120cabdff1aSopenharmony_ci      { 46,  84}, { 51,  81}, { 28,  89}, { 31,  78}, { 23,  77}, {202,   0},
121cabdff1aSopenharmony_ci      {323,   0}, {323,   0}, {300,   0}, {236,   0}, {195,   0}, {328,   0} },
122cabdff1aSopenharmony_ci};
123cabdff1aSopenharmony_ci
124cabdff1aSopenharmony_cistatic const int16_t vp5_ract_lc[3][3][5][6][2] = {
125cabdff1aSopenharmony_ci    { { { {276,  0}, {238,  0}, {195,  0}, {156,  0}, {113,  0}, {274,  0} },
126cabdff1aSopenharmony_ci        { {  0,  1}, {  0,  1}, {  0,  1}, {  0,  1}, {  0,  1}, {  0,  1} },
127cabdff1aSopenharmony_ci        { {192, 59}, {182, 50}, {141, 48}, {110, 40}, { 92, 19}, {125,128} },
128cabdff1aSopenharmony_ci        { {169, 87}, {169, 83}, {184, 62}, {220, 16}, {184,  0}, {264,  0} },
129cabdff1aSopenharmony_ci        { {212, 40}, {212, 36}, {169, 49}, {174, 27}, {  8,120}, {182, 71} } },
130cabdff1aSopenharmony_ci      { { {259, 10}, {197, 19}, {143, 22}, {123, 16}, {110,  8}, {133, 88} },
131cabdff1aSopenharmony_ci        { {  0,  1}, {256,  0}, {  0,  1}, {  0,  1}, {  0,  1}, {  0,  1} },
132cabdff1aSopenharmony_ci        { {207, 46}, {187, 50}, { 97, 83}, { 23,100}, { 41, 56}, { 56,188} },
133cabdff1aSopenharmony_ci        { {166, 90}, {146,108}, {161, 88}, {136, 95}, {174,  0}, {266,  0} },
134cabdff1aSopenharmony_ci        { {264,  7}, {243, 18}, {184, 43}, {-14,154}, { 20,112}, { 20,199} } },
135cabdff1aSopenharmony_ci      { { {230, 26}, {197, 22}, {159, 20}, {146, 12}, {136,  4}, { 54,162} },
136cabdff1aSopenharmony_ci        { {  0,  1}, {  0,  1}, {  0,  1}, {  0,  1}, {  0,  1}, {  0,  1} },
137cabdff1aSopenharmony_ci        { {192, 59}, {156, 72}, { 84,101}, { 49,101}, { 79, 47}, { 79,167} },
138cabdff1aSopenharmony_ci        { {138,115}, {136,116}, {166, 80}, {238,  0}, {195,  0}, {261,  0} },
139cabdff1aSopenharmony_ci        { {225, 33}, {205, 42}, {159, 61}, { 79, 96}, { 92, 66}, { 28,195} } },
140cabdff1aSopenharmony_ci    }, {
141cabdff1aSopenharmony_ci      { { {200, 37}, {197, 18}, {159, 13}, {143,  7}, {102,  5}, {123,126} },
142cabdff1aSopenharmony_ci        { {197,  3}, {220, -9}, {210,-12}, {187, -6}, {151, -2}, {174, 80} },
143cabdff1aSopenharmony_ci        { {200, 53}, {187, 47}, {159, 40}, {118, 38}, {100, 18}, {141,111} },
144cabdff1aSopenharmony_ci        { {179, 78}, {166, 86}, {197, 50}, {207, 27}, {187,  0}, {115,139} },
145cabdff1aSopenharmony_ci        { {218, 34}, {220, 29}, {174, 46}, {128, 61}, { 54, 89}, {187, 65} } },
146cabdff1aSopenharmony_ci      { { {238, 14}, {197, 18}, {125, 26}, { 90, 25}, { 82, 13}, {161, 86} },
147cabdff1aSopenharmony_ci        { {189,  1}, {205, -2}, {156, -4}, {143, -4}, {146, -4}, {172, 72} },
148cabdff1aSopenharmony_ci        { {230, 31}, {192, 45}, {102, 76}, { 38, 85}, { 56, 41}, { 64,173} },
149cabdff1aSopenharmony_ci        { {166, 91}, {141,111}, {128,116}, {118,109}, {177,  0}, { 23,222} },
150cabdff1aSopenharmony_ci        { {253, 14}, {236, 21}, {174, 49}, { 33,118}, { 44, 93}, { 23,187} } },
151cabdff1aSopenharmony_ci      { { {218, 28}, {179, 28}, {118, 35}, { 95, 30}, { 72, 24}, {128,108} },
152cabdff1aSopenharmony_ci        { {187,  1}, {174, -1}, {125, -1}, {110, -1}, {108, -1}, {202, 52} },
153cabdff1aSopenharmony_ci        { {197, 53}, {146, 75}, { 46,118}, { 33,103}, { 64, 50}, {118,126} },
154cabdff1aSopenharmony_ci        { {138,114}, {128,122}, {161, 86}, {243, -6}, {195,  0}, { 38,210} },
155cabdff1aSopenharmony_ci        { {215, 39}, {179, 58}, { 97,101}, { 95, 85}, { 87, 70}, { 69,152} } },
156cabdff1aSopenharmony_ci    }, {
157cabdff1aSopenharmony_ci      { { {236, 24}, {205, 18}, {172, 12}, {154,  6}, {125,  1}, {169, 75} },
158cabdff1aSopenharmony_ci        { {187,  4}, {230, -2}, {228, -4}, {236, -4}, {241, -2}, {192, 66} },
159cabdff1aSopenharmony_ci        { {200, 46}, {187, 42}, {159, 34}, {136, 25}, {105, 10}, {179, 62} },
160cabdff1aSopenharmony_ci        { {207, 55}, {192, 63}, {192, 54}, {195, 36}, {177,  1}, {143, 98} },
161cabdff1aSopenharmony_ci        { {225, 27}, {207, 34}, {200, 30}, {131, 57}, { 97, 60}, {197, 45} } },
162cabdff1aSopenharmony_ci      { { {271,  8}, {218, 13}, {133, 19}, { 90, 19}, { 72,  7}, {182, 51} },
163cabdff1aSopenharmony_ci        { {179,  1}, {225, -1}, {154, -2}, {110, -1}, { 92,  0}, {195, 41} },
164cabdff1aSopenharmony_ci        { {241, 26}, {189, 40}, { 82, 64}, { 33, 60}, { 67, 17}, {120, 94} },
165cabdff1aSopenharmony_ci        { {192, 68}, {151, 94}, {146, 90}, {143, 72}, {161,  0}, {113,128} },
166cabdff1aSopenharmony_ci        { {256, 12}, {218, 29}, {166, 48}, { 44, 99}, { 31, 87}, {148, 78} } },
167cabdff1aSopenharmony_ci      { { {238, 20}, {184, 22}, {113, 27}, { 90, 22}, { 74,  9}, {192, 37} },
168cabdff1aSopenharmony_ci        { {184,  0}, {215, -1}, {141, -1}, { 97,  0}, { 49,  0}, {264, 13} },
169cabdff1aSopenharmony_ci        { {182, 51}, {138, 61}, { 95, 63}, { 54, 59}, { 64, 25}, {200, 45} },
170cabdff1aSopenharmony_ci        { {179, 75}, {156, 87}, {174, 65}, {177, 44}, {174,  0}, {164, 85} },
171cabdff1aSopenharmony_ci        { {195, 45}, {148, 65}, {105, 79}, { 95, 72}, { 87, 60}, {169, 63} } },
172cabdff1aSopenharmony_ci    }
173cabdff1aSopenharmony_ci};
174cabdff1aSopenharmony_ci
175cabdff1aSopenharmony_cistatic const uint8_t vp5_coord_div[] = { 2, 2, 2, 2, 4, 4 };
176cabdff1aSopenharmony_ci
177cabdff1aSopenharmony_ci#endif /* AVCODEC_VP5DATA_H */
178