| /* GStreamer Quicktime/ISO demuxer language utility functions |
| * Copyright (C) 2010 Tim-Philipp Müller <tim centricular net> |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Library General Public License for more details. |
| * |
| * You should have received a copy of the GNU Library General Public |
| * License along with this library; if not, write to the |
| * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
| * Boston, MA 02110-1301, USA. |
| */ |
| |
| #include "qtdemux.h" |
| #include "qtdemux_lang.h" |
| |
| #include <string.h> |
| |
| /* http://developer.apple.com/mac/library/documentation/QuickTime/QTFF/QTFFChap4/qtff4.html */ |
| |
| static const gchar qt_lang_map[][4] = { |
| |
| /* 000 English |
| * 001 French |
| * 002 German |
| * 003 Italian |
| * 004 Dutch |
| * 005 Swedish |
| * 006 Spanish |
| * 007 Danish |
| * 008 Portuguese |
| * 009 Norwegian |
| */ |
| "eng", "fre", "deu", "ita", "nld", "swe", "spa", "dan", "por", "nor", |
| |
| /* 010 Hebrew |
| * 011 Japanese |
| * 012 Arabic |
| * 013 Finnish |
| * 014 Greek |
| * 015 Icelandic |
| * 016 Maltese |
| * 017 Turkish |
| * 018 Croatian |
| * 019 Traditional Chinese (ISO 639-2 can't express script differences, so zho) |
| */ |
| "heb", "jpn", "ara", "fin", "ell", "isl", "mlt", "tur", "hrv", "zho", |
| |
| /* 020 Urdu |
| * 021 Hindi |
| * 022 Thai |
| * 023 Korean |
| * 024 Lithuanian |
| * 025 Polish |
| * 026 Hungarian |
| * 027 Estonian |
| * 028 Latvian / Lettish |
| * 029 Lappish / Saamish (used code for Nothern Sami) |
| */ |
| "urd", "hin", "tha", "kor", "lit", "pol", "hun", "est", "lav", "sme", |
| |
| /* 030 Faeroese |
| * 031 Farsi |
| * 032 Russian |
| * 033 Simplified Chinese (ISO 639-2 can't express script differences, so zho) |
| * 034 Flemish (no ISO 639-2 code, used Dutch code) |
| * 035 Irish |
| * 036 Albanian |
| * 037 Romanian |
| * 038 Czech |
| * 039 Slovak |
| */ |
| "fao", "fas", "rus", "zho", "nld", "gle", "sqi", "ron", "ces", "slk", |
| |
| /* 040 Slovenian |
| * 041 Yiddish |
| * 042 Serbian |
| * 043 Macedonian |
| * 044 Bulgarian |
| * 045 Ukrainian |
| * 046 Byelorussian |
| * 047 Uzbek |
| * 048 Kazakh |
| * 049 Azerbaijani |
| */ |
| "slv", "yid", "srp", "mkd", "bul", "ukr", "bel", "uzb", "kaz", "aze", |
| |
| /* 050 AzerbaijanAr (presumably script difference? used aze here) |
| * 051 Armenian |
| * 052 Georgian |
| * 053 Moldavian |
| * 054 Kirghiz |
| * 055 Tajiki |
| * 056 Turkmen |
| * 057 Mongolian |
| * 058 MongolianCyr (presumably script difference? used mon here) |
| * 059 Pashto |
| */ |
| |
| "aze", "hye", "kat", "mol", "kir", "tgk", "tuk", "mon", "mon", "pus", |
| |
| |
| /* 060 Kurdish |
| * 061 Kashmiri |
| * 062 Sindhi |
| * 063 Tibetan |
| * 064 Nepali |
| * 065 Sanskrit |
| * 066 Marathi |
| * 067 Bengali |
| * 068 Assamese |
| * 069 Gujarati |
| */ |
| "kur", "kas", "snd", "bod", "nep", "san", "mar", "ben", "asm", "guj", |
| |
| /* 070 Punjabi |
| * 071 Oriya |
| * 072 Malayalam |
| * 073 Kannada |
| * 074 Tamil |
| * 075 Telugu |
| * 076 Sinhalese |
| * 077 Burmese |
| * 078 Khmer |
| * 079 Lao |
| */ |
| "pan", "ori", "mal", "kan", "tam", "tel", "sin", "mya", "khm", "lao", |
| |
| /* 080 Vietnamese |
| * 081 Indonesian |
| * 082 Tagalog |
| * 083 MalayRoman |
| * 084 MalayArabic |
| * 085 Amharic |
| * 087 Galla (same as Oromo?) |
| * 087 Oromo |
| * 088 Somali |
| * 089 Swahili |
| */ |
| "vie", "ind", "tgl", "msa", "msa", "amh", "orm", "orm", "som", "swa", |
| |
| /* 090 Ruanda |
| * 091 Rundi |
| * 092 Chewa |
| * 093 Malagasy |
| * 094 Esperanto |
| * 095 --- |
| * 096 --- |
| * 097 --- |
| * 098 --- |
| * 099 --- |
| */ |
| "kin", "run", "nya", "mlg", "ep", "und", "und", "und", "und", "und", |
| |
| /* 100-109 --- |
| * 110-119 --- |
| */ |
| "und", "und", "und", "und", "und", "und", "und", "und", "und", "und", |
| "und", "und", "und", "und", "und", "und", "und", "und", "und", "und", |
| |
| /* 120-127 --- |
| * 128 Welsh |
| * 129 Basque |
| */ |
| "und", "und", "und", "und", "und", "und", "und", "und", "cym", "eus", |
| |
| /* 130 Catalan |
| * 131 Latin |
| * 132 Quechua |
| * 133 Guarani |
| * 134 Aymara |
| * 135 Tatar |
| * 136 Uighur |
| * 137 Dzongkha |
| * 138 JavaneseRom |
| */ |
| "cat", "lat", "que", "grn", "aym", "tat", "uig", "dzo", "jav" |
| }; |
| |
| /* map quicktime language code to ISO-639-2T id, returns "und" if unknown */ |
| void |
| qtdemux_lang_map_qt_code_to_iso (gchar id[4], guint16 qt_lang_code) |
| { |
| const gchar *iso_code; |
| |
| g_assert (qt_lang_code < 0x400); |
| |
| if (qt_lang_code < G_N_ELEMENTS (qt_lang_map)) |
| iso_code = qt_lang_map[qt_lang_code]; |
| else |
| iso_code = "und"; |
| |
| GST_DEBUG ("mapped quicktime language code %u to ISO 639-2T code '%s'", |
| qt_lang_code, iso_code); |
| |
| memcpy (id, iso_code, 4); |
| |
| g_assert (id[3] == '\0'); |
| } |