Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
26d5b738
Commit
26d5b738
authored
Feb 04, 2006
by
Clément Stenac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* Avoid useless stats_Get calls
* Reduce vlc_object_find calls
parent
f8cac3e1
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
86 additions
and
73 deletions
+86
-73
NEWS
NEWS
+2
-3
include/main.h
include/main.h
+1
-0
include/vlc_messages.h
include/vlc_messages.h
+18
-8
include/vlc_symbols.h
include/vlc_symbols.h
+2
-2
modules/stream_out/transcode.c
modules/stream_out/transcode.c
+2
-2
src/audio_output/dec.c
src/audio_output/dec.c
+3
-2
src/audio_output/input.c
src/audio_output/input.c
+6
-3
src/input/decoder.c
src/input/decoder.c
+5
-5
src/input/es_out.c
src/input/es_out.c
+3
-4
src/input/stream.c
src/input/stream.c
+14
-20
src/libvlc.c
src/libvlc.c
+1
-0
src/misc/hashtables.c
src/misc/hashtables.c
+1
-1
src/misc/stats.c
src/misc/stats.c
+16
-10
src/network/httpd.c
src/network/httpd.c
+5
-3
src/stream_output/stream_output.c
src/stream_output/stream_output.c
+4
-7
src/video_output/video_output.c
src/video_output/video_output.c
+3
-3
No files found.
NEWS
View file @
26d5b738
...
@@ -4,6 +4,7 @@ Changes between 0.8.4a and 0.8.5-svn (not yet released):
...
@@ -4,6 +4,7 @@ Changes between 0.8.4a and 0.8.5-svn (not yet released):
--------------------------------------------------------
--------------------------------------------------------
Core support:
Core support:
* Statistics collection (bitrates, packets, connections, ...)
Input:
Input:
* Initial support for RTSP-over-HTTP (to allow NAT traversal)
* Initial support for RTSP-over-HTTP (to allow NAT traversal)
...
@@ -49,11 +50,9 @@ OS X Port:
...
@@ -49,11 +50,9 @@ OS X Port:
* Root wrapper to avoid running VLC as root
* Root wrapper to avoid running VLC as root
Developers:
Developers:
* New libvlc API (not finished yet)
* Java bindings
* Java bindings
Changes between 0.8.4 and 0.8.4a:
Changes between 0.8.4 and 0.8.4a:
---------------------------------
---------------------------------
...
...
include/main.h
View file @
26d5b738
...
@@ -62,6 +62,7 @@ struct libvlc_t
...
@@ -62,6 +62,7 @@ struct libvlc_t
/* Do stats ? - We keep this boolean to avoid unneeded lookups */
/* Do stats ? - We keep this boolean to avoid unneeded lookups */
vlc_bool_t
b_stats
;
vlc_bool_t
b_stats
;
stats_handler_t
*
p_stats
;
/* Arch-specific variables */
/* Arch-specific variables */
#if !defined( WIN32 )
#if !defined( WIN32 )
...
...
include/vlc_messages.h
View file @
26d5b738
...
@@ -249,8 +249,8 @@ struct stats_handler_t
...
@@ -249,8 +249,8 @@ struct stats_handler_t
VLC_EXPORT
(
void
,
stats_HandlerDestroy
,
(
stats_handler_t
*
)
);
VLC_EXPORT
(
void
,
stats_HandlerDestroy
,
(
stats_handler_t
*
)
);
#define stats_Update( a,b,c
) __stats_Update( VLC_OBJECT( a ), b, c
)
#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_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 )
#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
)
);
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 )
#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,
...
@@ -277,21 +277,31 @@ static inline int __stats_GetFloat( vlc_object_t *p_obj, int i_id,
*
value
=
val
.
f_float
;
*
value
=
val
.
f_float
;
return
i_ret
;
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
,
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
val
;
vlc_value_t
new_val
;
val
.
i_int
=
i
;
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
,
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
;
vlc_value_t
val
;
int
i_ret
;
vlc_value_t
new_val
;
val
.
f_float
=
f
;
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
;
}
}
/******************
/******************
...
...
include/vlc_symbols.h
View file @
26d5b738
...
@@ -124,7 +124,7 @@ void vlm_MessageDelete (vlm_message_t *);
...
@@ -124,7 +124,7 @@ void vlm_MessageDelete (vlm_message_t *);
void
vout_SynchroDecode
(
vout_synchro_t
*
);
void
vout_SynchroDecode
(
vout_synchro_t
*
);
int
playlist_Delete
(
playlist_t
*
,
int
);
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
);
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
*
);
int
__stats_Get
(
vlc_object_t
*
,
int
,
const
char
*
,
vlc_value_t
*
);
char
*
httpd_ClientIP
(
httpd_client_t
*
cl
,
char
*
psz_ip
);
char
*
httpd_ClientIP
(
httpd_client_t
*
cl
,
char
*
psz_ip
);
int
__intf_UserProgress
(
vlc_object_t
*
,
const
char
*
,
const
char
*
,
float
);
int
__intf_UserProgress
(
vlc_object_t
*
,
const
char
*
,
const
char
*
,
float
);
...
@@ -897,7 +897,7 @@ struct module_symbols_t
...
@@ -897,7 +897,7 @@ struct module_symbols_t
void
(
*
__intf_UserProgressUpdate_inner
)
(
vlc_object_t
*
,
int
,
const
char
*
,
float
);
void
(
*
__intf_UserProgressUpdate_inner
)
(
vlc_object_t
*
,
int
,
const
char
*
,
float
);
void
(
*
__intf_UserHide_inner
)
(
vlc_object_t
*
,
int
);
void
(
*
__intf_UserHide_inner
)
(
vlc_object_t
*
,
int
);
int
(
*
__stats_Create_inner
)
(
vlc_object_t
*
,
const
char
*
,
int
,
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
*
);
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_ComputeInputStats_inner
)
(
input_thread_t
*
,
input_stats_t
*
);
void
(
*
stats_DumpInputStats_inner
)
(
input_stats_t
*
);
void
(
*
stats_DumpInputStats_inner
)
(
input_stats_t
*
);
...
...
modules/stream_out/transcode.c
View file @
26d5b738
...
@@ -1328,7 +1328,7 @@ static int transcode_audio_process( sout_stream_t *p_stream,
...
@@ -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
,
while
(
(
p_audio_buf
=
id
->
p_decoder
->
pf_decode_audio
(
id
->
p_decoder
,
&
in
))
)
&
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
)
if
(
p_sys
->
b_master_sync
)
{
{
mtime_t
i_dts
=
date_Get
(
&
id
->
interpolated_pts
)
+
1
;
mtime_t
i_dts
=
date_Get
(
&
id
->
interpolated_pts
)
+
1
;
...
@@ -1731,7 +1731,7 @@ static int transcode_video_process( sout_stream_t *p_stream,
...
@@ -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
))
)
while
(
(
p_pic
=
id
->
p_decoder
->
pf_decode_video
(
id
->
p_decoder
,
&
in
))
)
{
{
subpicture_t
*
p_subpic
=
0
;
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
)
if
(
p_stream
->
p_sout
->
i_out_pace_nocontrol
&&
p_sys
->
b_hurry_up
)
{
{
...
...
src/audio_output/dec.c
View file @
26d5b738
...
@@ -312,7 +312,8 @@ int aout_DecPlay( aout_instance_t * p_aout, aout_input_t * p_input,
...
@@ -312,7 +312,8 @@ int aout_DecPlay( aout_instance_t * p_aout, aout_input_t * p_input,
p_buffer
->
start_date
-
mdate
());
p_buffer
->
start_date
-
mdate
());
if
(
p_input
->
p_input_thread
)
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
);
aout_BufferFree
(
p_buffer
);
return
-
1
;
return
-
1
;
...
@@ -367,7 +368,7 @@ int aout_DecPlay( aout_instance_t * p_aout, aout_input_t * p_input,
...
@@ -367,7 +368,7 @@ int aout_DecPlay( aout_instance_t * p_aout, aout_input_t * p_input,
if
(
p_input
->
p_input_thread
)
if
(
p_input
->
p_input_thread
)
{
{
stats_UpdateInteger
(
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
);
vlc_mutex_unlock
(
&
p_aout
->
mixer_lock
);
...
...
src/audio_output/input.c
View file @
26d5b738
...
@@ -447,7 +447,8 @@ int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
...
@@ -447,7 +447,8 @@ int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
start_date
=
0
;
start_date
=
0
;
if
(
p_input
->
p_input_thread
)
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,
...
@@ -459,7 +460,8 @@ int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
mdate
()
-
p_buffer
->
start_date
);
mdate
()
-
p_buffer
->
start_date
);
if
(
p_input
->
p_input_thread
)
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
);
aout_BufferFree
(
p_buffer
);
p_input
->
i_resampling_type
=
AOUT_RESAMPLING_NONE
;
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,
...
@@ -500,7 +502,8 @@ int aout_InputPlay( aout_instance_t * p_aout, aout_input_t * p_input,
aout_BufferFree
(
p_buffer
);
aout_BufferFree
(
p_buffer
);
if
(
p_input
->
p_input_thread
)
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
;
return
0
;
}
}
...
...
src/input/decoder.c
View file @
26d5b738
...
@@ -627,7 +627,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
...
@@ -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
,
while
(
(
p_aout_buf
=
p_dec
->
pf_decode_audio
(
p_dec
,
&
p_packetized_block
))
)
&
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
/* FIXME the best would be to handle the case start_date < preroll < end_date
* but that's not easy with non raw audio stream */
* but that's not easy with non raw audio stream */
if
(
p_dec
->
p_owner
->
i_preroll_end
>
0
&&
if
(
p_dec
->
p_owner
->
i_preroll_end
>
0
&&
...
@@ -651,7 +651,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
...
@@ -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
))
)
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
&&
if
(
p_dec
->
p_owner
->
i_preroll_end
>
0
&&
p_aout_buf
->
start_date
<
p_dec
->
p_owner
->
i_preroll_end
)
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 )
...
@@ -698,7 +698,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
&
p_packetized_block
))
)
&
p_packetized_block
))
)
{
{
stats_UpdateInteger
(
p_dec
->
p_parent
,
"decoded_video"
,
stats_UpdateInteger
(
p_dec
->
p_parent
,
"decoded_video"
,
1
);
1
,
NULL
);
if
(
p_dec
->
p_owner
->
i_preroll_end
>
0
&&
if
(
p_dec
->
p_owner
->
i_preroll_end
>
0
&&
p_pic
->
date
<
p_dec
->
p_owner
->
i_preroll_end
)
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 )
...
@@ -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
))
)
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
&&
if
(
p_dec
->
p_owner
->
i_preroll_end
>
0
&&
p_pic
->
date
<
p_dec
->
p_owner
->
i_preroll_end
)
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 )
...
@@ -739,7 +739,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
subpicture_t
*
p_spu
;
subpicture_t
*
p_spu
;
while
(
(
p_spu
=
p_dec
->
pf_decode_sub
(
p_dec
,
&
p_block
)
)
)
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
&&
if
(
p_dec
->
p_owner
->
i_preroll_end
>
0
&&
p_spu
->
i_start
<
p_dec
->
p_owner
->
i_preroll_end
&&
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
)
)
(
p_spu
->
i_stop
<=
0
||
p_spu
->
i_stop
<=
p_dec
->
p_owner
->
i_preroll_end
)
)
...
...
src/input/es_out.c
View file @
26d5b738
...
@@ -1033,10 +1033,9 @@ static int EsOutSend( es_out_t *out, es_out_id_t *es, block_t *p_block )
...
@@ -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
)
if
(
p_input
->
p_libvlc
->
b_stats
)
{
{
stats_UpdateInteger
(
p_input
,
"demux_read"
,
p_block
->
i_buffer
);
stats_UpdateInteger
(
p_input
,
"demux_read"
,
p_block
->
i_buffer
,
stats_GetInteger
(
p_input
,
p_input
->
i_object_id
,
"demux_read"
,
&
i_total
);
&
i_total
);
stats_UpdateFloat
(
p_input
,
"demux_bitrate"
,
(
float
)
i_total
,
NULL
);
stats_UpdateFloat
(
p_input
,
"demux_bitrate"
,
(
float
)
i_total
);
}
}
/* Mark preroll blocks */
/* Mark preroll blocks */
...
...
src/input/stream.c
View file @
26d5b738
...
@@ -1580,12 +1580,11 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
...
@@ -1580,12 +1580,11 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
if
(
!
p_sys
->
i_list
)
if
(
!
p_sys
->
i_list
)
{
{
i_read
=
p_access
->
pf_read
(
p_access
,
p_read
,
i_read
);
i_read
=
p_access
->
pf_read
(
p_access
,
p_read
,
i_read
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
i_read
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
i_read
,
stats_GetInteger
(
s
,
s
->
p_parent
->
p_parent
->
i_object_id
,
&
i_total
);
"read_bytes"
,
&
i_total
);
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
(
float
)
i_total
);
(
float
)
i_total
,
NULL
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
,
NULL
);
return
i_read
;
return
i_read
;
}
}
...
@@ -1614,12 +1613,11 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
...
@@ -1614,12 +1613,11 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
}
}
/* Update read bytes in input */
/* Update read bytes in input */
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
i_read
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
i_read
,
stats_GetInteger
(
s
,
s
->
p_parent
->
p_parent
->
i_object_id
,
&
i_total
);
"read_bytes"
,
&
i_total
);
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
(
float
)
i_total
);
(
float
)
i_total
,
NULL
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
,
NULL
);
return
i_read
;
return
i_read
;
}
}
...
@@ -1638,12 +1636,10 @@ static block_t *AReadBlock( stream_t *s, vlc_bool_t *pb_eof )
...
@@ -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
)
if
(
p_block
&&
p_access
->
p_libvlc
->
b_stats
)
{
{
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
p_block
->
i_buffer
);
p_block
->
i_buffer
,
&
i_total
);
stats_GetInteger
(
s
,
s
->
p_parent
->
p_parent
->
i_object_id
,
"read_bytes"
,
&
i_total
);
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
(
float
)
i_total
);
(
float
)
i_total
,
NULL
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
,
NULL
);
}
}
return
p_block
;
return
p_block
;
}
}
...
@@ -1675,12 +1671,10 @@ static block_t *AReadBlock( stream_t *s, vlc_bool_t *pb_eof )
...
@@ -1675,12 +1671,10 @@ static block_t *AReadBlock( stream_t *s, vlc_bool_t *pb_eof )
if
(
p_block
)
if
(
p_block
)
{
{
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_bytes"
,
p_block
->
i_buffer
);
p_block
->
i_buffer
,
&
i_total
);
stats_GetInteger
(
s
,
s
->
p_parent
->
p_parent
->
i_object_id
,
"read_bytes"
,
&
i_total
);
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
stats_UpdateFloat
(
s
->
p_parent
->
p_parent
,
"input_bitrate"
,
(
float
)
i_total
);
(
float
)
i_total
,
NULL
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
);
stats_UpdateInteger
(
s
->
p_parent
->
p_parent
,
"read_packets"
,
1
,
NULL
);
}
}
return
p_block
;
return
p_block
;
...
...
src/libvlc.c
View file @
26d5b738
...
@@ -691,6 +691,7 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] )
...
@@ -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
.
b_stats
=
config_GetInt
(
p_vlc
,
"stats"
);
libvlc
.
p_stats
=
NULL
;
/*
/*
* Initialize hotkey handling
* Initialize hotkey handling
...
...
src/misc/hashtables.c
View file @
26d5b738
...
@@ -218,7 +218,7 @@ static uint64_t HashString( const char *psz_string, int i_id )
...
@@ -218,7 +218,7 @@ static uint64_t HashString( const char *psz_string, int i_id )
i_hash
^=
i_hash
>>
8
;
i_hash
^=
i_hash
>>
8
;
}
}
i_hash
+=
(
i_id
<<
32
);
i_hash
+=
(
(
uint64_t
)
i_id
<<
32
);
return
i_hash
;
return
i_hash
;
}
}
src/misc/stats.c
View file @
26d5b738
...
@@ -36,7 +36,7 @@ static counter_t *GetCounter( stats_handler_t *p_handler, int i_object_id,
...
@@ -36,7 +36,7 @@ static counter_t *GetCounter( stats_handler_t *p_handler, int i_object_id,
const
char
*
psz_name
);
const
char
*
psz_name
);
static
int
stats_CounterUpdate
(
stats_handler_t
*
p_handler
,
static
int
stats_CounterUpdate
(
stats_handler_t
*
p_handler
,
counter_t
*
p_counter
,
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_HandlerCreate
(
vlc_object_t
*
p_this
);
static
stats_handler_t
*
stats_HandlerGet
(
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,
...
@@ -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
* more information on how data is aggregated, \see __stats_Create
*/
*/
int
__stats_Update
(
vlc_object_t
*
p_this
,
const
char
*
psz_name
,
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
;
int
i_ret
;
counter_t
*
p_counter
;
counter_t
*
p_counter
;
...
@@ -151,7 +151,7 @@ int __stats_Update( vlc_object_t *p_this, const char *psz_name,
...
@@ -151,7 +151,7 @@ int __stats_Update( vlc_object_t *p_this, const char *psz_name,
return
VLC_ENOOBJ
;
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
);
vlc_mutex_unlock
(
&
p_handler
->
object_lock
);
return
i_ret
;
return
i_ret
;
...
@@ -492,7 +492,7 @@ void __stats_TimersDumpAll( vlc_object_t *p_obj )
...
@@ -492,7 +492,7 @@ void __stats_TimersDumpAll( vlc_object_t *p_obj )
*/
*/
static
int
stats_CounterUpdate
(
stats_handler_t
*
p_handler
,
static
int
stats_CounterUpdate
(
stats_handler_t
*
p_handler
,
counter_t
*
p_counter
,
counter_t
*
p_counter
,
vlc_value_t
val
)
vlc_value_t
val
,
vlc_value_t
*
new_val
)
{
{
switch
(
p_counter
->
i_compute_type
)
switch
(
p_counter
->
i_compute_type
)
{
{
...
@@ -544,6 +544,7 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
...
@@ -544,6 +544,7 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
free
(
p_counter
->
pp_samples
[
0
]
->
value
.
psz_string
);
free
(
p_counter
->
pp_samples
[
0
]
->
value
.
psz_string
);
}
}
p_counter
->
pp_samples
[
0
]
->
value
=
val
;
p_counter
->
pp_samples
[
0
]
->
value
=
val
;
*
new_val
=
p_counter
->
pp_samples
[
0
]
->
value
;
}
}
}
}
break
;
break
;
...
@@ -596,9 +597,14 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
...
@@ -596,9 +597,14 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
switch
(
p_counter
->
i_type
)
switch
(
p_counter
->
i_type
)
{
{
case
VLC_VAR_INTEGER
:
case
VLC_VAR_INTEGER
:
case
VLC_VAR_FLOAT
:
p_counter
->
pp_samples
[
0
]
->
value
.
i_int
+=
val
.
i_int
;
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
;
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:
default:
msg_Err
(
p_handler
,
"Trying to increment invalid variable %s"
,
msg_Err
(
p_handler
,
"Trying to increment invalid variable %s"
,
p_counter
->
psz_name
);
p_counter
->
psz_name
);
...
@@ -621,9 +627,7 @@ static counter_t *GetCounter( stats_handler_t *p_handler, int i_object_id,
...
@@ -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
)
static
stats_handler_t
*
stats_HandlerGet
(
vlc_object_t
*
p_this
)
{
{
stats_handler_t
*
p_handler
=
(
stats_handler_t
*
)
stats_handler_t
*
p_handler
=
p_this
->
p_libvlc
->
p_stats
;
vlc_object_find
(
p_this
->
p_vlc
,
VLC_OBJECT_STATS
,
FIND_ANYWHERE
);
if
(
!
p_handler
)
if
(
!
p_handler
)
{
{
p_handler
=
stats_HandlerCreate
(
p_this
);
p_handler
=
stats_HandlerCreate
(
p_this
);
...
@@ -631,8 +635,8 @@ static stats_handler_t *stats_HandlerGet( vlc_object_t *p_this )
...
@@ -631,8 +635,8 @@ static stats_handler_t *stats_HandlerGet( vlc_object_t *p_this )
{
{
return
NULL
;
return
NULL
;
}
}
vlc_object_yield
(
p_handler
);
}
}
vlc_object_yield
(
p_handler
);
return
p_handler
;
return
p_handler
;
}
}
...
@@ -657,11 +661,13 @@ static stats_handler_t* stats_HandlerCreate( vlc_object_t *p_this )
...
@@ -657,11 +661,13 @@ static stats_handler_t* stats_HandlerCreate( vlc_object_t *p_this )
return
NULL
;
return
NULL
;
}
}
p_handler
->
i_counters
=
0
;
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 ?
/// \bug is it p_vlc or p_libvlc ?
vlc_object_attach
(
p_handler
,
p_this
->
p_vlc
);
vlc_object_attach
(
p_handler
,
p_this
->
p_vlc
);
p_this
->
p_libvlc
->
p_stats
=
p_handler
;
return
p_handler
;
return
p_handler
;
}
}
...
...
src/network/httpd.c
View file @
26d5b738
...
@@ -2106,7 +2106,7 @@ static void httpd_HostThread( httpd_host_t *host )
...
@@ -2106,7 +2106,7 @@ static void httpd_HostThread( httpd_host_t *host )
cl
->
i_activity_date
+
cl
->
i_activity_timeout
<
mdate
())
)
)
)
cl
->
i_activity_date
+
cl
->
i_activity_timeout
<
mdate
())
)
)
)
{
{
httpd_ClientClean
(
cl
);
httpd_ClientClean
(
cl
);
stats_UpdateInteger
(
host
,
"active_connections"
,
-
1
);
stats_UpdateInteger
(
host
,
"active_connections"
,
-
1
,
NULL
);
TAB_REMOVE
(
host
->
i_client
,
host
->
client
,
cl
);
TAB_REMOVE
(
host
->
i_client
,
host
->
client
,
cl
);
free
(
cl
);
free
(
cl
);
i_client
--
;
i_client
--
;
...
@@ -2560,8 +2560,10 @@ static void httpd_HostThread( httpd_host_t *host )
...
@@ -2560,8 +2560,10 @@ static void httpd_HostThread( httpd_host_t *host )
if
(
fd
>=
0
)
if
(
fd
>=
0
)
{
{
httpd_client_t
*
cl
;
httpd_client_t
*
cl
;
stats_UpdateInteger
(
host
,
"client_connections"
,
1
);
stats_UpdateInteger
(
host
,
"client_connections"
,
1
,
stats_UpdateInteger
(
host
,
"active_connections"
,
1
);
NULL
);
stats_UpdateInteger
(
host
,
"active_connections"
,
1
,
NULL
);
cl
=
httpd_ClientNew
(
fd
,
&
sock
,
i_sock_size
,
p_tls
);
cl
=
httpd_ClientNew
(
fd
,
&
sock
,
i_sock_size
,
p_tls
);
p_tls
=
NULL
;
p_tls
=
NULL
;
vlc_mutex_lock
(
&
host
->
lock
);
vlc_mutex_lock
(
&
host
->
lock
);
...
...
src/stream_output/stream_output.c
View file @
26d5b738
...
@@ -381,14 +381,11 @@ int sout_AccessOutWrite( sout_access_out_t *p_access, block_t *p_buffer )
...
@@ -381,14 +381,11 @@ int sout_AccessOutWrite( sout_access_out_t *p_access, block_t *p_buffer )
FIND_PARENT
);
FIND_PARENT
);
if
(
p_input
)
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"
,
stats_UpdateInteger
(
p_input
,
"sout_sent_bytes"
,
p_access
->
i_sent_bytes
);
p_access
->
i_sent_bytes
,
&
i_total
);
stats_GetInteger
(
p_input
,
stats_UpdateFloat
(
p_input
,
"sout_send_bitrate"
,
(
float
)
i_total
,
p_access
->
p_parent
->
p_parent
->
i_object_id
,
NULL
);
"sout_sent_bytes"
,
&
i_total
);
stats_UpdateFloat
(
p_input
,
"sout_send_bitrate"
,
(
float
)
i_total
);
p_access
->
i_sent_bytes
=
0
;
p_access
->
i_sent_bytes
=
0
;
vlc_object_release
(
p_input
);
vlc_object_release
(
p_input
);
}
}
...
...
src/video_output/video_output.c
View file @
26d5b738
...
@@ -814,7 +814,7 @@ static void RunThread( vout_thread_t *p_vout)
...
@@ -814,7 +814,7 @@ static void RunThread( vout_thread_t *p_vout)
}
}
msg_Warn
(
p_vout
,
"late picture skipped ("
I64Fd
")"
,
msg_Warn
(
p_vout
,
"late picture skipped ("
I64Fd
")"
,
current_date
-
display_date
);
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
);
vlc_mutex_unlock
(
&
p_vout
->
picture_lock
);
continue
;
continue
;
...
@@ -837,7 +837,7 @@ static void RunThread( vout_thread_t *p_vout)
...
@@ -837,7 +837,7 @@ static void RunThread( vout_thread_t *p_vout)
p_picture
->
i_status
=
DESTROYED_PICTURE
;
p_picture
->
i_status
=
DESTROYED_PICTURE
;
p_vout
->
i_heap_size
--
;
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 "
msg_Warn
(
p_vout
,
"vout warning: early picture skipped "
"("
I64Fd
")"
,
display_date
-
current_date
"("
I64Fd
")"
,
display_date
-
current_date
-
p_vout
->
i_pts_delay
);
-
p_vout
->
i_pts_delay
);
...
@@ -895,7 +895,7 @@ static void RunThread( vout_thread_t *p_vout)
...
@@ -895,7 +895,7 @@ static void RunThread( vout_thread_t *p_vout)
/*
/*
* Perform rendering
* 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
);
p_directbuffer
=
vout_RenderPicture
(
p_vout
,
p_picture
,
p_subpic
);
/*
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment