This source file includes following definitions.
- lang_table_compare
- av_convert_lang_to
#include "avlanguage.h"
#include "libavutil/avstring.h"
#include "libavutil/common.h"
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
typedef struct LangEntry {
const char str[4];
uint16_t next_equivalent;
} LangEntry;
static const uint16_t lang_table_counts[] = { 484, 20, 184 };
static const uint16_t lang_table_offsets[] = { 0, 484, 504 };
static const LangEntry lang_table[] = {
{ "aar", 504 },
{ "abk", 505 },
{ "ace", 2 },
{ "ach", 3 },
{ "ada", 4 },
{ "ady", 5 },
{ "afa", 6 },
{ "afh", 7 },
{ "afr", 507 },
{ "ain", 9 },
{ "aka", 508 },
{ "akk", 11 },
{ "alb", 502 },
{ "ale", 13 },
{ "alg", 14 },
{ "alt", 15 },
{ "amh", 509 },
{ "ang", 17 },
{ "anp", 18 },
{ "apa", 19 },
{ "ara", 511 },
{ "arc", 21 },
{ "arg", 510 },
{ "arm", 492 },
{ "arn", 24 },
{ "arp", 25 },
{ "art", 26 },
{ "arw", 27 },
{ "asm", 512 },
{ "ast", 29 },
{ "ath", 30 },
{ "aus", 31 },
{ "ava", 513 },
{ "ave", 506 },
{ "awa", 34 },
{ "aym", 514 },
{ "aze", 515 },
{ "bad", 37 },
{ "bai", 38 },
{ "bak", 516 },
{ "bal", 40 },
{ "bam", 521 },
{ "ban", 42 },
{ "baq", 489 },
{ "bas", 44 },
{ "bat", 45 },
{ "bej", 46 },
{ "bel", 517 },
{ "bem", 48 },
{ "ben", 522 },
{ "ber", 50 },
{ "bho", 51 },
{ "bih", 519 },
{ "bik", 53 },
{ "bin", 54 },
{ "bis", 520 },
{ "bla", 56 },
{ "bnt", 57 },
{ "bos", 525 },
{ "bra", 59 },
{ "bre", 524 },
{ "btk", 61 },
{ "bua", 62 },
{ "bug", 63 },
{ "bul", 518 },
{ "bur", 498 },
{ "byn", 66 },
{ "cad", 67 },
{ "cai", 68 },
{ "car", 69 },
{ "cat", 526 },
{ "cau", 71 },
{ "ceb", 72 },
{ "cel", 73 },
{ "cha", 528 },
{ "chb", 75 },
{ "che", 527 },
{ "chg", 77 },
{ "chi", 503 },
{ "chk", 79 },
{ "chm", 80 },
{ "chn", 81 },
{ "cho", 82 },
{ "chp", 83 },
{ "chr", 84 },
{ "chu", 532 },
{ "chv", 533 },
{ "chy", 87 },
{ "cmc", 88 },
{ "cop", 89 },
{ "cor", 593 },
{ "cos", 529 },
{ "cpe", 92 },
{ "cpf", 93 },
{ "cpp", 94 },
{ "cre", 530 },
{ "crh", 96 },
{ "crp", 97 },
{ "csb", 98 },
{ "cus", 99 },
{ "cze", 485 },
{ "dak", 101 },
{ "dan", 535 },
{ "dar", 103 },
{ "day", 104 },
{ "del", 105 },
{ "den", 106 },
{ "dgr", 107 },
{ "din", 108 },
{ "div", 537 },
{ "doi", 110 },
{ "dra", 111 },
{ "dsb", 112 },
{ "dua", 113 },
{ "dum", 114 },
{ "dut", 499 },
{ "dyu", 116 },
{ "dzo", 538 },
{ "efi", 118 },
{ "egy", 119 },
{ "eka", 120 },
{ "elx", 121 },
{ "eng", 541 },
{ "enm", 123 },
{ "epo", 542 },
{ "est", 544 },
{ "ewe", 539 },
{ "ewo", 127 },
{ "fan", 128 },
{ "fao", 550 },
{ "fat", 130 },
{ "fij", 549 },
{ "fil", 132 },
{ "fin", 548 },
{ "fiu", 134 },
{ "fon", 135 },
{ "fre", 491 },
{ "frm", 137 },
{ "fro", 138 },
{ "frr", 139 },
{ "frs", 140 },
{ "fry", 552 },
{ "ful", 547 },
{ "fur", 143 },
{ "gaa", 144 },
{ "gay", 145 },
{ "gba", 146 },
{ "gem", 147 },
{ "geo", 494 },
{ "ger", 487 },
{ "gez", 150 },
{ "gil", 151 },
{ "gla", 554 },
{ "gle", 553 },
{ "glg", 555 },
{ "glv", 558 },
{ "gmh", 156 },
{ "goh", 157 },
{ "gon", 158 },
{ "gor", 159 },
{ "got", 160 },
{ "grb", 161 },
{ "grc", 162 },
{ "gre", 488 },
{ "grn", 556 },
{ "gsw", 165 },
{ "guj", 557 },
{ "gwi", 167 },
{ "hai", 168 },
{ "hat", 564 },
{ "hau", 559 },
{ "haw", 171 },
{ "heb", 560 },
{ "her", 567 },
{ "hil", 174 },
{ "him", 175 },
{ "hin", 561 },
{ "hit", 177 },
{ "hmn", 178 },
{ "hmo", 562 },
{ "hrv", 563 },
{ "hsb", 181 },
{ "hun", 565 },
{ "hup", 183 },
{ "iba", 184 },
{ "ibo", 571 },
{ "ice", 493 },
{ "ido", 574 },
{ "iii", 572 },
{ "ijo", 189 },
{ "iku", 577 },
{ "ile", 570 },
{ "ilo", 192 },
{ "ina", 568 },
{ "inc", 194 },
{ "ind", 569 },
{ "ine", 196 },
{ "inh", 197 },
{ "ipk", 573 },
{ "ira", 199 },
{ "iro", 200 },
{ "ita", 576 },
{ "jav", 579 },
{ "jbo", 203 },
{ "jpn", 578 },
{ "jpr", 205 },
{ "jrb", 206 },
{ "kaa", 207 },
{ "kab", 208 },
{ "kac", 209 },
{ "kal", 585 },
{ "kam", 211 },
{ "kan", 587 },
{ "kar", 213 },
{ "kas", 590 },
{ "kau", 589 },
{ "kaw", 216 },
{ "kaz", 584 },
{ "kbd", 218 },
{ "kha", 219 },
{ "khi", 220 },
{ "khm", 586 },
{ "kho", 222 },
{ "kik", 582 },
{ "kin", 640 },
{ "kir", 594 },
{ "kmb", 226 },
{ "kok", 227 },
{ "kom", 592 },
{ "kon", 581 },
{ "kor", 588 },
{ "kos", 231 },
{ "kpe", 232 },
{ "krc", 233 },
{ "krl", 234 },
{ "kro", 235 },
{ "kru", 236 },
{ "kua", 583 },
{ "kum", 238 },
{ "kur", 591 },
{ "kut", 240 },
{ "lad", 241 },
{ "lah", 242 },
{ "lam", 243 },
{ "lao", 600 },
{ "lat", 595 },
{ "lav", 603 },
{ "lez", 247 },
{ "lim", 598 },
{ "lin", 599 },
{ "lit", 601 },
{ "lol", 251 },
{ "loz", 252 },
{ "ltz", 596 },
{ "lua", 254 },
{ "lub", 602 },
{ "lug", 597 },
{ "lui", 257 },
{ "lun", 258 },
{ "luo", 259 },
{ "lus", 260 },
{ "mac", 495 },
{ "mad", 262 },
{ "mag", 263 },
{ "mah", 605 },
{ "mai", 265 },
{ "mak", 266 },
{ "mal", 608 },
{ "man", 268 },
{ "mao", 496 },
{ "map", 270 },
{ "mar", 610 },
{ "mas", 272 },
{ "may", 497 },
{ "mdf", 274 },
{ "mdr", 275 },
{ "men", 276 },
{ "mga", 277 },
{ "mic", 278 },
{ "min", 279 },
{ "mis", 280 },
{ "mkh", 281 },
{ "mlg", 604 },
{ "mlt", 612 },
{ "mnc", 284 },
{ "mni", 285 },
{ "mno", 286 },
{ "moh", 287 },
{ "mon", 609 },
{ "mos", 289 },
{ "mul", 290 },
{ "mun", 291 },
{ "mus", 292 },
{ "mwl", 293 },
{ "mwr", 294 },
{ "myn", 295 },
{ "myv", 296 },
{ "nah", 297 },
{ "nai", 298 },
{ "nap", 299 },
{ "nau", 614 },
{ "nav", 623 },
{ "nbl", 622 },
{ "nde", 616 },
{ "ndo", 618 },
{ "nds", 305 },
{ "nep", 617 },
{ "new", 307 },
{ "nia", 308 },
{ "nic", 309 },
{ "niu", 310 },
{ "nno", 620 },
{ "nob", 615 },
{ "nog", 313 },
{ "non", 314 },
{ "nor", 621 },
{ "nqo", 316 },
{ "nso", 317 },
{ "nub", 318 },
{ "nwc", 319 },
{ "nya", 624 },
{ "nym", 321 },
{ "nyn", 322 },
{ "nyo", 323 },
{ "nzi", 324 },
{ "oci", 625 },
{ "oji", 626 },
{ "ori", 628 },
{ "orm", 627 },
{ "osa", 329 },
{ "oss", 629 },
{ "ota", 331 },
{ "oto", 332 },
{ "paa", 333 },
{ "pag", 334 },
{ "pal", 335 },
{ "pam", 336 },
{ "pan", 630 },
{ "pap", 338 },
{ "pau", 339 },
{ "peo", 340 },
{ "per", 490 },
{ "phi", 342 },
{ "phn", 343 },
{ "pli", 631 },
{ "pol", 632 },
{ "pon", 346 },
{ "por", 634 },
{ "pra", 348 },
{ "pro", 349 },
{ "pus", 633 },
{ "que", 635 },
{ "raj", 352 },
{ "rap", 353 },
{ "rar", 354 },
{ "roa", 355 },
{ "roh", 636 },
{ "rom", 357 },
{ "rum", 500 },
{ "run", 637 },
{ "rup", 360 },
{ "rus", 639 },
{ "sad", 362 },
{ "sag", 645 },
{ "sah", 364 },
{ "sai", 365 },
{ "sal", 366 },
{ "sam", 367 },
{ "san", 641 },
{ "sas", 369 },
{ "sat", 370 },
{ "scn", 371 },
{ "sco", 372 },
{ "sel", 373 },
{ "sem", 374 },
{ "sga", 375 },
{ "sgn", 376 },
{ "shn", 377 },
{ "sid", 378 },
{ "sin", 646 },
{ "sio", 380 },
{ "sit", 381 },
{ "sla", 382 },
{ "slo", 501 },
{ "slv", 648 },
{ "sma", 385 },
{ "sme", 644 },
{ "smi", 387 },
{ "smj", 388 },
{ "smn", 389 },
{ "smo", 649 },
{ "sms", 391 },
{ "sna", 650 },
{ "snd", 643 },
{ "snk", 394 },
{ "sog", 395 },
{ "som", 651 },
{ "son", 397 },
{ "sot", 655 },
{ "spa", 543 },
{ "srd", 642 },
{ "srn", 401 },
{ "srp", 653 },
{ "srr", 403 },
{ "ssa", 404 },
{ "ssw", 654 },
{ "suk", 406 },
{ "sun", 656 },
{ "sus", 408 },
{ "sux", 409 },
{ "swa", 658 },
{ "swe", 657 },
{ "syc", 412 },
{ "syr", 413 },
{ "tah", 672 },
{ "tai", 415 },
{ "tam", 659 },
{ "tat", 670 },
{ "tel", 660 },
{ "tem", 419 },
{ "ter", 420 },
{ "tet", 421 },
{ "tgk", 661 },
{ "tgl", 665 },
{ "tha", 662 },
{ "tib", 484 },
{ "tig", 426 },
{ "tir", 663 },
{ "tiv", 428 },
{ "tkl", 429 },
{ "tlh", 430 },
{ "tli", 431 },
{ "tmh", 432 },
{ "tog", 433 },
{ "ton", 667 },
{ "tpi", 435 },
{ "tsi", 436 },
{ "tsn", 666 },
{ "tso", 669 },
{ "tuk", 664 },
{ "tum", 440 },
{ "tup", 441 },
{ "tur", 668 },
{ "tut", 443 },
{ "tvl", 444 },
{ "twi", 671 },
{ "tyv", 446 },
{ "udm", 447 },
{ "uga", 448 },
{ "uig", 673 },
{ "ukr", 674 },
{ "umb", 451 },
{ "und", 452 },
{ "urd", 675 },
{ "uzb", 676 },
{ "vai", 455 },
{ "ven", 677 },
{ "vie", 678 },
{ "vol", 679 },
{ "vot", 459 },
{ "wak", 460 },
{ "wal", 461 },
{ "war", 462 },
{ "was", 463 },
{ "wel", 486 },
{ "wen", 465 },
{ "wln", 680 },
{ "wol", 681 },
{ "xal", 468 },
{ "xho", 682 },
{ "yao", 470 },
{ "yap", 471 },
{ "yid", 683 },
{ "yor", 684 },
{ "ypk", 474 },
{ "zap", 475 },
{ "zbl", 476 },
{ "zen", 477 },
{ "zha", 685 },
{ "znd", 479 },
{ "zul", 687 },
{ "zun", 481 },
{ "zxx", 482 },
{ "zza", 483 },
{ "bod", 523 },
{ "ces", 531 },
{ "cym", 534 },
{ "deu", 536 },
{ "ell", 540 },
{ "eus", 545 },
{ "fas", 546 },
{ "fra", 551 },
{ "hye", 566 },
{ "isl", 575 },
{ "kat", 580 },
{ "mkd", 607 },
{ "mri", 606 },
{ "msa", 611 },
{ "mya", 613 },
{ "nld", 619 },
{ "ron", 638 },
{ "slk", 647 },
{ "sqi", 652 },
{ "zho", 686 },
{ "aa" , 0 },
{ "ab" , 1 },
{ "ae" , 33 },
{ "af" , 8 },
{ "ak" , 10 },
{ "am" , 16 },
{ "an" , 22 },
{ "ar" , 20 },
{ "as" , 28 },
{ "av" , 32 },
{ "ay" , 35 },
{ "az" , 36 },
{ "ba" , 39 },
{ "be" , 47 },
{ "bg" , 64 },
{ "bh" , 52 },
{ "bi" , 55 },
{ "bm" , 41 },
{ "bn" , 49 },
{ "bo" , 425 },
{ "br" , 60 },
{ "bs" , 58 },
{ "ca" , 70 },
{ "ce" , 76 },
{ "ch" , 74 },
{ "co" , 91 },
{ "cr" , 95 },
{ "cs" , 100 },
{ "cu" , 85 },
{ "cv" , 86 },
{ "cy" , 464 },
{ "da" , 102 },
{ "de" , 149 },
{ "dv" , 109 },
{ "dz" , 117 },
{ "ee" , 126 },
{ "el" , 163 },
{ "en" , 122 },
{ "eo" , 124 },
{ "es" , 399 },
{ "et" , 125 },
{ "eu" , 43 },
{ "fa" , 341 },
{ "ff" , 142 },
{ "fi" , 133 },
{ "fj" , 131 },
{ "fo" , 129 },
{ "fr" , 136 },
{ "fy" , 141 },
{ "ga" , 153 },
{ "gd" , 152 },
{ "gl" , 154 },
{ "gn" , 164 },
{ "gu" , 166 },
{ "gv" , 155 },
{ "ha" , 170 },
{ "he" , 172 },
{ "hi" , 176 },
{ "ho" , 179 },
{ "hr" , 180 },
{ "ht" , 169 },
{ "hu" , 182 },
{ "hy" , 23 },
{ "hz" , 173 },
{ "ia" , 193 },
{ "id" , 195 },
{ "ie" , 191 },
{ "ig" , 185 },
{ "ii" , 188 },
{ "ik" , 198 },
{ "io" , 187 },
{ "is" , 186 },
{ "it" , 201 },
{ "iu" , 190 },
{ "ja" , 204 },
{ "jv" , 202 },
{ "ka" , 148 },
{ "kg" , 229 },
{ "ki" , 223 },
{ "kj" , 237 },
{ "kk" , 217 },
{ "kl" , 210 },
{ "km" , 221 },
{ "kn" , 212 },
{ "ko" , 230 },
{ "kr" , 215 },
{ "ks" , 214 },
{ "ku" , 239 },
{ "kv" , 228 },
{ "kw" , 90 },
{ "ky" , 225 },
{ "la" , 245 },
{ "lb" , 253 },
{ "lg" , 256 },
{ "li" , 248 },
{ "ln" , 249 },
{ "lo" , 244 },
{ "lt" , 250 },
{ "lu" , 255 },
{ "lv" , 246 },
{ "mg" , 282 },
{ "mh" , 264 },
{ "mi" , 269 },
{ "mk" , 261 },
{ "ml" , 267 },
{ "mn" , 288 },
{ "mr" , 271 },
{ "ms" , 273 },
{ "mt" , 283 },
{ "my" , 65 },
{ "na" , 300 },
{ "nb" , 312 },
{ "nd" , 303 },
{ "ne" , 306 },
{ "ng" , 304 },
{ "nl" , 115 },
{ "nn" , 311 },
{ "no" , 315 },
{ "nr" , 302 },
{ "nv" , 301 },
{ "ny" , 320 },
{ "oc" , 325 },
{ "oj" , 326 },
{ "om" , 328 },
{ "or" , 327 },
{ "os" , 330 },
{ "pa" , 337 },
{ "pi" , 344 },
{ "pl" , 345 },
{ "ps" , 350 },
{ "pt" , 347 },
{ "qu" , 351 },
{ "rm" , 356 },
{ "rn" , 359 },
{ "ro" , 358 },
{ "ru" , 361 },
{ "rw" , 224 },
{ "sa" , 368 },
{ "sc" , 400 },
{ "sd" , 393 },
{ "se" , 386 },
{ "sg" , 363 },
{ "si" , 379 },
{ "sk" , 383 },
{ "sl" , 384 },
{ "sm" , 390 },
{ "sn" , 392 },
{ "so" , 396 },
{ "sq" , 12 },
{ "sr" , 402 },
{ "ss" , 405 },
{ "st" , 398 },
{ "su" , 407 },
{ "sv" , 411 },
{ "sw" , 410 },
{ "ta" , 416 },
{ "te" , 418 },
{ "tg" , 422 },
{ "th" , 424 },
{ "ti" , 427 },
{ "tk" , 439 },
{ "tl" , 423 },
{ "tn" , 437 },
{ "to" , 434 },
{ "tr" , 442 },
{ "ts" , 438 },
{ "tt" , 417 },
{ "tw" , 445 },
{ "ty" , 414 },
{ "ug" , 449 },
{ "uk" , 450 },
{ "ur" , 453 },
{ "uz" , 454 },
{ "ve" , 456 },
{ "vi" , 457 },
{ "vo" , 458 },
{ "wa" , 466 },
{ "wo" , 467 },
{ "xh" , 469 },
{ "yi" , 472 },
{ "yo" , 473 },
{ "za" , 478 },
{ "zh" , 78 },
{ "zu" , 480 },
{ "", 0 }
};
static int lang_table_compare(const void *lhs, const void *rhs)
{
return strcmp(lhs, ((const LangEntry *)rhs)->str);
}
const char *av_convert_lang_to(const char *lang, enum AVLangCodespace target_codespace)
{
int i;
const LangEntry *entry = NULL;
const int NB_CODESPACES = FF_ARRAY_ELEMS(lang_table_counts);
if (target_codespace >= NB_CODESPACES)
return NULL;
for (i=0; !entry && i<NB_CODESPACES; i++)
entry = bsearch(lang,
lang_table + lang_table_offsets[i],
lang_table_counts[i],
sizeof(LangEntry),
lang_table_compare);
if (!entry)
return NULL;
for (i=0; i<NB_CODESPACES; i++)
if (entry >= lang_table + lang_table_offsets[target_codespace] &&
entry < lang_table + lang_table_offsets[target_codespace] + lang_table_counts[target_codespace])
return entry->str;
else
entry = lang_table + entry->next_equivalent;
if (target_codespace == AV_LANG_ISO639_2_TERM)
return av_convert_lang_to(lang, AV_LANG_ISO639_2_BIBL);
return NULL;
}