Libav
|
00001 /* 00002 * Cyril Comparon, Larbi Joubala, Resonate-MP4 2009 00003 * 00004 * This file is part of FFmpeg. 00005 * 00006 * FFmpeg is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * FFmpeg is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with FFmpeg; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 */ 00020 00021 #include "avlanguage.h" 00022 #include "libavutil/avstring.h" 00023 #include <stdlib.h> 00024 #include <stdint.h> 00025 #include <string.h> 00026 00027 typedef struct LangEntry { 00028 const char str[4]; 00029 uint16_t next_equivalent; 00030 } LangEntry; 00031 00032 static const uint16_t lang_table_counts[] = { 484, 20, 184 }; 00033 static const uint16_t lang_table_offsets[] = { 0, 484, 504 }; 00034 00035 static const LangEntry lang_table[] = { 00036 /*----- AV_LANG_ISO639_2_BIBL entries (484) -----*/ 00037 /*0000*/ { "aar", 504 }, 00038 /*0001*/ { "abk", 505 }, 00039 /*0002*/ { "ace", 2 }, 00040 /*0003*/ { "ach", 3 }, 00041 /*0004*/ { "ada", 4 }, 00042 /*0005*/ { "ady", 5 }, 00043 /*0006*/ { "afa", 6 }, 00044 /*0007*/ { "afh", 7 }, 00045 /*0008*/ { "afr", 507 }, 00046 /*0009*/ { "ain", 9 }, 00047 /*0010*/ { "aka", 508 }, 00048 /*0011*/ { "akk", 11 }, 00049 /*0012*/ { "alb", 502 }, 00050 /*0013*/ { "ale", 13 }, 00051 /*0014*/ { "alg", 14 }, 00052 /*0015*/ { "alt", 15 }, 00053 /*0016*/ { "amh", 509 }, 00054 /*0017*/ { "ang", 17 }, 00055 /*0018*/ { "anp", 18 }, 00056 /*0019*/ { "apa", 19 }, 00057 /*0020*/ { "ara", 511 }, 00058 /*0021*/ { "arc", 21 }, 00059 /*0022*/ { "arg", 510 }, 00060 /*0023*/ { "arm", 492 }, 00061 /*0024*/ { "arn", 24 }, 00062 /*0025*/ { "arp", 25 }, 00063 /*0026*/ { "art", 26 }, 00064 /*0027*/ { "arw", 27 }, 00065 /*0028*/ { "asm", 512 }, 00066 /*0029*/ { "ast", 29 }, 00067 /*0030*/ { "ath", 30 }, 00068 /*0031*/ { "aus", 31 }, 00069 /*0032*/ { "ava", 513 }, 00070 /*0033*/ { "ave", 506 }, 00071 /*0034*/ { "awa", 34 }, 00072 /*0035*/ { "aym", 514 }, 00073 /*0036*/ { "aze", 515 }, 00074 /*0037*/ { "bad", 37 }, 00075 /*0038*/ { "bai", 38 }, 00076 /*0039*/ { "bak", 516 }, 00077 /*0040*/ { "bal", 40 }, 00078 /*0041*/ { "bam", 521 }, 00079 /*0042*/ { "ban", 42 }, 00080 /*0043*/ { "baq", 489 }, 00081 /*0044*/ { "bas", 44 }, 00082 /*0045*/ { "bat", 45 }, 00083 /*0046*/ { "bej", 46 }, 00084 /*0047*/ { "bel", 517 }, 00085 /*0048*/ { "bem", 48 }, 00086 /*0049*/ { "ben", 522 }, 00087 /*0050*/ { "ber", 50 }, 00088 /*0051*/ { "bho", 51 }, 00089 /*0052*/ { "bih", 519 }, 00090 /*0053*/ { "bik", 53 }, 00091 /*0054*/ { "bin", 54 }, 00092 /*0055*/ { "bis", 520 }, 00093 /*0056*/ { "bla", 56 }, 00094 /*0057*/ { "bnt", 57 }, 00095 /*0058*/ { "bos", 525 }, 00096 /*0059*/ { "bra", 59 }, 00097 /*0060*/ { "bre", 524 }, 00098 /*0061*/ { "btk", 61 }, 00099 /*0062*/ { "bua", 62 }, 00100 /*0063*/ { "bug", 63 }, 00101 /*0064*/ { "bul", 518 }, 00102 /*0065*/ { "bur", 498 }, 00103 /*0066*/ { "byn", 66 }, 00104 /*0067*/ { "cad", 67 }, 00105 /*0068*/ { "cai", 68 }, 00106 /*0069*/ { "car", 69 }, 00107 /*0070*/ { "cat", 526 }, 00108 /*0071*/ { "cau", 71 }, 00109 /*0072*/ { "ceb", 72 }, 00110 /*0073*/ { "cel", 73 }, 00111 /*0074*/ { "cha", 528 }, 00112 /*0075*/ { "chb", 75 }, 00113 /*0076*/ { "che", 527 }, 00114 /*0077*/ { "chg", 77 }, 00115 /*0078*/ { "chi", 503 }, 00116 /*0079*/ { "chk", 79 }, 00117 /*0080*/ { "chm", 80 }, 00118 /*0081*/ { "chn", 81 }, 00119 /*0082*/ { "cho", 82 }, 00120 /*0083*/ { "chp", 83 }, 00121 /*0084*/ { "chr", 84 }, 00122 /*0085*/ { "chu", 532 }, 00123 /*0086*/ { "chv", 533 }, 00124 /*0087*/ { "chy", 87 }, 00125 /*0088*/ { "cmc", 88 }, 00126 /*0089*/ { "cop", 89 }, 00127 /*0090*/ { "cor", 593 }, 00128 /*0091*/ { "cos", 529 }, 00129 /*0092*/ { "cpe", 92 }, 00130 /*0093*/ { "cpf", 93 }, 00131 /*0094*/ { "cpp", 94 }, 00132 /*0095*/ { "cre", 530 }, 00133 /*0096*/ { "crh", 96 }, 00134 /*0097*/ { "crp", 97 }, 00135 /*0098*/ { "csb", 98 }, 00136 /*0099*/ { "cus", 99 }, 00137 /*0100*/ { "cze", 485 }, 00138 /*0101*/ { "dak", 101 }, 00139 /*0102*/ { "dan", 535 }, 00140 /*0103*/ { "dar", 103 }, 00141 /*0104*/ { "day", 104 }, 00142 /*0105*/ { "del", 105 }, 00143 /*0106*/ { "den", 106 }, 00144 /*0107*/ { "dgr", 107 }, 00145 /*0108*/ { "din", 108 }, 00146 /*0109*/ { "div", 537 }, 00147 /*0110*/ { "doi", 110 }, 00148 /*0111*/ { "dra", 111 }, 00149 /*0112*/ { "dsb", 112 }, 00150 /*0113*/ { "dua", 113 }, 00151 /*0114*/ { "dum", 114 }, 00152 /*0115*/ { "dut", 499 }, 00153 /*0116*/ { "dyu", 116 }, 00154 /*0117*/ { "dzo", 538 }, 00155 /*0118*/ { "efi", 118 }, 00156 /*0119*/ { "egy", 119 }, 00157 /*0120*/ { "eka", 120 }, 00158 /*0121*/ { "elx", 121 }, 00159 /*0122*/ { "eng", 541 }, 00160 /*0123*/ { "enm", 123 }, 00161 /*0124*/ { "epo", 542 }, 00162 /*0125*/ { "est", 544 }, 00163 /*0126*/ { "ewe", 539 }, 00164 /*0127*/ { "ewo", 127 }, 00165 /*0128*/ { "fan", 128 }, 00166 /*0129*/ { "fao", 550 }, 00167 /*0130*/ { "fat", 130 }, 00168 /*0131*/ { "fij", 549 }, 00169 /*0132*/ { "fil", 132 }, 00170 /*0133*/ { "fin", 548 }, 00171 /*0134*/ { "fiu", 134 }, 00172 /*0135*/ { "fon", 135 }, 00173 /*0136*/ { "fre", 491 }, 00174 /*0137*/ { "frm", 137 }, 00175 /*0138*/ { "fro", 138 }, 00176 /*0139*/ { "frr", 139 }, 00177 /*0140*/ { "frs", 140 }, 00178 /*0141*/ { "fry", 552 }, 00179 /*0142*/ { "ful", 547 }, 00180 /*0143*/ { "fur", 143 }, 00181 /*0144*/ { "gaa", 144 }, 00182 /*0145*/ { "gay", 145 }, 00183 /*0146*/ { "gba", 146 }, 00184 /*0147*/ { "gem", 147 }, 00185 /*0148*/ { "geo", 494 }, 00186 /*0149*/ { "ger", 487 }, 00187 /*0150*/ { "gez", 150 }, 00188 /*0151*/ { "gil", 151 }, 00189 /*0152*/ { "gla", 554 }, 00190 /*0153*/ { "gle", 553 }, 00191 /*0154*/ { "glg", 555 }, 00192 /*0155*/ { "glv", 558 }, 00193 /*0156*/ { "gmh", 156 }, 00194 /*0157*/ { "goh", 157 }, 00195 /*0158*/ { "gon", 158 }, 00196 /*0159*/ { "gor", 159 }, 00197 /*0160*/ { "got", 160 }, 00198 /*0161*/ { "grb", 161 }, 00199 /*0162*/ { "grc", 162 }, 00200 /*0163*/ { "gre", 488 }, 00201 /*0164*/ { "grn", 556 }, 00202 /*0165*/ { "gsw", 165 }, 00203 /*0166*/ { "guj", 557 }, 00204 /*0167*/ { "gwi", 167 }, 00205 /*0168*/ { "hai", 168 }, 00206 /*0169*/ { "hat", 564 }, 00207 /*0170*/ { "hau", 559 }, 00208 /*0171*/ { "haw", 171 }, 00209 /*0172*/ { "heb", 560 }, 00210 /*0173*/ { "her", 567 }, 00211 /*0174*/ { "hil", 174 }, 00212 /*0175*/ { "him", 175 }, 00213 /*0176*/ { "hin", 561 }, 00214 /*0177*/ { "hit", 177 }, 00215 /*0178*/ { "hmn", 178 }, 00216 /*0179*/ { "hmo", 562 }, 00217 /*0180*/ { "hrv", 563 }, 00218 /*0181*/ { "hsb", 181 }, 00219 /*0182*/ { "hun", 565 }, 00220 /*0183*/ { "hup", 183 }, 00221 /*0184*/ { "iba", 184 }, 00222 /*0185*/ { "ibo", 571 }, 00223 /*0186*/ { "ice", 493 }, 00224 /*0187*/ { "ido", 574 }, 00225 /*0188*/ { "iii", 572 }, 00226 /*0189*/ { "ijo", 189 }, 00227 /*0190*/ { "iku", 577 }, 00228 /*0191*/ { "ile", 570 }, 00229 /*0192*/ { "ilo", 192 }, 00230 /*0193*/ { "ina", 568 }, 00231 /*0194*/ { "inc", 194 }, 00232 /*0195*/ { "ind", 569 }, 00233 /*0196*/ { "ine", 196 }, 00234 /*0197*/ { "inh", 197 }, 00235 /*0198*/ { "ipk", 573 }, 00236 /*0199*/ { "ira", 199 }, 00237 /*0200*/ { "iro", 200 }, 00238 /*0201*/ { "ita", 576 }, 00239 /*0202*/ { "jav", 579 }, 00240 /*0203*/ { "jbo", 203 }, 00241 /*0204*/ { "jpn", 578 }, 00242 /*0205*/ { "jpr", 205 }, 00243 /*0206*/ { "jrb", 206 }, 00244 /*0207*/ { "kaa", 207 }, 00245 /*0208*/ { "kab", 208 }, 00246 /*0209*/ { "kac", 209 }, 00247 /*0210*/ { "kal", 585 }, 00248 /*0211*/ { "kam", 211 }, 00249 /*0212*/ { "kan", 587 }, 00250 /*0213*/ { "kar", 213 }, 00251 /*0214*/ { "kas", 590 }, 00252 /*0215*/ { "kau", 589 }, 00253 /*0216*/ { "kaw", 216 }, 00254 /*0217*/ { "kaz", 584 }, 00255 /*0218*/ { "kbd", 218 }, 00256 /*0219*/ { "kha", 219 }, 00257 /*0220*/ { "khi", 220 }, 00258 /*0221*/ { "khm", 586 }, 00259 /*0222*/ { "kho", 222 }, 00260 /*0223*/ { "kik", 582 }, 00261 /*0224*/ { "kin", 640 }, 00262 /*0225*/ { "kir", 594 }, 00263 /*0226*/ { "kmb", 226 }, 00264 /*0227*/ { "kok", 227 }, 00265 /*0228*/ { "kom", 592 }, 00266 /*0229*/ { "kon", 581 }, 00267 /*0230*/ { "kor", 588 }, 00268 /*0231*/ { "kos", 231 }, 00269 /*0232*/ { "kpe", 232 }, 00270 /*0233*/ { "krc", 233 }, 00271 /*0234*/ { "krl", 234 }, 00272 /*0235*/ { "kro", 235 }, 00273 /*0236*/ { "kru", 236 }, 00274 /*0237*/ { "kua", 583 }, 00275 /*0238*/ { "kum", 238 }, 00276 /*0239*/ { "kur", 591 }, 00277 /*0240*/ { "kut", 240 }, 00278 /*0241*/ { "lad", 241 }, 00279 /*0242*/ { "lah", 242 }, 00280 /*0243*/ { "lam", 243 }, 00281 /*0244*/ { "lao", 600 }, 00282 /*0245*/ { "lat", 595 }, 00283 /*0246*/ { "lav", 603 }, 00284 /*0247*/ { "lez", 247 }, 00285 /*0248*/ { "lim", 598 }, 00286 /*0249*/ { "lin", 599 }, 00287 /*0250*/ { "lit", 601 }, 00288 /*0251*/ { "lol", 251 }, 00289 /*0252*/ { "loz", 252 }, 00290 /*0253*/ { "ltz", 596 }, 00291 /*0254*/ { "lua", 254 }, 00292 /*0255*/ { "lub", 602 }, 00293 /*0256*/ { "lug", 597 }, 00294 /*0257*/ { "lui", 257 }, 00295 /*0258*/ { "lun", 258 }, 00296 /*0259*/ { "luo", 259 }, 00297 /*0260*/ { "lus", 260 }, 00298 /*0261*/ { "mac", 495 }, 00299 /*0262*/ { "mad", 262 }, 00300 /*0263*/ { "mag", 263 }, 00301 /*0264*/ { "mah", 605 }, 00302 /*0265*/ { "mai", 265 }, 00303 /*0266*/ { "mak", 266 }, 00304 /*0267*/ { "mal", 608 }, 00305 /*0268*/ { "man", 268 }, 00306 /*0269*/ { "mao", 496 }, 00307 /*0270*/ { "map", 270 }, 00308 /*0271*/ { "mar", 610 }, 00309 /*0272*/ { "mas", 272 }, 00310 /*0273*/ { "may", 497 }, 00311 /*0274*/ { "mdf", 274 }, 00312 /*0275*/ { "mdr", 275 }, 00313 /*0276*/ { "men", 276 }, 00314 /*0277*/ { "mga", 277 }, 00315 /*0278*/ { "mic", 278 }, 00316 /*0279*/ { "min", 279 }, 00317 /*0280*/ { "mis", 280 }, 00318 /*0281*/ { "mkh", 281 }, 00319 /*0282*/ { "mlg", 604 }, 00320 /*0283*/ { "mlt", 612 }, 00321 /*0284*/ { "mnc", 284 }, 00322 /*0285*/ { "mni", 285 }, 00323 /*0286*/ { "mno", 286 }, 00324 /*0287*/ { "moh", 287 }, 00325 /*0288*/ { "mon", 609 }, 00326 /*0289*/ { "mos", 289 }, 00327 /*0290*/ { "mul", 290 }, 00328 /*0291*/ { "mun", 291 }, 00329 /*0292*/ { "mus", 292 }, 00330 /*0293*/ { "mwl", 293 }, 00331 /*0294*/ { "mwr", 294 }, 00332 /*0295*/ { "myn", 295 }, 00333 /*0296*/ { "myv", 296 }, 00334 /*0297*/ { "nah", 297 }, 00335 /*0298*/ { "nai", 298 }, 00336 /*0299*/ { "nap", 299 }, 00337 /*0300*/ { "nau", 614 }, 00338 /*0301*/ { "nav", 623 }, 00339 /*0302*/ { "nbl", 622 }, 00340 /*0303*/ { "nde", 616 }, 00341 /*0304*/ { "ndo", 618 }, 00342 /*0305*/ { "nds", 305 }, 00343 /*0306*/ { "nep", 617 }, 00344 /*0307*/ { "new", 307 }, 00345 /*0308*/ { "nia", 308 }, 00346 /*0309*/ { "nic", 309 }, 00347 /*0310*/ { "niu", 310 }, 00348 /*0311*/ { "nno", 620 }, 00349 /*0312*/ { "nob", 615 }, 00350 /*0313*/ { "nog", 313 }, 00351 /*0314*/ { "non", 314 }, 00352 /*0315*/ { "nor", 621 }, 00353 /*0316*/ { "nqo", 316 }, 00354 /*0317*/ { "nso", 317 }, 00355 /*0318*/ { "nub", 318 }, 00356 /*0319*/ { "nwc", 319 }, 00357 /*0320*/ { "nya", 624 }, 00358 /*0321*/ { "nym", 321 }, 00359 /*0322*/ { "nyn", 322 }, 00360 /*0323*/ { "nyo", 323 }, 00361 /*0324*/ { "nzi", 324 }, 00362 /*0325*/ { "oci", 625 }, 00363 /*0326*/ { "oji", 626 }, 00364 /*0327*/ { "ori", 628 }, 00365 /*0328*/ { "orm", 627 }, 00366 /*0329*/ { "osa", 329 }, 00367 /*0330*/ { "oss", 629 }, 00368 /*0331*/ { "ota", 331 }, 00369 /*0332*/ { "oto", 332 }, 00370 /*0333*/ { "paa", 333 }, 00371 /*0334*/ { "pag", 334 }, 00372 /*0335*/ { "pal", 335 }, 00373 /*0336*/ { "pam", 336 }, 00374 /*0337*/ { "pan", 630 }, 00375 /*0338*/ { "pap", 338 }, 00376 /*0339*/ { "pau", 339 }, 00377 /*0340*/ { "peo", 340 }, 00378 /*0341*/ { "per", 490 }, 00379 /*0342*/ { "phi", 342 }, 00380 /*0343*/ { "phn", 343 }, 00381 /*0344*/ { "pli", 631 }, 00382 /*0345*/ { "pol", 632 }, 00383 /*0346*/ { "pon", 346 }, 00384 /*0347*/ { "por", 634 }, 00385 /*0348*/ { "pra", 348 }, 00386 /*0349*/ { "pro", 349 }, 00387 /*0350*/ { "pus", 633 }, 00388 /*0351*/ { "que", 635 }, 00389 /*0352*/ { "raj", 352 }, 00390 /*0353*/ { "rap", 353 }, 00391 /*0354*/ { "rar", 354 }, 00392 /*0355*/ { "roa", 355 }, 00393 /*0356*/ { "roh", 636 }, 00394 /*0357*/ { "rom", 357 }, 00395 /*0358*/ { "rum", 500 }, 00396 /*0359*/ { "run", 637 }, 00397 /*0360*/ { "rup", 360 }, 00398 /*0361*/ { "rus", 639 }, 00399 /*0362*/ { "sad", 362 }, 00400 /*0363*/ { "sag", 645 }, 00401 /*0364*/ { "sah", 364 }, 00402 /*0365*/ { "sai", 365 }, 00403 /*0366*/ { "sal", 366 }, 00404 /*0367*/ { "sam", 367 }, 00405 /*0368*/ { "san", 641 }, 00406 /*0369*/ { "sas", 369 }, 00407 /*0370*/ { "sat", 370 }, 00408 /*0371*/ { "scn", 371 }, 00409 /*0372*/ { "sco", 372 }, 00410 /*0373*/ { "sel", 373 }, 00411 /*0374*/ { "sem", 374 }, 00412 /*0375*/ { "sga", 375 }, 00413 /*0376*/ { "sgn", 376 }, 00414 /*0377*/ { "shn", 377 }, 00415 /*0378*/ { "sid", 378 }, 00416 /*0379*/ { "sin", 646 }, 00417 /*0380*/ { "sio", 380 }, 00418 /*0381*/ { "sit", 381 }, 00419 /*0382*/ { "sla", 382 }, 00420 /*0383*/ { "slo", 501 }, 00421 /*0384*/ { "slv", 648 }, 00422 /*0385*/ { "sma", 385 }, 00423 /*0386*/ { "sme", 644 }, 00424 /*0387*/ { "smi", 387 }, 00425 /*0388*/ { "smj", 388 }, 00426 /*0389*/ { "smn", 389 }, 00427 /*0390*/ { "smo", 649 }, 00428 /*0391*/ { "sms", 391 }, 00429 /*0392*/ { "sna", 650 }, 00430 /*0393*/ { "snd", 643 }, 00431 /*0394*/ { "snk", 394 }, 00432 /*0395*/ { "sog", 395 }, 00433 /*0396*/ { "som", 651 }, 00434 /*0397*/ { "son", 397 }, 00435 /*0398*/ { "sot", 655 }, 00436 /*0399*/ { "spa", 543 }, 00437 /*0400*/ { "srd", 642 }, 00438 /*0401*/ { "srn", 401 }, 00439 /*0402*/ { "srp", 653 }, 00440 /*0403*/ { "srr", 403 }, 00441 /*0404*/ { "ssa", 404 }, 00442 /*0405*/ { "ssw", 654 }, 00443 /*0406*/ { "suk", 406 }, 00444 /*0407*/ { "sun", 656 }, 00445 /*0408*/ { "sus", 408 }, 00446 /*0409*/ { "sux", 409 }, 00447 /*0410*/ { "swa", 658 }, 00448 /*0411*/ { "swe", 657 }, 00449 /*0412*/ { "syc", 412 }, 00450 /*0413*/ { "syr", 413 }, 00451 /*0414*/ { "tah", 672 }, 00452 /*0415*/ { "tai", 415 }, 00453 /*0416*/ { "tam", 659 }, 00454 /*0417*/ { "tat", 670 }, 00455 /*0418*/ { "tel", 660 }, 00456 /*0419*/ { "tem", 419 }, 00457 /*0420*/ { "ter", 420 }, 00458 /*0421*/ { "tet", 421 }, 00459 /*0422*/ { "tgk", 661 }, 00460 /*0423*/ { "tgl", 665 }, 00461 /*0424*/ { "tha", 662 }, 00462 /*0425*/ { "tib", 484 }, 00463 /*0426*/ { "tig", 426 }, 00464 /*0427*/ { "tir", 663 }, 00465 /*0428*/ { "tiv", 428 }, 00466 /*0429*/ { "tkl", 429 }, 00467 /*0430*/ { "tlh", 430 }, 00468 /*0431*/ { "tli", 431 }, 00469 /*0432*/ { "tmh", 432 }, 00470 /*0433*/ { "tog", 433 }, 00471 /*0434*/ { "ton", 667 }, 00472 /*0435*/ { "tpi", 435 }, 00473 /*0436*/ { "tsi", 436 }, 00474 /*0437*/ { "tsn", 666 }, 00475 /*0438*/ { "tso", 669 }, 00476 /*0439*/ { "tuk", 664 }, 00477 /*0440*/ { "tum", 440 }, 00478 /*0441*/ { "tup", 441 }, 00479 /*0442*/ { "tur", 668 }, 00480 /*0443*/ { "tut", 443 }, 00481 /*0444*/ { "tvl", 444 }, 00482 /*0445*/ { "twi", 671 }, 00483 /*0446*/ { "tyv", 446 }, 00484 /*0447*/ { "udm", 447 }, 00485 /*0448*/ { "uga", 448 }, 00486 /*0449*/ { "uig", 673 }, 00487 /*0450*/ { "ukr", 674 }, 00488 /*0451*/ { "umb", 451 }, 00489 /*0452*/ { "und", 452 }, 00490 /*0453*/ { "urd", 675 }, 00491 /*0454*/ { "uzb", 676 }, 00492 /*0455*/ { "vai", 455 }, 00493 /*0456*/ { "ven", 677 }, 00494 /*0457*/ { "vie", 678 }, 00495 /*0458*/ { "vol", 679 }, 00496 /*0459*/ { "vot", 459 }, 00497 /*0460*/ { "wak", 460 }, 00498 /*0461*/ { "wal", 461 }, 00499 /*0462*/ { "war", 462 }, 00500 /*0463*/ { "was", 463 }, 00501 /*0464*/ { "wel", 486 }, 00502 /*0465*/ { "wen", 465 }, 00503 /*0466*/ { "wln", 680 }, 00504 /*0467*/ { "wol", 681 }, 00505 /*0468*/ { "xal", 468 }, 00506 /*0469*/ { "xho", 682 }, 00507 /*0470*/ { "yao", 470 }, 00508 /*0471*/ { "yap", 471 }, 00509 /*0472*/ { "yid", 683 }, 00510 /*0473*/ { "yor", 684 }, 00511 /*0474*/ { "ypk", 474 }, 00512 /*0475*/ { "zap", 475 }, 00513 /*0476*/ { "zbl", 476 }, 00514 /*0477*/ { "zen", 477 }, 00515 /*0478*/ { "zha", 685 }, 00516 /*0479*/ { "znd", 479 }, 00517 /*0480*/ { "zul", 687 }, 00518 /*0481*/ { "zun", 481 }, 00519 /*0482*/ { "zxx", 482 }, 00520 /*0483*/ { "zza", 483 }, 00521 /*----- AV_LANG_ISO639_2_TERM entries (20) -----*/ 00522 /*0484*/ { "bod", 523 }, 00523 /*0485*/ { "ces", 531 }, 00524 /*0486*/ { "cym", 534 }, 00525 /*0487*/ { "deu", 536 }, 00526 /*0488*/ { "ell", 540 }, 00527 /*0489*/ { "eus", 545 }, 00528 /*0490*/ { "fas", 546 }, 00529 /*0491*/ { "fra", 551 }, 00530 /*0492*/ { "hye", 566 }, 00531 /*0493*/ { "isl", 575 }, 00532 /*0494*/ { "kat", 580 }, 00533 /*0495*/ { "mkd", 607 }, 00534 /*0496*/ { "mri", 606 }, 00535 /*0497*/ { "msa", 611 }, 00536 /*0498*/ { "mya", 613 }, 00537 /*0499*/ { "nld", 619 }, 00538 /*0500*/ { "ron", 638 }, 00539 /*0501*/ { "slk", 647 }, 00540 /*0502*/ { "sqi", 652 }, 00541 /*0503*/ { "zho", 686 }, 00542 /*----- AV_LANG_ISO639_1 entries (184) -----*/ 00543 /*0504*/ { "aa" , 0 }, 00544 /*0505*/ { "ab" , 1 }, 00545 /*0506*/ { "ae" , 33 }, 00546 /*0507*/ { "af" , 8 }, 00547 /*0508*/ { "ak" , 10 }, 00548 /*0509*/ { "am" , 16 }, 00549 /*0510*/ { "an" , 22 }, 00550 /*0511*/ { "ar" , 20 }, 00551 /*0512*/ { "as" , 28 }, 00552 /*0513*/ { "av" , 32 }, 00553 /*0514*/ { "ay" , 35 }, 00554 /*0515*/ { "az" , 36 }, 00555 /*0516*/ { "ba" , 39 }, 00556 /*0517*/ { "be" , 47 }, 00557 /*0518*/ { "bg" , 64 }, 00558 /*0519*/ { "bh" , 52 }, 00559 /*0520*/ { "bi" , 55 }, 00560 /*0521*/ { "bm" , 41 }, 00561 /*0522*/ { "bn" , 49 }, 00562 /*0523*/ { "bo" , 425 }, 00563 /*0524*/ { "br" , 60 }, 00564 /*0525*/ { "bs" , 58 }, 00565 /*0526*/ { "ca" , 70 }, 00566 /*0527*/ { "ce" , 76 }, 00567 /*0528*/ { "ch" , 74 }, 00568 /*0529*/ { "co" , 91 }, 00569 /*0530*/ { "cr" , 95 }, 00570 /*0531*/ { "cs" , 100 }, 00571 /*0532*/ { "cu" , 85 }, 00572 /*0533*/ { "cv" , 86 }, 00573 /*0534*/ { "cy" , 464 }, 00574 /*0535*/ { "da" , 102 }, 00575 /*0536*/ { "de" , 149 }, 00576 /*0537*/ { "dv" , 109 }, 00577 /*0538*/ { "dz" , 117 }, 00578 /*0539*/ { "ee" , 126 }, 00579 /*0540*/ { "el" , 163 }, 00580 /*0541*/ { "en" , 122 }, 00581 /*0542*/ { "eo" , 124 }, 00582 /*0543*/ { "es" , 399 }, 00583 /*0544*/ { "et" , 125 }, 00584 /*0545*/ { "eu" , 43 }, 00585 /*0546*/ { "fa" , 341 }, 00586 /*0547*/ { "ff" , 142 }, 00587 /*0548*/ { "fi" , 133 }, 00588 /*0549*/ { "fj" , 131 }, 00589 /*0550*/ { "fo" , 129 }, 00590 /*0551*/ { "fr" , 136 }, 00591 /*0552*/ { "fy" , 141 }, 00592 /*0553*/ { "ga" , 153 }, 00593 /*0554*/ { "gd" , 152 }, 00594 /*0555*/ { "gl" , 154 }, 00595 /*0556*/ { "gn" , 164 }, 00596 /*0557*/ { "gu" , 166 }, 00597 /*0558*/ { "gv" , 155 }, 00598 /*0559*/ { "ha" , 170 }, 00599 /*0560*/ { "he" , 172 }, 00600 /*0561*/ { "hi" , 176 }, 00601 /*0562*/ { "ho" , 179 }, 00602 /*0563*/ { "hr" , 180 }, 00603 /*0564*/ { "ht" , 169 }, 00604 /*0565*/ { "hu" , 182 }, 00605 /*0566*/ { "hy" , 23 }, 00606 /*0567*/ { "hz" , 173 }, 00607 /*0568*/ { "ia" , 193 }, 00608 /*0569*/ { "id" , 195 }, 00609 /*0570*/ { "ie" , 191 }, 00610 /*0571*/ { "ig" , 185 }, 00611 /*0572*/ { "ii" , 188 }, 00612 /*0573*/ { "ik" , 198 }, 00613 /*0574*/ { "io" , 187 }, 00614 /*0575*/ { "is" , 186 }, 00615 /*0576*/ { "it" , 201 }, 00616 /*0577*/ { "iu" , 190 }, 00617 /*0578*/ { "ja" , 204 }, 00618 /*0579*/ { "jv" , 202 }, 00619 /*0580*/ { "ka" , 148 }, 00620 /*0581*/ { "kg" , 229 }, 00621 /*0582*/ { "ki" , 223 }, 00622 /*0583*/ { "kj" , 237 }, 00623 /*0584*/ { "kk" , 217 }, 00624 /*0585*/ { "kl" , 210 }, 00625 /*0586*/ { "km" , 221 }, 00626 /*0587*/ { "kn" , 212 }, 00627 /*0588*/ { "ko" , 230 }, 00628 /*0589*/ { "kr" , 215 }, 00629 /*0590*/ { "ks" , 214 }, 00630 /*0591*/ { "ku" , 239 }, 00631 /*0592*/ { "kv" , 228 }, 00632 /*0593*/ { "kw" , 90 }, 00633 /*0594*/ { "ky" , 225 }, 00634 /*0595*/ { "la" , 245 }, 00635 /*0596*/ { "lb" , 253 }, 00636 /*0597*/ { "lg" , 256 }, 00637 /*0598*/ { "li" , 248 }, 00638 /*0599*/ { "ln" , 249 }, 00639 /*0600*/ { "lo" , 244 }, 00640 /*0601*/ { "lt" , 250 }, 00641 /*0602*/ { "lu" , 255 }, 00642 /*0603*/ { "lv" , 246 }, 00643 /*0604*/ { "mg" , 282 }, 00644 /*0605*/ { "mh" , 264 }, 00645 /*0606*/ { "mi" , 269 }, 00646 /*0607*/ { "mk" , 261 }, 00647 /*0608*/ { "ml" , 267 }, 00648 /*0609*/ { "mn" , 288 }, 00649 /*0610*/ { "mr" , 271 }, 00650 /*0611*/ { "ms" , 273 }, 00651 /*0612*/ { "mt" , 283 }, 00652 /*0613*/ { "my" , 65 }, 00653 /*0614*/ { "na" , 300 }, 00654 /*0615*/ { "nb" , 312 }, 00655 /*0616*/ { "nd" , 303 }, 00656 /*0617*/ { "ne" , 306 }, 00657 /*0618*/ { "ng" , 304 }, 00658 /*0619*/ { "nl" , 115 }, 00659 /*0620*/ { "nn" , 311 }, 00660 /*0621*/ { "no" , 315 }, 00661 /*0622*/ { "nr" , 302 }, 00662 /*0623*/ { "nv" , 301 }, 00663 /*0624*/ { "ny" , 320 }, 00664 /*0625*/ { "oc" , 325 }, 00665 /*0626*/ { "oj" , 326 }, 00666 /*0627*/ { "om" , 328 }, 00667 /*0628*/ { "or" , 327 }, 00668 /*0629*/ { "os" , 330 }, 00669 /*0630*/ { "pa" , 337 }, 00670 /*0631*/ { "pi" , 344 }, 00671 /*0632*/ { "pl" , 345 }, 00672 /*0633*/ { "ps" , 350 }, 00673 /*0634*/ { "pt" , 347 }, 00674 /*0635*/ { "qu" , 351 }, 00675 /*0636*/ { "rm" , 356 }, 00676 /*0637*/ { "rn" , 359 }, 00677 /*0638*/ { "ro" , 358 }, 00678 /*0639*/ { "ru" , 361 }, 00679 /*0640*/ { "rw" , 224 }, 00680 /*0641*/ { "sa" , 368 }, 00681 /*0642*/ { "sc" , 400 }, 00682 /*0643*/ { "sd" , 393 }, 00683 /*0644*/ { "se" , 386 }, 00684 /*0645*/ { "sg" , 363 }, 00685 /*0646*/ { "si" , 379 }, 00686 /*0647*/ { "sk" , 383 }, 00687 /*0648*/ { "sl" , 384 }, 00688 /*0649*/ { "sm" , 390 }, 00689 /*0650*/ { "sn" , 392 }, 00690 /*0651*/ { "so" , 396 }, 00691 /*0652*/ { "sq" , 12 }, 00692 /*0653*/ { "sr" , 402 }, 00693 /*0654*/ { "ss" , 405 }, 00694 /*0655*/ { "st" , 398 }, 00695 /*0656*/ { "su" , 407 }, 00696 /*0657*/ { "sv" , 411 }, 00697 /*0658*/ { "sw" , 410 }, 00698 /*0659*/ { "ta" , 416 }, 00699 /*0660*/ { "te" , 418 }, 00700 /*0661*/ { "tg" , 422 }, 00701 /*0662*/ { "th" , 424 }, 00702 /*0663*/ { "ti" , 427 }, 00703 /*0664*/ { "tk" , 439 }, 00704 /*0665*/ { "tl" , 423 }, 00705 /*0666*/ { "tn" , 437 }, 00706 /*0667*/ { "to" , 434 }, 00707 /*0668*/ { "tr" , 442 }, 00708 /*0669*/ { "ts" , 438 }, 00709 /*0670*/ { "tt" , 417 }, 00710 /*0671*/ { "tw" , 445 }, 00711 /*0672*/ { "ty" , 414 }, 00712 /*0673*/ { "ug" , 449 }, 00713 /*0674*/ { "uk" , 450 }, 00714 /*0675*/ { "ur" , 453 }, 00715 /*0676*/ { "uz" , 454 }, 00716 /*0677*/ { "ve" , 456 }, 00717 /*0678*/ { "vi" , 457 }, 00718 /*0679*/ { "vo" , 458 }, 00719 /*0680*/ { "wa" , 466 }, 00720 /*0681*/ { "wo" , 467 }, 00721 /*0682*/ { "xh" , 469 }, 00722 /*0683*/ { "yi" , 472 }, 00723 /*0684*/ { "yo" , 473 }, 00724 /*0685*/ { "za" , 478 }, 00725 /*0686*/ { "zh" , 78 }, 00726 /*0687*/ { "zu" , 480 }, 00727 { "", 0 } 00728 }; 00729 00730 static int lang_table_compare(const void *lhs, const void *rhs) 00731 { 00732 return strcmp(lhs, ((const LangEntry *)rhs)->str); 00733 } 00734 00735 const char *av_convert_lang_to(const char *lang, enum AVLangCodespace target_codespace) 00736 { 00737 int i; 00738 const LangEntry *entry = NULL; 00739 const int NB_CODESPACES = sizeof(lang_table_counts)/sizeof(*lang_table_counts); 00740 00741 if (target_codespace >= NB_CODESPACES) 00742 return NULL; 00743 00744 for (i=0; !entry && i<NB_CODESPACES; i++) 00745 entry = bsearch(lang, 00746 lang_table + lang_table_offsets[i], 00747 lang_table_counts[i], 00748 sizeof(LangEntry), 00749 lang_table_compare); 00750 if (!entry) 00751 return NULL; 00752 00753 for (i=0; i<NB_CODESPACES; i++) 00754 if (entry >= lang_table + lang_table_offsets[target_codespace] && 00755 entry < lang_table + lang_table_offsets[target_codespace] + lang_table_counts[target_codespace]) 00756 return entry->str; 00757 else 00758 entry = lang_table + entry->next_equivalent; 00759 00760 if (target_codespace == AV_LANG_ISO639_2_TERM) 00761 return av_convert_lang_to(lang, AV_LANG_ISO639_2_BIBL); 00762 00763 return NULL; 00764 }