service name is a DVB-SI string
authorMartin Kaiser <wireshark@kaiser.cx>
Tue, 25 Feb 2014 19:04:19 +0000 (22:04 +0300)
committerMartin Kaiser <wireshark@kaiser.cx>
Mon, 3 Mar 2014 15:22:10 +0000 (15:22 +0000)
Change-Id: I81ef4cd363acf6cff99fd0f75b135962c4c22f53
Reviewed-on: https://code.wireshark.org/review/455
Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
epan/dissectors/packet-mpeg-descriptor.c

index 38a24819bc8e794543ca9d0835dfc633cffb95f5..cdde338fbc460753dd0a2a61eaf300a6b2222670 100644 (file)
@@ -969,6 +969,7 @@ static int hf_mpeg_descr_service_type = -1;
 static int hf_mpeg_descr_service_provider_name_length = -1;
 static int hf_mpeg_descr_service_provider = -1;
 static int hf_mpeg_descr_service_name_length = -1;
+static int hf_mpeg_descr_service_name_encoding = -1;
 static int hf_mpeg_descr_service_name = -1;
 
 static const value_string mpeg_descr_service_type_vals[] = {
@@ -1005,7 +1006,9 @@ value_string_ext mpeg_descr_service_type_vals_ext = VALUE_STRING_EXT_INIT(mpeg_d
 static void
 proto_mpeg_descriptor_dissect_service(tvbuff_t *tvb, guint offset, proto_tree *tree)
 {
-    guint8 descr_len, name_len;
+    guint8          descr_len, name_len;
+    guint           enc_len;
+    dvb_encoding_e  encoding;
 
     proto_tree_add_item(tree, hf_mpeg_descr_service_type, tvb, offset, 1, ENC_BIG_ENDIAN);
     offset += 1;
@@ -1021,7 +1024,11 @@ proto_mpeg_descriptor_dissect_service(tvbuff_t *tvb, guint offset, proto_tree *t
     proto_tree_add_item(tree, hf_mpeg_descr_service_name_length, tvb, offset, 1, ENC_BIG_ENDIAN);
     offset += 1;
 
-    proto_tree_add_item(tree, hf_mpeg_descr_service_name, tvb, offset, name_len, ENC_ASCII|ENC_NA);
+    enc_len = dvb_analyze_string_charset(tvb, offset, name_len, &encoding);
+    dvb_add_chartbl(tree, hf_mpeg_descr_service_name_encoding, tvb, offset, enc_len, encoding);
+
+    proto_tree_add_item(tree, hf_mpeg_descr_service_name,
+            tvb, offset+enc_len, name_len-enc_len, dvb_enc_to_item_enc(encoding));
 
 }
 
@@ -3414,9 +3421,14 @@ proto_register_mpeg_descriptor(void)
             FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
         } },
 
+        { &hf_mpeg_descr_service_name_encoding, {
+            "Service Name Encoding", "mpeg_descr.svc.svn_name_enc",
+            FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+        } },
+
         { &hf_mpeg_descr_service_name, {
             "Service Name", "mpeg_descr.svc.svc_name",
-            FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+            FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL
         } },
 
         /* 0x4A Linkage Descriptor */