1cabdff1aSopenharmony_ci/*
2cabdff1aSopenharmony_ci * Copyright (C) 2004 Michael Niedermayer <michaelni@gmx.at>
3cabdff1aSopenharmony_ci * Copyright (C) 2006 Robert Edele <yartrebo@earthlink.net>
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#ifndef AVCODEC_SNOWDATA_H
23cabdff1aSopenharmony_ci#define AVCODEC_SNOWDATA_H
24cabdff1aSopenharmony_ci
25cabdff1aSopenharmony_ci#include "snow.h"
26cabdff1aSopenharmony_ci
27cabdff1aSopenharmony_cistatic const uint8_t obmc32[1024]={
28cabdff1aSopenharmony_ci  0,  0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  8,  8,  8,  8,  8,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,
29cabdff1aSopenharmony_ci  0,  4,  4,  4,  8,  8,  8, 12, 12, 16, 16, 16, 20, 20, 20, 24, 24, 20, 20, 20, 16, 16, 16, 12, 12,  8,  8,  8,  4,  4,  4,  0,
30cabdff1aSopenharmony_ci  0,  4,  8,  8, 12, 12, 16, 20, 20, 24, 28, 28, 32, 32, 36, 40, 40, 36, 32, 32, 28, 28, 24, 20, 20, 16, 12, 12,  8,  8,  4,  0,
31cabdff1aSopenharmony_ci  0,  4,  8, 12, 16, 20, 24, 28, 28, 32, 36, 40, 44, 48, 52, 56, 56, 52, 48, 44, 40, 36, 32, 28, 28, 24, 20, 16, 12,  8,  4,  0,
32cabdff1aSopenharmony_ci  4,  8, 12, 16, 20, 24, 28, 32, 40, 44, 48, 52, 56, 60, 64, 68, 68, 64, 60, 56, 52, 48, 44, 40, 32, 28, 24, 20, 16, 12,  8,  4,
33cabdff1aSopenharmony_ci  4,  8, 12, 20, 24, 32, 36, 40, 48, 52, 56, 64, 68, 76, 80, 84, 84, 80, 76, 68, 64, 56, 52, 48, 40, 36, 32, 24, 20, 12,  8,  4,
34cabdff1aSopenharmony_ci  4,  8, 16, 24, 28, 36, 44, 48, 56, 60, 68, 76, 80, 88, 96,100,100, 96, 88, 80, 76, 68, 60, 56, 48, 44, 36, 28, 24, 16,  8,  4,
35cabdff1aSopenharmony_ci  4, 12, 20, 28, 32, 40, 48, 56, 64, 72, 80, 88, 92,100,108,116,116,108,100, 92, 88, 80, 72, 64, 56, 48, 40, 32, 28, 20, 12,  4,
36cabdff1aSopenharmony_ci  4, 12, 20, 28, 40, 48, 56, 64, 72, 80, 88, 96,108,116,124,132,132,124,116,108, 96, 88, 80, 72, 64, 56, 48, 40, 28, 20, 12,  4,
37cabdff1aSopenharmony_ci  4, 16, 24, 32, 44, 52, 60, 72, 80, 92,100,108,120,128,136,148,148,136,128,120,108,100, 92, 80, 72, 60, 52, 44, 32, 24, 16,  4,
38cabdff1aSopenharmony_ci  4, 16, 28, 36, 48, 56, 68, 80, 88,100,112,120,132,140,152,164,164,152,140,132,120,112,100, 88, 80, 68, 56, 48, 36, 28, 16,  4,
39cabdff1aSopenharmony_ci  4, 16, 28, 40, 52, 64, 76, 88, 96,108,120,132,144,156,168,180,180,168,156,144,132,120,108, 96, 88, 76, 64, 52, 40, 28, 16,  4,
40cabdff1aSopenharmony_ci  8, 20, 32, 44, 56, 68, 80, 92,108,120,132,144,156,168,180,192,192,180,168,156,144,132,120,108, 92, 80, 68, 56, 44, 32, 20,  8,
41cabdff1aSopenharmony_ci  8, 20, 32, 48, 60, 76, 88,100,116,128,140,156,168,184,196,208,208,196,184,168,156,140,128,116,100, 88, 76, 60, 48, 32, 20,  8,
42cabdff1aSopenharmony_ci  8, 20, 36, 52, 64, 80, 96,108,124,136,152,168,180,196,212,224,224,212,196,180,168,152,136,124,108, 96, 80, 64, 52, 36, 20,  8,
43cabdff1aSopenharmony_ci  8, 24, 40, 56, 68, 84,100,116,132,148,164,180,192,208,224,240,240,224,208,192,180,164,148,132,116,100, 84, 68, 56, 40, 24,  8,
44cabdff1aSopenharmony_ci  8, 24, 40, 56, 68, 84,100,116,132,148,164,180,192,208,224,240,240,224,208,192,180,164,148,132,116,100, 84, 68, 56, 40, 24,  8,
45cabdff1aSopenharmony_ci  8, 20, 36, 52, 64, 80, 96,108,124,136,152,168,180,196,212,224,224,212,196,180,168,152,136,124,108, 96, 80, 64, 52, 36, 20,  8,
46cabdff1aSopenharmony_ci  8, 20, 32, 48, 60, 76, 88,100,116,128,140,156,168,184,196,208,208,196,184,168,156,140,128,116,100, 88, 76, 60, 48, 32, 20,  8,
47cabdff1aSopenharmony_ci  8, 20, 32, 44, 56, 68, 80, 92,108,120,132,144,156,168,180,192,192,180,168,156,144,132,120,108, 92, 80, 68, 56, 44, 32, 20,  8,
48cabdff1aSopenharmony_ci  4, 16, 28, 40, 52, 64, 76, 88, 96,108,120,132,144,156,168,180,180,168,156,144,132,120,108, 96, 88, 76, 64, 52, 40, 28, 16,  4,
49cabdff1aSopenharmony_ci  4, 16, 28, 36, 48, 56, 68, 80, 88,100,112,120,132,140,152,164,164,152,140,132,120,112,100, 88, 80, 68, 56, 48, 36, 28, 16,  4,
50cabdff1aSopenharmony_ci  4, 16, 24, 32, 44, 52, 60, 72, 80, 92,100,108,120,128,136,148,148,136,128,120,108,100, 92, 80, 72, 60, 52, 44, 32, 24, 16,  4,
51cabdff1aSopenharmony_ci  4, 12, 20, 28, 40, 48, 56, 64, 72, 80, 88, 96,108,116,124,132,132,124,116,108, 96, 88, 80, 72, 64, 56, 48, 40, 28, 20, 12,  4,
52cabdff1aSopenharmony_ci  4, 12, 20, 28, 32, 40, 48, 56, 64, 72, 80, 88, 92,100,108,116,116,108,100, 92, 88, 80, 72, 64, 56, 48, 40, 32, 28, 20, 12,  4,
53cabdff1aSopenharmony_ci  4,  8, 16, 24, 28, 36, 44, 48, 56, 60, 68, 76, 80, 88, 96,100,100, 96, 88, 80, 76, 68, 60, 56, 48, 44, 36, 28, 24, 16,  8,  4,
54cabdff1aSopenharmony_ci  4,  8, 12, 20, 24, 32, 36, 40, 48, 52, 56, 64, 68, 76, 80, 84, 84, 80, 76, 68, 64, 56, 52, 48, 40, 36, 32, 24, 20, 12,  8,  4,
55cabdff1aSopenharmony_ci  4,  8, 12, 16, 20, 24, 28, 32, 40, 44, 48, 52, 56, 60, 64, 68, 68, 64, 60, 56, 52, 48, 44, 40, 32, 28, 24, 20, 16, 12,  8,  4,
56cabdff1aSopenharmony_ci  0,  4,  8, 12, 16, 20, 24, 28, 28, 32, 36, 40, 44, 48, 52, 56, 56, 52, 48, 44, 40, 36, 32, 28, 28, 24, 20, 16, 12,  8,  4,  0,
57cabdff1aSopenharmony_ci  0,  4,  8,  8, 12, 12, 16, 20, 20, 24, 28, 28, 32, 32, 36, 40, 40, 36, 32, 32, 28, 28, 24, 20, 20, 16, 12, 12,  8,  8,  4,  0,
58cabdff1aSopenharmony_ci  0,  4,  4,  4,  8,  8,  8, 12, 12, 16, 16, 16, 20, 20, 20, 24, 24, 20, 20, 20, 16, 16, 16, 12, 12,  8,  8,  8,  4,  4,  4,  0,
59cabdff1aSopenharmony_ci  0,  0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4,  8,  8,  8,  8,  8,  8,  8,  8,  4,  4,  4,  4,  4,  4,  4,  4,  0,  0,  0,  0,
60cabdff1aSopenharmony_ci //error:0.000020
61cabdff1aSopenharmony_ci};
62cabdff1aSopenharmony_cistatic const uint8_t obmc16[256]={
63cabdff1aSopenharmony_ci  0,  4,  4,  8,  8, 12, 12, 16, 16, 12, 12,  8,  8,  4,  4,  0,
64cabdff1aSopenharmony_ci  4,  8, 16, 20, 28, 32, 40, 44, 44, 40, 32, 28, 20, 16,  8,  4,
65cabdff1aSopenharmony_ci  4, 16, 24, 36, 44, 56, 64, 76, 76, 64, 56, 44, 36, 24, 16,  4,
66cabdff1aSopenharmony_ci  8, 20, 36, 48, 64, 76, 92,104,104, 92, 76, 64, 48, 36, 20,  8,
67cabdff1aSopenharmony_ci  8, 28, 44, 64, 80,100,116,136,136,116,100, 80, 64, 44, 28,  8,
68cabdff1aSopenharmony_ci 12, 32, 56, 76,100,120,144,164,164,144,120,100, 76, 56, 32, 12,
69cabdff1aSopenharmony_ci 12, 40, 64, 92,116,144,168,196,196,168,144,116, 92, 64, 40, 12,
70cabdff1aSopenharmony_ci 16, 44, 76,104,136,164,196,224,224,196,164,136,104, 76, 44, 16,
71cabdff1aSopenharmony_ci 16, 44, 76,104,136,164,196,224,224,196,164,136,104, 76, 44, 16,
72cabdff1aSopenharmony_ci 12, 40, 64, 92,116,144,168,196,196,168,144,116, 92, 64, 40, 12,
73cabdff1aSopenharmony_ci 12, 32, 56, 76,100,120,144,164,164,144,120,100, 76, 56, 32, 12,
74cabdff1aSopenharmony_ci  8, 28, 44, 64, 80,100,116,136,136,116,100, 80, 64, 44, 28,  8,
75cabdff1aSopenharmony_ci  8, 20, 36, 48, 64, 76, 92,104,104, 92, 76, 64, 48, 36, 20,  8,
76cabdff1aSopenharmony_ci  4, 16, 24, 36, 44, 56, 64, 76, 76, 64, 56, 44, 36, 24, 16,  4,
77cabdff1aSopenharmony_ci  4,  8, 16, 20, 28, 32, 40, 44, 44, 40, 32, 28, 20, 16,  8,  4,
78cabdff1aSopenharmony_ci  0,  4,  4,  8,  8, 12, 12, 16, 16, 12, 12,  8,  8,  4,  4,  0,
79cabdff1aSopenharmony_ci//error:0.000015
80cabdff1aSopenharmony_ci};
81cabdff1aSopenharmony_ci
82cabdff1aSopenharmony_ci//linear *64
83cabdff1aSopenharmony_cistatic const uint8_t obmc8[64]={
84cabdff1aSopenharmony_ci  4, 12, 20, 28, 28, 20, 12,  4,
85cabdff1aSopenharmony_ci 12, 36, 60, 84, 84, 60, 36, 12,
86cabdff1aSopenharmony_ci 20, 60,100,140,140,100, 60, 20,
87cabdff1aSopenharmony_ci 28, 84,140,196,196,140, 84, 28,
88cabdff1aSopenharmony_ci 28, 84,140,196,196,140, 84, 28,
89cabdff1aSopenharmony_ci 20, 60,100,140,140,100, 60, 20,
90cabdff1aSopenharmony_ci 12, 36, 60, 84, 84, 60, 36, 12,
91cabdff1aSopenharmony_ci  4, 12, 20, 28, 28, 20, 12,  4,
92cabdff1aSopenharmony_ci//error:0.000000
93cabdff1aSopenharmony_ci};
94cabdff1aSopenharmony_ci
95cabdff1aSopenharmony_ci//linear *64
96cabdff1aSopenharmony_cistatic const uint8_t obmc4[16]={
97cabdff1aSopenharmony_ci 16, 48, 48, 16,
98cabdff1aSopenharmony_ci 48,144,144, 48,
99cabdff1aSopenharmony_ci 48,144,144, 48,
100cabdff1aSopenharmony_ci 16, 48, 48, 16,
101cabdff1aSopenharmony_ci//error:0.000000
102cabdff1aSopenharmony_ci};
103cabdff1aSopenharmony_ci
104cabdff1aSopenharmony_ciconst int8_t ff_quant3bA[256]={
105cabdff1aSopenharmony_ci 0, 0, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
106cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
107cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
108cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
109cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
110cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
111cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
112cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
113cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
114cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
115cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
116cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
117cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
118cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
119cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
120cabdff1aSopenharmony_ci 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1, 1,-1,
121cabdff1aSopenharmony_ci};
122cabdff1aSopenharmony_ci
123cabdff1aSopenharmony_ciconst uint8_t * const ff_obmc_tab[4]= {
124cabdff1aSopenharmony_ci    obmc32, obmc16, obmc8, obmc4
125cabdff1aSopenharmony_ci};
126cabdff1aSopenharmony_ci
127cabdff1aSopenharmony_ci/* ff_qexp[i] = lrintf(128 * 2^(i / QROOT)) with QROOT = 32 */
128cabdff1aSopenharmony_ciconst uint8_t ff_qexp[QROOT] = {
129cabdff1aSopenharmony_ci    128, 131, 134, 137, 140, 143, 146, 149, 152, 156, 159,
130cabdff1aSopenharmony_ci    162, 166, 170, 173, 177, 181, 185, 189, 193, 197, 202,
131cabdff1aSopenharmony_ci    206, 211, 215, 220, 225, 230, 235, 240, 245, 251,
132cabdff1aSopenharmony_ci};
133cabdff1aSopenharmony_ci
134cabdff1aSopenharmony_ci/* table generated at runtime */
135cabdff1aSopenharmony_ciint ff_scale_mv_ref[MAX_REF_FRAMES][MAX_REF_FRAMES];
136cabdff1aSopenharmony_ci
137cabdff1aSopenharmony_ci
138cabdff1aSopenharmony_ci#endif /* AVCODEC_SNOW_H */
139