aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mpeg-descriptor.c
diff options
context:
space:
mode:
authorRoman Volkov <volkoff_roman@ukr.net>2022-02-19 15:30:30 +0200
committerJaap Keuter <jaap.keuter@xs4all.nl>2022-02-20 20:06:21 +0000
commit581f3142bbc6355a71a7d4ce98f491c2ef509a66 (patch)
tree9be08d68a2111834da8d0183ef3d32ca0cb2610a /epan/dissectors/packet-mpeg-descriptor.c
parent70d432c35724b23cfb1f6d80773b520523a65f75 (diff)
mpeg descriptor: add TVA ID Descriptor (0x75)
Diffstat (limited to 'epan/dissectors/packet-mpeg-descriptor.c')
-rw-r--r--epan/dissectors/packet-mpeg-descriptor.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/epan/dissectors/packet-mpeg-descriptor.c b/epan/dissectors/packet-mpeg-descriptor.c
index a172e530f9..d3a7276727 100644
--- a/epan/dissectors/packet-mpeg-descriptor.c
+++ b/epan/dissectors/packet-mpeg-descriptor.c
@@ -125,6 +125,7 @@ static const value_string mpeg_descriptor_tag_vals[] = {
/* SID (0x71) from ETSI TS 102 812 */
{ 0x71, "Service Identifier Descriptor" },
{ 0x72, "Service Availability Descriptor" },
+ /* 0x73...0x76 from ETSI TS 102 323 */
{ 0x73, "Default Authority Descriptor" },
{ 0x74, "Related Content Descriptor" },
{ 0x75, "TVA ID Descriptor" },
@@ -3487,6 +3488,49 @@ proto_mpeg_descriptor_dissect_default_authority(tvbuff_t *tvb, guint offset, gui
proto_tree_add_item(tree, hf_mpeg_descr_default_authority_name, tvb, offset, len, ENC_ASCII);
}
+/* 0x75 TVA ID Descriptor */
+static int hf_mpeg_descr_tva_id = -1;
+static int hf_mpeg_descr_tva_reserved = -1;
+static int hf_mpeg_descr_tva_running_status = -1;
+
+static gint ett_mpeg_descriptor_tva = -1;
+
+#define MPEG_DESCR_TVA_RESREVED_MASK 0xF8
+#define MPEG_DESCR_TVA_RUNNING_STATUS_MASK 0x07
+
+static const value_string mpeg_descr_tva_running_status_vals[] = {
+ { 0, "Reserved" },
+ { 1, "Not yet running" },
+ { 2, "Starts (or restarts) shortly" },
+ { 3, "Paused" },
+ { 4, "Running" },
+ { 5, "Cancelled" },
+ { 6, "Completed" },
+ { 7, "Reserved" },
+ { 0, NULL }
+};
+
+static void
+proto_mpeg_descriptor_dissect_tva_id(tvbuff_t *tvb, guint offset, guint len, proto_tree *tree)
+{
+ guint end = offset + len;
+ guint tva_cnt = 0;
+
+ proto_tree * tva_tree;
+
+ while (offset < end) {
+ guint id = tvb_get_guint16(tvb, offset, ENC_BIG_ENDIAN);
+ tva_tree = proto_tree_add_subtree_format(tree, tvb, offset, 3, ett_mpeg_descriptor_tva, NULL, "TVA %u (0x%04X)", tva_cnt, id);
+ proto_tree_add_item(tva_tree, hf_mpeg_descr_tva_id, tvb, offset, 2, ENC_BIG_ENDIAN);
+ offset += 2;
+ tva_cnt += 1;
+
+ proto_tree_add_item(tva_tree, hf_mpeg_descr_tva_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tva_tree, hf_mpeg_descr_tva_running_status, tvb, offset, 1, ENC_BIG_ENDIAN);
+ offset += 1;
+ }
+}
+
/* 0x76 Content Identifier Descriptor */
static int hf_mpeg_descr_content_identifier_crid_type = -1;
static int hf_mpeg_descr_content_identifier_crid_location = -1;
@@ -4531,6 +4575,9 @@ proto_mpeg_descriptor_dissect(tvbuff_t *tvb, guint offset, proto_tree *tree)
case 0x73: /* Default Authority Descriptor */
proto_mpeg_descriptor_dissect_default_authority(tvb, offset, len, descriptor_tree);
break;
+ case 0x75: /* TVA ID Descriptor */
+ proto_mpeg_descriptor_dissect_tva_id(tvb, offset, len, descriptor_tree);
+ break;
case 0x76: /* Content Identifier Descriptor */
proto_mpeg_descriptor_dissect_content_identifier(tvb, offset, len, descriptor_tree);
break;
@@ -6245,6 +6292,23 @@ proto_register_mpeg_descriptor(void)
FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL
} },
+ /* 0x75 TVA ID Descriptor */
+ { &hf_mpeg_descr_tva_id, {
+ "TVA ID", "mpeg_descr.tva.id",
+ FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_tva_reserved, {
+ "Reserved", "mpeg_descr.tva.reserved",
+ FT_UINT8, BASE_HEX, NULL, MPEG_DESCR_TVA_RESREVED_MASK, NULL, HFILL
+ } },
+
+ { &hf_mpeg_descr_tva_running_status, {
+ "Running Status", "mpeg_descr.tva.status",
+ FT_UINT8, BASE_DEC, VALS(mpeg_descr_tva_running_status_vals),
+ MPEG_DESCR_TVA_RUNNING_STATUS_MASK, NULL, HFILL
+ } },
+
/* 0x76 Content Identifier Descriptor */
{ &hf_mpeg_descr_content_identifier_crid_type, {
"CRID Type", "mpeg_descr.content_identifier.crid_type",
@@ -6759,6 +6823,7 @@ proto_register_mpeg_descriptor(void)
&ett_mpeg_descriptor_nvod_reference_triplet,
&ett_mpeg_descriptor_vbi_data_service,
&ett_mpeg_descriptor_srv_avail_cells,
+ &ett_mpeg_descriptor_tva,
&ett_mpeg_descriptor_content_identifier_crid,
&ett_mpeg_descriptor_mosaic_logical_cell,
&ett_mpeg_descriptor_mosaic_elementary_cells,