LCOV - code coverage report
Current view: top level - libavformat - avlanguage.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 16 21 76.2 %
Date: 2017-12-14 01:15:32 Functions: 2 2 100.0 %

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

Generated by: LCOV version 1.13