Annotation of multiplexer/ts2pesdescr.c, revision 1.1
1.1 ! oskar 1: /*
! 2: * parse descriptor fields in transport- and program streams
! 3: * Copyright (C) 1999-2004 Christian Wolff
! 4: *
! 5: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by
! 6: * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version.
! 7: *
! 8: * This program is distributed in the hope that it will be useful,
! 9: * but WITHOUT ANY WARRANTY; without even the implied warranty of
! 10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details.
! 11: *
! 12: * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software
! 13: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! 14: */
! 15:
! 16: #include "ts2pesdescr.h"
! 17:
! 18: char *iso639_1_code[136]={
! 19: "aa","ab","af","am","ar","as","ay","az","ba","be","bg","bh",
! 20: "bi","bn","bo","br","ca","co","cs","cy","da","de","dz","el",
! 21: "en","eo","es","et","eu","fa","fi","fj","fo","fr","fy","ga",
! 22: "gd","gl","gn","gu","ha","hi","hr","hu","hy","ia","ie","ik",
! 23: "in","is","it","iw","ja","ji","jv","ka","kk","kl","km","kn",
! 24: "ko","ks","ku","ky","la","ln","lo","lt","lv","mg","mi","mk",
! 25: "ml","mn","mo","mr","ms","mt","my","na","ne","nl","no","oc",
! 26: "om","or","pa","pl","ps","pt","qu","rm","rn","ro","ru","rw",
! 27: "sa","sd","sg","sh","si","sk","sl","sm","sn","so","sq","sr",
! 28: "ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl",
! 29: "tn","to","tr","ts","tt","tw","uk","ur","uz","vi","vo","wo",
! 30: "xh","yo","zh","zu"
! 31: };
! 32:
! 33: char *iso639_1_name[136]={
! 34: "Afar","Abkhazian","Afrikaans","Amharic",
! 35: "Arabic","Assamese","Aymara","Azerbaijani",
! 36: "Bashkir","Byelorussian","Bulgarian","Bihari",
! 37: "Bislama","Bengali","Tibetan","Breton",
! 38: "Catalan","Corsican","Czech","Welsh",
! 39: "Danish","German","Bhutani","Greek",
! 40: "English","Esperanto","Spanish","Estonian",
! 41: "Basque","Persian","Finnish","Fiji",
! 42: "Faroese","French","Frisian","Irish",
! 43: "Scots Gaelic","Galician","Guarani","Gujarati",
! 44: "Hausa","Hindi","Croatian","Hungarian",
! 45: "Armenian","Interlingua","Interlingue","Inupiak",
! 46: "Indonesian","Icelandic","Italian","Hebrew",
! 47: "Japanese","Yiddish","Javanese","Georgian",
! 48: "Kazakh","Greenlandic","Cambodian","Kannada",
! 49: "Korean","Kashmiri","Kurdish","Kirghiz",
! 50: "Latin","Lingala","Lao","Lithuanian",
! 51: "Latvian, Lettish","Malagasy","Maori","Macedonian",
! 52: "Malayalam","Mongolian","Moldavian","Marathi",
! 53: "Malay","Maltese","Burmese","Nauru",
! 54: "Nepali","Dutch","Norwegian","Occitan",
! 55: "Oromo","Oriya","Punjabi","Polish",
! 56: "Pashto, Pushto","Portuguese","Quechua","Rhaeto-Romance",
! 57: "Kirundi","Romanian","Russian","Kinyarwanda",
! 58: "Sanskrit","Sindhi","Sango","Serbo-Croatian",
! 59: "Singhalese","Slovak","Slovenian","Samoan",
! 60: "Shona","Somali","Albanian","Serbian",
! 61: "Siswati","Sesotho","Sundanese","Swedish",
! 62: "Swahili","Tamil","Telugu","Tajik",
! 63: "Thai","Tigrinya","Turkmen","Tagalog",
! 64: "Tswana","Tonga","Turkish","Tsonga",
! 65: "Tatar","Twi","Ukrainian","Urdu",
! 66: "Uzbek","Vietnamese","VolapŸk","Wolof",
! 67: "Xhosa","Yoruba","Chinese","Zulu"
! 68: };
! 69:
! 70: char *iso639_2t_code[432]={
! 71: "aar","abk","ace","ach","ada","afa","afh","afr","ajm","aka","akk","ale",
! 72: "alg","amh","ang","apa","ara","arc","arn","arp","art","arw","asm","ath",
! 73: "aus","ava","ave","awa","aym","aze","bad","bai","bak","bal","bam","ban",
! 74: "bas","bat","bej","bel","bem","ben","ber","bho","bih","bik","bin","bis",
! 75: "bla","bnt","bod","bra","bre","btk","bua","bug","bul","cad","cai","car",
! 76: "cat","cau","ceb","cel","ces","cha","chb","che","chg","chk","chm","chn",
! 77: "cho","chp","chr","chu","chv","chy","cmc","cop","cor","cos","cpe","cpf",
! 78: "cpp","cre","crp","cus","cym","dak","dan","day","del","den","deu","dgr",
! 79: "din","div","doi","dra","dua","dum","dyu","dzo","efi","egy","eka","ell",
! 80: "elx","eng","enm","epo","esp","est","eth","eus","ewe","ewo","fan","fao",
! 81: "fas","fat","fij","fin","fiu","fon","fra","frm","fro","fry","ful","fur",
! 82: "gaa","gai","gay","gba","gdh","gem","gez","gil","glg","gmh","goh","gon",
! 83: "gor","got","grb","grc","grn","guj","gwi","hai","hau","haw","heb","her",
! 84: "hil","him","hin","hit","hmn","hmo","hrv","hun","hup","hye","iba","ibo",
! 85: "ijo","iku","ile","ilo","ina","inc","ind","ine","ipk","ira","iro","isl",
! 86: "ita","jaw","jpn","jpr","jrb","kaa","kab","kac","kal","kam","kan","kar",
! 87: "kas","kat","kau","kaw","kaz","kha","khi","khm","kho","kik","kin","kir",
! 88: "kmb","kok","kom","kon","kor","kos","kpe","kro","kru","kua","kum","kur",
! 89: "kut","lad","lah","lam","lao","lat","lav","lez","lin","lit","lol","loz",
! 90: "ltz","lua","lub","lug","lui","lun","luo","lus","mad","mag","mah","mai",
! 91: "mak","mal","man","map","mar","mas","max","mdr","men","mga","mic","min",
! 92: "mis","mkd","mkh","mlg","mlt","mni","mno","moh","mol","mon","mos","mri",
! 93: "msa","mul","mun","mus","mwr","mya","myn","nah","nai","nau","nav","nbl",
! 94: "nde","ndo","nep","new","nia","nic","niu","nld","non","nor","nso","nub",
! 95: "nya","nym","nyn","nyo","nzi","oci","oji","ori","orm","osa","oss","ota",
! 96: "oto","paa","pag","pal","pam","pan","pap","pau","peo","phi","phn","pli",
! 97: "pol","pon","por","pra","pro","pus","que","raj","rap","rar","roa","roh",
! 98: "rom","ron","run","rus","sad","sag","sai","sal","sam","san","sas","sat",
! 99: "sco","sel","sem","sga","shn","sid","sin","sio","sit","sla","slk","slv",
! 100: "smi","smo","sna","snd","snk","sog","som","son","sot","spa","sqi","srd",
! 101: "srp","srr","ssa","ssw","suk","sun","sus","sux","swa","swe","syr","tah",
! 102: "tai","tam","tat","tel","tem","ter","tet","tgk","tgl","tha","tig","tir",
! 103: "tiv","tkl","tli","tmh","tog","ton","tpi","tsi","tsn","tso","tuk","tum",
! 104: "tur","tut","tvl","twi","tyv","uga","uig","ukr","umb","und","urd","uzb",
! 105: "vai","ven","vie","vol","vot","wak","wal","war","was","wen","wol","xho",
! 106: "yao","yap","yid","yor","ypk","zap","zen","zha","zho","znd","zul","zun"
! 107: };
! 108:
! 109: char *iso639_2t_name[432]={
! 110: "Afar","Abkhazian","Achinese","Acoli",
! 111: "Adangme","Afro-Asiatic (Other)","Afrihili","Afrikaans",
! 112: "Aljamia","Akan","Akkadian","Aleut",
! 113: "Algonquian languages","Amharic","English, Old (ca. 450-1100)","Apache languages",
! 114: "Arabic","Aramaic","Araucanian","Arapaho",
! 115: "Artificial (Other)","Arawak","Assamese","Athapascan languages",
! 116: "Australian languages","Avaric","Avestan","Awadhi",
! 117: "Aymara","Azerbaijani","Banda","Bamileke languages",
! 118: "Bashkir","Baluchi","Bambara","Balinese",
! 119: "Basa","Baltic (Other)","Beja","Belarussian",
! 120: "Bemba","Bengali","Berber (Other)","Bhojpuri",
! 121: "Bihari","Bikol","Bini","Bislama",
! 122: "Siksika","Bantu (Other)","Tibetan","Braj",
! 123: "Breton","Batak (Indonesia)","Buriat","Buginese",
! 124: "Bulgarian","Caddo","Central American Indian (Other)","Carib",
! 125: "Catalan","Caucasian (Other)","Cebuano","Celtic (Other)",
! 126: "Czech","Chamorro","Chibcha","Chechen",
! 127: "Chagatai","Chuukese","Mari","Chinook jargon",
! 128: "Choctaw","Chipewyan","Cherokee","Church Slavic",
! 129: "Chuvash","Cheyenne","Chamic languages","Coptic",
! 130: "Cornish","Corsican","Creoles and pidgins, English-based (Other)","Creoles and pidgins, French-based (Other)",
! 131: "Creoles and pidgins, Portuguese-based (Other)","Cree","Creoles and pidgins (Other)","Cushitic (Other)",
! 132: "Welsh","Dakota","Danish","Dayak",
! 133: "Delaware","Slave (Athapascan)","German","Dogrib",
! 134: "Dinka","Divehi","Dogri","Dravidian (Other)",
! 135: "Duala","Dutch, Middle (ca. 1050-1350)","Dyula","Dzongkha",
! 136: "Efik","Egyptian (Ancient)","Ekajuk","Greek, Modern (1453-)",
! 137: "Elamite","English","English, Middle (1100-1500)","Esperanto",
! 138: "Spanish","Estonian","Ethiopic","Basque",
! 139: "Ewe","Ewondo","Fang","Faroese",
! 140: "Persian","Fanti","Fijian","Finnish",
! 141: "Finno-Ugrian (Other)","Fon","French","French, Middle (ca. 1400-1600)",
! 142: "French, Old (ca. 842-1400)","Frisian","Fulah","Friulian",
! 143: "Ga","Irish","Gayo","Gbaya",
! 144: "Gaelic (Scots)","Germanic (Other)","Geez","Gilbertese",
! 145: "Gallegan","German, Middle High (ca. 1050-1500)","German, Old High (ca. 750-1050)","Gondi",
! 146: "Gorontalo","Gothic","Grebo","Greek, Ancient (to 1453)",
! 147: "Guarani","Gujarati","Gwich'in","Haida",
! 148: "Hausa","Hawaiian","Hebrew","Herero",
! 149: "Hiligaynon","Himachali","Hindi","Hittite",
! 150: "Hmong","Hiri Motu","Croatian","Hungarian",
! 151: "Hupa","Armenian","Iban","Igbo",
! 152: "Ijo","Inuktitut","Interlingue","Iloko",
! 153: "Interlingua (International Auxilary Language Association)","Indic (Other)","Indonesian","Indo-European (Other)",
! 154: "Inupiak","Iranian (Other)","Iroquoian languages","Icelandic",
! 155: "Italian","Javanese","Japanese","Judeo-Persian",
! 156: "Judeo-Arabic","Kara-Kalpak","Kabyle","Kachin",
! 157: "Kalaallisut","Kamba","Kannada","Karen",
! 158: "Kashmiri","Georgian","Kanuri","Kawi",
! 159: "Kazakh","Khasi","Khoisan (Other)","Khmer",
! 160: "Khotanese","Kikuyu","Kinyarwanda","Kirghiz",
! 161: "Kimbundu","Konkani","Komi","Kongo",
! 162: "Korean","Kosraean","Kpelle","Kru",
! 163: "Kurukh","Kuanyama","Kumyk","Kurdish",
! 164: "Kutenai","Ladino","Lahnda","Lamba",
! 165: "Lao","Latin","Latvian","Lezghian",
! 166: "Lingala","Lithuanian","Mongo","Lozi",
! 167: "Letzeburgesch","Luba-Lulua","Luba-Katanga","Ganda",
! 168: "Luiseno","Lunda","Luo (Kenya and Tanzania)","Lushai",
! 169: "Madurese","Magahi","Marshall","Maithili",
! 170: "Makasar","Malayalam","Mandingo","Austronesian (Other)",
! 171: "Marathi","Masai","Manx","Mandar",
! 172: "Mende","Irish, Middle (900-1200)","Micmac","Minangkabau",
! 173: "Miscellaneous languages","Macedonian","Mon-Khmer (Other)","Malagasy",
! 174: "Maltese","Manipuri","Manobo languages","Mohawk",
! 175: "Moldavian","Mongolian","Mossi","Maori",
! 176: "Malay","Multiple languages","Munda languages","Creek",
! 177: "Marwari","Burmese","Mayan languages","Aztec",
! 178: "North American Indian (Other)","Nauru","Navajo","Ndebele, South",
! 179: "Ndebele, North","Ndonga","Nepali","Newari",
! 180: "Nias","Niger-Kordofanian (Other)","Niuean","Dutch",
! 181: "Norse, Old","Norwegian","Sohto, Northern ","Nubian languages",
! 182: "Nyanja","Nyamwezi","Nyankole","Nyoro",
! 183: "Nzima","Occitan (post 1500)","Ojibwa","Oriya",
! 184: "Oromo","Osage","Ossetic","Turkish, Ottoman (1500-1928)",
! 185: "Otomian languages","Papuan (Other)","Pangasinan","Pahlavi",
! 186: "Pampanga","Panjabi","Papiamento","Palauan",
! 187: "Persian, Old (ca. 600-400 B.C.)","Philippine (Other)","Phoenician","Pali",
! 188: "Polish","Pohnpeian","Portuguese","Prakrit languages",
! 189: "Provenc,al, Old (to 1500)","Pushto","Quechua","Rajasthani",
! 190: "Rapanui","Rarotongan","Romance (Other)","Raeto-Romance",
! 191: "Romany","Romanian","Rundi","Russian",
! 192: "Sandawe","Sango","South American Indian (Other)","Salishan languages",
! 193: "Samaritan Aramaic","Sanskrit","Sasak","Santali",
! 194: "Scots","Selkup","Semitic (Other)","Irish, Old (to 900)",
! 195: "Shan","Sidamo","Sinhalese","Siouan languages",
! 196: "Sino-Tibetan (Other)","Slavic (Other)","Slovak","Slovenian",
! 197: "S‡mi languages","Samoan","Shona","Sindhi",
! 198: "Soninke","Sogdian","Somali","Songhai",
! 199: "Sotho, Southern","Spanish","Albanian","Sardinian",
! 200: "Serbian","Serer","Nilo-Saharan (Other)","Swati",
! 201: "Sukuma","Sundanese","Susu","Sumerian",
! 202: "Swahili","Swedish","Syriac","Tahitian",
! 203: "Tai (Other)","Tamil","Tatar","Telugu",
! 204: "Timne","Tereno","Tetum","Tajik",
! 205: "Tagalog","Thai","Tigre","Tigrinya",
! 206: "Tiv","Tokelau","Tlingit","Tamashek",
! 207: "Tonga (Nyasa)","Tonga (Tonga Islands)","Tok Pisin","Tsimshian",
! 208: "Tswana","Tsonga","Turkmen","Tumbuka",
! 209: "Turkish","Altaic (Other)","Tuvalu","Twi",
! 210: "Tuvinian","Ugaritic","Uighur","Ukrainian",
! 211: "Umbundu","Undetermined","Urdu","Uzbek",
! 212: "Vai","Venda","Vietnamese","VolapŸk",
! 213: "Votic","Wakashan languages","Walamo","Waray",
! 214: "Washo","Sorbian languages","Wolof","Xhosa",
! 215: "Yao","Yapese","Yiddish","Yoruba",
! 216: "Yupik languages","Zapotec","Zenaga","Zhuang",
! 217: "Chinese","Zande","Zulu","Zu–i"
! 218: };
! 219:
! 220: char *iso639_2b_code[432]={
! 221: "aar","abk","ace","ach","ada","afa","afh","afr","ajm","aka","akk","alb",
! 222: "ale","alg","amh","ang","apa","ara","arc","arm","arn","arp","art","arw",
! 223: "asm","ath","aus","ava","ave","awa","aym","aze","bad","bai","bak","bal",
! 224: "bam","ban","baq","bas","bat","bej","bel","bem","ben","ber","bho","bih",
! 225: "bik","bin","bis","bla","bnt","bra","bre","btk","bua","bug","bul","bur",
! 226: "cad","cai","car","cat","cau","ceb","cel","cha","chb","che","chg","chi",
! 227: "chk","chm","chn","cho","chp","chr","chu","chv","chy","cmc","cop","cor",
! 228: "cos","cpe","cpf","cpp","cre","crp","cus","cze","dak","dan","day","del",
! 229: "den","dgr","din","div","doi","dra","dua","dum","dut","dyu","dzo","efi",
! 230: "egy","eka","elx","eng","enm","epo","esp","est","eth","ewe","ewo","fan",
! 231: "fao","fat","fij","fin","fiu","fon","fre","frm","fro","fry","ful","fur",
! 232: "gaa","gae","gay","gba","gem","geo","ger","gez","gil","glg","gmh","goh",
! 233: "gon","gor","got","grb","grc","gre","grn","guj","gwi","hai","hau","haw",
! 234: "heb","her","hil","him","hin","hit","hmn","hmo","hun","hup","iba","ibo",
! 235: "ice","ijo","iku","ile","ilo","ina","inc","ind","ine","ipk","ira","iri",
! 236: "iro","ita","jav","jpn","jpr","jrb","kaa","kab","kac","kal","kam","kan",
! 237: "kar","kas","kau","kaw","kaz","kha","khi","khm","kho","kik","kin","kir",
! 238: "kmb","kok","kom","kon","kor","kos","kpe","kro","kru","kua","kum","kur",
! 239: "kut","lad","lah","lam","lao","lat","lav","lez","lin","lit","lol","loz",
! 240: "ltz","lua","lub","lug","lui","lun","luo","lus","mac","mad","mag","mah",
! 241: "mai","mak","mal","man","mao","map","mar","mas","max","may","mdr","men",
! 242: "mga","mic","min","mis","mkh","mlg","mlt","mni","mno","moh","mol","mon",
! 243: "mos","mul","mun","mus","mwr","myn","nah","nai","nau","nav","nbl","nde",
! 244: "ndo","nep","new","nia","nic","niu","non","nor","nso","nub","nya","nym",
! 245: "nyn","nyo","nzi","oci","oji","ori","orm","osa","oss","ota","oto","paa",
! 246: "pag","pal","pam","pan","pap","pau","peo","per","phi","phn","pli","pol",
! 247: "pon","por","pra","pro","pus","que","raj","rap","rar","roa","roh","rom",
! 248: "rum","run","rus","sad","sag","sai","sal","sam","san","sas","sat","scc",
! 249: "sco","scr","sel","sem","sga","shn","sid","sin","sio","sit","sla","slo",
! 250: "slv","smi","smo","sna","snd","snk","sog","som","son","sot","spa","srd",
! 251: "srr","ssa","ssw","suk","sun","sus","sux","swa","swe","syr","tah","tai",
! 252: "tam","tat","tel","tem","ter","tet","tgk","tgl","tha","tib","tig","tir",
! 253: "tiv","tkl","tli","tmh","tog","ton","tpi","tsi","tsn","tso","tuk","tum",
! 254: "tur","tut","tvl","twi","tyv","uga","uig","ukr","umb","und","urd","uzb",
! 255: "vai","ven","vie","vol","vot","wak","wal","war","was","wel","wen","wol",
! 256: "xho","yao","yap","yid","yor","ypk","zap","zen","zha","znd","zul","zun"
! 257: };
! 258:
! 259: char *iso639_2b_name[432]={
! 260: "Afar","Abkhazian","Achinese","Acoli",
! 261: "Adangme","Afro-Asiatic (Other)","Afrihili","Afrikaans",
! 262: "Aljamia","Akan","Akkadian","Albanian",
! 263: "Aleut","Algonquian languages","Amharic","English, Old (ca. 450-1100)",
! 264: "Apache languages","Arabic","Aramaic","Armenian",
! 265: "Araucanian","Arapaho","Artificial (Other)","Arawak",
! 266: "Assamese","Athapascan languages","Australian languages","Avaric",
! 267: "Avestan","Awadhi","Aymara","Azerbaijani",
! 268: "Banda","Bamileke languages","Bashkir","Baluchi",
! 269: "Bambara","Balinese","Basque","Basa",
! 270: "Baltic (Other)","Beja","Belarussian","Bemba",
! 271: "Bengali","Berber (Other)","Bhojpuri","Bihari",
! 272: "Bikol","Bini","Bislama","Siksika",
! 273: "Bantu (Other)","Braj","Breton","Batak (Indonesia)",
! 274: "Buriat","Buginese","Bulgarian","Burmese",
! 275: "Caddo","Central American Indian (Other)","Carib","Catalan",
! 276: "Caucasian (Other)","Cebuano","Celtic (Other)","Chamorro",
! 277: "Chibcha","Chechen","Chagatai","Chinese",
! 278: "Chuukese","Mari","Chinook jargon","Choctaw",
! 279: "Chipewyan","Cherokee","Church Slavic","Chuvash",
! 280: "Cheyenne","Chamic languages","Coptic","Cornish",
! 281: "Corsican","Creoles and pidgins, English-based (Other)","Creoles and pidgins, French-based (Other)","Creoles and pidgins, Portuguese-based (Other)",
! 282: "Cree","Creoles and pidgins (Other)","Cushitic (Other)","Czech",
! 283: "Dakota","Danish","Dayak","Delaware",
! 284: "Slave (Athapascan)","Dogrib","Dinka","Divehi",
! 285: "Dogri","Dravidian (Other)","Duala","Dutch, Middle (ca. 1050-1350)",
! 286: "Dutch","Dyula","Dzongkha","Efik",
! 287: "Egyptian (Ancient)","Ekajuk","Elamite","English",
! 288: "English, Middle (1100-1500)","Esperanto","Spanish","Estonian",
! 289: "Ethiopic","Ewe","Ewondo","Fang",
! 290: "Faroese","Fanti","Fijian","Finnish",
! 291: "Finno-Ugrian (Other)","Fon","French","French, Middle (ca. 1400-1600)",
! 292: "French, Old (ca. 842-1400)","Frisian","Fulah","Friulian",
! 293: "Ga","Gaelic (Scots)","Gayo","Gbaya",
! 294: "Germanic (Other)","Georgian","German","Geez",
! 295: "Gilbertese","Gallegan","German, Middle High (ca. 1050-1500)","German, Old High (ca. 750-1050)",
! 296: "Gondi","Gorontalo","Gothic","Grebo",
! 297: "Greek, Ancient (to 1453)","Greek, Modern (1453-)","Guarani","Gujarati",
! 298: "Gwich'in","Haida","Hausa","Hawaiian",
! 299: "Hebrew","Herero","Hiligaynon","Himachali",
! 300: "Hindi","Hittite","Hmong","Hiri Motu",
! 301: "Hungarian","Hupa","Iban","Igbo",
! 302: "Icelandic","Ijo","Inuktitut","Interlingue",
! 303: "Iloko","Interlingua (International Auxilary Language Association)","Indic (Other)","Indonesian",
! 304: "Indo-European (Other)","Inupiak","Iranian (Other)","Irish",
! 305: "Iroquoian languages","Italian","Javanese","Japanese",
! 306: "Judeo-Persian","Judeo-Arabic","Kara-Kalpak","Kabyle",
! 307: "Kachin","Kalaallisut","Kamba","Kannada",
! 308: "Karen","Kashmiri","Kanuri","Kawi",
! 309: "Kazakh","Khasi","Khoisan (Other)","Khmer",
! 310: "Khotanese","Kikuyu","Kinyarwanda","Kirghiz",
! 311: "Kimbundu","Konkani","Komi","Kongo",
! 312: "Korean","Kosraean","Kpelle","Kru",
! 313: "Kurukh","Kuanyama","Kumyk","Kurdish",
! 314: "Kutenai","Ladino","Lahnda","Lamba",
! 315: "Lao","Latin","Latvian","Lezghian",
! 316: "Lingala","Lithuanian","Mongo","Lozi",
! 317: "Letzeburgesch","Luba-Lulua","Luba-Katanga","Ganda",
! 318: "Luiseno","Lunda","Luo (Kenya and Tanzania)","Lushai",
! 319: "Macedonian","Madurese","Magahi","Marshall",
! 320: "Maithili","Makasar","Malayalam","Mandingo",
! 321: "Maori","Austronesian (Other)","Marathi","Masai",
! 322: "Manx","Malay","Mandar","Mende",
! 323: "Irish, Middle (900-1200)","Micmac","Minangkabau","Miscellaneous languages",
! 324: "Mon-Khmer (Other)","Malagasy","Maltese","Manipuri",
! 325: "Manobo languages","Mohawk","Moldavian","Mongolian",
! 326: "Mossi","Multiple languages","Munda languages","Creek",
! 327: "Marwari","Mayan languages","Aztec","North American Indian (Other)",
! 328: "Nauru","Navajo","Ndebele, South","Ndebele, North",
! 329: "Ndonga","Nepali","Newari","Nias",
! 330: "Niger-Kordofanian (Other)","Niuean","Norse, Old","Norwegian",
! 331: "Sohto, Northern ","Nubian languages","Nyanja","Nyamwezi",
! 332: "Nyankole","Nyoro","Nzima","Occitan (post 1500)",
! 333: "Ojibwa","Oriya","Oromo","Osage",
! 334: "Ossetic","Turkish, Ottoman (1500-1928)","Otomian languages","Papuan (Other)",
! 335: "Pangasinan","Pahlavi","Pampanga","Panjabi",
! 336: "Papiamento","Palauan","Persian, Old (ca. 600-400 B.C.)","Persian",
! 337: "Philippine (Other)","Phoenician","Pali","Polish",
! 338: "Pohnpeian","Portuguese","Prakrit languages","Provenc,al, Old (to 1500)",
! 339: "Pushto","Quechua","Rajasthani","Rapanui",
! 340: "Rarotongan","Romance (Other)","Raeto-Romance","Romany",
! 341: "Romanian","Rundi","Russian","Sandawe",
! 342: "Sango","South American Indian (Other)","Salishan languages","Samaritan Aramaic",
! 343: "Sanskrit","Sasak","Santali","Serbian",
! 344: "Scots","Croatian","Selkup","Semitic (Other)",
! 345: "Irish, Old (to 900)","Shan","Sidamo","Sinhalese",
! 346: "Siouan languages","Sino-Tibetan (Other)","Slavic (Other)","Slovak",
! 347: "Slovenian","S½mi languages","Samoan","Shona",
! 348: "Sindhi","Soninke","Sogdian","Somali",
! 349: "Songhai","Sotho, Southern","Spanish","Sardinian",
! 350: "Serer","Nilo-Saharan (Other)","Swati","Sukuma",
! 351: "Sundanese","Susu","Sumerian","Swahili",
! 352: "Swedish","Syriac","Tahitian","Tai (Other)",
! 353: "Tamil","Tatar","Telugu","Timne",
! 354: "Tereno","Tetum","Tajik","Tagalog",
! 355: "Thai","Tibetan","Tigre","Tigrinya",
! 356: "Tiv","Tokelau","Tlingit","Tamashek",
! 357: "Tonga (Nyasa)","Tonga (Tonga Islands)","Tok Pisin","Tsimshian",
! 358: "Tswana","Tsonga","Turkmen","Tumbuka",
! 359: "Turkish","Altaic (Other)","Tuvalu","Twi",
! 360: "Tuvinian","Ugaritic","Uighur","Ukrainian",
! 361: "Umbundu","Undetermined","Urdu","Uzbek",
! 362: "Vai","Venda","Vietnamese","VolapŸk",
! 363: "Votic","Wakashan languages","Walamo","Waray",
! 364: "Washo","Welsh","Sorbian languages","Wolof",
! 365: "Xhosa","Yao","Yapese","Yiddish",
! 366: "Yoruba","Yupik languages","Zapotec","Zenaga",
! 367: "Zhuang","Zande","Zulu","Zu–i"
! 368: };
! 369:
! 370: char *AudioType[5]={
! 371: "Undefined",
! 372: "Clean effects",
! 373: "Hearing impaired",
! 374: "Visual impaired commentary",
! 375: "Reserved"
! 376: };
! 377:
! 378: char *DescriptorTitle[22]={
! 379: "reserved",
! 380: "reserved",
! 381: "video_stream_descriptor",
! 382: "audio_stream_descriptor",
! 383: "hierarchy_descriptor",
! 384: "registration_descriptor",
! 385: "data_stream_alignment_descriptor",
! 386: "target_background_grid_descriptor",
! 387: "video_window_descriptor",
! 388: "CA_descriptor",
! 389: "ISO_639_language_descriptor",
! 390: "system_clock_descriptor",
! 391: "multiplex_buffer_utilization_descriptor",
! 392: "copyright_descriptor",
! 393: "maximum_bitrate_descriptor",
! 394: "private_data_indicator_descriptor",
! 395: "smoothing_buffer_descriptor",
! 396: "STD_descriptor",
! 397: "IBP_descriptor",
! 398: "ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Reserved",
! 399: "User private",
! 400: "Unknown, internal error"
! 401: };
! 402:
! 403: char *FrameRate[16]={
! 404: "Forbidden",
! 405: "23.976",
! 406: "24",
! 407: "25",
! 408: "29.97",
! 409: "30",
! 410: "50",
! 411: "59.94",
! 412: "60",
! 413: "Reserved",
! 414: "Reserved",
! 415: "Reserved",
! 416: "Reserved",
! 417: "Reserved",
! 418: "Reserved",
! 419: "Reserved"
! 420: };
! 421:
! 422: char *ChromaFormat[4]={
! 423: "Reserved",
! 424: "4:2:0",
! 425: "4:2:2",
! 426: "4:4:4"
! 427: };
! 428:
! 429: char *Profile[8]={
! 430: "Reserved",
! 431: "High",
! 432: "Spatially Scalable",
! 433: "SNR Scalable",
! 434: "Main",
! 435: "Simple",
! 436: "Reserved",
! 437: "Reserved"
! 438: };
! 439:
! 440: char *Level[16]={
! 441: "Reserved",
! 442: "Reserved",
! 443: "Reserved",
! 444: "Reserved",
! 445: "High",
! 446: "Reserved",
! 447: "High 1440",
! 448: "Reserved",
! 449: "Main",
! 450: "Reserved",
! 451: "Low",
! 452: "Reserved",
! 453: "Reserved"
! 454: "Reserved",
! 455: "Reserved",
! 456: "Reserved"
! 457: };
! 458:
! 459: char *AudioLayer[4]={
! 460: "I",
! 461: "II",
! 462: "III",
! 463: "Forbidden"
! 464: };
! 465:
! 466: char *HierarchyType[16]={
! 467: "Reserved",
! 468: "ITU-T Rec. H.262 | ISO/IEC 13818-2 Spatial Scalability",
! 469: "ITU-T Rec. H.262 | ISO/IEC 13818-2 SNR Scalability",
! 470: "ITU-T Rec. H.262 | ISO/IEC 13818-2 Temporal Scalability",
! 471: "ITU-T Rec. H.262 | ISO/IEC 13818-2 Data partitioning",
! 472: "ISO/IEC 13818-3 Extension bitstream",
! 473: "ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Private Stream",
! 474: "Reserved",
! 475: "Reserved",
! 476: "Reserved",
! 477: "Reserved",
! 478: "Reserved",
! 479: "Reserved"
! 480: "Reserved",
! 481: "Reserved",
! 482: "Base Layer"
! 483: };
! 484:
! 485: void show_descriptor(Descriptor *descriptor, int verbose) {
! 486:
! 487: unsigned char tag;
! 488: int i,j,n,length;
! 489: unsigned char *data;
! 490:
! 491: char *str;
! 492: str=(char *)malloc(1000);
! 493:
! 494: if (descriptor==NULL) {
! 495: if (verbose) printf("#Descriptor: uninitialized\n");
! 496: return;
! 497: }
! 498: tag=descriptor->tag;
! 499: length=descriptor->length;
! 500: data=descriptor->data;
! 501:
! 502: if (verbose) {
! 503: printf("#Descriptor: ");
! 504: if (tag>=64) printf("%s",DescriptorTitle[20]);
! 505: else if (tag>=19) printf("%s",DescriptorTitle[19]);
! 506: else printf("%s",DescriptorTitle[tag]);
! 507: printf(" (0x%02X) %i bytes",tag,length);
! 508: if ((length>0) && (data==NULL)) {
! 509: printf("\n# ERROR: Data block uninitialized!\n");
! 510: return;
! 511: }
! 512: for (i=0; i<length; i++) {
! 513: if (!(i % 24)) printf("\n# ");
! 514: printf("%02X ",(data[i] & 0xFF));
! 515: }
! 516: printf("\n");
! 517: } else if ((length>0) && (data==NULL)) return;
! 518:
! 519: if ((tag==0x00) || (tag==0x01)) {
! 520: if (!verbose) printf("Reserved descriptor\n");
! 521: } else if (tag==0x02) {
! 522: if (verbose) {
! 523: } else {
! 524: if (data[0]&0x04) str="";
! 525: else {
! 526: sprintf(str,", Profile: %s%s%s %s FRX:%c",
! 527: ((data[1]&0x80)?"Reserved":Profile[(data[1]>>4)&0x07]),
! 528: ((data[1]&0x80)?"":" / "),
! 529: ((data[1]&0x80)?"":Level[data[1]&0x0F]),
! 530: ChromaFormat[(data[2]>>6)&0x03],
! 531: ((data[2]&0x20)?'1':'0'));
! 532: }
! 533: printf("Video: %sFrameRate:%s, MPEG-%c, %sconstrained %s pictures%s\n",
! 534: ((data[0]&0x80)?"Multiple":""),
! 535: FrameRate[(data[0]>>3)&0x0F],
! 536: ((data[0]&0x04)?'1':'2'),
! 537: ((data[0]&0x02)?"":"un"),
! 538: ((data[0]&0x01)?"still":"moving"),
! 539: str);
! 540: }
! 541: } else if (tag==0x03) {
! 542: if (verbose) {
! 543: } else {
! 544: printf("Audio: MPEG-1 Layer %s, FreeFormat: %c, ID: %c, VariableRate: %c\n",
! 545: AudioLayer[((data[0]>>4)&0x03)],
! 546: ((data[0]&0x80)?'1':'0'),
! 547: ((data[0]&0x40)?'1':'0'),
! 548: ((data[0]&0x08)?'1':'0'));
! 549: }
! 550: } else if (tag==0x04) {
! 551: if (verbose) {
! 552: } else {
! 553: printf("Hierarchy: %s, LayerIndex: %i/%i, Channel: %i\n",
! 554: HierarchyType[data[0]&0x0F],
! 555: data[1]&0x3F,
! 556: data[2]&0x3F,
! 557: data[3]&0x3F);
! 558: }
! 559: } else if (tag==0x05) {
! 560: if (verbose) {
! 561: } else {
! 562: printf("Registration: Format identifier 0x%08X\n",
! 563: (((((((data[0]<<8)|(data[1]&0xFF))<<8)|(data[2]&0xFF))<<8)|(data[3]&0xFF))<<8)
! 564: );
! 565: n=length-4;
! 566: for (i=0; i<n/16; i++) {
! 567: for (j=0; (j<16) && (j+i*16<n); j++) {
! 568: printf(" %02X",data[4+j+i*16]);
! 569: }
! 570: printf(" ");
! 571: for (j=0; (j<16) && (j+i*16<n); j++) {
! 572: printf("%c",((data[4+j+i*16]<32)?'.':data[4+j+i*16]));
! 573: }
! 574: printf("\n");
! 575: }
! 576: }
! 577: } else if (tag==0x06) {
! 578: if (verbose) {
! 579: } else {
! 580: printf("Data Stream Alignment:\n");
! 581: }
! 582: } else if (tag==0x07) {
! 583: if (verbose) {
! 584: } else {
! 585: printf("Target Background Grid:\n");
! 586: }
! 587: } else if (tag==0x08) {
! 588: if (verbose) {
! 589: } else {
! 590: printf("Video Window:\n");
! 591: }
! 592: } else if (tag==0x09) {
! 593: if (verbose) {
! 594: } else {
! 595: printf("Conditional Access:\n");
! 596: }
! 597: } else if (tag==0x0A) {
! 598: if ((data!=NULL) && (length>=4)) {
! 599: str[0]='\0';
! 600: i=0;
! 601: while ((i<432) && (iso639_2b_code[i][0]<data[0])) i++;
! 602: if (iso639_2b_code[i][0]!=data[0]) i=432;
! 603: while ((i<432) && (iso639_2b_code[i][1]<data[1])) i++;
! 604: if (iso639_2b_code[i][1]!=data[1]) i=432;
! 605: while ((i<432) && (iso639_2b_code[i][2]<data[2])) i++;
! 606: if (iso639_2b_code[i][2]!=data[2]) i=432;
! 607: if (i<432) {
! 608: strcat(str,iso639_2b_name[i]);
! 609: } else {
! 610: i=0;
! 611: while ((i<432) && (iso639_2t_code[i][0]<data[0])) i++;
! 612: if (iso639_2b_code[i][0]!=data[0]) i=432;
! 613: while ((i<432) && (iso639_2t_code[i][1]<data[1])) i++;
! 614: if (iso639_2b_code[i][1]!=data[1]) i=432;
! 615: while ((i<432) && (iso639_2t_code[i][2]<data[2])) i++;
! 616: if (iso639_2b_code[i][2]!=data[2]) i=432;
! 617: if (i<432) {
! 618: strcat(str,iso639_2t_name[i]);
! 619: strcat(str,"[T]");
! 620: } else {
! 621: i=0;
! 622: while ((i<136) && (iso639_1_code[i][0]<data[0])) i++;
! 623: if (iso639_1_code[i][0]!=data[0]) i=136;
! 624: while ((i<136) && (iso639_1_code[i][1]<data[1])) i++;
! 625: if (iso639_1_code[i][1]!=data[1]) i=136;
! 626: if (i<136) {
! 627: strcat(str,iso639_1_name[i]);
! 628: strcat(str,"[1]");
! 629: } else {
! 630: strcat(str,"Unknown");
! 631: }
! 632: }
! 633: }
! 634: printf((verbose)?"# Language: %s (%c%c%c)\n# Audio Type: %s\n":"Language: %s (%c%c%c) / %s\n",
! 635: str,
! 636: data[0],data[1],data[2],
! 637: ((data[3]<=3)?AudioType[data[3]]:AudioType[4]));
! 638: }
! 639: } else if (tag==0x0B) {
! 640: if (verbose) {
! 641: } else {
! 642: printf("System Clock:\n");
! 643: }
! 644: } else if (tag==0x0C) {
! 645: if (verbose) {
! 646: } else {
! 647: printf("Multiplex Buffer Utilization:\n");
! 648: }
! 649: } else if (tag==0x0D) {
! 650: if (verbose) {
! 651: } else {
! 652: printf("Copyright:\n");
! 653: }
! 654: } else if (tag==0x0E) {
! 655: if (verbose) {
! 656: } else {
! 657: printf("Maximum Bitrate:\n");
! 658: }
! 659: } else if (tag==0x0F) {
! 660: if (verbose) {
! 661: } else {
! 662: printf("Private Data Indicator:\n");
! 663: }
! 664: } else if (tag==0x10) {
! 665: if (verbose) {
! 666: } else {
! 667: printf("Smoothing Buffer:\n");
! 668: }
! 669: } else if (tag==0x11) {
! 670: if (verbose) {
! 671: } else {
! 672: printf("STD:\n");
! 673: }
! 674: } else if (tag==0x12) {
! 675: if (verbose) {
! 676: } else {
! 677: printf("IBP:\n");
! 678: }
! 679: } else if (tag>=0x40) {
! 680: if (verbose) {
! 681: } else {
! 682: printf("User private descriptor\n");
! 683: }
! 684: } else if (tag>=0x13) {
! 685: if (verbose) {
! 686: } else {
! 687: printf("Reserved descriptor\n");
! 688: }
! 689: } else ;
! 690: }
LinuxTV legacy CVS <linuxtv.org/cvs>