1/*
2 * a64 video encoder - tables used by a64 encoders
3 * Copyright (c) 2009 Tobias Bindhammer
4 *
5 * This file is part of Libav.
6 *
7 * Libav is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * Libav is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with Libav; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22/**
23 * @file
24 * a64 video encoder - tables used by a64 encoders
25 */
26
27#ifndef AVCODEC_A64TABLES_H
28#define AVCODEC_A64TABLES_H
29
30#include <stdint.h>
31
32/**
33 * dither patterns used vor rendering the multicolor charset
34 */
35
36static const uint8_t multi_dither_patterns[9][4][4] = {
37    {
38     {0, 0, 0, 0},
39     {0, 0, 0, 0},
40     {0, 0, 0, 0},
41     {0, 0, 0, 0}
42     },
43    {
44     {1, 0, 0, 0},
45     {0, 0, 0, 0},
46     {0, 0, 1, 0},
47     {0, 0, 0, 0}
48     },
49    {
50     {1, 0, 0, 0},
51     {0, 0, 1, 0},
52     {0, 1, 0, 0},
53     {0, 0, 0, 1}
54     },
55    {
56     {1, 0, 0, 0},
57     {0, 1, 0, 1},
58     {0, 0, 1, 0},
59     {0, 1, 0, 1}
60     },
61    {
62     {1, 0, 1, 0},
63     {0, 1, 0, 1},
64     {1, 0, 1, 0},
65     {0, 1, 0, 1}
66     },
67    {
68     {1, 1, 1, 0},
69     {0, 1, 0, 1},
70     {1, 0, 1, 1},
71     {0, 1, 0, 1}
72     },
73    {
74     {0, 1, 1, 1},
75     {1, 1, 0, 1},
76     {1, 0, 1, 1},
77     {1, 1, 1, 0}
78     },
79    {
80     {0, 1, 1, 1},
81     {1, 1, 1, 1},
82     {1, 1, 0, 1},
83     {1, 1, 1, 1}
84     },
85    {
86     {1, 1, 1, 1},
87     {1, 1, 1, 1},
88     {1, 1, 1, 1},
89     {1, 1, 1, 1}
90     },
91};
92
93static const uint8_t interlaced_dither_patterns[9][8][4] = {
94    {
95     {0, 0, 0, 0}, {0, 0, 0, 0},
96     {0, 0, 0, 0}, {0, 0, 0, 0},
97     {0, 0, 0, 0}, {0, 0, 0, 0},
98     {0, 0, 0, 0}, {0, 0, 0, 0},
99     },
100    {
101     {1, 0, 1, 0}, {0, 0, 0, 0},
102     {0, 0, 0, 0}, {0, 0, 0, 0},
103     {1, 0, 1, 0}, {0, 0, 0, 0},
104     {0, 0, 0, 0}, {0, 0, 0, 0},
105     },
106    {
107     {1, 0, 1, 0}, {0, 0, 0, 0},
108     {0, 0, 0, 0}, {0, 1, 0, 1},
109     {1, 0, 1, 0}, {0, 0, 0, 0},
110     {0, 0, 0, 0}, {0, 1, 0, 1},
111     },
112    {
113     {1, 0, 1, 0}, {0, 1, 0, 1},
114     {0, 1, 0, 1}, {0, 0, 0, 0},
115     {1, 0, 1, 0}, {0, 1, 0, 1},
116     {0, 1, 0, 1}, {0, 0, 0, 0},
117     },
118    {
119     {1, 0, 1, 0}, {0, 1, 0, 1},
120     {0, 1, 0, 1}, {1, 0, 1, 0},
121     {1, 0, 1, 0}, {0, 1, 0, 1},
122     {0, 1, 0, 1}, {1, 0, 1, 0},
123     },
124    {
125     {1, 0, 1, 0}, {0, 1, 0, 1},
126     {1, 1, 1, 1}, {1, 0, 1, 0},
127     {1, 0, 1, 0}, {0, 1, 0, 1},
128     {1, 1, 1, 1}, {1, 0, 1, 0},
129     },
130    {
131     {1, 0, 1, 0}, {1, 1, 1, 1},
132     {1, 1, 1, 1}, {0, 1, 0, 1},
133     {1, 0, 1, 0}, {1, 1, 1, 1},
134     {1, 1, 1, 1}, {0, 1, 0, 1},
135     },
136    {
137     {1, 1, 1, 1}, {1, 1, 1, 1},
138     {1, 1, 1, 1}, {0, 1, 0, 1},
139     {1, 1, 1, 1}, {1, 1, 1, 1},
140     {1, 1, 1, 1}, {0, 1, 0, 1},
141     },
142    {
143     {1, 1, 1, 1}, {1, 1, 1, 1},
144     {1, 1, 1, 1}, {1, 1, 1, 1},
145     {1, 1, 1, 1}, {1, 1, 1, 1},
146     {1, 1, 1, 1}, {1, 1, 1, 1},
147     }
148};
149
150#endif /* AVCODEC_A64TABLES_H */
151