⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 language.c

📁 这个库实现了录象功能
💻 C
字号:
/******************************************************************************* language.c libquicktime - A library for reading and writing quicktime/avi/mp4 files. http://libquicktime.sourceforge.net Copyright (C) 2002 Heroine Virtual Ltd. Copyright (C) 2002-2007 Members of the libquicktime project. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA*******************************************************************************/ #include "lqt_private.h"#include <string.h>#define LOG_DOMAIN "language"/* Definitions for charsets. These are mappings from Macintosh charset   symbols to iconv charsets. The ones, which are set to (char*)0   are not available in iconv (replacements??) */#define smRoman            { "MACINTOSH",    "ISO-8859-1"    },#define smHebrew           { (char*)0,       "ISO-8859-8"    },#define smJapanese         { (char*)0,       "SHIFT-JIS"     },#define smArabic           { (char*)0,       "ISO-8859-6"    },#define smExtArabic        { (char*)0,       "ISO-8859-6"    },#define smGreek            { (char*)0,       (char*)0        },#define smCentralEuroRoman { (char*)0,       "ISO-8859-2"    },#define smIcelandic        { "MAC-IS",       (char*)0        },#define smTradChinese      { (char*)0,       (char*)0        },#define smDevanagari       { (char*)0,       (char*)0        },#define smThai             { (char*)0,       (char*)0        },#define smKorean           { (char*)0,       (char*)0        },#define smSami             { "MAC-SAMI",     (char*)0        },#define smCyrillic         { "MAC-CYRILLIC", (char*)0        },#define smSimpChinese      { (char*)0,       (char*)0        },#define smCeltic           { (char*)0,       (char*)0        },#define smRomanian         { (char*)0,       (char*)0        },#define smUkrainian        { "MAC-UK",       (char*)0        },#define smArmenian         { (char*)0,       (char*)0        },#define smGeorgian         { (char*)0,       (char*)0        },#define smMongolian        { (char*)0,       (char*)0        },#define smTibetan          { (char*)0,       (char*)0        },#define smBengali          { (char*)0,       (char*)0        },#define smGuriati          { (char*)0,       (char*)0        },#define smGurmukhi         { (char*)0,       (char*)0        },#define smOriya            { (char*)0,       (char*)0        },#define smMalayalam        { (char*)0,       (char*)0        },#define smKannada          { (char*)0,       (char*)0        },#define smTamil            { (char*)0,       (char*)0        },#define smTelugu           { (char*)0,       (char*)0        },#define smSinhalese        { (char*)0,       (char*)0        },#define smBurmese          { (char*)0,       (char*)0        },#define smKhmer            { (char*)0,       (char*)0        },#define smLaotian          { (char*)0,       (char*)0        },#define smVietnamese       { (char*)0,       (char*)0        },#define smEthiopic         { (char*)0,       (char*)0        },/* Language / character set codecs */static struct  {  int  mac_code;  // Integer mac code  char language[4];   // 3 character language code  struct    {    char * charset; // Character set (understood by iconv_open)    char * charset_fallback; // Character set (understood by iconv_open)    } cs;  }mac_languages[] =  {    {   0, "eng", smRoman }, // English    {   1, "fra", smRoman }, // French    {   2, "ger", smRoman }, // German    {   3, "ita", smRoman }, // Italian    {   4, "dut", smRoman }, // Dutch    {   5, "swe", smRoman }, // Swedish    {   6, "spa", smRoman }, // Spanish    {   7, "dan", smRoman }, // Danish    {   8, "por", smRoman }, // Portuguese    {   9, "nor", smRoman }, // Norwegian    {  10, "heb", smHebrew }, // Hebrew    {  11, "jpn", smJapanese }, // Japanese    {  12, "ara", smArabic }, // Arabic    {  13, "fin", smRoman }, // Finnish    {  14, "gre", smGreek }, // Greek    {  15, "ice", smIcelandic }, // Icelandic    {  16, "mlt", smRoman }, // Maltese    {  17, "tur", smRoman }, // Turkish    {  18, "scr", smRoman }, // Croatian    {  19, "chi", smTradChinese }, // Traditional Chinese    {  20, "urd", smArabic }, // Urdu    {  21, "hin", smDevanagari }, // Hindi    {  22, "tha", smThai }, // Thai    {  23, "kor", smKorean}, // Korean    {  24, "lit", smCentralEuroRoman }, // Lithuanian    {  25, "pol", smCentralEuroRoman }, // Polish    {  26, "hun", smCentralEuroRoman }, // Hungarian    {  27, "est", smCentralEuroRoman }, // Estonian    {  28, "lav", smCentralEuroRoman }, // Latvian    {  29, "smi", smSami }, // Saamisk    {  30, "fao", smIcelandic}, // Faeroese    {  31, "far", smArabic }, // Farsi    {  32, "rus", smCyrillic }, // Russian    {  33, "chi", smSimpChinese }, // Simplified Chinese    {  34, "dut", smRoman }, // Flemish    {  35, "gle", smCeltic }, // Irish    {  36, "alb", smRoman }, // Albanian    {  37, "rum", smRomanian }, // Romanian    {  38, "cze", smCentralEuroRoman }, // Czech    {  39, "slo", smCentralEuroRoman }, // Slovak    {  40, "slv", smCentralEuroRoman }, // Slovenian    {  41, "yid", smHebrew }, // Yiddish    {  42, "scc", smCyrillic }, // Serbian    {  43, "mac", smCyrillic }, // Macedonian    {  44, "bul", smCyrillic }, // Bulgarian    {  45, "ukr", smUkrainian }, // Ukrainian    {  46, "bel", smCyrillic }, // Byelorussian    {  47, "uzb", smCyrillic }, // Uzbek    {  48, "kaz", smCyrillic }, // Kazakh    {  49, "aze", smCyrillic }, // Azerbaijani (cyrillic)    {  50, "aze", smArabic }, // Azerbaijani (arabic)    {  51, "arm", smArmenian }, // Armenian    {  52, "geo", smGeorgian }, // Georgian    {  53, "mol", smCyrillic }, // Moldavian    {  54, "kir", smCyrillic }, // Kirghiz    {  55, "tgk", smCyrillic }, // Tajiki    {  56, "tuk", smCyrillic }, // Turkmen    {  57, "mon", smMongolian }, // Mongolian    {  58, "mon", smCyrillic }, // Mongolian (cyrillic)    {  59, "pus", smArabic }, // Pashto    {  60, "kur", smArabic }, // Kurdish    {  61, "kas", smArabic }, // Kashmiri    {  62, "snd", smExtArabic }, // Sindhi    {  63, "tib", smTibetan }, // Tibetan    {  64, "nep", smDevanagari }, // Nepali    {  65, "san", smDevanagari }, // Sanskrit    //    {  66, "", smDevanagari }, // Marathi ??    {  67, "ben", smBengali }, // Bengali    {  68, "asm", smBengali }, // Assamese    {  69, "guj", smGuriati }, // Gujarati    {  70, "pan", smGurmukhi }, // Punjabi    {  71, "ori", smOriya }, // Oriya    {  72, "mal", smMalayalam }, // Malayalam    {  73, "kan", smKannada }, // Kannada    {  74, "tam", smTamil }, // Tamil    {  75, "tel", smTelugu }, // Telugu    {  76, "sin", smSinhalese }, // Sinhalese    {  77, "bur", smBurmese }, // Burmese    {  78, "khm", smKhmer }, // Khmer    {  79, "lao", smLaotian }, // Lao    {  80, "vie", smVietnamese }, // Vietnamese    {  81, "ind", smRoman }, // Indonesian    {  82, "tgl", smRoman }, // Tagalog    {  83, "may", smRoman }, // Malay (roman)    {  84, "may", smArabic }, // Malay (arabic)    {  85, "amh", smEthiopic }, // Amharic    {  86, "tir", smEthiopic }, // Tigrinya    {  87, "orm", smEthiopic }, // Oromo    {  88, "som", smRoman }, // Somali    {  89, "swa", smRoman }, // Swahili    {  90, "kin", smRoman }, // Kinyarwanda    {  91, "run", smRoman }, // Rundi    {  92, "nya", smRoman }, // Chewa    {  93, "mlg", smRoman }, // Malagasy    {  94, "epo", smRoman }, // Esperanto    { 128, "wel", smRoman }, // Welsh    { 129, "baq", smRoman }, // Basque    { 130, "cat", smRoman }, // Catalan    { 131, "lat", smRoman }, // Latin    { 132, "que", smRoman }, // Quechua    { 133, "grn", smRoman }, // Guarani    { 134, "aym", smRoman }, // Aymara    { 135, "tat", smCyrillic }, // Tatar    { 136, "uig", smArabic }, // Uighur    { 137, "dzo", smTibetan }, // Dzongkha    { 138, "jav", smRoman }, // Javanese (roman)  };#define NUM_CODES (sizeof(mac_languages)/sizeof(mac_languages[0]))static int get_language(quicktime_trak_t * trak, char * ret,                        lqt_file_type_t file_type)  {  int i;  if(IS_MP4(file_type))    {    ret[0] = ((trak->mdia.mdhd.language >> 10) & 0x1f) + 0x60;    ret[1] = ((trak->mdia.mdhd.language >> 5) & 0x1f)  + 0x60;    ret[2] = (trak->mdia.mdhd.language & 0x1f)         + 0x60;    ret[3] = '\0';    return 1;    }  for(i = 0; i < NUM_CODES; i++)    {    if(trak->mdia.mdhd.language == mac_languages[i].mac_code)      {      strcpy(ret, mac_languages[i].language);      return 1;      }    }  return 0;  }static char * unicode_string = LQT_UTF_8_16;const char * lqt_get_charset(int mac_code, lqt_file_type_t file_type)  {  int i;  if(IS_MP4(file_type))    return unicode_string;    for(i = 0; i < NUM_CODES; i++)    {    if(mac_code == mac_languages[i].mac_code)      return mac_languages[i].cs.charset;    }  return (char*)0;  }const char * lqt_get_charset_fallback(int mac_code, lqt_file_type_t file_type)  {  int i;  if(IS_MP4(file_type))    return unicode_string;    for(i = 0; i < NUM_CODES; i++)    {    if(mac_code == mac_languages[i].mac_code)      return mac_languages[i].cs.charset_fallback;    }  return (char*)0;  }static int set_language_code(quicktime_trak_t * trak,                             const char * language, lqt_file_type_t file_type)  {  int i;  if(IS_MP4(file_type))    {    trak->mdia.mdhd.language =      ((int)(language[0]-0x60) << 10) |      ((int)(language[1]-0x60) << 5) |      ((int)(language[2]-0x60));    return 0;    }    for(i = 0; i < NUM_CODES; i++)    {    if(!strcmp(language, mac_languages[i].language))      {      trak->mdia.mdhd.language = mac_languages[i].mac_code;      return 1;      }    }  return 0;  }void lqt_set_audio_language(quicktime_t * file, int track, const char * language)  {  if((track < 0) || (track >= file->total_atracks))    return;  set_language_code((file->atracks[track].track), language, file->file_type);  }int  lqt_get_audio_language(quicktime_t * file, int track, char * language)  {  if((track < 0) || (track >= file->total_atracks))    return 0;  return get_language(file->atracks[track].track, language, file->file_type);  }void lqt_set_text_language(quicktime_t * file, int track, const char * language)  {  if((track < 0) || (track >= file->total_ttracks))    return;    set_language_code((file->ttracks[track].track), language, file->file_type);  }int  lqt_get_text_language(quicktime_t * file, int track, char * language)  {  if((track < 0) || (track >= file->total_ttracks))    return 0;  return get_language(file->ttracks[track].track, language, file->file_type);  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -