diff options
author | Mart Raudsepp <mart.raudsepp@collabora.co.uk> | 2011-03-21 20:40:14 +0200 |
---|---|---|
committer | Edward Hervey <edward.hervey@collabora.co.uk> | 2011-03-21 19:57:39 +0100 |
commit | b69450af92ba510b4c83ee875a8fe925e4b0b537 (patch) | |
tree | 7162f120f58462c2e4058e2ad14d93f20c679863 /gst | |
parent | 3ebc8a43e2ed24a26549dde62a7cb74e4aa8e037 (diff) |
mpegtspacketizer: Handle all ISO8859-x encodings in get_encoding()
... according to ETSI EN 300 468, "Selection of character table"
Diffstat (limited to 'gst')
-rw-r--r-- | gst/mpegdemux/mpegtspacketizer.c | 25 | ||||
-rw-r--r-- | gst/mpegtsdemux/mpegtspacketizer.c | 25 |
2 files changed, 10 insertions, 40 deletions
diff --git a/gst/mpegdemux/mpegtspacketizer.c b/gst/mpegdemux/mpegtspacketizer.c index a86ef0e81..335c98508 100644 --- a/gst/mpegdemux/mpegtspacketizer.c +++ b/gst/mpegdemux/mpegtspacketizer.c @@ -1646,8 +1646,8 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer * packetizer, DESC_LENGTH (event_descriptor)) { eventname_tmp = - get_encoding_and_convert (eventname, eventname_length), - eventdescription_tmp = + get_encoding_and_convert (eventname, eventname_length); + eventdescription_tmp = get_encoding_and_convert (eventdescription, eventdescription_length); @@ -2360,24 +2360,9 @@ get_encoding (const gchar * text, guint * start_text, gboolean * is_multibyte) firstbyte = (guint8) text[0]; - if (firstbyte == 0x01) { - encoding = g_strdup ("iso8859-5"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x02) { - encoding = g_strdup ("iso8859-6"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x03) { - encoding = g_strdup ("iso8859-7"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x04) { - encoding = g_strdup ("iso8859-8"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x05) { - encoding = g_strdup ("iso8859-9"); + /* ETSI EN 300 468, "Selection of character table" */ + if (firstbyte <= 0x0B) { + encoding = g_strdup_printf ("iso8859-%u", firstbyte + 4); *start_text = 1; *is_multibyte = FALSE; } else if (firstbyte >= 0x20) { diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c index f27918a0e..6b51c19c5 100644 --- a/gst/mpegtsdemux/mpegtspacketizer.c +++ b/gst/mpegtsdemux/mpegtspacketizer.c @@ -1693,8 +1693,8 @@ mpegts_packetizer_parse_eit (MpegTSPacketizer2 * packetizer, DESC_LENGTH (event_descriptor)) { eventname_tmp = - get_encoding_and_convert (eventname, eventname_length), - eventdescription_tmp = + get_encoding_and_convert (eventname, eventname_length); + eventdescription_tmp = get_encoding_and_convert (eventdescription, eventdescription_length); @@ -2466,24 +2466,9 @@ get_encoding (const gchar * text, guint * start_text, gboolean * is_multibyte) firstbyte = (guint8) text[0]; - if (firstbyte == 0x01) { - encoding = g_strdup ("iso8859-5"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x02) { - encoding = g_strdup ("iso8859-6"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x03) { - encoding = g_strdup ("iso8859-7"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x04) { - encoding = g_strdup ("iso8859-8"); - *start_text = 1; - *is_multibyte = FALSE; - } else if (firstbyte == 0x05) { - encoding = g_strdup ("iso8859-9"); + /* ETSI EN 300 468, "Selection of character table" */ + if (firstbyte <= 0x0B) { + encoding = g_strdup_printf ("iso8859-%u", firstbyte + 4); *start_text = 1; *is_multibyte = FALSE; } else if (firstbyte >= 0x20) { |