summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-sdp.c
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2009-01-19 20:35:52 +0000
committerAnders Broman <anders.broman@ericsson.com>2009-01-19 20:35:52 +0000
commit2b607d7ce7eb550172956db92597ecebdb151f63 (patch)
tree90da88e58db34773fa98b6e16c79498e5d3df10f /epan/dissectors/packet-sdp.c
parent38c30e1d3de0e27258c6c2c37d280a4b873d4ba7 (diff)
downloadwireshark-2b607d7ce7eb550172956db92597ecebdb151f63.tar.gz
Dissect H263-1998/2000 Level
svn path=/trunk/; revision=27267
Diffstat (limited to 'epan/dissectors/packet-sdp.c')
-rw-r--r--epan/dissectors/packet-sdp.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c
index 143f4e6e95..34f959ba8c 100644
--- a/epan/dissectors/packet-sdp.c
+++ b/epan/dissectors/packet-sdp.c
@@ -167,6 +167,7 @@ static int hf_media_sample_rate = -1;
static int hf_media_format_specific_parameter = -1;
static int hf_sdp_fmtp_mpeg4_profile_level_id = -1;
static int hf_sdp_fmtp_h263_profile = -1;
+static int hf_sdp_fmtp_h263_level = -1;
static int hf_sdp_h264_packetization_mode = -1;
static int hf_sdp_h264_sprop_parameter_sets = -1;
static int hf_SDPh223LogicalChannelParameters = -1;
@@ -1231,6 +1232,22 @@ static const value_string h263_profile_vals[] =
{ 0, NULL },
};
+
+/* RFC 4629 The level are described in table X.2 of H.263 annex X */
+static const value_string h263_level_vals[] =
+{
+ { 10, "QCIF (176 x 144), 1 x 64Kb/s" },
+ { 20, "CIF (352 x 288), 2 x 64Kb/s" },
+ { 30, "CIF (352 x 288), 6 x 64Kb/s" },
+ { 40, "CIF (352 x 288), 32 x 64Kb/s" },
+ { 45, "QCIF (176 x144) support of CPFMT, 2 x 64Kb/s" },
+ { 50, "CIF (352 x 288) support of CPFMT, 64 x 64Kb/s" },
+ { 60, "CPFMT: 720 x 288 support of CPFMT, 128 x 64Kb/s" },
+ { 70, "CPFMT: 720 x 576 support of CPFMT, 256 x 64Kb/s" },
+ { 0, NULL },
+};
+
+
static const value_string h264_packetization_mode_vals[] =
{
{ 0, "Single NAL mode" },
@@ -1296,7 +1313,7 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
}
/* Dissect the H263-2000 profile parameter if present */
- if (mime_type != NULL && g_ascii_strcasecmp((char*)mime_type, "H263-2000") == 0) {
+ if ((mime_type != NULL && g_ascii_strcasecmp((char*)mime_type, "H263-2000") == 0)||(mime_type != NULL && g_ascii_strcasecmp((char*)mime_type, "H263-1998") == 0)) {
if (strcmp((char*)field_name, "profile") == 0) {
offset++;
tokenlen = end_offset - offset;
@@ -1304,6 +1321,13 @@ decode_sdp_fmtp(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, gint offset
item = proto_tree_add_uint(tree, hf_sdp_fmtp_h263_profile, tvb, offset, tokenlen,
atol((char*)format_specific_parameter));
PROTO_ITEM_SET_GENERATED(item);
+ }else if(strcmp((char*)field_name, "level") == 0) {
+ offset++;
+ tokenlen = end_offset - offset;
+ format_specific_parameter = tvb_get_ephemeral_string(tvb, offset, tokenlen);
+ item = proto_tree_add_uint(tree, hf_sdp_fmtp_h263_level, tvb, offset, tokenlen,
+ atol((char*)format_specific_parameter));
+ PROTO_ITEM_SET_GENERATED(item);
}
}
@@ -1893,6 +1917,10 @@ proto_register_sdp(void)
{ "Profile",
"sdp.fmtp.h263profile",FT_UINT32, BASE_DEC,VALS(h263_profile_vals), 0x0,
"Profile", HFILL }},
+ { &hf_sdp_fmtp_h263_level,
+ { "Level",
+ "sdp.fmtp.h263level",FT_UINT32, BASE_DEC,VALS(h263_level_vals), 0x0,
+ "level", HFILL }},
{ &hf_sdp_h264_packetization_mode,
{ "Packetization mode",
"sdp.fmtp.h264_packetization_mode",FT_UINT32, BASE_DEC,VALS(h264_packetization_mode_vals), 0x0,