Statistics
| Branch: | Revision:

ffmpeg / libavformat / avlanguage.c @ 2912e87a

History | View | Annotate | Download (22.6 KB)

1
/*
2
 * Cyril Comparon, Larbi Joubala, Resonate-MP4 2009
3
 *
4
 * This file is part of Libav.
5
 *
6
 * Libav is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * Libav is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with Libav; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
 */
20

    
21
#include "avlanguage.h"
22
#include "libavutil/avstring.h"
23
#include <stdlib.h>
24
#include <stdint.h>
25
#include <string.h>
26

    
27
typedef struct LangEntry {
28
    const char str[4];
29
    uint16_t next_equivalent;
30
} LangEntry;
31

    
32
static const uint16_t lang_table_counts[] = { 484, 20, 184 };
33
static const uint16_t lang_table_offsets[] = { 0, 484, 504 };
34

    
35
static const LangEntry lang_table[] = {
36
    /*----- AV_LANG_ISO639_2_BIBL entries (484) -----*/
37
    /*0000*/ { "aar",  504 },
38
    /*0001*/ { "abk",  505 },
39
    /*0002*/ { "ace",    2 },
40
    /*0003*/ { "ach",    3 },
41
    /*0004*/ { "ada",    4 },
42
    /*0005*/ { "ady",    5 },
43
    /*0006*/ { "afa",    6 },
44
    /*0007*/ { "afh",    7 },
45
    /*0008*/ { "afr",  507 },
46
    /*0009*/ { "ain",    9 },
47
    /*0010*/ { "aka",  508 },
48
    /*0011*/ { "akk",   11 },
49
    /*0012*/ { "alb",  502 },
50
    /*0013*/ { "ale",   13 },
51
    /*0014*/ { "alg",   14 },
52
    /*0015*/ { "alt",   15 },
53
    /*0016*/ { "amh",  509 },
54
    /*0017*/ { "ang",   17 },
55
    /*0018*/ { "anp",   18 },
56
    /*0019*/ { "apa",   19 },
57
    /*0020*/ { "ara",  511 },
58
    /*0021*/ { "arc",   21 },
59
    /*0022*/ { "arg",  510 },
60
    /*0023*/ { "arm",  492 },
61
    /*0024*/ { "arn",   24 },
62
    /*0025*/ { "arp",   25 },
63
    /*0026*/ { "art",   26 },
64
    /*0027*/ { "arw",   27 },
65
    /*0028*/ { "asm",  512 },
66
    /*0029*/ { "ast",   29 },
67
    /*0030*/ { "ath",   30 },
68
    /*0031*/ { "aus",   31 },
69
    /*0032*/ { "ava",  513 },
70
    /*0033*/ { "ave",  506 },
71
    /*0034*/ { "awa",   34 },
72
    /*0035*/ { "aym",  514 },
73
    /*0036*/ { "aze",  515 },
74
    /*0037*/ { "bad",   37 },
75
    /*0038*/ { "bai",   38 },
76
    /*0039*/ { "bak",  516 },
77
    /*0040*/ { "bal",   40 },
78
    /*0041*/ { "bam",  521 },
79
    /*0042*/ { "ban",   42 },
80
    /*0043*/ { "baq",  489 },
81
    /*0044*/ { "bas",   44 },
82
    /*0045*/ { "bat",   45 },
83
    /*0046*/ { "bej",   46 },
84
    /*0047*/ { "bel",  517 },
85
    /*0048*/ { "bem",   48 },
86
    /*0049*/ { "ben",  522 },
87
    /*0050*/ { "ber",   50 },
88
    /*0051*/ { "bho",   51 },
89
    /*0052*/ { "bih",  519 },
90
    /*0053*/ { "bik",   53 },
91
    /*0054*/ { "bin",   54 },
92
    /*0055*/ { "bis",  520 },
93
    /*0056*/ { "bla",   56 },
94
    /*0057*/ { "bnt",   57 },
95
    /*0058*/ { "bos",  525 },
96
    /*0059*/ { "bra",   59 },
97
    /*0060*/ { "bre",  524 },
98
    /*0061*/ { "btk",   61 },
99
    /*0062*/ { "bua",   62 },
100
    /*0063*/ { "bug",   63 },
101
    /*0064*/ { "bul",  518 },
102
    /*0065*/ { "bur",  498 },
103
    /*0066*/ { "byn",   66 },
104
    /*0067*/ { "cad",   67 },
105
    /*0068*/ { "cai",   68 },
106
    /*0069*/ { "car",   69 },
107
    /*0070*/ { "cat",  526 },
108
    /*0071*/ { "cau",   71 },
109
    /*0072*/ { "ceb",   72 },
110
    /*0073*/ { "cel",   73 },
111
    /*0074*/ { "cha",  528 },
112
    /*0075*/ { "chb",   75 },
113
    /*0076*/ { "che",  527 },
114
    /*0077*/ { "chg",   77 },
115
    /*0078*/ { "chi",  503 },
116
    /*0079*/ { "chk",   79 },
117
    /*0080*/ { "chm",   80 },
118
    /*0081*/ { "chn",   81 },
119
    /*0082*/ { "cho",   82 },
120
    /*0083*/ { "chp",   83 },
121
    /*0084*/ { "chr",   84 },
122
    /*0085*/ { "chu",  532 },
123
    /*0086*/ { "chv",  533 },
124
    /*0087*/ { "chy",   87 },
125
    /*0088*/ { "cmc",   88 },
126
    /*0089*/ { "cop",   89 },
127
    /*0090*/ { "cor",  593 },
128
    /*0091*/ { "cos",  529 },
129
    /*0092*/ { "cpe",   92 },
130
    /*0093*/ { "cpf",   93 },
131
    /*0094*/ { "cpp",   94 },
132
    /*0095*/ { "cre",  530 },
133
    /*0096*/ { "crh",   96 },
134
    /*0097*/ { "crp",   97 },
135
    /*0098*/ { "csb",   98 },
136
    /*0099*/ { "cus",   99 },
137
    /*0100*/ { "cze",  485 },
138
    /*0101*/ { "dak",  101 },
139
    /*0102*/ { "dan",  535 },
140
    /*0103*/ { "dar",  103 },
141
    /*0104*/ { "day",  104 },
142
    /*0105*/ { "del",  105 },
143
    /*0106*/ { "den",  106 },
144
    /*0107*/ { "dgr",  107 },
145
    /*0108*/ { "din",  108 },
146
    /*0109*/ { "div",  537 },
147
    /*0110*/ { "doi",  110 },
148
    /*0111*/ { "dra",  111 },
149
    /*0112*/ { "dsb",  112 },
150
    /*0113*/ { "dua",  113 },
151
    /*0114*/ { "dum",  114 },
152
    /*0115*/ { "dut",  499 },
153
    /*0116*/ { "dyu",  116 },
154
    /*0117*/ { "dzo",  538 },
155
    /*0118*/ { "efi",  118 },
156
    /*0119*/ { "egy",  119 },
157
    /*0120*/ { "eka",  120 },
158
    /*0121*/ { "elx",  121 },
159
    /*0122*/ { "eng",  541 },
160
    /*0123*/ { "enm",  123 },
161
    /*0124*/ { "epo",  542 },
162
    /*0125*/ { "est",  544 },
163
    /*0126*/ { "ewe",  539 },
164
    /*0127*/ { "ewo",  127 },
165
    /*0128*/ { "fan",  128 },
166
    /*0129*/ { "fao",  550 },
167
    /*0130*/ { "fat",  130 },
168
    /*0131*/ { "fij",  549 },
169
    /*0132*/ { "fil",  132 },
170
    /*0133*/ { "fin",  548 },
171
    /*0134*/ { "fiu",  134 },
172
    /*0135*/ { "fon",  135 },
173
    /*0136*/ { "fre",  491 },
174
    /*0137*/ { "frm",  137 },
175
    /*0138*/ { "fro",  138 },
176
    /*0139*/ { "frr",  139 },
177
    /*0140*/ { "frs",  140 },
178
    /*0141*/ { "fry",  552 },
179
    /*0142*/ { "ful",  547 },
180
    /*0143*/ { "fur",  143 },
181
    /*0144*/ { "gaa",  144 },
182
    /*0145*/ { "gay",  145 },
183
    /*0146*/ { "gba",  146 },
184
    /*0147*/ { "gem",  147 },
185
    /*0148*/ { "geo",  494 },
186
    /*0149*/ { "ger",  487 },
187
    /*0150*/ { "gez",  150 },
188
    /*0151*/ { "gil",  151 },
189
    /*0152*/ { "gla",  554 },
190
    /*0153*/ { "gle",  553 },
191
    /*0154*/ { "glg",  555 },
192
    /*0155*/ { "glv",  558 },
193
    /*0156*/ { "gmh",  156 },
194
    /*0157*/ { "goh",  157 },
195
    /*0158*/ { "gon",  158 },
196
    /*0159*/ { "gor",  159 },
197
    /*0160*/ { "got",  160 },
198
    /*0161*/ { "grb",  161 },
199
    /*0162*/ { "grc",  162 },
200
    /*0163*/ { "gre",  488 },
201
    /*0164*/ { "grn",  556 },
202
    /*0165*/ { "gsw",  165 },
203
    /*0166*/ { "guj",  557 },
204
    /*0167*/ { "gwi",  167 },
205
    /*0168*/ { "hai",  168 },
206
    /*0169*/ { "hat",  564 },
207
    /*0170*/ { "hau",  559 },
208
    /*0171*/ { "haw",  171 },
209
    /*0172*/ { "heb",  560 },
210
    /*0173*/ { "her",  567 },
211
    /*0174*/ { "hil",  174 },
212
    /*0175*/ { "him",  175 },
213
    /*0176*/ { "hin",  561 },
214
    /*0177*/ { "hit",  177 },
215
    /*0178*/ { "hmn",  178 },
216
    /*0179*/ { "hmo",  562 },
217
    /*0180*/ { "hrv",  563 },
218
    /*0181*/ { "hsb",  181 },
219
    /*0182*/ { "hun",  565 },
220
    /*0183*/ { "hup",  183 },
221
    /*0184*/ { "iba",  184 },
222
    /*0185*/ { "ibo",  571 },
223
    /*0186*/ { "ice",  493 },
224
    /*0187*/ { "ido",  574 },
225
    /*0188*/ { "iii",  572 },
226
    /*0189*/ { "ijo",  189 },
227
    /*0190*/ { "iku",  577 },
228
    /*0191*/ { "ile",  570 },
229
    /*0192*/ { "ilo",  192 },
230
    /*0193*/ { "ina",  568 },
231
    /*0194*/ { "inc",  194 },
232
    /*0195*/ { "ind",  569 },
233
    /*0196*/ { "ine",  196 },
234
    /*0197*/ { "inh",  197 },
235
    /*0198*/ { "ipk",  573 },
236
    /*0199*/ { "ira",  199 },
237
    /*0200*/ { "iro",  200 },
238
    /*0201*/ { "ita",  576 },
239
    /*0202*/ { "jav",  579 },
240
    /*0203*/ { "jbo",  203 },
241
    /*0204*/ { "jpn",  578 },
242
    /*0205*/ { "jpr",  205 },
243
    /*0206*/ { "jrb",  206 },
244
    /*0207*/ { "kaa",  207 },
245
    /*0208*/ { "kab",  208 },
246
    /*0209*/ { "kac",  209 },
247
    /*0210*/ { "kal",  585 },
248
    /*0211*/ { "kam",  211 },
249
    /*0212*/ { "kan",  587 },
250
    /*0213*/ { "kar",  213 },
251
    /*0214*/ { "kas",  590 },
252
    /*0215*/ { "kau",  589 },
253
    /*0216*/ { "kaw",  216 },
254
    /*0217*/ { "kaz",  584 },
255
    /*0218*/ { "kbd",  218 },
256
    /*0219*/ { "kha",  219 },
257
    /*0220*/ { "khi",  220 },
258
    /*0221*/ { "khm",  586 },
259
    /*0222*/ { "kho",  222 },
260
    /*0223*/ { "kik",  582 },
261
    /*0224*/ { "kin",  640 },
262
    /*0225*/ { "kir",  594 },
263
    /*0226*/ { "kmb",  226 },
264
    /*0227*/ { "kok",  227 },
265
    /*0228*/ { "kom",  592 },
266
    /*0229*/ { "kon",  581 },
267
    /*0230*/ { "kor",  588 },
268
    /*0231*/ { "kos",  231 },
269
    /*0232*/ { "kpe",  232 },
270
    /*0233*/ { "krc",  233 },
271
    /*0234*/ { "krl",  234 },
272
    /*0235*/ { "kro",  235 },
273
    /*0236*/ { "kru",  236 },
274
    /*0237*/ { "kua",  583 },
275
    /*0238*/ { "kum",  238 },
276
    /*0239*/ { "kur",  591 },
277
    /*0240*/ { "kut",  240 },
278
    /*0241*/ { "lad",  241 },
279
    /*0242*/ { "lah",  242 },
280
    /*0243*/ { "lam",  243 },
281
    /*0244*/ { "lao",  600 },
282
    /*0245*/ { "lat",  595 },
283
    /*0246*/ { "lav",  603 },
284
    /*0247*/ { "lez",  247 },
285
    /*0248*/ { "lim",  598 },
286
    /*0249*/ { "lin",  599 },
287
    /*0250*/ { "lit",  601 },
288
    /*0251*/ { "lol",  251 },
289
    /*0252*/ { "loz",  252 },
290
    /*0253*/ { "ltz",  596 },
291
    /*0254*/ { "lua",  254 },
292
    /*0255*/ { "lub",  602 },
293
    /*0256*/ { "lug",  597 },
294
    /*0257*/ { "lui",  257 },
295
    /*0258*/ { "lun",  258 },
296
    /*0259*/ { "luo",  259 },
297
    /*0260*/ { "lus",  260 },
298
    /*0261*/ { "mac",  495 },
299
    /*0262*/ { "mad",  262 },
300
    /*0263*/ { "mag",  263 },
301
    /*0264*/ { "mah",  605 },
302
    /*0265*/ { "mai",  265 },
303
    /*0266*/ { "mak",  266 },
304
    /*0267*/ { "mal",  608 },
305
    /*0268*/ { "man",  268 },
306
    /*0269*/ { "mao",  496 },
307
    /*0270*/ { "map",  270 },
308
    /*0271*/ { "mar",  610 },
309
    /*0272*/ { "mas",  272 },
310
    /*0273*/ { "may",  497 },
311
    /*0274*/ { "mdf",  274 },
312
    /*0275*/ { "mdr",  275 },
313
    /*0276*/ { "men",  276 },
314
    /*0277*/ { "mga",  277 },
315
    /*0278*/ { "mic",  278 },
316
    /*0279*/ { "min",  279 },
317
    /*0280*/ { "mis",  280 },
318
    /*0281*/ { "mkh",  281 },
319
    /*0282*/ { "mlg",  604 },
320
    /*0283*/ { "mlt",  612 },
321
    /*0284*/ { "mnc",  284 },
322
    /*0285*/ { "mni",  285 },
323
    /*0286*/ { "mno",  286 },
324
    /*0287*/ { "moh",  287 },
325
    /*0288*/ { "mon",  609 },
326
    /*0289*/ { "mos",  289 },
327
    /*0290*/ { "mul",  290 },
328
    /*0291*/ { "mun",  291 },
329
    /*0292*/ { "mus",  292 },
330
    /*0293*/ { "mwl",  293 },
331
    /*0294*/ { "mwr",  294 },
332
    /*0295*/ { "myn",  295 },
333
    /*0296*/ { "myv",  296 },
334
    /*0297*/ { "nah",  297 },
335
    /*0298*/ { "nai",  298 },
336
    /*0299*/ { "nap",  299 },
337
    /*0300*/ { "nau",  614 },
338
    /*0301*/ { "nav",  623 },
339
    /*0302*/ { "nbl",  622 },
340
    /*0303*/ { "nde",  616 },
341
    /*0304*/ { "ndo",  618 },
342
    /*0305*/ { "nds",  305 },
343
    /*0306*/ { "nep",  617 },
344
    /*0307*/ { "new",  307 },
345
    /*0308*/ { "nia",  308 },
346
    /*0309*/ { "nic",  309 },
347
    /*0310*/ { "niu",  310 },
348
    /*0311*/ { "nno",  620 },
349
    /*0312*/ { "nob",  615 },
350
    /*0313*/ { "nog",  313 },
351
    /*0314*/ { "non",  314 },
352
    /*0315*/ { "nor",  621 },
353
    /*0316*/ { "nqo",  316 },
354
    /*0317*/ { "nso",  317 },
355
    /*0318*/ { "nub",  318 },
356
    /*0319*/ { "nwc",  319 },
357
    /*0320*/ { "nya",  624 },
358
    /*0321*/ { "nym",  321 },
359
    /*0322*/ { "nyn",  322 },
360
    /*0323*/ { "nyo",  323 },
361
    /*0324*/ { "nzi",  324 },
362
    /*0325*/ { "oci",  625 },
363
    /*0326*/ { "oji",  626 },
364
    /*0327*/ { "ori",  628 },
365
    /*0328*/ { "orm",  627 },
366
    /*0329*/ { "osa",  329 },
367
    /*0330*/ { "oss",  629 },
368
    /*0331*/ { "ota",  331 },
369
    /*0332*/ { "oto",  332 },
370
    /*0333*/ { "paa",  333 },
371
    /*0334*/ { "pag",  334 },
372
    /*0335*/ { "pal",  335 },
373
    /*0336*/ { "pam",  336 },
374
    /*0337*/ { "pan",  630 },
375
    /*0338*/ { "pap",  338 },
376
    /*0339*/ { "pau",  339 },
377
    /*0340*/ { "peo",  340 },
378
    /*0341*/ { "per",  490 },
379
    /*0342*/ { "phi",  342 },
380
    /*0343*/ { "phn",  343 },
381
    /*0344*/ { "pli",  631 },
382
    /*0345*/ { "pol",  632 },
383
    /*0346*/ { "pon",  346 },
384
    /*0347*/ { "por",  634 },
385
    /*0348*/ { "pra",  348 },
386
    /*0349*/ { "pro",  349 },
387
    /*0350*/ { "pus",  633 },
388
    /*0351*/ { "que",  635 },
389
    /*0352*/ { "raj",  352 },
390
    /*0353*/ { "rap",  353 },
391
    /*0354*/ { "rar",  354 },
392
    /*0355*/ { "roa",  355 },
393
    /*0356*/ { "roh",  636 },
394
    /*0357*/ { "rom",  357 },
395
    /*0358*/ { "rum",  500 },
396
    /*0359*/ { "run",  637 },
397
    /*0360*/ { "rup",  360 },
398
    /*0361*/ { "rus",  639 },
399
    /*0362*/ { "sad",  362 },
400
    /*0363*/ { "sag",  645 },
401
    /*0364*/ { "sah",  364 },
402
    /*0365*/ { "sai",  365 },
403
    /*0366*/ { "sal",  366 },
404
    /*0367*/ { "sam",  367 },
405
    /*0368*/ { "san",  641 },
406
    /*0369*/ { "sas",  369 },
407
    /*0370*/ { "sat",  370 },
408
    /*0371*/ { "scn",  371 },
409
    /*0372*/ { "sco",  372 },
410
    /*0373*/ { "sel",  373 },
411
    /*0374*/ { "sem",  374 },
412
    /*0375*/ { "sga",  375 },
413
    /*0376*/ { "sgn",  376 },
414
    /*0377*/ { "shn",  377 },
415
    /*0378*/ { "sid",  378 },
416
    /*0379*/ { "sin",  646 },
417
    /*0380*/ { "sio",  380 },
418
    /*0381*/ { "sit",  381 },
419
    /*0382*/ { "sla",  382 },
420
    /*0383*/ { "slo",  501 },
421
    /*0384*/ { "slv",  648 },
422
    /*0385*/ { "sma",  385 },
423
    /*0386*/ { "sme",  644 },
424
    /*0387*/ { "smi",  387 },
425
    /*0388*/ { "smj",  388 },
426
    /*0389*/ { "smn",  389 },
427
    /*0390*/ { "smo",  649 },
428
    /*0391*/ { "sms",  391 },
429
    /*0392*/ { "sna",  650 },
430
    /*0393*/ { "snd",  643 },
431
    /*0394*/ { "snk",  394 },
432
    /*0395*/ { "sog",  395 },
433
    /*0396*/ { "som",  651 },
434
    /*0397*/ { "son",  397 },
435
    /*0398*/ { "sot",  655 },
436
    /*0399*/ { "spa",  543 },
437
    /*0400*/ { "srd",  642 },
438
    /*0401*/ { "srn",  401 },
439
    /*0402*/ { "srp",  653 },
440
    /*0403*/ { "srr",  403 },
441
    /*0404*/ { "ssa",  404 },
442
    /*0405*/ { "ssw",  654 },
443
    /*0406*/ { "suk",  406 },
444
    /*0407*/ { "sun",  656 },
445
    /*0408*/ { "sus",  408 },
446
    /*0409*/ { "sux",  409 },
447
    /*0410*/ { "swa",  658 },
448
    /*0411*/ { "swe",  657 },
449
    /*0412*/ { "syc",  412 },
450
    /*0413*/ { "syr",  413 },
451
    /*0414*/ { "tah",  672 },
452
    /*0415*/ { "tai",  415 },
453
    /*0416*/ { "tam",  659 },
454
    /*0417*/ { "tat",  670 },
455
    /*0418*/ { "tel",  660 },
456
    /*0419*/ { "tem",  419 },
457
    /*0420*/ { "ter",  420 },
458
    /*0421*/ { "tet",  421 },
459
    /*0422*/ { "tgk",  661 },
460
    /*0423*/ { "tgl",  665 },
461
    /*0424*/ { "tha",  662 },
462
    /*0425*/ { "tib",  484 },
463
    /*0426*/ { "tig",  426 },
464
    /*0427*/ { "tir",  663 },
465
    /*0428*/ { "tiv",  428 },
466
    /*0429*/ { "tkl",  429 },
467
    /*0430*/ { "tlh",  430 },
468
    /*0431*/ { "tli",  431 },
469
    /*0432*/ { "tmh",  432 },
470
    /*0433*/ { "tog",  433 },
471
    /*0434*/ { "ton",  667 },
472
    /*0435*/ { "tpi",  435 },
473
    /*0436*/ { "tsi",  436 },
474
    /*0437*/ { "tsn",  666 },
475
    /*0438*/ { "tso",  669 },
476
    /*0439*/ { "tuk",  664 },
477
    /*0440*/ { "tum",  440 },
478
    /*0441*/ { "tup",  441 },
479
    /*0442*/ { "tur",  668 },
480
    /*0443*/ { "tut",  443 },
481
    /*0444*/ { "tvl",  444 },
482
    /*0445*/ { "twi",  671 },
483
    /*0446*/ { "tyv",  446 },
484
    /*0447*/ { "udm",  447 },
485
    /*0448*/ { "uga",  448 },
486
    /*0449*/ { "uig",  673 },
487
    /*0450*/ { "ukr",  674 },
488
    /*0451*/ { "umb",  451 },
489
    /*0452*/ { "und",  452 },
490
    /*0453*/ { "urd",  675 },
491
    /*0454*/ { "uzb",  676 },
492
    /*0455*/ { "vai",  455 },
493
    /*0456*/ { "ven",  677 },
494
    /*0457*/ { "vie",  678 },
495
    /*0458*/ { "vol",  679 },
496
    /*0459*/ { "vot",  459 },
497
    /*0460*/ { "wak",  460 },
498
    /*0461*/ { "wal",  461 },
499
    /*0462*/ { "war",  462 },
500
    /*0463*/ { "was",  463 },
501
    /*0464*/ { "wel",  486 },
502
    /*0465*/ { "wen",  465 },
503
    /*0466*/ { "wln",  680 },
504
    /*0467*/ { "wol",  681 },
505
    /*0468*/ { "xal",  468 },
506
    /*0469*/ { "xho",  682 },
507
    /*0470*/ { "yao",  470 },
508
    /*0471*/ { "yap",  471 },
509
    /*0472*/ { "yid",  683 },
510
    /*0473*/ { "yor",  684 },
511
    /*0474*/ { "ypk",  474 },
512
    /*0475*/ { "zap",  475 },
513
    /*0476*/ { "zbl",  476 },
514
    /*0477*/ { "zen",  477 },
515
    /*0478*/ { "zha",  685 },
516
    /*0479*/ { "znd",  479 },
517
    /*0480*/ { "zul",  687 },
518
    /*0481*/ { "zun",  481 },
519
    /*0482*/ { "zxx",  482 },
520
    /*0483*/ { "zza",  483 },
521
    /*----- AV_LANG_ISO639_2_TERM entries (20) -----*/
522
    /*0484*/ { "bod",  523 },
523
    /*0485*/ { "ces",  531 },
524
    /*0486*/ { "cym",  534 },
525
    /*0487*/ { "deu",  536 },
526
    /*0488*/ { "ell",  540 },
527
    /*0489*/ { "eus",  545 },
528
    /*0490*/ { "fas",  546 },
529
    /*0491*/ { "fra",  551 },
530
    /*0492*/ { "hye",  566 },
531
    /*0493*/ { "isl",  575 },
532
    /*0494*/ { "kat",  580 },
533
    /*0495*/ { "mkd",  607 },
534
    /*0496*/ { "mri",  606 },
535
    /*0497*/ { "msa",  611 },
536
    /*0498*/ { "mya",  613 },
537
    /*0499*/ { "nld",  619 },
538
    /*0500*/ { "ron",  638 },
539
    /*0501*/ { "slk",  647 },
540
    /*0502*/ { "sqi",  652 },
541
    /*0503*/ { "zho",  686 },
542
    /*----- AV_LANG_ISO639_1 entries (184) -----*/
543
    /*0504*/ { "aa" ,    0 },
544
    /*0505*/ { "ab" ,    1 },
545
    /*0506*/ { "ae" ,   33 },
546
    /*0507*/ { "af" ,    8 },
547
    /*0508*/ { "ak" ,   10 },
548
    /*0509*/ { "am" ,   16 },
549
    /*0510*/ { "an" ,   22 },
550
    /*0511*/ { "ar" ,   20 },
551
    /*0512*/ { "as" ,   28 },
552
    /*0513*/ { "av" ,   32 },
553
    /*0514*/ { "ay" ,   35 },
554
    /*0515*/ { "az" ,   36 },
555
    /*0516*/ { "ba" ,   39 },
556
    /*0517*/ { "be" ,   47 },
557
    /*0518*/ { "bg" ,   64 },
558
    /*0519*/ { "bh" ,   52 },
559
    /*0520*/ { "bi" ,   55 },
560
    /*0521*/ { "bm" ,   41 },
561
    /*0522*/ { "bn" ,   49 },
562
    /*0523*/ { "bo" ,  425 },
563
    /*0524*/ { "br" ,   60 },
564
    /*0525*/ { "bs" ,   58 },
565
    /*0526*/ { "ca" ,   70 },
566
    /*0527*/ { "ce" ,   76 },
567
    /*0528*/ { "ch" ,   74 },
568
    /*0529*/ { "co" ,   91 },
569
    /*0530*/ { "cr" ,   95 },
570
    /*0531*/ { "cs" ,  100 },
571
    /*0532*/ { "cu" ,   85 },
572
    /*0533*/ { "cv" ,   86 },
573
    /*0534*/ { "cy" ,  464 },
574
    /*0535*/ { "da" ,  102 },
575
    /*0536*/ { "de" ,  149 },
576
    /*0537*/ { "dv" ,  109 },
577
    /*0538*/ { "dz" ,  117 },
578
    /*0539*/ { "ee" ,  126 },
579
    /*0540*/ { "el" ,  163 },
580
    /*0541*/ { "en" ,  122 },
581
    /*0542*/ { "eo" ,  124 },
582
    /*0543*/ { "es" ,  399 },
583
    /*0544*/ { "et" ,  125 },
584
    /*0545*/ { "eu" ,   43 },
585
    /*0546*/ { "fa" ,  341 },
586
    /*0547*/ { "ff" ,  142 },
587
    /*0548*/ { "fi" ,  133 },
588
    /*0549*/ { "fj" ,  131 },
589
    /*0550*/ { "fo" ,  129 },
590
    /*0551*/ { "fr" ,  136 },
591
    /*0552*/ { "fy" ,  141 },
592
    /*0553*/ { "ga" ,  153 },
593
    /*0554*/ { "gd" ,  152 },
594
    /*0555*/ { "gl" ,  154 },
595
    /*0556*/ { "gn" ,  164 },
596
    /*0557*/ { "gu" ,  166 },
597
    /*0558*/ { "gv" ,  155 },
598
    /*0559*/ { "ha" ,  170 },
599
    /*0560*/ { "he" ,  172 },
600
    /*0561*/ { "hi" ,  176 },
601
    /*0562*/ { "ho" ,  179 },
602
    /*0563*/ { "hr" ,  180 },
603
    /*0564*/ { "ht" ,  169 },
604
    /*0565*/ { "hu" ,  182 },
605
    /*0566*/ { "hy" ,   23 },
606
    /*0567*/ { "hz" ,  173 },
607
    /*0568*/ { "ia" ,  193 },
608
    /*0569*/ { "id" ,  195 },
609
    /*0570*/ { "ie" ,  191 },
610
    /*0571*/ { "ig" ,  185 },
611
    /*0572*/ { "ii" ,  188 },
612
    /*0573*/ { "ik" ,  198 },
613
    /*0574*/ { "io" ,  187 },
614
    /*0575*/ { "is" ,  186 },
615
    /*0576*/ { "it" ,  201 },
616
    /*0577*/ { "iu" ,  190 },
617
    /*0578*/ { "ja" ,  204 },
618
    /*0579*/ { "jv" ,  202 },
619
    /*0580*/ { "ka" ,  148 },
620
    /*0581*/ { "kg" ,  229 },
621
    /*0582*/ { "ki" ,  223 },
622
    /*0583*/ { "kj" ,  237 },
623
    /*0584*/ { "kk" ,  217 },
624
    /*0585*/ { "kl" ,  210 },
625
    /*0586*/ { "km" ,  221 },
626
    /*0587*/ { "kn" ,  212 },
627
    /*0588*/ { "ko" ,  230 },
628
    /*0589*/ { "kr" ,  215 },
629
    /*0590*/ { "ks" ,  214 },
630
    /*0591*/ { "ku" ,  239 },
631
    /*0592*/ { "kv" ,  228 },
632
    /*0593*/ { "kw" ,   90 },
633
    /*0594*/ { "ky" ,  225 },
634
    /*0595*/ { "la" ,  245 },
635
    /*0596*/ { "lb" ,  253 },
636
    /*0597*/ { "lg" ,  256 },
637
    /*0598*/ { "li" ,  248 },
638
    /*0599*/ { "ln" ,  249 },
639
    /*0600*/ { "lo" ,  244 },
640
    /*0601*/ { "lt" ,  250 },
641
    /*0602*/ { "lu" ,  255 },
642
    /*0603*/ { "lv" ,  246 },
643
    /*0604*/ { "mg" ,  282 },
644
    /*0605*/ { "mh" ,  264 },
645
    /*0606*/ { "mi" ,  269 },
646
    /*0607*/ { "mk" ,  261 },
647
    /*0608*/ { "ml" ,  267 },
648
    /*0609*/ { "mn" ,  288 },
649
    /*0610*/ { "mr" ,  271 },
650
    /*0611*/ { "ms" ,  273 },
651
    /*0612*/ { "mt" ,  283 },
652
    /*0613*/ { "my" ,   65 },
653
    /*0614*/ { "na" ,  300 },
654
    /*0615*/ { "nb" ,  312 },
655
    /*0616*/ { "nd" ,  303 },
656
    /*0617*/ { "ne" ,  306 },
657
    /*0618*/ { "ng" ,  304 },
658
    /*0619*/ { "nl" ,  115 },
659
    /*0620*/ { "nn" ,  311 },
660
    /*0621*/ { "no" ,  315 },
661
    /*0622*/ { "nr" ,  302 },
662
    /*0623*/ { "nv" ,  301 },
663
    /*0624*/ { "ny" ,  320 },
664
    /*0625*/ { "oc" ,  325 },
665
    /*0626*/ { "oj" ,  326 },
666
    /*0627*/ { "om" ,  328 },
667
    /*0628*/ { "or" ,  327 },
668
    /*0629*/ { "os" ,  330 },
669
    /*0630*/ { "pa" ,  337 },
670
    /*0631*/ { "pi" ,  344 },
671
    /*0632*/ { "pl" ,  345 },
672
    /*0633*/ { "ps" ,  350 },
673
    /*0634*/ { "pt" ,  347 },
674
    /*0635*/ { "qu" ,  351 },
675
    /*0636*/ { "rm" ,  356 },
676
    /*0637*/ { "rn" ,  359 },
677
    /*0638*/ { "ro" ,  358 },
678
    /*0639*/ { "ru" ,  361 },
679
    /*0640*/ { "rw" ,  224 },
680
    /*0641*/ { "sa" ,  368 },
681
    /*0642*/ { "sc" ,  400 },
682
    /*0643*/ { "sd" ,  393 },
683
    /*0644*/ { "se" ,  386 },
684
    /*0645*/ { "sg" ,  363 },
685
    /*0646*/ { "si" ,  379 },
686
    /*0647*/ { "sk" ,  383 },
687
    /*0648*/ { "sl" ,  384 },
688
    /*0649*/ { "sm" ,  390 },
689
    /*0650*/ { "sn" ,  392 },
690
    /*0651*/ { "so" ,  396 },
691
    /*0652*/ { "sq" ,   12 },
692
    /*0653*/ { "sr" ,  402 },
693
    /*0654*/ { "ss" ,  405 },
694
    /*0655*/ { "st" ,  398 },
695
    /*0656*/ { "su" ,  407 },
696
    /*0657*/ { "sv" ,  411 },
697
    /*0658*/ { "sw" ,  410 },
698
    /*0659*/ { "ta" ,  416 },
699
    /*0660*/ { "te" ,  418 },
700
    /*0661*/ { "tg" ,  422 },
701
    /*0662*/ { "th" ,  424 },
702
    /*0663*/ { "ti" ,  427 },
703
    /*0664*/ { "tk" ,  439 },
704
    /*0665*/ { "tl" ,  423 },
705
    /*0666*/ { "tn" ,  437 },
706
    /*0667*/ { "to" ,  434 },
707
    /*0668*/ { "tr" ,  442 },
708
    /*0669*/ { "ts" ,  438 },
709
    /*0670*/ { "tt" ,  417 },
710
    /*0671*/ { "tw" ,  445 },
711
    /*0672*/ { "ty" ,  414 },
712
    /*0673*/ { "ug" ,  449 },
713
    /*0674*/ { "uk" ,  450 },
714
    /*0675*/ { "ur" ,  453 },
715
    /*0676*/ { "uz" ,  454 },
716
    /*0677*/ { "ve" ,  456 },
717
    /*0678*/ { "vi" ,  457 },
718
    /*0679*/ { "vo" ,  458 },
719
    /*0680*/ { "wa" ,  466 },
720
    /*0681*/ { "wo" ,  467 },
721
    /*0682*/ { "xh" ,  469 },
722
    /*0683*/ { "yi" ,  472 },
723
    /*0684*/ { "yo" ,  473 },
724
    /*0685*/ { "za" ,  478 },
725
    /*0686*/ { "zh" ,   78 },
726
    /*0687*/ { "zu" ,  480 },
727
    { "", 0 }
728
};
729

    
730
static int lang_table_compare(const void *lhs, const void *rhs)
731
{
732
    return strcmp(lhs, ((const LangEntry *)rhs)->str);
733
}
734

    
735
const char *av_convert_lang_to(const char *lang, enum AVLangCodespace target_codespace)
736
{
737
    int i;
738
    const LangEntry *entry = NULL;
739
    const int NB_CODESPACES = sizeof(lang_table_counts)/sizeof(*lang_table_counts);
740

    
741
    if (target_codespace >= NB_CODESPACES)
742
        return NULL;
743

    
744
    for (i=0; !entry && i<NB_CODESPACES; i++)
745
        entry = bsearch(lang,
746
                        lang_table + lang_table_offsets[i],
747
                        lang_table_counts[i],
748
                        sizeof(LangEntry),
749
                        lang_table_compare);
750
    if (!entry)
751
        return NULL;
752

    
753
    for (i=0; i<NB_CODESPACES; i++)
754
        if (entry >= lang_table + lang_table_offsets[target_codespace] &&
755
            entry < lang_table + lang_table_offsets[target_codespace] + lang_table_counts[target_codespace])
756
            return entry->str;
757
        else
758
            entry = lang_table + entry->next_equivalent;
759

    
760
    if (target_codespace == AV_LANG_ISO639_2_TERM)
761
        return av_convert_lang_to(lang, AV_LANG_ISO639_2_BIBL);
762

    
763
    return NULL;
764
}