mirror of
https://github.com/videolan/vlc.git
synced 2024-11-25 02:44:30 +08:00
* Avoid useless stats_Get calls
* Reduce vlc_object_find calls
This commit is contained in:
parent
f8cac3e17a
commit
26d5b73864
5
NEWS
5
NEWS
@ -4,6 +4,7 @@ Changes between 0.8.4a and 0.8.5-svn (not yet released):
|
||||
--------------------------------------------------------
|
||||
|
||||
Core support:
|
||||
* Statistics collection (bitrates, packets, connections, ...)
|
||||
|
||||
Input:
|
||||
* Initial support for RTSP-over-HTTP (to allow NAT traversal)
|
||||
@ -49,11 +50,9 @@ OS X Port:
|
||||
* Root wrapper to avoid running VLC as root
|
||||
|
||||
Developers:
|
||||
* New libvlc API (not finished yet)
|
||||
* Java bindings
|
||||
|
||||
|
||||
|
||||
|
||||
Changes between 0.8.4 and 0.8.4a:
|
||||
---------------------------------
|
||||
|
||||
|
@ -62,6 +62,7 @@ struct libvlc_t
|
||||
|
||||
/* Do stats ? - We keep this boolean to avoid unneeded lookups */
|
||||
vlc_bool_t b_stats;
|
||||
stats_handler_t *p_stats;
|
||||
|
||||
/* Arch-specific variables */
|
||||
#if !defined( WIN32 )
|
||||
|
@ -249,8 +249,8 @@ struct stats_handler_t
|
||||
|
||||
VLC_EXPORT( void, stats_HandlerDestroy, (stats_handler_t*) );
|
||||
|
||||
#define stats_Update( a,b,c) __stats_Update( VLC_OBJECT( a ), b, c )
|
||||
VLC_EXPORT( int, __stats_Update, (vlc_object_t*, const char *, vlc_value_t) );
|
||||
#define stats_Update( a,b,c, d) __stats_Update( VLC_OBJECT( a ), b, c, d )
|
||||
VLC_EXPORT( int, __stats_Update, (vlc_object_t*, const char *, vlc_value_t, vlc_value_t *) );
|
||||
#define stats_Create( a,b,c,d ) __stats_Create( VLC_OBJECT(a), b, c, d )
|
||||
VLC_EXPORT( int, __stats_Create, (vlc_object_t*, const char *, int, int) );
|
||||
#define stats_Get( a,b,c,d ) __stats_Create( VLC_OBJECT(a), b, c, d )
|
||||
@ -277,21 +277,31 @@ static inline int __stats_GetFloat( vlc_object_t *p_obj, int i_id,
|
||||
*value = val.f_float;
|
||||
return i_ret;
|
||||
}
|
||||
#define stats_UpdateInteger( a,b,c ) __stats_UpdateInteger( VLC_OBJECT(a),b,c )
|
||||
#define stats_UpdateInteger( a,b,c,d ) __stats_UpdateInteger( VLC_OBJECT(a),b,c,d )
|
||||
static inline int __stats_UpdateInteger( vlc_object_t *p_obj,
|
||||
const char *psz_name, int i )
|
||||
const char *psz_name, int i, int *pi_new )
|
||||
{
|
||||
int i_ret;
|
||||
vlc_value_t val;
|
||||
vlc_value_t new_val;
|
||||
val.i_int = i;
|
||||
return __stats_Update( p_obj, psz_name, val );
|
||||
i_ret = __stats_Update( p_obj, psz_name, val , &new_val );
|
||||
if( pi_new )
|
||||
*pi_new = new_val.i_int;
|
||||
return i_ret;
|
||||
}
|
||||
#define stats_UpdateFloat( a,b,c ) __stats_UpdateFloat( VLC_OBJECT(a),b,c )
|
||||
#define stats_UpdateFloat( a,b,c,d ) __stats_UpdateFloat( VLC_OBJECT(a),b,c,d )
|
||||
static inline int __stats_UpdateFloat( vlc_object_t *p_obj,
|
||||
const char *psz_name, float f )
|
||||
const char *psz_name, float f, float *pf_new )
|
||||
{
|
||||
vlc_value_t val;
|
||||
int i_ret;
|
||||
vlc_value_t new_val;
|
||||
val.f_float = f;
|
||||
return __stats_Update( p_obj, psz_name, val );
|
||||
i_ret = __stats_Update( p_obj, psz_name, val, &new_val );
|
||||
if( pf_new )
|
||||
*pf_new = new_val.f_float;
|
||||
return i_ret;
|
||||
}
|
||||
|
||||
/******************
|
||||
|
@ -124,7 +124,7 @@ void vlm_MessageDelete (vlm_message_t *);
|
||||
void vout_SynchroDecode (vout_synchro_t *);
|
||||
int playlist_Delete (playlist_t *, int);
|
||||
void aout_FiltersPlay (aout_instance_t * p_aout, aout_filter_t ** pp_filters, int i_nb_filters, aout_buffer_t ** pp_input_buffer);
|
||||
int __stats_Update (vlc_object_t*, const char *, vlc_value_t);
|
||||
int __stats_Update (vlc_object_t*, const char *, vlc_value_t, vlc_value_t *);
|
||||
int __stats_Get (vlc_object_t*, int, const char *, vlc_value_t*);
|
||||
char* httpd_ClientIP (httpd_client_t *cl, char *psz_ip);
|
||||
int __intf_UserProgress (vlc_object_t*, const char*, const char*, float);
|
||||
@ -897,7 +897,7 @@ struct module_symbols_t
|
||||
void (*__intf_UserProgressUpdate_inner) (vlc_object_t*, int, const char*, float);
|
||||
void (*__intf_UserHide_inner) (vlc_object_t *, int);
|
||||
int (*__stats_Create_inner) (vlc_object_t*, const char *, int, int);
|
||||
int (*__stats_Update_inner) (vlc_object_t*, const char *, vlc_value_t);
|
||||
int (*__stats_Update_inner) (vlc_object_t*, const char *, vlc_value_t, vlc_value_t *);
|
||||
int (*__stats_Get_inner) (vlc_object_t*, int, const char *, vlc_value_t*);
|
||||
void (*stats_ComputeInputStats_inner) (input_thread_t*, input_stats_t*);
|
||||
void (*stats_DumpInputStats_inner) (input_stats_t *);
|
||||
|
@ -1328,7 +1328,7 @@ static int transcode_audio_process( sout_stream_t *p_stream,
|
||||
while( (p_audio_buf = id->p_decoder->pf_decode_audio( id->p_decoder,
|
||||
&in )) )
|
||||
{
|
||||
stats_UpdateInteger( p_stream->p_parent->p_parent, "decoded_audio", 1 );
|
||||
stats_UpdateInteger( p_stream->p_parent->p_parent, "decoded_audio", 1, NULL );
|
||||
if( p_sys->b_master_sync )
|
||||
{
|
||||
mtime_t i_dts = date_Get( &id->interpolated_pts ) + 1;
|
||||
@ -1731,7 +1731,7 @@ static int transcode_video_process( sout_stream_t *p_stream,
|
||||
while( (p_pic = id->p_decoder->pf_decode_video( id->p_decoder, &in )) )
|
||||
{
|
||||
subpicture_t *p_subpic = 0;
|
||||
stats_UpdateInteger( p_stream->p_parent->p_parent, "decoded_video", 1 );
|
||||
stats_UpdateInteger( p_stream->p_parent->p_parent, "decoded_video", 1, NULL );
|
||||
|
||||
if( p_stream->p_sout->i_out_pace_nocontrol && p_sys->b_hurry_up )
|
||||
{
|
||||
|
@ -312,7 +312,8 @@ int aout_DecPlay( aout_instance_t * p_aout, aout_input_t * p_input,
|
||||
p_buffer->start_date - mdate());
|
||||
if( p_input->p_input_thread )
|
||||
{
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1 );
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1,
|
||||
NULL );
|
||||
}
|
||||
aout_BufferFree( p_buffer );
|
||||
return -1;
|
||||
@ -367,7 +368,7 @@ int aout_DecPlay( aout_instance_t * p_aout, aout_input_t * p_input,
|
||||
if( p_input->p_input_thread )
|
||||
{
|
||||
stats_UpdateInteger( p_input->p_input_thread,
|
||||
"played_abuffers", 1 );
|
||||
"played_abuffers", 1, NULL );
|
||||
}
|
||||
vlc_mutex_unlock( &p_aout->mixer_lock );
|
||||
|
||||
|
@ -447,7 +447,8 @@ int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
|
||||
start_date = 0;
|
||||
if( p_input->p_input_thread )
|
||||
{
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1 );
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1,
|
||||
NULL );
|
||||
}
|
||||
}
|
||||
|
||||
@ -459,7 +460,8 @@ int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
|
||||
mdate() - p_buffer->start_date );
|
||||
if( p_input->p_input_thread )
|
||||
{
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1 );
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1,
|
||||
NULL );
|
||||
}
|
||||
aout_BufferFree( p_buffer );
|
||||
p_input->i_resampling_type = AOUT_RESAMPLING_NONE;
|
||||
@ -500,7 +502,8 @@ int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
|
||||
aout_BufferFree( p_buffer );
|
||||
if( p_input->p_input_thread )
|
||||
{
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1 );
|
||||
stats_UpdateInteger( p_input->p_input_thread, "lost_abuffers", 1,
|
||||
NULL );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -627,7 +627,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
|
||||
while( (p_aout_buf = p_dec->pf_decode_audio( p_dec,
|
||||
&p_packetized_block )) )
|
||||
{
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_audio", 1 );
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_audio", 1, NULL );
|
||||
/* FIXME the best would be to handle the case start_date < preroll < end_date
|
||||
* but that's not easy with non raw audio stream */
|
||||
if( p_dec->p_owner->i_preroll_end > 0 &&
|
||||
@ -651,7 +651,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
|
||||
}
|
||||
else while( (p_aout_buf = p_dec->pf_decode_audio( p_dec, &p_block )) )
|
||||
{
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_audio", 1 );
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_audio", 1, NULL );
|
||||
if( p_dec->p_owner->i_preroll_end > 0 &&
|
||||
p_aout_buf->start_date < p_dec->p_owner->i_preroll_end )
|
||||
{
|
||||
@ -698,7 +698,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
|
||||
&p_packetized_block )) )
|
||||
{
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_video",
|
||||
1 );
|
||||
1, NULL );
|
||||
if( p_dec->p_owner->i_preroll_end > 0 &&
|
||||
p_pic->date < p_dec->p_owner->i_preroll_end )
|
||||
{
|
||||
@ -719,7 +719,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
|
||||
}
|
||||
else while( (p_pic = p_dec->pf_decode_video( p_dec, &p_block )) )
|
||||
{
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_video", 1 );
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_video", 1 , NULL);
|
||||
if( p_dec->p_owner->i_preroll_end > 0 &&
|
||||
p_pic->date < p_dec->p_owner->i_preroll_end )
|
||||
{
|
||||
@ -739,7 +739,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
|
||||
subpicture_t *p_spu;
|
||||
while( (p_spu = p_dec->pf_decode_sub( p_dec, &p_block ) ) )
|
||||
{
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_sub", 1 );
|
||||
stats_UpdateInteger( p_dec->p_parent, "decoded_sub", 1 , NULL);
|
||||
if( p_dec->p_owner->i_preroll_end > 0 &&
|
||||
p_spu->i_start < p_dec->p_owner->i_preroll_end &&
|
||||
( p_spu->i_stop <= 0 || p_spu->i_stop <= p_dec->p_owner->i_preroll_end ) )
|
||||
|
@ -1033,10 +1033,9 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block )
|
||||
|
||||
if( p_input->p_libvlc->b_stats )
|
||||
{
|
||||
stats_UpdateInteger( p_input, "demux_read", p_block->i_buffer );
|
||||
stats_GetInteger( p_input, p_input->i_object_id, "demux_read",
|
||||
&i_total );
|
||||
stats_UpdateFloat( p_input , "demux_bitrate", (float)i_total );
|
||||
stats_UpdateInteger( p_input, "demux_read", p_block->i_buffer,
|
||||
&i_total );
|
||||
stats_UpdateFloat( p_input , "demux_bitrate", (float)i_total, NULL );
|
||||
}
|
||||
|
||||
/* Mark preroll blocks */
|
||||
|
@ -1580,12 +1580,11 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
|
||||
if( !p_sys->i_list )
|
||||
{
|
||||
i_read = p_access->pf_read( p_access, p_read, i_read );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_bytes", i_read );
|
||||
stats_GetInteger( s, s->p_parent->p_parent->i_object_id,
|
||||
"read_bytes", &i_total );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_bytes", i_read,
|
||||
&i_total );
|
||||
stats_UpdateFloat( s->p_parent->p_parent , "input_bitrate",
|
||||
(float)i_total );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1 );
|
||||
(float)i_total, NULL );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1, NULL );
|
||||
return i_read;
|
||||
}
|
||||
|
||||
@ -1614,12 +1613,11 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
|
||||
}
|
||||
|
||||
/* Update read bytes in input */
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_bytes", i_read );
|
||||
stats_GetInteger( s, s->p_parent->p_parent->i_object_id,
|
||||
"read_bytes", &i_total );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_bytes", i_read,
|
||||
&i_total );
|
||||
stats_UpdateFloat( s->p_parent->p_parent , "input_bitrate",
|
||||
(float)i_total );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1 );
|
||||
(float)i_total, NULL );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1, NULL );
|
||||
return i_read;
|
||||
}
|
||||
|
||||
@ -1638,12 +1636,10 @@ static block_t *AReadBlock( stream_t *s, vlc_bool_t *pb_eof )
|
||||
if( p_block && p_access->p_libvlc->b_stats )
|
||||
{
|
||||
stats_UpdateInteger( s->p_parent->p_parent, "read_bytes",
|
||||
p_block->i_buffer );
|
||||
stats_GetInteger( s, s->p_parent->p_parent->i_object_id,
|
||||
"read_bytes", &i_total );
|
||||
p_block->i_buffer, &i_total );
|
||||
stats_UpdateFloat( s->p_parent->p_parent , "input_bitrate",
|
||||
(float)i_total );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1 );
|
||||
(float)i_total, NULL );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1, NULL );
|
||||
}
|
||||
return p_block;
|
||||
}
|
||||
@ -1675,12 +1671,10 @@ static block_t *AReadBlock( stream_t *s, vlc_bool_t *pb_eof )
|
||||
if( p_block )
|
||||
{
|
||||
stats_UpdateInteger( s->p_parent->p_parent, "read_bytes",
|
||||
p_block->i_buffer );
|
||||
stats_GetInteger( s, s->p_parent->p_parent->i_object_id,
|
||||
"read_bytes", &i_total );
|
||||
p_block->i_buffer, &i_total );
|
||||
stats_UpdateFloat( s->p_parent->p_parent , "input_bitrate",
|
||||
(float)i_total );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1 );
|
||||
(float)i_total, NULL );
|
||||
stats_UpdateInteger( s->p_parent->p_parent , "read_packets", 1 , NULL);
|
||||
}
|
||||
|
||||
return p_block;
|
||||
|
@ -691,6 +691,7 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] )
|
||||
}
|
||||
|
||||
libvlc.b_stats = config_GetInt( p_vlc, "stats" );
|
||||
libvlc.p_stats = NULL;
|
||||
|
||||
/*
|
||||
* Initialize hotkey handling
|
||||
|
@ -218,7 +218,7 @@ static uint64_t HashString( const char *psz_string, int i_id )
|
||||
i_hash ^= i_hash >> 8;
|
||||
}
|
||||
|
||||
i_hash += ( i_id << 32 );
|
||||
i_hash += ( (uint64_t)i_id << 32 );
|
||||
|
||||
return i_hash;
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ static counter_t *GetCounter( stats_handler_t *p_handler, int i_object_id,
|
||||
const char *psz_name );
|
||||
static int stats_CounterUpdate( stats_handler_t *p_handler,
|
||||
counter_t *p_counter,
|
||||
vlc_value_t val );
|
||||
vlc_value_t val, vlc_value_t * );
|
||||
static stats_handler_t* stats_HandlerCreate( vlc_object_t *p_this );
|
||||
static stats_handler_t *stats_HandlerGet( vlc_object_t *p_this );
|
||||
|
||||
@ -126,7 +126,7 @@ int __stats_Create( vlc_object_t *p_this, const char *psz_name, int i_type,
|
||||
* more information on how data is aggregated, \see __stats_Create
|
||||
*/
|
||||
int __stats_Update( vlc_object_t *p_this, const char *psz_name,
|
||||
vlc_value_t val )
|
||||
vlc_value_t val, vlc_value_t *val_new )
|
||||
{
|
||||
int i_ret;
|
||||
counter_t *p_counter;
|
||||
@ -151,7 +151,7 @@ int __stats_Update( vlc_object_t *p_this, const char *psz_name,
|
||||
return VLC_ENOOBJ;
|
||||
}
|
||||
|
||||
i_ret = stats_CounterUpdate( p_handler, p_counter, val );
|
||||
i_ret = stats_CounterUpdate( p_handler, p_counter, val, val_new );
|
||||
vlc_mutex_unlock( &p_handler->object_lock );
|
||||
|
||||
return i_ret;
|
||||
@ -492,7 +492,7 @@ void __stats_TimersDumpAll( vlc_object_t *p_obj )
|
||||
*/
|
||||
static int stats_CounterUpdate( stats_handler_t *p_handler,
|
||||
counter_t *p_counter,
|
||||
vlc_value_t val )
|
||||
vlc_value_t val, vlc_value_t *new_val )
|
||||
{
|
||||
switch( p_counter->i_compute_type )
|
||||
{
|
||||
@ -544,6 +544,7 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
|
||||
free( p_counter->pp_samples[0]->value.psz_string );
|
||||
}
|
||||
p_counter->pp_samples[0]->value = val;
|
||||
*new_val = p_counter->pp_samples[0]->value;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -596,9 +597,14 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
|
||||
switch( p_counter->i_type )
|
||||
{
|
||||
case VLC_VAR_INTEGER:
|
||||
case VLC_VAR_FLOAT:
|
||||
p_counter->pp_samples[0]->value.i_int += val.i_int;
|
||||
if( new_val )
|
||||
new_val->i_int = p_counter->pp_samples[0]->value.i_int;
|
||||
break;
|
||||
case VLC_VAR_FLOAT:
|
||||
p_counter->pp_samples[0]->value.f_float += val.f_float;
|
||||
if( new_val )
|
||||
new_val->f_float = p_counter->pp_samples[0]->value.f_float;
|
||||
default:
|
||||
msg_Err( p_handler, "Trying to increment invalid variable %s",
|
||||
p_counter->psz_name );
|
||||
@ -621,9 +627,7 @@ static counter_t *GetCounter( stats_handler_t *p_handler, int i_object_id,
|
||||
|
||||
static stats_handler_t *stats_HandlerGet( vlc_object_t *p_this )
|
||||
{
|
||||
stats_handler_t *p_handler = (stats_handler_t*)
|
||||
vlc_object_find( p_this->p_vlc, VLC_OBJECT_STATS,
|
||||
FIND_ANYWHERE );
|
||||
stats_handler_t *p_handler = p_this->p_libvlc->p_stats;
|
||||
if( !p_handler )
|
||||
{
|
||||
p_handler = stats_HandlerCreate( p_this );
|
||||
@ -631,8 +635,8 @@ static stats_handler_t *stats_HandlerGet( vlc_object_t *p_this )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
vlc_object_yield( p_handler );
|
||||
}
|
||||
vlc_object_yield( p_handler );
|
||||
return p_handler;
|
||||
}
|
||||
|
||||
@ -657,11 +661,13 @@ static stats_handler_t* stats_HandlerCreate( vlc_object_t *p_this )
|
||||
return NULL;
|
||||
}
|
||||
p_handler->i_counters = 0;
|
||||
p_handler->p_counters = (hashtable_entry_t *) malloc( 5 * sizeof( variable_t ) );
|
||||
p_handler->p_counters = (hashtable_entry_t *) malloc( 4 * sizeof( variable_t ) );
|
||||
|
||||
/// \bug is it p_vlc or p_libvlc ?
|
||||
vlc_object_attach( p_handler, p_this->p_vlc );
|
||||
|
||||
p_this->p_libvlc->p_stats = p_handler;
|
||||
|
||||
return p_handler;
|
||||
}
|
||||
|
||||
|
@ -2106,7 +2106,7 @@ static void httpd_HostThread( httpd_host_t *host )
|
||||
cl->i_activity_date+cl->i_activity_timeout < mdate()) ) ) )
|
||||
{
|
||||
httpd_ClientClean( cl );
|
||||
stats_UpdateInteger( host, "active_connections", -1 );
|
||||
stats_UpdateInteger( host, "active_connections", -1, NULL );
|
||||
TAB_REMOVE( host->i_client, host->client, cl );
|
||||
free( cl );
|
||||
i_client--;
|
||||
@ -2560,8 +2560,10 @@ static void httpd_HostThread( httpd_host_t *host )
|
||||
if( fd >= 0 )
|
||||
{
|
||||
httpd_client_t *cl;
|
||||
stats_UpdateInteger( host, "client_connections", 1 );
|
||||
stats_UpdateInteger( host, "active_connections", 1 );
|
||||
stats_UpdateInteger( host, "client_connections", 1,
|
||||
NULL );
|
||||
stats_UpdateInteger( host, "active_connections", 1,
|
||||
NULL );
|
||||
cl = httpd_ClientNew( fd, &sock, i_sock_size, p_tls );
|
||||
p_tls = NULL;
|
||||
vlc_mutex_lock( &host->lock );
|
||||
|
@ -381,14 +381,11 @@ int sout_AccessOutWrite( sout_access_out_t *p_access, block_t *p_buffer )
|
||||
FIND_PARENT );
|
||||
if( p_input )
|
||||
{
|
||||
stats_UpdateInteger( p_input, "sout_sent_packets", 10 );
|
||||
stats_UpdateInteger( p_input, "sout_sent_packets", 10, NULL );
|
||||
stats_UpdateInteger( p_input, "sout_sent_bytes",
|
||||
p_access->i_sent_bytes );
|
||||
stats_GetInteger( p_input,
|
||||
p_access->p_parent->p_parent->i_object_id,
|
||||
"sout_sent_bytes", &i_total );
|
||||
stats_UpdateFloat( p_input, "sout_send_bitrate", (float)i_total );
|
||||
|
||||
p_access->i_sent_bytes, &i_total );
|
||||
stats_UpdateFloat( p_input, "sout_send_bitrate", (float)i_total,
|
||||
NULL );
|
||||
p_access->i_sent_bytes = 0;
|
||||
vlc_object_release( p_input );
|
||||
}
|
||||
|
@ -814,7 +814,7 @@ static void RunThread( vout_thread_t *p_vout)
|
||||
}
|
||||
msg_Warn( p_vout, "late picture skipped ("I64Fd")",
|
||||
current_date - display_date );
|
||||
stats_UpdateInteger( p_vout, "lost_pictures", 1 );
|
||||
stats_UpdateInteger( p_vout, "lost_pictures", 1 , NULL);
|
||||
vlc_mutex_unlock( &p_vout->picture_lock );
|
||||
|
||||
continue;
|
||||
@ -837,7 +837,7 @@ static void RunThread( vout_thread_t *p_vout)
|
||||
p_picture->i_status = DESTROYED_PICTURE;
|
||||
p_vout->i_heap_size--;
|
||||
}
|
||||
stats_UpdateInteger( p_vout, "lost_pictures", 1 );
|
||||
stats_UpdateInteger( p_vout, "lost_pictures", 1, NULL );
|
||||
msg_Warn( p_vout, "vout warning: early picture skipped "
|
||||
"("I64Fd")", display_date - current_date
|
||||
- p_vout->i_pts_delay );
|
||||
@ -895,7 +895,7 @@ static void RunThread( vout_thread_t *p_vout)
|
||||
/*
|
||||
* Perform rendering
|
||||
*/
|
||||
stats_UpdateInteger( p_vout, "displayed_pictures", 1 );
|
||||
stats_UpdateInteger( p_vout, "displayed_pictures", 1, NULL );
|
||||
p_directbuffer = vout_RenderPicture( p_vout, p_picture, p_subpic );
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user