+ else if( p_sys->i_box_type == BOX_OBJECTS )
+ {
+ int l = 0;
+ DrawBox( p_sys->w, y++, 0, h, COLS, _(" Objects "), p_sys->b_color );
+ DumpObject( p_intf, &l, VLC_OBJECT( p_intf->p_libvlc ), 0 );
+
+ p_sys->i_box_lines_total = l;
+ if( p_sys->i_box_start >= p_sys->i_box_lines_total )
+ p_sys->i_box_start = p_sys->i_box_lines_total - 1;
+
+ if( l - p_sys->i_box_start < p_sys->i_box_lines )
+ y += l - p_sys->i_box_start;
+ else
+ y += p_sys->i_box_lines;
+ }
+ else if( p_sys->i_box_type == BOX_STATS )
+ {
+ DrawBox( p_sys->w, y++, 0, h, COLS, _(" Stats "), p_sys->b_color );
+
+ if( p_input )
+ {
+ input_item_t *p_item = input_GetItem( p_input );
+ assert( p_item );
+ vlc_mutex_lock( &p_item->lock );
+ vlc_mutex_lock( &p_item->p_stats->lock );
+
+ int i_audio = 0;
+ int i_video = 0;
+ int i;
+
+ if( !p_item->i_es )
+ i_video = i_audio = 1;
+ else
+ for( i = 0; i < p_item->i_es ; i++ )
+ {
+ i_audio += ( p_item->es[i]->i_cat == AUDIO_ES );
+ i_video += ( p_item->es[i]->i_cat == VIDEO_ES );
+ }
+
+ int l = 0;
+
+#define SHOW_ACS(x,c) \
+ if(l >= p_sys->i_box_start && l - p_sys->i_box_start < p_sys->i_box_lines) \
+ mvaddch( p_sys->i_box_y - p_sys->i_box_start + l, x, c )
+
+ /* Input */
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_CATEGORY, NULL );
+ MainBoxWrite( p_intf, l, 1, _("+-[Incoming]"));
+ SHOW_ACS( 1, ACS_ULCORNER ); SHOW_ACS( 2, ACS_HLINE ); l++;
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL );
+ MainBoxWrite( p_intf, l, 1, _("| input bytes read : %8.0f KiB"),
+ (float)(p_item->p_stats->i_read_bytes)/1024 );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("| input bitrate : %6.0f kb/s"),
+ (float)(p_item->p_stats->f_input_bitrate)*8000 );
+ MainBoxWrite( p_intf, l, 1, _("| demux bytes read : %8.0f KiB"),
+ (float)(p_item->p_stats->i_demux_read_bytes)/1024 );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("| demux bitrate : %6.0f kb/s"),
+ (float)(p_item->p_stats->f_demux_bitrate)*8000 );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ DrawEmptyLine( p_sys->w, p_sys->i_box_y + l - p_sys->i_box_start, 1, COLS - 2 );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+
+ /* Video */
+ if( i_video )
+ {
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_CATEGORY, NULL );
+ MainBoxWrite( p_intf, l, 1, _("+-[Video Decoding]"));
+ SHOW_ACS( 1, ACS_LTEE ); SHOW_ACS( 2, ACS_HLINE ); l++;
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL );
+ MainBoxWrite( p_intf, l, 1, _("| video decoded : %5i"),
+ p_item->p_stats->i_decoded_video );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("| frames displayed : %5i"),
+ p_item->p_stats->i_displayed_pictures );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("| frames lost : %5i"),
+ p_item->p_stats->i_lost_pictures );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ DrawEmptyLine( p_sys->w, p_sys->i_box_y + l - p_sys->i_box_start, 1, COLS - 2 );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ }
+ /* Audio*/
+ if( i_audio )
+ {
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_CATEGORY, NULL );
+ MainBoxWrite( p_intf, l, 1, _("+-[Audio Decoding]"));
+ SHOW_ACS( 1, ACS_LTEE ); SHOW_ACS( 2, ACS_HLINE ); l++;
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL );
+ MainBoxWrite( p_intf, l, 1, _("| audio decoded : %5i"),
+ p_item->p_stats->i_decoded_audio );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("| buffers played : %5i"),
+ p_item->p_stats->i_played_abuffers );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("| buffers lost : %5i"),
+ p_item->p_stats->i_lost_abuffers );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ DrawEmptyLine( p_sys->w, p_sys->i_box_y + l - p_sys->i_box_start, 1, COLS - 2 );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ }
+ /* Sout */
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_CATEGORY, NULL );
+ MainBoxWrite( p_intf, l, 1, _("+-[Streaming]"));
+ SHOW_ACS( 1, ACS_LTEE ); SHOW_ACS( 2, ACS_HLINE ); l++;
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL );
+ MainBoxWrite( p_intf, l, 1, _("| packets sent : %5i"), p_item->p_stats->i_sent_packets );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("| bytes sent : %8.0f KiB"),
+ (float)(p_item->p_stats->i_sent_bytes)/1024 );
+ SHOW_ACS( 1, ACS_VLINE ); l++;
+ MainBoxWrite( p_intf, l, 1, _("\\ sending bitrate : %6.0f kb/s"),
+ (float)(p_item->p_stats->f_send_bitrate*8)*1000 );
+ SHOW_ACS( 1, ACS_LLCORNER ); l++;
+ if( p_sys->b_color ) wcolor_set( p_sys->w, C_DEFAULT, NULL );
+
+#undef SHOW_ACS
+
+ p_sys->i_box_lines_total = l;
+ if( p_sys->i_box_start >= p_sys->i_box_lines_total )
+ p_sys->i_box_start = p_sys->i_box_lines_total - 1;
+
+ if( l - p_sys->i_box_start < p_sys->i_box_lines )
+ y += l - p_sys->i_box_start;
+ else
+ y += p_sys->i_box_lines;
+
+ vlc_mutex_unlock( &p_item->p_stats->lock );
+ vlc_mutex_unlock( &p_item->lock );
+
+ }
+ }
+ else if( p_sys->i_box_type == BOX_PLAYLIST ||