qtdemux: fix language code parsing for 3-letter codes starting with 'a'

And handle special value for 'unspecified' explicitly.

https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/QTFFChap4/qtff4.html
This commit is contained in:
Tim-Philipp Müller 2014-07-21 18:11:16 +01:00
parent 60648012f3
commit 5122410f11
2 changed files with 4 additions and 2 deletions

View file

@ -7321,8 +7321,10 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
lang_code = QT_UINT16 ((guint8 *) mdhd->data + 28);
}
if (lang_code < 0x800) {
if (lang_code < 0x400) {
qtdemux_lang_map_qt_code_to_iso (stream->lang_id, lang_code);
} else if (lang_code == 0x7fff) {
stream->lang_id[0] = 0; /* unspecified */
} else {
stream->lang_id[0] = 0x60 + ((lang_code >> 10) & 0x1F);
stream->lang_id[1] = 0x60 + ((lang_code >> 5) & 0x1F);

View file

@ -189,7 +189,7 @@ qtdemux_lang_map_qt_code_to_iso (gchar id[4], guint16 qt_lang_code)
{
const gchar *iso_code;
g_assert (qt_lang_code < 0x800);
g_assert (qt_lang_code < 0x400);
if (qt_lang_code < G_N_ELEMENTS (qt_lang_map))
iso_code = qt_lang_map[qt_lang_code];