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>