gstreamer/gst/isomp4/qtdemux_lang.c
2019-10-05 22:38:11 +00:00

207 lines
4.6 KiB
C

/* 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_debug.h"
#include "qtdemux_lang.h"
#include <string.h>
#define GST_CAT_DEFAULT qtdemux_debug
/* 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 Northern 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');
}