aboutsummaryrefslogtreecommitdiffstats
path: root/ui/rtp_media.h
diff options
context:
space:
mode:
authorJirka Novak <j.novak@netsystem.cz>2019-11-21 15:08:16 +0100
committerRoland Knall <rknall@gmail.com>2019-11-21 16:06:49 +0000
commit37f3c65ca58771daf7292629836652459d1420f4 (patch)
tree64d6a3cdddaff267704a69bdeda78550b260f952 /ui/rtp_media.h
parentc55dd79d2c7e35586a62de197a45ec5a50af620a (diff)
rtp_analysis_dialog.cpp: save any supported codec as .au
Change improves Wireshark ability to save rtp streams. It allows a user to save any supported codec with 8 kHz rate. In real, it means G.711 and G.729 for now. There is no hardcoded codec limitation during save anymore. If code detects unsupported codec or rate during save, it replaces samples with silence and reports it. Therefore any added codec in future will be supported. Note to RTP saving: RTP streams (there can be up to two of them for save) can contain multiple codecs in each direction - some of it can be supported and some unsupported. What should be exported then? Till my patch save do not run and a user received nothing even part of stream was OK/encoded with supported codec. Therefore I managed the code to start with export and do its best. Unknown codec/part is replaced with silence and user is warned after export. Therefore a user will get: a) audio - when all codecs are supported (no warning) b) mix audio/silence - when some codecs are supported (warning) c) only silence - when no codec is supported (warning) BTW same output user sees/gets in RTP player for years. Change-Id: Id938d419f5841af46d2d2d3ddfaf1ec9a0235bcc Reviewed-on: https://code.wireshark.org/review/35105 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui/rtp_media.h')
-rw-r--r--ui/rtp_media.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/ui/rtp_media.h b/ui/rtp_media.h
index 00942f5096..94497d18e0 100644
--- a/ui/rtp_media.h
+++ b/ui/rtp_media.h
@@ -48,6 +48,20 @@ typedef struct _rtp_packet {
*/
GHashTable *rtp_decoder_hash_table_new(void);
+/** Decode payload from an RTP packet
+ *
+ * @param payload_type Payload number
+ * @param payload_type_str Payload name, can be NULL
+ * @param payload_data Payload
+ * @param payload_len Length of payload
+ * @param out_buff Output audio samples.
+ * @param decoders_hash Hash table created with rtp_decoder_hash_table_new.
+ * @param channels_ptr If non-NULL, receives the number of channels in the sample.
+ * @param sample_rate_ptr If non-NULL, receives the sample rate.
+ * @return The number of decoded bytes on success, 0 on failure.
+ */
+size_t decode_rtp_packet_payload(guint8 payload_type, const gchar *payload_type_str, guint8 *payload_data, size_t payload_len, SAMPLE **out_buff, GHashTable *decoders_hash, guint *channels_ptr, guint *sample_rate_ptr);
+
/** Decode an RTP packet
*
* @param rp Wrapper for per-packet RTP tap data.
@@ -57,7 +71,7 @@ GHashTable *rtp_decoder_hash_table_new(void);
* @param sample_rate_ptr If non-NULL, receives the sample rate.
* @return The number of decoded bytes on success, 0 on failure.
*/
-size_t decode_rtp_packet(rtp_packet_t *rp, SAMPLE **out_buff, GHashTable *decoders_hash, unsigned *channels_ptr, unsigned *sample_rate_ptr);
+size_t decode_rtp_packet(rtp_packet_t *rp, SAMPLE **out_buff, GHashTable *decoders_hash, guint *channels_ptr, guint *sample_rate_ptr);
#ifdef __cplusplus
}