00001 #include <vbilut.h>
00002
00003 extern "C" {
00004 const uint8_t lang_chars[1+8+8][16] =
00005 {
00006 { 0, 0x23,0x24,0x40,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x7b,0x7c,0x7d,0x7e },
00007
00008
00009
00010 { 0, '£', '$', '@', '«', '½', '»', '¬', '#', '', '¼', '¦', '¾', '÷' },
00011
00012 { 0, '#', '$', '§', 'Ä', 'Ö', 'Ü', '^', '_', '°', 'ä', 'ö', 'ü', 'ß' },
00013
00014 { 0, '#', '¤', 'É', 'Ä', 'Ö', 'Å', 'Ü', '_', 'é', 'ä', 'ö', 'å', 'ü' },
00015
00016 { 0, '£', '$', 'é', '°', 'ç', '»', '¬', '#', 'ù', 'à', 'ò', 'è', 'ì' },
00017
00018 { 0, 'é', 'ï', 'à', 'ë', 'ê', 'ù', 'î', '#', 'è', 'â', 'ô', 'û', 'ç' },
00019
00020 { 0, 'ç', '$', '¡', 'á', 'é', 'í', 'ó', 'ú', '¿', 'ü', 'ñ', 'è', 'à' },
00021
00022 { 0, '#', 'u', 'c', 't', 'z', 'ý', 'í', 'r', 'é', 'á', 'e', 'ú', 's' },
00023
00024 { 0, '£', '$', '@', '«', '½', '»', '¬', '#', '', '¼', '¦', '¾', '÷' },
00025
00026
00027
00028 { 0, '#', 'ñ', '±', '¯', '¦', '£', 'æ', 'ó', 'ê', '¿', '¶', '³', '¼' },
00029
00030 { 0, '#', '$', '§', 'Ä', 'Ö', 'Ü', '^', '_', '°', 'ä', 'ö', 'ü', 'ß' },
00031
00032 { 0, '#', 'õ', '©', 'Ä', 'Ö', '®', 'Ü', 'Õ', '¹', 'ä', 'ö', '¾', 'ü' },
00033
00034 { 0, '#', '$', '©', 'ë', 'ê', '®', 'è', 'ü', '¹', '±', 'u', '¾', 'i' },
00035
00036 { 0, 'é', 'i', 'a', 'ë', 'ì', 'u', 'î', '#', 'e', 'â', 'ô', 'u', 'ç' },
00037
00038 { 0, '#', 'Ë', 'È', 'Æ', '®', 'Ð', '©', 'ë', 'è', 'æ', '®', 'ð', '¹' },
00039
00040 { 0, '#', 'ù', 'è', '»', '¾', 'ý', 'í', 'ø', 'é', 'á', 'ì', 'ú', '¹' },
00041
00042 { 0, '#', '¢', 'Þ', 'Â', 'ª', 'Ã', 'Î', 'i', 'þ', 'â', 'º', 'ã', 'î' },
00043 };
00044 }
00045
00046
00047 const char chartab_original[13] =
00048 {
00049 '#', '¤', '@', '[', '\\', ']', '^', '_', '\'', '{', '|', '}', '~'
00050 };
00051
00052 const unsigned short hammtab[256] =
00053 {
00054 0x0101, 0x100f, 0x0001, 0x0101, 0x100f, 0x0100, 0x0101, 0x100f,
00055 0x100f, 0x0102, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
00056 0x100f, 0x0100, 0x0101, 0x100f, 0x0100, 0x0000, 0x100f, 0x0100,
00057 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x0103, 0x100f,
00058 0x100f, 0x010c, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
00059 0x0106, 0x100f, 0x100f, 0x0107, 0x100f, 0x0107, 0x0107, 0x0007,
00060 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x010d, 0x100f,
00061 0x0006, 0x0106, 0x0106, 0x100f, 0x0106, 0x100f, 0x100f, 0x0107,
00062 0x100f, 0x0102, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
00063 0x0102, 0x0002, 0x100f, 0x0102, 0x100f, 0x0102, 0x0103, 0x100f,
00064 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x0103, 0x100f,
00065 0x100f, 0x0102, 0x0103, 0x100f, 0x0103, 0x100f, 0x0003, 0x0103,
00066 0x0104, 0x100f, 0x100f, 0x0105, 0x0004, 0x0104, 0x0104, 0x100f,
00067 0x100f, 0x0102, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
00068 0x100f, 0x0105, 0x0105, 0x0005, 0x0104, 0x100f, 0x100f, 0x0105,
00069 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x0103, 0x100f,
00070 0x100f, 0x010c, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
00071 0x010a, 0x100f, 0x100f, 0x010b, 0x000a, 0x010a, 0x010a, 0x100f,
00072 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x010d, 0x100f,
00073 0x100f, 0x010b, 0x010b, 0x000b, 0x010a, 0x100f, 0x100f, 0x010b,
00074 0x010c, 0x000c, 0x100f, 0x010c, 0x100f, 0x010c, 0x010d, 0x100f,
00075 0x100f, 0x010c, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
00076 0x100f, 0x010c, 0x010d, 0x100f, 0x010d, 0x100f, 0x000d, 0x010d,
00077 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x010d, 0x100f,
00078 0x0108, 0x100f, 0x100f, 0x0109, 0x100f, 0x0109, 0x0109, 0x0009,
00079 0x100f, 0x0102, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
00080 0x0008, 0x0108, 0x0108, 0x100f, 0x0108, 0x100f, 0x100f, 0x0109,
00081 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x0103, 0x100f,
00082 0x100f, 0x010c, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
00083 0x010f, 0x100f, 0x000f, 0x010f, 0x100f, 0x010e, 0x010f, 0x100f,
00084 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x010d, 0x100f,
00085 0x100f, 0x010e, 0x010f, 0x100f, 0x010e, 0x000e, 0x100f, 0x010e,
00086 };
00087
00088 const uint8_t hamm84tab[256] =
00089 {
00090 255,255,255,255,255,255,255,255,255, 0,
00091 255, 8,255,255,255,255,255,255,255,255,
00092 255,255,255,255,255,255,255,255, 6,255,
00093 14,255,255,255,255,255, 12,255, 4,255,
00094 255,255,255,255,255,255,255,255,255, 10,
00095 255, 2,255,255,255,255,255,255,255,255,
00096 255,255,255,255, 1,255, 9,255,255,255,
00097 255,255,255,255,255,255,255,255,255,255,
00098 255,255,255,255,255, 7,255, 15,255,255,
00099 255,255,255,255,255,255,255,255,255,255,
00100 255,255,255,255,255,255,255,255,255, 13,
00101 255, 5,255,255,255,255,255,255,255,255,
00102 11,255, 3,255,255,255,255,255,255,255,
00103 255,255,255, 12,255, 4,255,255,255,255,
00104 255,255,255,255, 10,255, 2,255,255,255,
00105 255,255,255,255,255,255,255,255,255,255,
00106 255,255,255,255,255,255,255,255, 0,255,
00107 8,255,255,255,255,255,255,255,255,255,
00108 255,255,255,255,255,255,255,255,255, 6,
00109 255, 14,255,255,255,255,255,255,255,255,
00110 255,255,255,255, 13,255, 5,255,255,255,
00111 255,255,255,255,255,255,255, 11,255, 3,
00112 255,255,255,255,255, 1,255, 9,255,255,
00113 255,255,255,255,255,255,255,255,255,255,
00114 255,255,255,255, 7,255, 15,255,255,255,
00115 255,255,255,255,255,255 };
00116
00117
00118 const uint8_t unham84tab[256] =
00119 {
00120 0x01, 0xff, 0x81, 0x01, 0xff, 0x00, 0x01, 0xff,
00121 0xff, 0x02, 0x01, 0xff, 0x0a, 0xff, 0xff, 0x07,
00122 0xff, 0x00, 0x01, 0xff, 0x00, 0x80, 0xff, 0x00,
00123 0x06, 0xff, 0xff, 0x0b, 0xff, 0x00, 0x03, 0xff,
00124 0xff, 0x0c, 0x01, 0xff, 0x04, 0xff, 0xff, 0x07,
00125 0x06, 0xff, 0xff, 0x07, 0xff, 0x07, 0x07, 0x87,
00126 0x06, 0xff, 0xff, 0x05, 0xff, 0x00, 0x0d, 0xff,
00127 0x86, 0x06, 0x06, 0xff, 0x06, 0xff, 0xff, 0x07,
00128 0xff, 0x02, 0x01, 0xff, 0x04, 0xff, 0xff, 0x09,
00129 0x02, 0x82, 0xff, 0x02, 0xff, 0x02, 0x03, 0xff,
00130 0x08, 0xff, 0xff, 0x05, 0xff, 0x00, 0x03, 0xff,
00131 0xff, 0x02, 0x03, 0xff, 0x03, 0xff, 0x83, 0x03,
00132 0x04, 0xff, 0xff, 0x05, 0x84, 0x04, 0x04, 0xff,
00133 0xff, 0x02, 0x0f, 0xff, 0x04, 0xff, 0xff, 0x07,
00134 0xff, 0x05, 0x05, 0x85, 0x04, 0xff, 0xff, 0x05,
00135 0x06, 0xff, 0xff, 0x05, 0xff, 0x0e, 0x03, 0xff,
00136 0xff, 0x0c, 0x01, 0xff, 0x0a, 0xff, 0xff, 0x09,
00137 0x0a, 0xff, 0xff, 0x0b, 0x8a, 0x0a, 0x0a, 0xff,
00138 0x08, 0xff, 0xff, 0x0b, 0xff, 0x00, 0x0d, 0xff,
00139 0xff, 0x0b, 0x0b, 0x8b, 0x0a, 0xff, 0xff, 0x0b,
00140 0x0c, 0x8c, 0xff, 0x0c, 0xff, 0x0c, 0x0d, 0xff,
00141 0xff, 0x0c, 0x0f, 0xff, 0x0a, 0xff, 0xff, 0x07,
00142 0xff, 0x0c, 0x0d, 0xff, 0x0d, 0xff, 0x8d, 0x0d,
00143 0x06, 0xff, 0xff, 0x0b, 0xff, 0x0e, 0x0d, 0xff,
00144 0x08, 0xff, 0xff, 0x09, 0xff, 0x09, 0x09, 0x89,
00145 0xff, 0x02, 0x0f, 0xff, 0x0a, 0xff, 0xff, 0x09,
00146 0x88, 0x08, 0x08, 0xff, 0x08, 0xff, 0xff, 0x09,
00147 0x08, 0xff, 0xff, 0x0b, 0xff, 0x0e, 0x03, 0xff,
00148 0xff, 0x0c, 0x0f, 0xff, 0x04, 0xff, 0xff, 0x09,
00149 0x0f, 0xff, 0x8f, 0x0f, 0xff, 0x0e, 0x0f, 0xff,
00150 0x08, 0xff, 0xff, 0x05, 0xff, 0x0e, 0x0d, 0xff,
00151 0xff, 0x0e, 0x0f, 0xff, 0x0e, 0x8e, 0xff, 0x0e,
00152 };
00153
00154 const uint8_t vbi_bit_reverse[256] =
00155 {
00156 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
00157 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
00158 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
00159 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
00160 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
00161 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
00162 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
00163 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
00164 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
00165 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
00166 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
00167 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
00168 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
00169 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
00170 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
00171 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
00172 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
00173 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
00174 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
00175 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
00176 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
00177 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
00178 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
00179 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
00180 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
00181 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
00182 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
00183 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
00184 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
00185 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
00186 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
00187 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
00188 };
00189
00190 const char *formats[8] =
00191 {
00192 "Full format 4:3, 576 lines",
00193 "Letterbox 14:9 centre, 504 lines",
00194 "Letterbox 14:9 top, 504 lines",
00195 "Letterbox 16:9 centre, 430 lines",
00196 "Letterbox 16:9 top, 430 lines",
00197 "Letterbox > 16:9 centre",
00198 "Full format 14:9 centre, 576 lines",
00199 "Anamorphic 16:9, 576 lines"
00200 };
00201
00202 const char *subtitles[4] =
00203 {
00204 "none",
00205 "in active image area",
00206 "out of active image area",
00207 "?"
00208 };
00209
00214 const char hamm24par[3][256] =
00215 {
00216 {
00217 0, 33, 34, 3, 35, 2, 1, 32, 36, 5, 6, 39, 7, 38, 37, 4,
00218 37, 4, 7, 38, 6, 39, 36, 5, 1, 32, 35, 2, 34, 3, 0, 33,
00219 38, 7, 4, 37, 5, 36, 39, 6, 2, 35, 32, 1, 33, 0, 3, 34,
00220 3, 34, 33, 0, 32, 1, 2, 35, 39, 6, 5, 36, 4, 37, 38, 7,
00221 39, 6, 5, 36, 4, 37, 38, 7, 3, 34, 33, 0, 32, 1, 2, 35,
00222 2, 35, 32, 1, 33, 0, 3, 34, 38, 7, 4, 37, 5, 36, 39, 6,
00223 1, 32, 35, 2, 34, 3, 0, 33, 37, 4, 7, 38, 6, 39, 36, 5,
00224 36, 5, 6, 39, 7, 38, 37, 4, 0, 33, 34, 3, 35, 2, 1, 32,
00225 40, 9, 10, 43, 11, 42, 41, 8, 12, 45, 46, 15, 47, 14, 13, 44,
00226 13, 44, 47, 14, 46, 15, 12, 45, 41, 8, 11, 42, 10, 43, 40, 9,
00227 14, 47, 44, 13, 45, 12, 15, 46, 42, 11, 8, 41, 9, 40, 43, 10,
00228 43, 10, 9, 40, 8, 41, 42, 11, 15, 46, 45, 12, 44, 13, 14, 47,
00229 15, 46, 45, 12, 44, 13, 14, 47, 43, 10, 9, 40, 8, 41, 42, 11,
00230 42, 11, 8, 41, 9, 40, 43, 10, 14, 47, 44, 13, 45, 12, 15, 46,
00231 41, 8, 11, 42, 10, 43, 40, 9, 13, 44, 47, 14, 46, 15, 12, 45,
00232 12, 45, 46, 15, 47, 14, 13, 44, 40, 9, 10, 43, 11, 42, 41, 8
00233 },
00234 {
00235 0, 41, 42, 3, 43, 2, 1, 40, 44, 5, 6, 47, 7, 46, 45, 4,
00236 45, 4, 7, 46, 6, 47, 44, 5, 1, 40, 43, 2, 42, 3, 0, 41,
00237 46, 7, 4, 45, 5, 44, 47, 6, 2, 43, 40, 1, 41, 0, 3, 42,
00238 3, 42, 41, 0, 40, 1, 2, 43, 47, 6, 5, 44, 4, 45, 46, 7,
00239 47, 6, 5, 44, 4, 45, 46, 7, 3, 42, 41, 0, 40, 1, 2, 43,
00240 2, 43, 40, 1, 41, 0, 3, 42, 46, 7, 4, 45, 5, 44, 47, 6,
00241 1, 40, 43, 2, 42, 3, 0, 41, 45, 4, 7, 46, 6, 47, 44, 5,
00242 44, 5, 6, 47, 7, 46, 45, 4, 0, 41, 42, 3, 43, 2, 1, 40,
00243 48, 25, 26, 51, 27, 50, 49, 24, 28, 53, 54, 31, 55, 30, 29, 52,
00244 29, 52, 55, 30, 54, 31, 28, 53, 49, 24, 27, 50, 26, 51, 48, 25,
00245 30, 55, 52, 29, 53, 28, 31, 54, 50, 27, 24, 49, 25, 48, 51, 26,
00246 51, 26, 25, 48, 24, 49, 50, 27, 31, 54, 53, 28, 52, 29, 30, 55,
00247 31, 54, 53, 28, 52, 29, 30, 55, 51, 26, 25, 48, 24, 49, 50, 27,
00248 50, 27, 24, 49, 25, 48, 51, 26, 30, 55, 52, 29, 53, 28, 31, 54,
00249 49, 24, 27, 50, 26, 51, 48, 25, 29, 52, 55, 30, 54, 31, 28, 53,
00250 28, 53, 54, 31, 55, 30, 29, 52, 48, 25, 26, 51, 27, 50, 49, 24
00251 },
00252 {
00253 63, 14, 13, 60, 12, 61, 62, 15, 11, 58, 57, 8, 56, 9, 10, 59,
00254 10, 59, 56, 9, 57, 8, 11, 58, 62, 15, 12, 61, 13, 60, 63, 14,
00255 9, 56, 59, 10, 58, 11, 8, 57, 61, 12, 15, 62, 14, 63, 60, 13,
00256 60, 13, 14, 63, 15, 62, 61, 12, 8, 57, 58, 11, 59, 10, 9, 56,
00257 8, 57, 58, 11, 59, 10, 9, 56, 60, 13, 14, 63, 15, 62, 61, 12,
00258 61, 12, 15, 62, 14, 63, 60, 13, 9, 56, 59, 10, 58, 11, 8, 57,
00259 62, 15, 12, 61, 13, 60, 63, 14, 10, 59, 56, 9, 57, 8, 11, 58,
00260 11, 58, 57, 8, 56, 9, 10, 59, 63, 14, 13, 60, 12, 61, 62, 15,
00261 31, 46, 45, 28, 44, 29, 30, 47, 43, 26, 25, 40, 24, 41, 42, 27,
00262 42, 27, 24, 41, 25, 40, 43, 26, 30, 47, 44, 29, 45, 28, 31, 46,
00263 41, 24, 27, 42, 26, 43, 40, 25, 29, 44, 47, 30, 46, 31, 28, 45,
00264 28, 45, 46, 31, 47, 30, 29, 44, 40, 25, 26, 43, 27, 42, 41, 24,
00265 40, 25, 26, 43, 27, 42, 41, 24, 28, 45, 46, 31, 47, 30, 29, 44,
00266 29, 44, 47, 30, 46, 31, 28, 45, 41, 24, 27, 42, 26, 43, 40, 25,
00267 30, 47, 44, 29, 45, 28, 31, 46, 42, 27, 24, 41, 25, 40, 43, 26,
00268 43, 26, 25, 40, 24, 41, 42, 27, 31, 46, 45, 28, 44, 29, 30, 47
00269 }
00270 };
00271
00272
00274 const char hamm24val[256] =
00275 {
00276 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
00277 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3,
00278 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 5,
00279 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7,
00280 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9,
00281 10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
00282 12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
00283 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15,
00284 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
00285 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3,
00286 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 5,
00287 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7,
00288 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9,
00289 10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
00290 12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
00291 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15
00292 };
00293
00294
00295
00300 const short hamm24err[64] =
00301 {
00302 0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
00303 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
00304 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
00305 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
00306 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
00307 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
00308 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
00309 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
00310 };
00311
00312
00316 const int hamm24cor[64] =
00317 {
00318 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
00319 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
00320 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
00321 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
00322 0x00000, 0x00000, 0x00000, 0x00001, 0x00000, 0x00002, 0x00004, 0x00008,
00323 0x00000, 0x00010, 0x00020, 0x00040, 0x00080, 0x00100, 0x00200, 0x00400,
00324 0x00000, 0x00800, 0x01000, 0x02000, 0x04000, 0x08000, 0x10000, 0x20000,
00325 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
00326 };
00327
00328 int hamm8(const uint8_t *p, int *err)
00329 {
00330 int a = hammtab[p[0]];
00331 *err += a;
00332 return a & 15;
00333 }
00334
00335 int hamm84(const uint8_t *p, int *err)
00336 {
00337 int a = hamm84tab[p[0]];
00338
00339 if (a == 255)
00340 *err = 1;
00341
00342 return a;
00343 }
00344
00345 int hamm16(const uint8_t *p, int *err)
00346 {
00347 int a = hammtab[p[0]];
00348 int b = hammtab[p[1]];
00349 *err += a;
00350 *err += b;
00351 return (a & 15) | (b & 15) * 16;
00352 }