mpegtspacketizer: Handle all ISO8859-x encodings in get_encoding()
authorMart Raudsepp <mart.raudsepp@collabora.co.uk>
Mon, 21 Mar 2011 18:40:14 +0000 (20:40 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Mon, 21 Mar 2011 18:57:39 +0000 (19:57 +0100)
... according to ETSI EN 300 468, "Selection of character table"

gst/mpegdemux/mpegtspacketizer.c
gst/mpegtsdemux/mpegtspacketizer.c

index a86ef0e..335c985 100644 (file)
@@ -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) {
index f27918a..6b51c19 100644 (file)
@@ -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) {