aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2014-01-08 18:42:26 +0000
committerMartin Kaiser <wireshark@kaiser.cx>2014-01-08 18:42:26 +0000
commit57c4d976645addb3985cf0162b3fb5e1fc201692 (patch)
tree6673f1f2b0aad455614bb4cef085ad178b4bd4f2
parentc05722e3169ac9d72dd801b78496ff48a0f4097a (diff)
use a DVB string for the text field in the extended event descriptor
check for text length 0 while we're at it svn path=/trunk/; revision=54666
-rw-r--r--epan/dissectors/packet-mpeg-descriptor.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/epan/dissectors/packet-mpeg-descriptor.c b/epan/dissectors/packet-mpeg-descriptor.c
index f3a6d2f22d..38a24819bc 100644
--- a/epan/dissectors/packet-mpeg-descriptor.c
+++ b/epan/dissectors/packet-mpeg-descriptor.c
@@ -1244,7 +1244,8 @@ static int hf_mpeg_descr_extended_event_item_description_char = -1;
static int hf_mpeg_descr_extended_event_item_length = -1;
static int hf_mpeg_descr_extended_event_item_char = -1;
static int hf_mpeg_descr_extended_event_text_length = -1;
-static int hf_mpeg_descr_extended_event_text_char = -1;
+static int hf_mpeg_descr_extended_event_text_encoding = -1;
+static int hf_mpeg_descr_extended_event_text = -1;
#define MPEG_DESCR_EXTENDED_EVENT_DESCRIPTOR_NUMBER_MASK 0xF0
#define MPEG_DESCR_EXTENDED_EVENT_LAST_DESCRIPTOR_NUMBER_MASK 0x0F
@@ -1255,11 +1256,12 @@ static void
proto_mpeg_descriptor_dissect_extended_event(tvbuff_t *tvb, guint offset, proto_tree *tree)
{
- guint8 items_len, item_descr_len, item_len, text_len;
- guint items_end;
-
- proto_item *ii;
- proto_tree *item_tree;
+ guint8 items_len, item_descr_len, item_len, text_len;
+ guint items_end;
+ proto_item *ii;
+ proto_tree *item_tree;
+ guint enc_len;
+ dvb_encoding_e encoding;
proto_tree_add_item(tree, hf_mpeg_descr_extended_event_descriptor_number, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_mpeg_descr_extended_event_last_descriptor_number, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1297,7 +1299,12 @@ proto_mpeg_descriptor_dissect_extended_event(tvbuff_t *tvb, guint offset, proto_
proto_tree_add_item(tree, hf_mpeg_descr_extended_event_text_length, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
- proto_tree_add_item(tree, hf_mpeg_descr_extended_event_text_char, tvb, offset, text_len, ENC_ASCII|ENC_NA);
+ if (text_len>0) {
+ enc_len = dvb_analyze_string_charset(tvb, offset, text_len, &encoding);
+ dvb_add_chartbl(tree, hf_mpeg_descr_extended_event_text_encoding, tvb, offset, enc_len, encoding);
+ proto_tree_add_item(tree, hf_mpeg_descr_extended_event_text,
+ tvb, offset+enc_len, text_len-enc_len, dvb_enc_to_item_enc(encoding));
+ }
}
@@ -3592,9 +3599,14 @@ proto_register_mpeg_descriptor(void)
FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL
} },
- { &hf_mpeg_descr_extended_event_text_char, {
+ { &hf_mpeg_descr_extended_event_text_encoding, {
+ "Text Encoding", "mpeg_descr.ext_evt.txt_enc",
+ FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_extended_event_text, {
"Text", "mpeg_descr.ext_evt.txt",
- FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
+ FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL
} },
/* 0x50 Component Descriptor */