diff options
-rw-r--r-- | gtk/rtp_analysis.c | 34 | ||||
-rw-r--r-- | tap-rtp-common.c | 9 |
2 files changed, 26 insertions, 17 deletions
diff --git a/gtk/rtp_analysis.c b/gtk/rtp_analysis.c index ee0e83d663..3f57a2f87d 100644 --- a/gtk/rtp_analysis.c +++ b/gtk/rtp_analysis.c @@ -2904,10 +2904,12 @@ static void draw_stat(user_data_t *user_data) r_perc = 0; } - g_snprintf(label_max, sizeof(label_max), "Max delta = %f ms at packet no. %u \n" + g_snprintf(label_max, sizeof(label_max), "Max delta = %.2f ms at packet no. %u \n" + "Max jitter = %.2f ms. Mean jitter = %.2f ms.\n" "Total RTP packets = %u (expected %u) Lost RTP packets = %d (%.2f%%)" " Sequence errors = %u", user_data->forward.statinfo.max_delta, user_data->forward.statinfo.max_nr, + user_data->forward.statinfo.max_jitter,user_data->forward.statinfo.mean_jitter, user_data->forward.statinfo.total_nr, f_expected, f_lost, f_perc, user_data->forward.statinfo.sequence); @@ -2915,8 +2917,10 @@ static void draw_stat(user_data_t *user_data) g_snprintf(label_max, sizeof(label_max), "Max delta = %f ms at packet no. %u \n" "Total RTP packets = %u (expected %u) Lost RTP packets = %d (%.2f%%)" + "Max jitter = %.2f ms. Mean jitter = %.2f ms.\n" " Sequence errors = %u", user_data->reversed.statinfo.max_delta, user_data->reversed.statinfo.max_nr, + user_data->reversed.statinfo.max_jitter,user_data->reversed.statinfo.mean_jitter, user_data->reversed.statinfo.total_nr, r_expected, r_lost, r_perc, user_data->reversed.statinfo.sequence); @@ -3021,7 +3025,7 @@ GtkWidget* create_list(user_data_t* user_data) G_TYPE_UINT, /* Packet */ G_TYPE_UINT, /* Sequence */ G_TYPE_FLOAT, /* Delta(ms) */ - G_TYPE_FLOAT, /* Jitter(ms) */ + G_TYPE_FLOAT, /* Filtered Jitter(ms) */ G_TYPE_FLOAT, /* IP BW(kbps) */ G_TYPE_BOOLEAN, /* Marker */ G_TYPE_STRING, /* Status */ @@ -3061,12 +3065,12 @@ GtkWidget* create_list(user_data_t* user_data) gtk_tree_view_column_set_sort_column_id(column, PACKET_COLUMN); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_column_set_min_width(column, 55); /* Add the column to the view. */ gtk_tree_view_append_column (list_view, column); - /* Second column.. Sequence. */ + /* Sequence. */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Sequence", renderer, "text", SEQUENCE_COLUMN, @@ -3076,10 +3080,10 @@ GtkWidget* create_list(user_data_t* user_data) gtk_tree_view_column_set_sort_column_id(column, SEQUENCE_COLUMN); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_column_set_min_width(column, 75); gtk_tree_view_append_column (list_view, column); - /* Third column.. Delta(ms). */ + /* Delta(ms). */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Delta(ms)", renderer, "text", DELTA_COLUMN, @@ -3093,12 +3097,12 @@ GtkWidget* create_list(user_data_t* user_data) gtk_tree_view_column_set_sort_column_id(column, DELTA_COLUMN); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_column_set_min_width(column, 75); gtk_tree_view_append_column (list_view, column); - /* Forth column.. Jitter(ms). */ + /* Jitter(ms). */ renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Jitter(ms)", renderer, + column = gtk_tree_view_column_new_with_attributes ("Filtered Jitter(ms)", renderer, "text", JITTER_COLUMN, "foreground", FOREGROUND_COLOR_COL, "background", BACKGROUND_COLOR_COL, @@ -3110,10 +3114,10 @@ GtkWidget* create_list(user_data_t* user_data) gtk_tree_view_column_set_sort_column_id(column, JITTER_COLUMN); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_column_set_min_width(column, 110); gtk_tree_view_append_column (list_view, column); - /* Fifth column.. IP BW(kbps). */ + /* IP BW(kbps). */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("IP BW(kbps)", renderer, "text", IPBW_COLUMN, @@ -3127,10 +3131,10 @@ GtkWidget* create_list(user_data_t* user_data) gtk_tree_view_column_set_sort_column_id(column, IPBW_COLUMN); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 100); + gtk_tree_view_column_set_min_width(column, 80); gtk_tree_view_append_column (list_view, column); - /* Sixth column.. Marker. */ + /* Marker. */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Marker", renderer, "text", MARKER_COLUMN, @@ -3144,10 +3148,10 @@ GtkWidget* create_list(user_data_t* user_data) gtk_tree_view_column_set_sort_column_id(column, MARKER_COLUMN); gtk_tree_view_column_set_resizable(column, TRUE); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_min_width(column, 75); + gtk_tree_view_column_set_min_width(column, 60); gtk_tree_view_append_column (list_view, column); - /* Seventh column.. Status. */ + /* Status. */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ( "Status", renderer, "text", STATUS_COLUMN, diff --git a/tap-rtp-common.c b/tap-rtp-common.c index 76db0e1cda..b8d8a60825 100644 --- a/tap-rtp-common.c +++ b/tap-rtp-common.c @@ -438,9 +438,11 @@ int rtp_packet_analyse(tap_rtp_stat_t *statinfo, double current_time; double current_jitter; double current_diff; + double expected_time; guint32 clock_rate; statinfo->flags = 0; + /* check payload type */ if (rtpinfo->info_payload_type == PT_CN || rtpinfo->info_payload_type == PT_CN_OLD) @@ -467,8 +469,11 @@ int rtp_packet_analyse(tap_rtp_stat_t *statinfo, /* Store the current time and calculate the current jitter(in ms) */ current_time = nstime_to_msec(&pinfo->fd->rel_ts); - current_diff = fabs (current_time - (statinfo->time) - ((double)(rtpinfo->info_timestamp)-(double)(statinfo->timestamp))/(clock_rate*1000)); - current_jitter = statinfo->jitter + ( current_diff - statinfo->jitter)/16; + /* Expected time is last arrival time + the timestamp difference divided by the sampling clock( /1000 to get ms) */ + expected_time = statinfo->time + ((double)(rtpinfo->info_timestamp)-(double)(statinfo->timestamp))/(clock_rate/1000); + current_diff = fabs(current_time - expected_time); + current_jitter = (15 * statinfo->jitter + current_diff) / 16; + statinfo->delta = current_time-(statinfo->time); statinfo->jitter = current_jitter; statinfo->diff = current_diff; |