aboutsummaryrefslogtreecommitdiffstats
path: root/ui/rtp_stream.h
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2014-12-12 16:51:40 -0800
committerGerald Combs <gerald@wireshark.org>2015-10-02 18:26:05 +0000
commit3687d393040a40655d84e3e03417a474032bad86 (patch)
tree55f208b60abb59c5812bae2407a9b36dfdd2f09a /ui/rtp_stream.h
parentfd5eafa50a77bc319a240727600be38307e54f86 (diff)
Qt: Initial RTP playback.
Note the "initial". This is woefully incomplete. See the "to do" lists below and in the code. This differs a bit from the GTK+ version in that you specify one or more streams to be decoded. Instead of showing waveforms in individual widgets, add them all to a single QCustomPlot. This conserves screen real estate and lets us more easily take advantage of the QCP API. It also looks better IMHO. Change a bunch of checks for QtMultimediaWidgets to QtMultimedia. We probably won't use the widgets until we make 5.0 our minimum Qt version and plain old QtMultimedia lets us support Qt 4 more easily (in theory at least). Add resampling code from libspeex. I initially used this to resample each packet to match the preferred rate of our output device, but this resulted in poorer audio quality than expected. Leave it in and use to create visual samples for QCP and to match rates any time the rate changes. The latter is currently untested. Add some debugging macros. Note that both the RTP player and RTP analysis dialogs decode audio data using different code. Note that voip_calls_packet and voip_calls_init_tap appear to be dead code. To do: - Add silence frames where needed. - Implement the jitter buffer. - Implement the playback timing controls. - Tapping / scanning streams might be too slow. Change-Id: I20dd3b66d3df53c9b1f3501262dc01458849f6b4 Bug: 9007 Reviewed-on: https://code.wireshark.org/review/10458 Petri-Dish: Gerald Combs <gerald@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'ui/rtp_stream.h')
-rw-r--r--ui/rtp_stream.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/ui/rtp_stream.h b/ui/rtp_stream.h
index d5c85b9f96..2e747ed481 100644
--- a/ui/rtp_stream.h
+++ b/ui/rtp_stream.h
@@ -60,7 +60,7 @@ typedef struct _rtp_stream_info {
gboolean end_stream; /**< Used to track streams across payload types */
int rtp_event;
- guint16 call_num; /**< Used to match call_num in voip_calls_info_t */
+ int call_num; /**< Used to match call_num in voip_calls_info_t */
guint32 setup_frame_number; /**< frame number of setup message */
/* Start and stop packets needed for .num and .abs_ts */
frame_data *start_fd;
@@ -71,14 +71,13 @@ typedef struct _rtp_stream_info {
gboolean tag_vlan_error;
gboolean tag_diffserv_error;
- gboolean decode; /**< Decode this stream */
- GList *rtp_packet_list; /**< List of RTP rtp_packet_t */
+ gboolean decode; /**< Decode this stream. GTK+ only? */
+ GList *rtp_packet_list; /**< List of RTP rtp_packet_t. GTK+ only */
tap_rtp_stat_t rtp_stats; /**< here goes the RTP statistics info */
- gboolean problem; /**< if the streams had wrong sequence numbers or wrong timerstamps */
+ gboolean problem; /**< if the streams had wrong sequence numbers or wrong timestamps */
} rtp_stream_info_t;
-
/** tapping modes */
typedef enum
{
@@ -111,6 +110,16 @@ struct _rtpstream_tapinfo {
gboolean is_registered; /**< if the tap listener is currently registered or not */
};
+#if 0
+#define RTP_STREAM_DEBUG(...) { \
+ char *RTP_STREAM_DEBUG_MSG = g_strdup_printf(__VA_ARGS__); \
+ g_warning("rtp_stream: %s:%d %s", G_STRFUNC, __LINE__, RTP_STREAM_DEBUG_MSG); \
+ g_free(RTP_STREAM_DEBUG_MSG); \
+}
+#else
+#define RTP_STREAM_DEBUG()
+#endif
+
/****************************************************************************/
/* INTERFACE */