MythTV master
vbilut.cpp
Go to the documentation of this file.
1#include "captions/vbilut.h"
2
3#include <array>
4
5static constexpr std::array<const uint16_t,256> hammtab
6{
7 0x0101, 0x100f, 0x0001, 0x0101, 0x100f, 0x0100, 0x0101, 0x100f,
8 0x100f, 0x0102, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
9 0x100f, 0x0100, 0x0101, 0x100f, 0x0100, 0x0000, 0x100f, 0x0100,
10 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x0103, 0x100f,
11 0x100f, 0x010c, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
12 0x0106, 0x100f, 0x100f, 0x0107, 0x100f, 0x0107, 0x0107, 0x0007,
13 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x010d, 0x100f,
14 0x0006, 0x0106, 0x0106, 0x100f, 0x0106, 0x100f, 0x100f, 0x0107,
15 0x100f, 0x0102, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
16 0x0102, 0x0002, 0x100f, 0x0102, 0x100f, 0x0102, 0x0103, 0x100f,
17 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x0103, 0x100f,
18 0x100f, 0x0102, 0x0103, 0x100f, 0x0103, 0x100f, 0x0003, 0x0103,
19 0x0104, 0x100f, 0x100f, 0x0105, 0x0004, 0x0104, 0x0104, 0x100f,
20 0x100f, 0x0102, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
21 0x100f, 0x0105, 0x0105, 0x0005, 0x0104, 0x100f, 0x100f, 0x0105,
22 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x0103, 0x100f,
23 0x100f, 0x010c, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
24 0x010a, 0x100f, 0x100f, 0x010b, 0x000a, 0x010a, 0x010a, 0x100f,
25 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x010d, 0x100f,
26 0x100f, 0x010b, 0x010b, 0x000b, 0x010a, 0x100f, 0x100f, 0x010b,
27 0x010c, 0x000c, 0x100f, 0x010c, 0x100f, 0x010c, 0x010d, 0x100f,
28 0x100f, 0x010c, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
29 0x100f, 0x010c, 0x010d, 0x100f, 0x010d, 0x100f, 0x000d, 0x010d,
30 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x010d, 0x100f,
31 0x0108, 0x100f, 0x100f, 0x0109, 0x100f, 0x0109, 0x0109, 0x0009,
32 0x100f, 0x0102, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
33 0x0008, 0x0108, 0x0108, 0x100f, 0x0108, 0x100f, 0x100f, 0x0109,
34 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x0103, 0x100f,
35 0x100f, 0x010c, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
36 0x010f, 0x100f, 0x000f, 0x010f, 0x100f, 0x010e, 0x010f, 0x100f,
37 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x010d, 0x100f,
38 0x100f, 0x010e, 0x010f, 0x100f, 0x010e, 0x000e, 0x100f, 0x010e,
39};
40
41static constexpr std::array<const uint8_t,256> hamm84tab
42{
43 255,255,255,255,255,255,255,255,255, 0, // 0 - 9
44 255, 8,255,255,255,255,255,255,255,255, // 10 - 19
45 255,255,255,255,255,255,255,255, 6,255, // 20 - 29
46 14,255,255,255,255,255, 12,255, 4,255, // 30 - 39
47 255,255,255,255,255,255,255,255,255, 10, // 40 - 49
48 255, 2,255,255,255,255,255,255,255,255, // 50 - 59
49 255,255,255,255, 1,255, 9,255,255,255, // 60 - 69
50 255,255,255,255,255,255,255,255,255,255, // 70 - 79
51 255,255,255,255,255, 7,255, 15,255,255, // 80 - 89
52 255,255,255,255,255,255,255,255,255,255, // 90 - 99
53 255,255,255,255,255,255,255,255,255, 13, // 100 - 109
54 255, 5,255,255,255,255,255,255,255,255, // 110 - 119
55 11,255, 3,255,255,255,255,255,255,255, // 120 - 129
56 255,255,255, 12,255, 4,255,255,255,255, // 130 - 139
57 255,255,255,255, 10,255, 2,255,255,255, // 140 - 149
58 255,255,255,255,255,255,255,255,255,255, // 150 - 159
59 255,255,255,255,255,255,255,255, 0,255, // 160 - 169
60 8,255,255,255,255,255,255,255,255,255, // 170 - 179
61 255,255,255,255,255,255,255,255,255, 6, // 180 - 189
62 255, 14,255,255,255,255,255,255,255,255, // 190 - 199
63 255,255,255,255, 13,255, 5,255,255,255, // 200 - 209
64 255,255,255,255,255,255,255, 11,255, 3, // 210 - 219
65 255,255,255,255,255, 1,255, 9,255,255, // 220 - 229
66 255,255,255,255,255,255,255,255,255,255, // 230 - 239
67 255,255,255,255, 7,255, 15,255,255,255, // 240 - 249
68 255,255,255,255,255,255 }; // 250 - 255
69
70int hamm8(const uint8_t *p, int *err)
71{
72 int a = hammtab[p[0]];
73 *err += a;
74 return a & 15;
75}
76
77int hamm84(const uint8_t *p, int *err)
78{
79 int a = hamm84tab[p[0]];
80
81 if (a == 255)
82 *err = 1;
83
84 return a;
85}
86
87int hamm16(const uint8_t *p, int *err)
88{
89 int a = hammtab[p[0]];
90 int b = hammtab[p[1]];
91 *err += a;
92 *err += b;
93 return (a & 15) | ((b & 15) * 16);
94}
static constexpr std::array< const uint16_t, 256 > hammtab
Definition: vbilut.cpp:6
int hamm8(const uint8_t *p, int *err)
Definition: vbilut.cpp:70
static constexpr std::array< const uint8_t, 256 > hamm84tab
Definition: vbilut.cpp:42
int hamm84(const uint8_t *p, int *err)
Definition: vbilut.cpp:77
int hamm16(const uint8_t *p, int *err)
Definition: vbilut.cpp:87