aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-rtp.c223
-rw-r--r--epan/dissectors/packet-sdp.c4
-rw-r--r--epan/libwireshark.def4
-rw-r--r--epan/rtp_pt.h4
-rw-r--r--gtk/rtp_player.c2
-rw-r--r--gtk/rtp_stream_dlg.c2
-rw-r--r--gtk/voip_calls.c2
-rw-r--r--tap-rtp.c2
8 files changed, 197 insertions, 46 deletions
diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c
index d9411b9335..f7585c25fb 100644
--- a/epan/dissectors/packet-rtp.c
+++ b/epan/dissectors/packet-rtp.c
@@ -259,9 +259,9 @@ static guint rtp_rfc2198_pt = 99;
static const value_string rtp_version_vals[] =
{
+ { 2, "RFC 1889 Version" }, /* First for speed */
{ 0, "Old VAT Version" },
{ 1, "First Draft Version" },
- { 2, "RFC 1889 Version" },
{ 0, NULL },
};
@@ -274,37 +274,111 @@ static const value_string rtp_version_vals[] =
/* Payload type is the last 7 bits */
#define RTP_PAYLOAD_TYPE(octet) ((octet) & 0x7F)
+/* http://www.iana.org/assignments/rtp-parameters */
-const value_string rtp_payload_type_vals[] =
+static const value_string rtp_payload_type_vals[] =
{
- { PT_PCMU, "ITU-T G.711 PCMU" },
- { PT_1016, "USA Federal Standard FS-1016" },
- { PT_G721, "ITU-T G.721" },
- { PT_GSM, "GSM 06.10" },
- { PT_G723, "ITU-T G.723" },
- { PT_DVI4_8000, "DVI4 8000 samples/s" },
- { PT_DVI4_16000, "DVI4 16000 samples/s" },
- { PT_LPC, "Experimental linear predictive encoding from Xerox PARC" },
- { PT_PCMA, "ITU-T G.711 PCMA" },
- { PT_G722, "ITU-T G.722" },
- { PT_L16_STEREO, "16-bit uncompressed audio, stereo" },
- { PT_L16_MONO, "16-bit uncompressed audio, monaural" },
- { PT_QCELP, "Qualcomm Code Excited Linear Predictive coding" },
- { PT_CN, "Comfort noise" },
- { PT_MPA, "MPEG-I/II Audio"},
- { PT_G728, "ITU-T G.728" },
- { PT_DVI4_11025, "DVI4 11025 samples/s" },
- { PT_DVI4_22050, "DVI4 22050 samples/s" },
- { PT_G729, "ITU-T G.729" },
- { PT_CN_OLD, "Comfort noise (old)" },
- { PT_CELB, "Sun CellB video encoding" },
- { PT_JPEG, "JPEG-compressed video" },
- { PT_NV, "'nv' program" },
- { PT_H261, "ITU-T H.261" },
- { PT_MPV, "MPEG-I/II Video"},
- { PT_MP2T, "MPEG-II transport streams"},
- { PT_H263, "ITU-T H.263" },
-
+/* 0 */ { PT_PCMU, "ITU-T G.711 PCMU" },
+/* 1 */ { PT_1016, "USA Federal Standard FS-1016" },
+/* 2 */ { PT_G721, "ITU-T G.721" },
+/* 3 */ { PT_GSM, "GSM 06.10" },
+/* 4 */ { PT_G723, "ITU-T G.723" },
+/* 5 */ { PT_DVI4_8000, "DVI4 8000 samples/s" },
+/* 6 */ { PT_DVI4_16000, "DVI4 16000 samples/s" },
+/* 7 */ { PT_LPC, "Experimental linear predictive encoding from Xerox PARC" },
+/* 8 */ { PT_PCMA, "ITU-T G.711 PCMA" },
+/* 9 */ { PT_G722, "ITU-T G.722" },
+/* 10 */ { PT_L16_STEREO, "16-bit uncompressed audio, stereo" },
+/* 11 */ { PT_L16_MONO, "16-bit uncompressed audio, monaural" },
+/* 12 */ { PT_QCELP, "Qualcomm Code Excited Linear Predictive coding" },
+/* 13 */ { PT_CN, "Comfort noise" },
+/* 14 */ { PT_MPA, "MPEG-I/II Audio"},
+/* 15 */ { PT_G728, "ITU-T G.728" },
+/* 16 */ { PT_DVI4_11025, "DVI4 11025 samples/s" },
+/* 17 */ { PT_DVI4_22050, "DVI4 22050 samples/s" },
+/* 18 */ { PT_G729, "ITU-T G.729" },
+/* 19 */ { PT_CN_OLD, "Comfort noise (old)" },
+/* 20 */ { 20, "Unassigned" },
+/* 21 */ { 21, "Unassigned" },
+/* 22 */ { 22, "Unassigned" },
+/* 23 */ { 23, "Unassigned" },
+/* 24 */ { 24, "Unassigned" },
+/* 25 */ { PT_CELB, "Sun CellB video encoding" },
+/* 26 */ { PT_JPEG, "JPEG-compressed video" },
+/* 27 */ { 27, "Unassigned" },
+/* 28 */ { PT_NV, "'nv' program" },
+/* 29 */ { 29, "Unassigned" },
+/* 30 */ { 30, "Unassigned" },
+/* 31 */ { PT_H261, "ITU-T H.261" },
+/* 32 */ { PT_MPV, "MPEG-I/II Video"},
+/* 33 */ { PT_MP2T, "MPEG-II transport streams"},
+/* 34 */ { PT_H263, "ITU-T H.263" },
+/* 35-71 Unassigned */
+/* 35 */ { 35, "Unassigned" },
+/* 36 */ { 36, "Unassigned" },
+/* 37 */ { 37, "Unassigned" },
+/* 38 */ { 38, "Unassigned" },
+/* 39 */ { 39, "Unassigned" },
+/* 40 */ { 40, "Unassigned" },
+/* 41 */ { 41, "Unassigned" },
+/* 42 */ { 42, "Unassigned" },
+/* 43 */ { 43, "Unassigned" },
+/* 44 */ { 44, "Unassigned" },
+/* 45 */ { 45, "Unassigned" },
+/* 46 */ { 46, "Unassigned" },
+/* 47 */ { 47, "Unassigned" },
+/* 48 */ { 48, "Unassigned" },
+/* 49 */ { 49, "Unassigned" },
+/* 50 */ { 50, "Unassigned" },
+/* 51 */ { 51, "Unassigned" },
+/* 52 */ { 52, "Unassigned" },
+/* 53 */ { 53, "Unassigned" },
+/* 54 */ { 54, "Unassigned" },
+/* 55 */ { 55, "Unassigned" },
+/* 56 */ { 56, "Unassigned" },
+/* 57 */ { 57, "Unassigned" },
+/* 58 */ { 58, "Unassigned" },
+/* 59 */ { 59, "Unassigned" },
+/* 60 */ { 60, "Unassigned" },
+/* 61 */ { 61, "Unassigned" },
+/* 62 */ { 62, "Unassigned" },
+/* 63 */ { 63, "Unassigned" },
+/* 64 */ { 64, "Unassigned" },
+/* 65 */ { 65, "Unassigned" },
+/* 66 */ { 66, "Unassigned" },
+/* 67 */ { 67, "Unassigned" },
+/* 68 */ { 68, "Unassigned" },
+/* 69 */ { 69, "Unassigned" },
+/* 70 */ { 70, "Unassigned" },
+/* 71 */ { 71, "Unassigned" },
+/* 72-76 Reserved for RTCP conflict avoidance [RFC3551] */
+/* 72 */ { 72, "Reserved for RTCP conflict avoidance" },
+/* 73 */ { 73, "Reserved for RTCP conflict avoidance" },
+/* 74 */ { 74, "Reserved for RTCP conflict avoidance" },
+/* 75 */ { 75, "Reserved for RTCP conflict avoidance" },
+/* 76 */ { 76, "Reserved for RTCP conflict avoidance" },
+/* 77-95 Unassigned ? */
+/* 77 */ { 77, "Unassigned" },
+/* 78 */ { 78, "Unassigned" },
+/* 79 */ { 79, "Unassigned" },
+/* 80 */ { 80, "Unassigned" },
+/* 81 */ { 81, "Unassigned" },
+/* 82 */ { 82, "Unassigned" },
+/* 83 */ { 83, "Unassigned" },
+/* 84 */ { 84, "Unassigned" },
+/* 85 */ { 85, "Unassigned" },
+/* 86 */ { 86, "Unassigned" },
+/* 87 */ { 87, "Unassigned" },
+/* 88 */ { 88, "Unassigned" },
+/* 89 */ { 89, "Unassigned" },
+/* 90 */ { 90, "Unassigned" },
+/* 91 */ { 91, "Unassigned" },
+/* 90 */ { 90, "Unassigned" },
+/* 91 */ { 91, "Unassigned" },
+/* 92 */ { 92, "Unassigned" },
+/* 93 */ { 93, "Unassigned" },
+/* 94 */ { 94, "Unassigned" },
+/* 95 */ { 95, "Unassigned" },
/* Alex Lindberg - Added to support addtional RTP payload types
See epan/rtp_pt.h */
{ PT_UNDF_96, "DynamicRTP-Type-96" },
@@ -343,7 +417,9 @@ const value_string rtp_payload_type_vals[] =
{ 0, NULL },
};
-const value_string rtp_payload_type_short_vals[] =
+value_string_ext rtp_payload_type_vals_ext = VALUE_STRING_EXT_INIT(rtp_payload_type_vals);
+
+static const value_string rtp_payload_type_short_vals[] =
{
{ PT_PCMU, "g711U" },
{ PT_1016, "fs-1016" },
@@ -365,14 +441,87 @@ const value_string rtp_payload_type_short_vals[] =
{ PT_DVI4_22050, "DVI4 22k" },
{ PT_G729, "g729" },
{ PT_CN_OLD, "CN(old)" },
+/* 20 */ { 20, "Unassigned" },
+/* 21 */ { 21, "Unassigned" },
+/* 22 */ { 22, "Unassigned" },
+/* 23 */ { 23, "Unassigned" },
+/* 24 */ { 24, "Unassigned" },
{ PT_CELB, "CellB" },
{ PT_JPEG, "JPEG" },
+/* 27 */ { 27, "Unassigned" },
{ PT_NV, "NV" },
+/* 29 */ { 29, "Unassigned" },
+/* 30 */ { 30, "Unassigned" },
{ PT_H261, "h261" },
{ PT_MPV, "MPEG-I/II Video"},
{ PT_MP2T, "MPEG-II streams"},
{ PT_H263, "h263" },
-
+/* 35-71 Unassigned */
+/* 35 */ { 35, "Unassigned" },
+/* 36 */ { 36, "Unassigned" },
+/* 37 */ { 37, "Unassigned" },
+/* 38 */ { 38, "Unassigned" },
+/* 39 */ { 39, "Unassigned" },
+/* 40 */ { 40, "Unassigned" },
+/* 41 */ { 41, "Unassigned" },
+/* 42 */ { 42, "Unassigned" },
+/* 43 */ { 43, "Unassigned" },
+/* 44 */ { 44, "Unassigned" },
+/* 45 */ { 45, "Unassigned" },
+/* 46 */ { 46, "Unassigned" },
+/* 47 */ { 47, "Unassigned" },
+/* 48 */ { 48, "Unassigned" },
+/* 49 */ { 49, "Unassigned" },
+/* 50 */ { 50, "Unassigned" },
+/* 51 */ { 51, "Unassigned" },
+/* 52 */ { 52, "Unassigned" },
+/* 53 */ { 53, "Unassigned" },
+/* 54 */ { 54, "Unassigned" },
+/* 55 */ { 55, "Unassigned" },
+/* 56 */ { 56, "Unassigned" },
+/* 57 */ { 57, "Unassigned" },
+/* 58 */ { 58, "Unassigned" },
+/* 59 */ { 59, "Unassigned" },
+/* 60 */ { 60, "Unassigned" },
+/* 61 */ { 61, "Unassigned" },
+/* 62 */ { 62, "Unassigned" },
+/* 63 */ { 63, "Unassigned" },
+/* 64 */ { 64, "Unassigned" },
+/* 65 */ { 65, "Unassigned" },
+/* 66 */ { 66, "Unassigned" },
+/* 67 */ { 67, "Unassigned" },
+/* 68 */ { 68, "Unassigned" },
+/* 69 */ { 69, "Unassigned" },
+/* 70 */ { 70, "Unassigned" },
+/* 71 */ { 71, "Unassigned" },
+/* 72-76 Reserved for RTCP conflict avoidance [RFC3551] */
+/* 72 */ { 72, "Reserved for RTCP conflict avoidance" },
+/* 73 */ { 73, "Reserved for RTCP conflict avoidance" },
+/* 74 */ { 74, "Reserved for RTCP conflict avoidance" },
+/* 75 */ { 75, "Reserved for RTCP conflict avoidance" },
+/* 76 */ { 76, "Reserved for RTCP conflict avoidance" },
+/* 77-95 Unassigned ? */
+/* 77 */ { 77, "Unassigned" },
+/* 78 */ { 78, "Unassigned" },
+/* 79 */ { 79, "Unassigned" },
+/* 80 */ { 80, "Unassigned" },
+/* 81 */ { 81, "Unassigned" },
+/* 82 */ { 82, "Unassigned" },
+/* 83 */ { 83, "Unassigned" },
+/* 84 */ { 84, "Unassigned" },
+/* 85 */ { 85, "Unassigned" },
+/* 86 */ { 86, "Unassigned" },
+/* 87 */ { 87, "Unassigned" },
+/* 88 */ { 88, "Unassigned" },
+/* 89 */ { 89, "Unassigned" },
+/* 90 */ { 90, "Unassigned" },
+/* 91 */ { 91, "Unassigned" },
+/* 90 */ { 90, "Unassigned" },
+/* 91 */ { 91, "Unassigned" },
+/* 92 */ { 92, "Unassigned" },
+/* 93 */ { 93, "Unassigned" },
+/* 94 */ { 94, "Unassigned" },
+/* 95 */ { 95, "Unassigned" },
/* Alex Lindberg - Short RTP types */
{ PT_UNDF_96, "RTPType-96" },
{ PT_UNDF_97, "RTPType-97" },
@@ -409,6 +558,8 @@ const value_string rtp_payload_type_short_vals[] =
{ 0, NULL },
};
+value_string_ext rtp_payload_type_short_vals_ext = VALUE_STRING_EXT_INIT(rtp_payload_type_short_vals);
+
#if 0
static const value_string srtp_encryption_alg_vals[] =
{
@@ -951,11 +1102,11 @@ dissect_rtp_rfc2198(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
proto_tree_add_item(rfc2198_hdr_tree, hf_rtp_rfc2198_follow, tvb, offset, 1, FALSE );
proto_tree_add_uint_format(rfc2198_hdr_tree, hf_rtp_payload_type, tvb,
offset, 1, octet1, "Payload type: %s (%u)",
- payload_type_str ? payload_type_str : val_to_str(hdr_new->pt, rtp_payload_type_vals, "Unknown"),
+ payload_type_str ? payload_type_str : val_to_str_ext(hdr_new->pt, &rtp_payload_type_vals_ext, "Unknown"),
hdr_new->pt);
proto_item_append_text(ti, ": PT=%s",
payload_type_str ? payload_type_str :
- val_to_str(hdr_new->pt, rtp_payload_type_vals, "Unknown (%u)"));
+ val_to_str_ext(hdr_new->pt, &rtp_payload_type_vals_ext, "Unknown (%u)"));
offset += 1;
/* Timestamp offset and block length don't apply to last header */
@@ -1178,7 +1329,7 @@ dissect_rtp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
col_add_fstr( pinfo->cinfo, COL_INFO,
"PT=%s, SSRC=0x%X, Seq=%u, Time=%u%s",
- payload_type_str ? payload_type_str : val_to_str( payload_type, rtp_payload_type_vals,"Unknown (%u)" ),
+ payload_type_str ? payload_type_str : val_to_str_ext( payload_type, &rtp_payload_type_vals_ext,"Unknown (%u)" ),
sync_src,
seq_num,
timestamp,
@@ -1212,7 +1363,7 @@ dissect_rtp( tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree )
item = proto_tree_add_uint_format( rtp_tree, hf_rtp_payload_type, tvb,
offset, 1, octet2, "Payload type: %s (%u)",
- payload_type_str ? payload_type_str : val_to_str( payload_type, rtp_payload_type_vals,"Unknown"),
+ payload_type_str ? payload_type_str : val_to_str_ext( payload_type, &rtp_payload_type_vals_ext,"Unknown"),
payload_type);
offset++;
diff --git a/epan/dissectors/packet-sdp.c b/epan/dissectors/packet-sdp.c
index 8347921739..73b93eaf5c 100644
--- a/epan/dissectors/packet-sdp.c
+++ b/epan/dissectors/packet-sdp.c
@@ -561,7 +561,7 @@ dissect_sdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
} else
if (strlen(sdp_pi->summary_str)) g_strlcat(sdp_pi->summary_str, " ", 50);
- g_strlcat(sdp_pi->summary_str, val_to_str(transport_info.media[n].pt[i], rtp_payload_type_short_vals, "%u"), 50);
+ g_strlcat(sdp_pi->summary_str, val_to_str_ext(transport_info.media[n].pt[i], &rtp_payload_type_short_vals_ext, "%u"), 50);
}
}
@@ -1149,7 +1149,7 @@ dissect_sdp_media(tvbuff_t *tvb, proto_item *ti,
"RTP/AVP") == 0) {
media_format = tvb_get_ephemeral_string(tvb, offset, tokenlen);
proto_tree_add_string(sdp_media_tree, hf_media_format, tvb, offset,
- tokenlen, val_to_str(atol((char*)media_format), rtp_payload_type_vals, "%u"));
+ tokenlen, val_to_str_ext(atol((char*)media_format), &rtp_payload_type_vals_ext, "%u"));
idx = transport_info->media[transport_info->media_count].pt_count;
transport_info->media[transport_info->media_count].pt[idx] = atol((char*)media_format);
if (idx < (SDP_MAX_RTP_PAYLOAD_TYPES-1))
diff --git a/epan/libwireshark.def b/epan/libwireshark.def
index beca4ce082..c547836e20 100644
--- a/epan/libwireshark.def
+++ b/epan/libwireshark.def
@@ -906,8 +906,8 @@ rpc_roundup
rtcp_add_address
rtp_add_address
rtp_free_hash_dyn_payload
-rtp_payload_type_short_vals DATA
-rtp_payload_type_vals DATA
+rtp_payload_type_short_vals_ext DATA
+rtp_payload_type_vals_ext DATA
running_in_build_directory
rval_to_str
sccp_message_type_acro_values DATA
diff --git a/epan/rtp_pt.h b/epan/rtp_pt.h
index 9f185046fd..bb49f0196b 100644
--- a/epan/rtp_pt.h
+++ b/epan/rtp_pt.h
@@ -98,7 +98,7 @@
#define PT_UNDF_126 126
#define PT_UNDF_127 127
-WS_VAR_IMPORT const value_string rtp_payload_type_vals[];
-WS_VAR_IMPORT const value_string rtp_payload_type_short_vals[];
+WS_VAR_IMPORT value_string_ext rtp_payload_type_vals_ext;
+WS_VAR_IMPORT value_string_ext rtp_payload_type_short_vals_ext;
#endif
diff --git a/gtk/rtp_player.c b/gtk/rtp_player.c
index 1324bcf976..8bcd90e6ae 100644
--- a/gtk/rtp_player.c
+++ b/gtk/rtp_player.c
@@ -489,7 +489,7 @@ decode_rtp_packet(rtp_packet_t *rp, SAMPLE **out_buff, GHashTable *decoders_hash
decoder = g_malloc(sizeof(rtp_decoder_t));
decoder->handle = NULL;
decoder->context = NULL;
- p = match_strval(payload_type, rtp_payload_type_short_vals);
+ p = match_strval_ext(payload_type, &rtp_payload_type_short_vals_ext);
if (p) {
decoder->handle = find_codec(p);
if (decoder->handle)
diff --git a/gtk/rtp_stream_dlg.c b/gtk/rtp_stream_dlg.c
index b13d8d52b5..91138098b7 100644
--- a/gtk/rtp_stream_dlg.c
+++ b/gtk/rtp_stream_dlg.c
@@ -686,7 +686,7 @@ add_to_list_store(rtp_stream_info_t* strinfo)
if ((strinfo->pt > 95) && (strinfo->info_payload_type_str != NULL)) {
data[5] = g_strdup(strinfo->info_payload_type_str);
} else {
- data[5] = g_strdup(val_to_str(strinfo->pt, rtp_payload_type_short_vals,
+ data[5] = g_strdup(val_to_str_ext(strinfo->pt, &rtp_payload_type_short_vals_ext,
"Unknown (%u)"));
}
data[6] = g_strdup_printf("%u", strinfo->npackets);
diff --git a/gtk/voip_calls.c b/gtk/voip_calls.c
index 858769f714..ec3338445e 100644
--- a/gtk/voip_calls.c
+++ b/gtk/voip_calls.c
@@ -545,7 +545,7 @@ RTP_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, void cons
}
}
}
- if (!strinfo->pt_str) strinfo->pt_str = g_strdup(val_to_str(strinfo->pt, rtp_payload_type_short_vals, "%u"));
+ if (!strinfo->pt_str) strinfo->pt_str = g_strdup(val_to_str_ext(strinfo->pt, &rtp_payload_type_short_vals_ext, "%u"));
strinfo->npackets = 0;
strinfo->first_frame_num = pinfo->fd->num;
strinfo->start_abs = pinfo->fd->abs_ts;
diff --git a/tap-rtp.c b/tap-rtp.c
index cde22043d9..5b73b01d8f 100644
--- a/tap-rtp.c
+++ b/tap-rtp.c
@@ -96,7 +96,7 @@ rtp_streams_stat_draw(void *arg _U_)
}
}else{
- payload_type = g_strdup(val_to_str(strinfo->pt, rtp_payload_type_vals,
+ payload_type = g_strdup(val_to_str_ext(strinfo->pt, &rtp_payload_type_vals_ext,
"Unknown (%u)"));
}