1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci * RealVideo 3 decoder
3cabdff1aSopenharmony_ci * copyright (c) 2007 Konstantin Shishkov
4cabdff1aSopenharmony_ci *
5cabdff1aSopenharmony_ci * This file is part of FFmpeg.
6cabdff1aSopenharmony_ci *
7cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or
8cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public
9cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either
10cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version.
11cabdff1aSopenharmony_ci *
12cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful,
13cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of
14cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15cabdff1aSopenharmony_ci * Lesser General Public License for more details.
16cabdff1aSopenharmony_ci *
17cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public
18cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software
19cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20cabdff1aSopenharmony_ci */
21cabdff1aSopenharmony_ci
22cabdff1aSopenharmony_ci/**
23cabdff1aSopenharmony_ci * @file
24cabdff1aSopenharmony_ci * miscellaneous RV30 tables
25cabdff1aSopenharmony_ci */
26cabdff1aSopenharmony_ci
27cabdff1aSopenharmony_ci#ifndef AVCODEC_RV30DATA_H
28cabdff1aSopenharmony_ci#define AVCODEC_RV30DATA_H
29cabdff1aSopenharmony_ci
30cabdff1aSopenharmony_ci#include <stdint.h>
31cabdff1aSopenharmony_ci
32cabdff1aSopenharmony_ci/** DC quantizer mapping for RV30 */
33cabdff1aSopenharmony_cistatic const uint8_t rv30_luma_dc_quant[32] = {
34cabdff1aSopenharmony_ci     0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
35cabdff1aSopenharmony_ci    16, 17, 18, 19, 20, 21, 22, 22, 22, 23, 23, 23, 24, 24, 25, 25
36cabdff1aSopenharmony_ci};
37cabdff1aSopenharmony_ci
38cabdff1aSopenharmony_ci/**
39cabdff1aSopenharmony_ci * This table is used for storing the differences
40cabdff1aSopenharmony_ci * between the predicted and the real intra type.
41cabdff1aSopenharmony_ci */
42cabdff1aSopenharmony_cistatic const uint8_t rv30_itype_code[9*9*2] = {
43cabdff1aSopenharmony_ci    0, 0, 0, 1, 1, 0, 1, 1, 0, 2, 2, 0, 0, 3, 3, 0, 1, 2,
44cabdff1aSopenharmony_ci    2, 1, 0, 4, 4, 0, 3, 1, 1, 3, 0, 5, 5, 0, 2, 2, 1, 4,
45cabdff1aSopenharmony_ci    4, 1, 0, 6, 3, 2, 1, 5, 2, 3, 5, 1, 6, 0, 0, 7, 4, 2,
46cabdff1aSopenharmony_ci    2, 4, 3, 3, 6, 1, 1, 6, 7, 0, 0, 8, 5, 2, 4, 3, 2, 5,
47cabdff1aSopenharmony_ci    3, 4, 1, 7, 4, 4, 7, 1, 8, 0, 6, 2, 3, 5, 5, 3, 2, 6,
48cabdff1aSopenharmony_ci    1, 8, 2, 7, 7, 2, 8, 1, 5, 4, 4, 5, 3, 6, 6, 3, 8, 2,
49cabdff1aSopenharmony_ci    4, 6, 5, 5, 6, 4, 2, 8, 7, 3, 3, 7, 6, 5, 5, 6, 7, 4,
50cabdff1aSopenharmony_ci    4, 7, 8, 3, 3, 8, 7, 5, 8, 4, 5, 7, 4, 8, 6, 6, 7, 6,
51cabdff1aSopenharmony_ci    5, 8, 8, 5, 6, 7, 8, 6, 7, 7, 6, 8, 8, 7, 7, 8, 8, 8,
52cabdff1aSopenharmony_ci};
53cabdff1aSopenharmony_ci
54cabdff1aSopenharmony_ci/**
55cabdff1aSopenharmony_ci * This table is used for retrieving the current intra type
56cabdff1aSopenharmony_ci * based on its neighbors and adjustment provided by
57cabdff1aSopenharmony_ci * code read and decoded before.
58cabdff1aSopenharmony_ci *
59cabdff1aSopenharmony_ci * This is really a three-dimensional matrix with dimensions
60cabdff1aSopenharmony_ci * [-1..9][-1..9][0..9]. The first and second coordinates are
61cabdff1aSopenharmony_ci * determined by the top and left neighbors (-1 if unavailable).
62cabdff1aSopenharmony_ci */
63cabdff1aSopenharmony_cistatic const uint8_t rv30_itype_from_context[900] = {
64cabdff1aSopenharmony_ci    0, 9, 9, 9, 9, 9, 9, 9, 9,
65cabdff1aSopenharmony_ci    0, 2, 9, 9, 9, 9, 9, 9, 9,
66cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
67cabdff1aSopenharmony_ci    2, 0, 9, 9, 9, 9, 9, 9, 9,
68cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
69cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
70cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
71cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
72cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
73cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
74cabdff1aSopenharmony_ci
75cabdff1aSopenharmony_ci    0, 1, 9, 9, 9, 9, 9, 9, 9,
76cabdff1aSopenharmony_ci    0, 2, 1, 6, 4, 8, 5, 7, 3,
77cabdff1aSopenharmony_ci    1, 0, 2, 6, 5, 4, 3, 8, 7,
78cabdff1aSopenharmony_ci    2, 8, 0, 1, 7, 4, 3, 6, 5,
79cabdff1aSopenharmony_ci    2, 0, 1, 3, 8, 5, 4, 7, 6,
80cabdff1aSopenharmony_ci    2, 0, 1, 4, 6, 7, 8, 3, 5,
81cabdff1aSopenharmony_ci    0, 1, 5, 2, 6, 3, 8, 4, 7,
82cabdff1aSopenharmony_ci    0, 1, 6, 2, 4, 7, 5, 8, 3,
83cabdff1aSopenharmony_ci    2, 7, 0, 1, 4, 8, 6, 3, 5,
84cabdff1aSopenharmony_ci    2, 8, 0, 1, 7, 3, 4, 5, 6,
85cabdff1aSopenharmony_ci
86cabdff1aSopenharmony_ci    1, 0, 9, 9, 9, 9, 9, 9, 9,
87cabdff1aSopenharmony_ci    1, 2, 5, 6, 3, 0, 4, 8, 7,
88cabdff1aSopenharmony_ci    1, 6, 2, 5, 3, 0, 4, 8, 7,
89cabdff1aSopenharmony_ci    2, 1, 7, 6, 8, 3, 5, 0, 4,
90cabdff1aSopenharmony_ci    1, 2, 5, 3, 6, 8, 4, 7, 0,
91cabdff1aSopenharmony_ci    1, 6, 2, 0, 4, 5, 8, 7, 3,
92cabdff1aSopenharmony_ci    1, 5, 2, 6, 3, 8, 4, 0, 7,
93cabdff1aSopenharmony_ci    1, 6, 0, 2, 4, 5, 7, 3, 8,
94cabdff1aSopenharmony_ci    2, 1, 7, 6, 0, 8, 5, 4, 3,
95cabdff1aSopenharmony_ci    1, 2, 7, 8, 3, 4, 5, 6, 0,
96cabdff1aSopenharmony_ci
97cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
98cabdff1aSopenharmony_ci    0, 2, 1, 8, 7, 6, 5, 4, 3,
99cabdff1aSopenharmony_ci    1, 2, 0, 6, 5, 7, 4, 8, 3,
100cabdff1aSopenharmony_ci    2, 8, 7, 1, 0, 6, 4, 3, 5,
101cabdff1aSopenharmony_ci    2, 0, 8, 1, 3, 7, 5, 4, 6,
102cabdff1aSopenharmony_ci    2, 0, 4, 1, 7, 8, 6, 3, 5,
103cabdff1aSopenharmony_ci    2, 0, 1, 5, 8, 4, 6, 7, 3,
104cabdff1aSopenharmony_ci    2, 0, 6, 1, 4, 7, 8, 5, 3,
105cabdff1aSopenharmony_ci    2, 7, 8, 1, 0, 5, 4, 6, 3,
106cabdff1aSopenharmony_ci    2, 8, 7, 1, 0, 4, 3, 6, 5,
107cabdff1aSopenharmony_ci
108cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
109cabdff1aSopenharmony_ci    0, 2, 1, 3, 5, 8, 6, 4, 7,
110cabdff1aSopenharmony_ci    1, 0, 2, 5, 3, 6, 4, 8, 7,
111cabdff1aSopenharmony_ci    2, 8, 1, 0, 3, 5, 7, 6, 4,
112cabdff1aSopenharmony_ci    3, 2, 5, 8, 1, 4, 6, 7, 0,
113cabdff1aSopenharmony_ci    4, 2, 0, 6, 1, 5, 8, 3, 7,
114cabdff1aSopenharmony_ci    5, 3, 1, 2, 8, 6, 4, 0, 7,
115cabdff1aSopenharmony_ci    1, 6, 0, 2, 4, 5, 8, 3, 7,
116cabdff1aSopenharmony_ci    2, 7, 0, 1, 5, 4, 8, 6, 3,
117cabdff1aSopenharmony_ci    2, 8, 3, 5, 1, 0, 7, 6, 4,
118cabdff1aSopenharmony_ci
119cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
120cabdff1aSopenharmony_ci    2, 0, 6, 1, 4, 7, 5, 8, 3,
121cabdff1aSopenharmony_ci    1, 6, 2, 0, 4, 5, 3, 7, 8,
122cabdff1aSopenharmony_ci    2, 8, 7, 6, 4, 0, 1, 5, 3,
123cabdff1aSopenharmony_ci    4, 2, 1, 0, 6, 8, 3, 5, 7,
124cabdff1aSopenharmony_ci    4, 2, 6, 0, 1, 5, 7, 8, 3,
125cabdff1aSopenharmony_ci    1, 2, 5, 0, 6, 3, 4, 7, 8,
126cabdff1aSopenharmony_ci    6, 4, 0, 1, 2, 7, 5, 3, 8,
127cabdff1aSopenharmony_ci    2, 7, 4, 6, 0, 1, 8, 5, 3,
128cabdff1aSopenharmony_ci    2, 8, 7, 4, 6, 1, 3, 5, 0,
129cabdff1aSopenharmony_ci
130cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
131cabdff1aSopenharmony_ci    5, 1, 2, 3, 6, 8, 0, 4, 7,
132cabdff1aSopenharmony_ci    1, 5, 6, 3, 2, 0, 4, 8, 7,
133cabdff1aSopenharmony_ci    2, 1, 5, 3, 6, 8, 7, 4, 0,
134cabdff1aSopenharmony_ci    5, 3, 1, 2, 6, 8, 4, 7, 0,
135cabdff1aSopenharmony_ci    1, 6, 2, 4, 5, 8, 0, 3, 7,
136cabdff1aSopenharmony_ci    5, 1, 3, 6, 2, 0, 8, 4, 7,
137cabdff1aSopenharmony_ci    1, 6, 5, 2, 0, 4, 3, 7, 8,
138cabdff1aSopenharmony_ci    2, 7, 1, 6, 5, 0, 8, 3, 4,
139cabdff1aSopenharmony_ci    2, 5, 1, 3, 6, 8, 4, 0, 7,
140cabdff1aSopenharmony_ci
141cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
142cabdff1aSopenharmony_ci    1, 6, 2, 0, 5, 4, 3, 7, 8,
143cabdff1aSopenharmony_ci    1, 6, 5, 4, 2, 3, 0, 7, 8,
144cabdff1aSopenharmony_ci    2, 1, 6, 7, 4, 8, 5, 3, 0,
145cabdff1aSopenharmony_ci    2, 1, 6, 5, 8, 4, 3, 0, 7,
146cabdff1aSopenharmony_ci    6, 4, 1, 2, 0, 5, 7, 8, 3,
147cabdff1aSopenharmony_ci    1, 6, 5, 2, 3, 0, 4, 8, 7,
148cabdff1aSopenharmony_ci    6, 1, 4, 0, 2, 7, 5, 3, 8,
149cabdff1aSopenharmony_ci    2, 7, 4, 6, 1, 5, 0, 8, 3,
150cabdff1aSopenharmony_ci    2, 1, 6, 8, 4, 7, 3, 5, 0,
151cabdff1aSopenharmony_ci
152cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
153cabdff1aSopenharmony_ci    2, 0, 4, 7, 6, 1, 8, 5, 3,
154cabdff1aSopenharmony_ci    6, 1, 2, 0, 4, 7, 5, 8, 3,
155cabdff1aSopenharmony_ci    2, 7, 8, 0, 1, 6, 4, 3, 5,
156cabdff1aSopenharmony_ci    2, 4, 0, 8, 3, 1, 7, 6, 5,
157cabdff1aSopenharmony_ci    4, 2, 7, 0, 6, 1, 8, 5, 3,
158cabdff1aSopenharmony_ci    2, 1, 0, 8, 5, 6, 7, 4, 3,
159cabdff1aSopenharmony_ci    2, 6, 4, 1, 7, 0, 5, 8, 3,
160cabdff1aSopenharmony_ci    2, 7, 4, 0, 8, 6, 1, 5, 3,
161cabdff1aSopenharmony_ci    2, 8, 7, 4, 1, 0, 3, 6, 5,
162cabdff1aSopenharmony_ci
163cabdff1aSopenharmony_ci    9, 9, 9, 9, 9, 9, 9, 9, 9,
164cabdff1aSopenharmony_ci    2, 0, 8, 1, 3, 4, 6, 5, 7,
165cabdff1aSopenharmony_ci    1, 2, 0, 6, 8, 5, 7, 3, 4,
166cabdff1aSopenharmony_ci    2, 8, 7, 1, 0, 3, 6, 5, 4,
167cabdff1aSopenharmony_ci    8, 3, 2, 5, 1, 0, 4, 7, 6,
168cabdff1aSopenharmony_ci    2, 0, 4, 8, 5, 1, 7, 6, 3,
169cabdff1aSopenharmony_ci    2, 1, 0, 8, 5, 3, 6, 4, 7,
170cabdff1aSopenharmony_ci    2, 1, 6, 0, 8, 4, 5, 7, 3,
171cabdff1aSopenharmony_ci    2, 7, 8, 4, 0, 6, 1, 5, 3,
172cabdff1aSopenharmony_ci    2, 8, 3, 0, 7, 4, 1, 6, 5,
173cabdff1aSopenharmony_ci};
174cabdff1aSopenharmony_ci
175cabdff1aSopenharmony_ci/**
176cabdff1aSopenharmony_ci * Loop filter limits are taken from this table.
177cabdff1aSopenharmony_ci */
178cabdff1aSopenharmony_cistatic const uint8_t rv30_loop_filt_lim[32] = {
179cabdff1aSopenharmony_ci     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5
180cabdff1aSopenharmony_ci};
181cabdff1aSopenharmony_ci#endif /* AVCODEC_RV30DATA_H */
182