diff --git a/CMakeLists.txt b/CMakeLists.txt index 66bf8559..e607c140 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,6 +140,7 @@ set(libHeaders ${SOURCE_DIR}/lib/h265.h ${SOURCE_DIR}/lib/http_parser.h ${SOURCE_DIR}/lib/json.h + ${SOURCE_DIR}/lib/langcodes.h ${SOURCE_DIR}/lib/mp4_adobe.h ${SOURCE_DIR}/lib/mp4_dash.cpp ${SOURCE_DIR}/lib/mp4_dash.h @@ -185,6 +186,7 @@ set(libSources ${SOURCE_DIR}/lib/h265.cpp ${SOURCE_DIR}/lib/http_parser.cpp ${SOURCE_DIR}/lib/json.cpp + ${SOURCE_DIR}/lib/langcodes.cpp ${SOURCE_DIR}/lib/mp4_adobe.cpp ${SOURCE_DIR}/lib/mp4.cpp ${SOURCE_DIR}/lib/mp4_dash.cpp diff --git a/lib/langcodes.cpp b/lib/langcodes.cpp new file mode 100644 index 00000000..25a4e99c --- /dev/null +++ b/lib/langcodes.cpp @@ -0,0 +1,520 @@ +#include "langcodes.h" + +namespace Encodings { + + std::string ISO639::decode(const std::string & lang){ + if (lang=="aar"){return "Afar";} + if (lang=="abk"){return "Abkhazian";} + if (lang=="ace"){return "Achinese";} + if (lang=="ach"){return "Acoli";} + if (lang=="ada"){return "Adangme";} + if (lang=="ady"){return "Adyghe; Adygei";} + if (lang=="afa"){return "Afro-Asiatic languages";} + if (lang=="afh"){return "Afrihili";} + if (lang=="afr"){return "Afrikaans";} + if (lang=="ain"){return "Ainu";} + if (lang=="aka"){return "Akan";} + if (lang=="akk"){return "Akkadian";} + if (lang=="alb"){return "Albanian";} + if (lang=="ale"){return "Aleut";} + if (lang=="alg"){return "Algonquian languages";} + if (lang=="alt"){return "Southern Altai";} + if (lang=="amh"){return "Amharic";} + if (lang=="ang"){return "English, Old (ca.450-1100)";} + if (lang=="anp"){return "Angika";} + if (lang=="apa"){return "Apache languages";} + if (lang=="ara"){return "Arabic";} + if (lang=="arc"){return "Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)";} + if (lang=="arg"){return "Aragonese";} + if (lang=="arm"){return "Armenian";} + if (lang=="arn"){return "Mapudungun; Mapuche";} + if (lang=="arp"){return "Arapaho";} + if (lang=="art"){return "Artificial languages";} + if (lang=="arw"){return "Arawak";} + if (lang=="asm"){return "Assamese";} + if (lang=="ast"){return "Asturian; Bable; Leonese; Asturleonese";} + if (lang=="ath"){return "Athapascan languages";} + if (lang=="aus"){return "Australian languages";} + if (lang=="ava"){return "Avaric";} + if (lang=="ave"){return "Avestan";} + if (lang=="awa"){return "Awadhi";} + if (lang=="aym"){return "Aymara";} + if (lang=="aze"){return "Azerbaijani";} + if (lang=="bad"){return "Banda languages";} + if (lang=="bai"){return "Bamileke languages";} + if (lang=="bak"){return "Bashkir";} + if (lang=="bal"){return "Baluchi";} + if (lang=="bam"){return "Bambara";} + if (lang=="ban"){return "Balinese";} + if (lang=="baq"){return "Basque";} + if (lang=="bas"){return "Basa";} + if (lang=="bat"){return "Baltic languages";} + if (lang=="bej"){return "Beja; Bedawiyet";} + if (lang=="bel"){return "Belarusian";} + if (lang=="bem"){return "Bemba";} + if (lang=="ben"){return "Bengali";} + if (lang=="ber"){return "Berber languages";} + if (lang=="bho"){return "Bhojpuri";} + if (lang=="bih"){return "Bihari languages";} + if (lang=="bik"){return "Bikol";} + if (lang=="bin"){return "Bini; Edo";} + if (lang=="bis"){return "Bislama";} + if (lang=="bla"){return "Siksika";} + if (lang=="bnt"){return "Bantu languages";} + if (lang=="bod"){return "Tibetan";} + if (lang=="bos"){return "Bosnian";} + if (lang=="bra"){return "Braj";} + if (lang=="bre"){return "Breton";} + if (lang=="btk"){return "Batak languages";} + if (lang=="bua"){return "Buriat";} + if (lang=="bug"){return "Buginese";} + if (lang=="bul"){return "Bulgarian";} + if (lang=="bur"){return "Burmese";} + if (lang=="byn"){return "Blin; Bilin";} + if (lang=="cad"){return "Caddo";} + if (lang=="cai"){return "Central American Indian languages";} + if (lang=="car"){return "Galibi Carib";} + if (lang=="cat"){return "Catalan; Valencian";} + if (lang=="cau"){return "Caucasian languages";} + if (lang=="ceb"){return "Cebuano";} + if (lang=="cel"){return "Celtic languages";} + if (lang=="ces"){return "Czech";} + if (lang=="cha"){return "Chamorro";} + if (lang=="chb"){return "Chibcha";} + if (lang=="che"){return "Chechen";} + if (lang=="chg"){return "Chagatai";} + if (lang=="chi"){return "Chinese";} + if (lang=="chk"){return "Chuukese";} + if (lang=="chm"){return "Mari";} + if (lang=="chn"){return "Chinook jargon";} + if (lang=="cho"){return "Choctaw";} + if (lang=="chp"){return "Chipewyan; Dene Suline";} + if (lang=="chr"){return "Cherokee";} + if (lang=="chu"){return "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic";} + if (lang=="chv"){return "Chuvash";} + if (lang=="chy"){return "Cheyenne";} + if (lang=="cmc"){return "Chamic languages";} + if (lang=="cop"){return "Coptic";} + if (lang=="cor"){return "Cornish";} + if (lang=="cos"){return "Corsican";} + if (lang=="cpe"){return "Creoles and pidgins, English based";} + if (lang=="cpf"){return "Creoles and pidgins, French-based";} + if (lang=="cpp"){return "Creoles and pidgins, Portuguese-based";} + if (lang=="cre"){return "Cree";} + if (lang=="crh"){return "Crimean Tatar; Crimean Turkish";} + if (lang=="crp"){return "Creoles and pidgins";} + if (lang=="csb"){return "Kashubian";} + if (lang=="cus"){return "Cushitic languages";} + if (lang=="cym"){return "Welsh";} + if (lang=="cze"){return "Czech";} + if (lang=="cze"){return "Czech";} + if (lang=="dak"){return "Dakota";} + if (lang=="dan"){return "Danish";} + if (lang=="dar"){return "Dargwa";} + if (lang=="day"){return "Land Dayak languages";} + if (lang=="del"){return "Delaware";} + if (lang=="den"){return "Slave (Athapascan)";} + if (lang=="deu"){return "German";} + if (lang=="dgr"){return "Dogrib";} + if (lang=="din"){return "Dinka";} + if (lang=="div"){return "Divehi; Dhivehi; Maldivian";} + if (lang=="doi"){return "Dogri";} + if (lang=="dra"){return "Dravidian languages";} + if (lang=="dsb"){return "Lower Sorbian";} + if (lang=="dua"){return "Duala";} + if (lang=="dum"){return "Dutch, Middle (ca.1050-1350)";} + if (lang=="dut"){return "Dutch; Flemish";} + if (lang=="dyu"){return "Dyula";} + if (lang=="dzo"){return "Dzongkha";} + if (lang=="efi"){return "Efik";} + if (lang=="egy"){return "Egyptian (Ancient)";} + if (lang=="eka"){return "Ekajuk";} + if (lang=="ell"){return "Greek, Modern (1453-)";} + if (lang=="elx"){return "Elamite";} + if (lang=="eng"){return "English";} + if (lang=="enm"){return "English, Middle (1100-1500)";} + if (lang=="epo"){return "Esperanto";} + if (lang=="est"){return "Estonian";} + if (lang=="eus"){return "Basque";} + if (lang=="eus"){return "Basque";} + if (lang=="ewe"){return "Ewe";} + if (lang=="ewo"){return "Ewondo";} + if (lang=="fan"){return "Fang";} + if (lang=="fao"){return "Faroese";} + if (lang=="fas"){return "Persian";} + if (lang=="fas"){return "Persian";} + if (lang=="fat"){return "Fanti";} + if (lang=="fij"){return "Fijian";} + if (lang=="fil"){return "Filipino; Pilipino";} + if (lang=="fin"){return "Finnish";} + if (lang=="fiu"){return "Finno-Ugrian languages";} + if (lang=="fon"){return "Fon";} + if (lang=="fra"){return "French";} + if (lang=="fre"){return "French";} + if (lang=="frm"){return "French, Middle (ca.1400-1600)";} + if (lang=="fro"){return "French, Old (842-ca.1400)";} + if (lang=="frr"){return "Northern Frisian";} + if (lang=="frs"){return "Eastern Frisian";} + if (lang=="fry"){return "Western Frisian";} + if (lang=="ful"){return "Fulah";} + if (lang=="fur"){return "Friulian";} + if (lang=="gaa"){return "Ga";} + if (lang=="gay"){return "Gayo";} + if (lang=="gba"){return "Gbaya";} + if (lang=="gem"){return "Germanic languages";} + if (lang=="geo"){return "Georgian";} + if (lang=="ger"){return "German";} + if (lang=="gez"){return "Geez";} + if (lang=="gil"){return "Gilbertese";} + if (lang=="gla"){return "Gaelic; Scottish Gaelic";} + if (lang=="gle"){return "Irish";} + if (lang=="glg"){return "Galician";} + if (lang=="glv"){return "Manx";} + if (lang=="gmh"){return "German, Middle High (ca.1050-1500)";} + if (lang=="goh"){return "German, Old High (ca.750-1050)";} + if (lang=="gon"){return "Gondi";} + if (lang=="gor"){return "Gorontalo";} + if (lang=="got"){return "Gothic";} + if (lang=="grb"){return "Grebo";} + if (lang=="grc"){return "Greek, Ancient (to 1453)";} + if (lang=="gre"){return "Greek, Modern (1453-)";} + if (lang=="grn"){return "Guarani";} + if (lang=="gsw"){return "Swiss German; Alemannic; Alsatian";} + if (lang=="guj"){return "Gujarati";} + if (lang=="gwi"){return "Gwich'in";} + if (lang=="hai"){return "Haida";} + if (lang=="hat"){return "Haitian; Haitian Creole";} + if (lang=="hau"){return "Hausa";} + if (lang=="haw"){return "Hawaiian";} + if (lang=="heb"){return "Hebrew";} + if (lang=="her"){return "Herero";} + if (lang=="hil"){return "Hiligaynon";} + if (lang=="him"){return "Himachali languages; Western Pahari languages";} + if (lang=="hin"){return "Hindi";} + if (lang=="hit"){return "Hittite";} + if (lang=="hmn"){return "Hmong; Mong";} + if (lang=="hmo"){return "Hiri Motu";} + if (lang=="hrv"){return "Croatian";} + if (lang=="hsb"){return "Upper Sorbian";} + if (lang=="hun"){return "Hungarian";} + if (lang=="hup"){return "Hupa";} + if (lang=="hye"){return "Armenian";} + if (lang=="iba"){return "Iban";} + if (lang=="ibo"){return "Igbo";} + if (lang=="ice"){return "Icelandic";} + if (lang=="ido"){return "Ido";} + if (lang=="iii"){return "Sichuan Yi; Nuosu";} + if (lang=="ijo"){return "Ijo languages";} + if (lang=="iku"){return "Inuktitut";} + if (lang=="ile"){return "Interlingue; Occidental";} + if (lang=="ilo"){return "Iloko";} + if (lang=="ina"){return "Interlingua (International Auxiliary Language Association)";} + if (lang=="inc"){return "Indic languages";} + if (lang=="ind"){return "Indonesian";} + if (lang=="ine"){return "Indo-European languages";} + if (lang=="inh"){return "Ingush";} + if (lang=="ipk"){return "Inupiaq";} + if (lang=="ira"){return "Iranian languages";} + if (lang=="iro"){return "Iroquoian languages";} + if (lang=="isl"){return "Icelandic";} + if (lang=="ita"){return "Italian";} + if (lang=="jav"){return "Javanese";} + if (lang=="jbo"){return "Lojban";} + if (lang=="jpn"){return "Japanese";} + if (lang=="jpr"){return "Judeo-Persian";} + if (lang=="jrb"){return "Judeo-Arabic";} + if (lang=="kaa"){return "Kara-Kalpak";} + if (lang=="kab"){return "Kabyle";} + if (lang=="kac"){return "Kachin; Jingpho";} + if (lang=="kal"){return "Kalaallisut; Greenlandic";} + if (lang=="kam"){return "Kamba";} + if (lang=="kan"){return "Kannada";} + if (lang=="kar"){return "Karen languages";} + if (lang=="kas"){return "Kashmiri";} + if (lang=="kat"){return "Georgian";} + if (lang=="kau"){return "Kanuri";} + if (lang=="kaw"){return "Kawi";} + if (lang=="kaz"){return "Kazakh";} + if (lang=="kbd"){return "Kabardian";} + if (lang=="kha"){return "Khasi";} + if (lang=="khi"){return "Khoisan languages";} + if (lang=="khm"){return "Central Khmer";} + if (lang=="kho"){return "Khotanese; Sakan";} + if (lang=="kik"){return "Kikuyu; Gikuyu";} + if (lang=="kin"){return "Kinyarwanda";} + if (lang=="kir"){return "Kirghiz; Kyrgyz";} + if (lang=="kmb"){return "Kimbundu";} + if (lang=="kok"){return "Konkani";} + if (lang=="kom"){return "Komi";} + if (lang=="kon"){return "Kongo";} + if (lang=="kor"){return "Korean";} + if (lang=="kos"){return "Kosraean";} + if (lang=="kpe"){return "Kpelle";} + if (lang=="krc"){return "Karachay-Balkar";} + if (lang=="krl"){return "Karelian";} + if (lang=="kro"){return "Kru languages";} + if (lang=="kru"){return "Kurukh";} + if (lang=="kua"){return "Kuanyama; Kwanyama";} + if (lang=="kum"){return "Kumyk";} + if (lang=="kur"){return "Kurdish";} + if (lang=="kut"){return "Kutenai";} + if (lang=="lad"){return "Ladino";} + if (lang=="lah"){return "Lahnda";} + if (lang=="lam"){return "Lamba";} + if (lang=="lao"){return "Lao";} + if (lang=="lat"){return "Latin";} + if (lang=="lav"){return "Latvian";} + if (lang=="lez"){return "Lezghian";} + if (lang=="lim"){return "Limburgan; Limburger; Limburgish";} + if (lang=="lin"){return "Lingala";} + if (lang=="lit"){return "Lithuanian";} + if (lang=="lol"){return "Mongo";} + if (lang=="loz"){return "Lozi";} + if (lang=="ltz"){return "Luxembourgish; Letzeburgesch";} + if (lang=="lua"){return "Luba-Lulua";} + if (lang=="lub"){return "Luba-Katanga";} + if (lang=="lug"){return "Ganda";} + if (lang=="lui"){return "Luiseno";} + if (lang=="lun"){return "Lunda";} + if (lang=="luo"){return "Luo (Kenya and Tanzania)";} + if (lang=="lus"){return "Lushai";} + if (lang=="mac"){return "Macedonian";} + if (lang=="mad"){return "Madurese";} + if (lang=="mag"){return "Magahi";} + if (lang=="mah"){return "Marshallese";} + if (lang=="mai"){return "Maithili";} + if (lang=="mak"){return "Makasar";} + if (lang=="mal"){return "Malayalam";} + if (lang=="man"){return "Mandingo";} + if (lang=="mao"){return "Maori";} + if (lang=="map"){return "Austronesian languages";} + if (lang=="mar"){return "Marathi";} + if (lang=="mas"){return "Masai";} + if (lang=="may"){return "Malay";} + if (lang=="mdf"){return "Moksha";} + if (lang=="mdr"){return "Mandar";} + if (lang=="men"){return "Mende";} + if (lang=="mga"){return "Irish, Middle (900-1200)";} + if (lang=="mic"){return "Mi'kmaq; Micmac";} + if (lang=="min"){return "Minangkabau";} + if (lang=="mis"){return "Uncoded languages";} + if (lang=="mkd"){return "Macedonian";} + if (lang=="mkh"){return "Mon-Khmer languages";} + if (lang=="mlg"){return "Malagasy";} + if (lang=="mlt"){return "Maltese";} + if (lang=="mnc"){return "Manchu";} + if (lang=="mni"){return "Manipuri";} + if (lang=="mno"){return "Manobo languages";} + if (lang=="moh"){return "Mohawk";} + if (lang=="mon"){return "Mongolian";} + if (lang=="mos"){return "Mossi";} + if (lang=="mri"){return "Maori";} + if (lang=="msa"){return "Malay";} + if (lang=="msa"){return "Malay";} + if (lang=="mul"){return "Multiple languages";} + if (lang=="mun"){return "Munda languages";} + if (lang=="mus"){return "Creek";} + if (lang=="mwl"){return "Mirandese";} + if (lang=="mwr"){return "Marwari";} + if (lang=="mya"){return "Burmese";} + if (lang=="myn"){return "Mayan languages";} + if (lang=="myv"){return "Erzya";} + if (lang=="nah"){return "Nahuatl languages";} + if (lang=="nai"){return "North American Indian languages";} + if (lang=="nap"){return "Neapolitan";} + if (lang=="nau"){return "Nauru";} + if (lang=="nav"){return "Navajo; Navaho";} + if (lang=="nbl"){return "Ndebele, South; South Ndebele";} + if (lang=="nde"){return "Ndebele, North; North Ndebele";} + if (lang=="ndo"){return "Ndonga";} + if (lang=="nds"){return "Low German; Low Saxon; German, Low; Saxon, Low";} + if (lang=="nep"){return "Nepali";} + if (lang=="new"){return "Nepal Bhasa; Newari";} + if (lang=="nia"){return "Nias";} + if (lang=="nic"){return "Niger-Kordofanian languages";} + if (lang=="niu"){return "Niuean";} + if (lang=="nld"){return "Dutch; Flemish";} + if (lang=="nno"){return "Norwegian Nynorsk; Nynorsk, Norwegian";} + if (lang=="nob"){return "Bokmål, Norwegian; Norwegian Bokmål";} + if (lang=="nog"){return "Nogai";} + if (lang=="non"){return "Norse, Old";} + if (lang=="nor"){return "Norwegian";} + if (lang=="nqo"){return "N'Ko";} + if (lang=="nso"){return "Pedi; Sepedi; Northern Sotho";} + if (lang=="nub"){return "Nubian languages";} + if (lang=="nwc"){return "Classical Newari; Old Newari; Classical Nepal Bhasa";} + if (lang=="nya"){return "Chichewa; Chewa; Nyanja";} + if (lang=="nym"){return "Nyamwezi";} + if (lang=="nyn"){return "Nyankole";} + if (lang=="nyo"){return "Nyoro";} + if (lang=="nzi"){return "Nzima";} + if (lang=="oci"){return "Occitan (post 1500)";} + if (lang=="oji"){return "Ojibwa";} + if (lang=="ori"){return "Oriya";} + if (lang=="orm"){return "Oromo";} + if (lang=="osa"){return "Osage";} + if (lang=="oss"){return "Ossetian; Ossetic";} + if (lang=="ota"){return "Turkish, Ottoman (1500-1928)";} + if (lang=="oto"){return "Otomian languages";} + if (lang=="paa"){return "Papuan languages";} + if (lang=="pag"){return "Pangasinan";} + if (lang=="pal"){return "Pahlavi";} + if (lang=="pam"){return "Pampanga; Kapampangan";} + if (lang=="pan"){return "Panjabi; Punjabi";} + if (lang=="pap"){return "Papiamento";} + if (lang=="pau"){return "Palauan";} + if (lang=="peo"){return "Persian, Old (ca.600-400 B.C.)";} + if (lang=="per"){return "Persian";} + if (lang=="phi"){return "Philippine languages";} + if (lang=="phn"){return "Phoenician";} + if (lang=="pli"){return "Pali";} + if (lang=="pol"){return "Polish";} + if (lang=="pon"){return "Pohnpeian";} + if (lang=="por"){return "Portuguese";} + if (lang=="pra"){return "Prakrit languages";} + if (lang=="pro"){return "Provençal, Old (to 1500);Occitan, Old (to 1500)";} + if (lang=="pus"){return "Pushto; Pashto";} + if (lang=="que"){return "Quechua";} + if (lang=="raj"){return "Rajasthani";} + if (lang=="rap"){return "Rapanui";} + if (lang=="rar"){return "Rarotongan; Cook Islands Maori";} + if (lang=="roa"){return "Romance languages";} + if (lang=="roh"){return "Romansh";} + if (lang=="rom"){return "Romany";} + if (lang=="ron"){return "Romanian; Moldavian; Moldovan";} + if (lang=="rum"){return "Romanian; Moldavian; Moldovan";} + if (lang=="run"){return "Rundi";} + if (lang=="rup"){return "Aromanian; Arumanian; Macedo-Romanian";} + if (lang=="rus"){return "Russian";} + if (lang=="sad"){return "Sandawe";} + if (lang=="sag"){return "Sango";} + if (lang=="sah"){return "Yakut";} + if (lang=="sai"){return "South American Indian languages";} + if (lang=="sal"){return "Salishan languages";} + if (lang=="sam"){return "Samaritan Aramaic";} + if (lang=="san"){return "Sanskrit";} + if (lang=="sas"){return "Sasak";} + if (lang=="sat"){return "Santali";} + if (lang=="scn"){return "Sicilian";} + if (lang=="sco"){return "Scots";} + if (lang=="sel"){return "Selkup";} + if (lang=="sem"){return "Semitic languages";} + if (lang=="sga"){return "Irish, Old (to 900)";} + if (lang=="sgn"){return "Sign Languages";} + if (lang=="shn"){return "Shan";} + if (lang=="sid"){return "Sidamo";} + if (lang=="sin"){return "Sinhala; Sinhalese";} + if (lang=="sio"){return "Siouan languages";} + if (lang=="sit"){return "Sino-Tibetan languages";} + if (lang=="sla"){return "Slavic languages";} + if (lang=="slk"){return "Slovak";} + if (lang=="slo"){return "Slovak";} + if (lang=="slv"){return "Slovenian";} + if (lang=="sma"){return "Southern Sami";} + if (lang=="sme"){return "Northern Sami";} + if (lang=="smi"){return "Sami languages";} + if (lang=="smj"){return "Lule Sami";} + if (lang=="smn"){return "Inari Sami";} + if (lang=="smo"){return "Samoan";} + if (lang=="sms"){return "Skolt Sami";} + if (lang=="sna"){return "Shona";} + if (lang=="snd"){return "Sindhi";} + if (lang=="snk"){return "Soninke";} + if (lang=="sog"){return "Sogdian";} + if (lang=="som"){return "Somali";} + if (lang=="son"){return "Songhai languages";} + if (lang=="sot"){return "Sotho, Southern";} + if (lang=="spa"){return "Spanish; Castilian";} + if (lang=="sqi"){return "Albanian";} + if (lang=="srd"){return "Sardinian";} + if (lang=="srn"){return "Sranan Tongo";} + if (lang=="srp"){return "Serbian";} + if (lang=="srr"){return "Serer";} + if (lang=="ssa"){return "Nilo-Saharan languages";} + if (lang=="ssw"){return "Swati";} + if (lang=="suk"){return "Sukuma";} + if (lang=="sun"){return "Sundanese";} + if (lang=="sus"){return "Susu";} + if (lang=="sux"){return "Sumerian";} + if (lang=="swa"){return "Swahili";} + if (lang=="swe"){return "Swedish";} + if (lang=="syc"){return "Classical Syriac";} + if (lang=="syr"){return "Syriac";} + if (lang=="tah"){return "Tahitian";} + if (lang=="tai"){return "Tai languages";} + if (lang=="tam"){return "Tamil";} + if (lang=="tat"){return "Tatar";} + if (lang=="tel"){return "Telugu";} + if (lang=="tem"){return "Timne";} + if (lang=="ter"){return "Tereno";} + if (lang=="tet"){return "Tetum";} + if (lang=="tgk"){return "Tajik";} + if (lang=="tgl"){return "Tagalog";} + if (lang=="tha"){return "Thai";} + if (lang=="tib"){return "Tibetan";} + if (lang=="tig"){return "Tigre";} + if (lang=="tir"){return "Tigrinya";} + if (lang=="tiv"){return "Tiv";} + if (lang=="tkl"){return "Tokelau";} + if (lang=="tlh"){return "Klingon; tlhIngan-Hol";} + if (lang=="tli"){return "Tlingit";} + if (lang=="tmh"){return "Tamashek";} + if (lang=="tog"){return "Tonga (Nyasa)";} + if (lang=="ton"){return "Tonga (Tonga Islands)";} + if (lang=="tpi"){return "Tok Pisin";} + if (lang=="tsi"){return "Tsimshian";} + if (lang=="tsn"){return "Tswana";} + if (lang=="tso"){return "Tsonga";} + if (lang=="tuk"){return "Turkmen";} + if (lang=="tum"){return "Tumbuka";} + if (lang=="tup"){return "Tupi languages";} + if (lang=="tur"){return "Turkish";} + if (lang=="tut"){return "Altaic languages";} + if (lang=="tvl"){return "Tuvalu";} + if (lang=="twi"){return "Twi";} + if (lang=="tyv"){return "Tuvinian";} + if (lang=="udm"){return "Udmurt";} + if (lang=="uga"){return "Ugaritic";} + if (lang=="uig"){return "Uighur; Uyghur";} + if (lang=="ukr"){return "Ukrainian";} + if (lang=="umb"){return "Umbundu";} + if (lang=="urd"){return "Urdu";} + if (lang=="uzb"){return "Uzbek";} + if (lang=="vai"){return "Vai";} + if (lang=="ven"){return "Venda";} + if (lang=="vie"){return "Vietnamese";} + if (lang=="vol"){return "Volapük";} + if (lang=="vot"){return "Votic";} + if (lang=="wak"){return "Wakashan languages";} + if (lang=="wal"){return "Wolaitta; Wolaytta";} + if (lang=="war"){return "Waray";} + if (lang=="was"){return "Washo";} + if (lang=="wel"){return "Welsh";} + if (lang=="wen"){return "Sorbian languages";} + if (lang=="wln"){return "Walloon";} + if (lang=="wol"){return "Wolof";} + if (lang=="xal"){return "Kalmyk; Oirat";} + if (lang=="xho"){return "Xhosa";} + if (lang=="yao"){return "Yao";} + if (lang=="yap"){return "Yapese";} + if (lang=="yid"){return "Yiddish";} + if (lang=="yor"){return "Yoruba";} + if (lang=="ypk"){return "Yupik languages";} + if (lang=="zap"){return "Zapotec";} + if (lang=="zbl"){return "Blissymbols; Blissymbolics; Bliss";} + if (lang=="zen"){return "Zenaga";} + if (lang=="zgh"){return "Standard Moroccan Tamazight";} + if (lang=="zha"){return "Zhuang; Chuang";} + if (lang=="zho"){return "Chinese";} + if (lang=="znd"){return "Zande languages";} + if (lang=="zul"){return "Zulu";} + if (lang=="zun"){return "Zuni";} + if (lang=="zxx"){return "No linguistic content; Not applicable";} + if (lang=="zza"){return "Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki";} + return "Undetermined";// actually "und", assumed by default + } + + + +} + diff --git a/lib/langcodes.h b/lib/langcodes.h new file mode 100644 index 00000000..c2c5f7d3 --- /dev/null +++ b/lib/langcodes.h @@ -0,0 +1,12 @@ +#include + +namespace Encodings { + + class ISO639{ + public: + static std::string decode(const std::string & lang); + }; + + +} + diff --git a/src/output/output_http_internal.cpp b/src/output/output_http_internal.cpp index 1798ab05..06627f47 100644 --- a/src/output/output_http_internal.cpp +++ b/src/output/output_http_internal.cpp @@ -2,6 +2,7 @@ #include "output_http_internal.h" #include #include +#include #include "flashPlayer.h" #include "oldFlashPlayer.h" @@ -413,6 +414,9 @@ namespace Mist { // show ALL the meta datas! json_resp["meta"] = strm.asJSON(); jsonForEach(json_resp["meta"]["tracks"], it) { + if (it->isMember("lang")){ + (*it)["language"] = Encodings::ISO639::decode((*it)["lang"].asStringRef()); + } it->removeMember("fragments"); it->removeMember("keys"); it->removeMember("keysizes");