Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
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-gpu
Commits
03b059c1
Commit
03b059c1
authored
Jan 08, 2006
by
Clément Stenac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some more stats preliminary work
parent
efacf7b5
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
92 additions
and
4 deletions
+92
-4
include/vlc_messages.h
include/vlc_messages.h
+18
-0
src/input/decoder.c
src/input/decoder.c
+9
-0
src/input/input.c
src/input/input.c
+3
-0
src/input/stream.c
src/input/stream.c
+3
-0
src/libvlc.c
src/libvlc.c
+8
-0
src/misc/stats.c
src/misc/stats.c
+41
-4
src/network/httpd.c
src/network/httpd.c
+3
-0
src/video_output/video_output.c
src/video_output/video_output.c
+7
-0
No files found.
include/vlc_messages.h
View file @
03b059c1
...
@@ -208,6 +208,7 @@ enum
...
@@ -208,6 +208,7 @@ enum
STATS_COUNTER
,
STATS_COUNTER
,
STATS_MAX
,
STATS_MAX
,
STATS_MIN
,
STATS_MIN
,
STATS_DERIVATIVE
};
};
struct
counter_sample_t
struct
counter_sample_t
...
@@ -247,3 +248,20 @@ static inline int __stats_UpdateInteger( vlc_object_t *p_obj, char *psz_name,
...
@@ -247,3 +248,20 @@ static inline int __stats_UpdateInteger( vlc_object_t *p_obj, char *psz_name,
return
__stats_Update
(
p_obj
,
psz_name
,
val
);
return
__stats_Update
(
p_obj
,
psz_name
,
val
);
}
}
#define stats_UpdateInteger( a,b,c ) __stats_UpdateInteger( VLC_OBJECT(a),b,c )
#define stats_UpdateInteger( a,b,c ) __stats_UpdateInteger( VLC_OBJECT(a),b,c )
struct
input_stats_t
{
/* Input */
int
i_read_packets
;
int
i_read_bytes
;
float
f_last_bitrate
;
float
f_average_bitrate
;
/* Decoders */
/* Vout */
int
i_displayed_pictures
;
int
i_lost_pictures
;
}
src/input/decoder.c
View file @
03b059c1
...
@@ -384,6 +384,10 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
...
@@ -384,6 +384,10 @@ static decoder_t * CreateDecoder( input_thread_t *p_input,
p_dec
->
pf_decode_sub
=
0
;
p_dec
->
pf_decode_sub
=
0
;
p_dec
->
pf_packetize
=
0
;
p_dec
->
pf_packetize
=
0
;
stats_Create
(
p_dec
,
"decoded_audio"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
stats_Create
(
p_dec
,
"decoded_video"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
stats_Create
(
p_dec
,
"decoded_sub"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
/* Initialize the decoder fifo */
/* Initialize the decoder fifo */
p_dec
->
p_module
=
NULL
;
p_dec
->
p_module
=
NULL
;
...
@@ -621,6 +625,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
...
@@ -621,6 +625,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
,
"decoded_audio"
,
1
);
/* 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
&&
...
@@ -644,6 +649,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
...
@@ -644,6 +649,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
,
"decoded_audio"
,
1
);
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
)
{
{
...
@@ -689,6 +695,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
...
@@ -689,6 +695,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
while
(
(
p_pic
=
p_dec
->
pf_decode_video
(
p_dec
,
while
(
(
p_pic
=
p_dec
->
pf_decode_video
(
p_dec
,
&
p_packetized_block
))
)
&
p_packetized_block
))
)
{
{
stats_UpdateInteger
(
p_dec
,
"decoded_video"
,
1
);
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
)
{
{
...
@@ -709,6 +716,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
...
@@ -709,6 +716,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
,
"decoded_video"
,
1
);
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
)
{
{
...
@@ -728,6 +736,7 @@ static int DecoderDecode( decoder_t *p_dec, block_t *p_block )
...
@@ -728,6 +736,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
,
"decoded_sub"
,
1
);
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/input.c
View file @
03b059c1
...
@@ -672,6 +672,9 @@ static int Init( input_thread_t * p_input, vlc_bool_t b_quick )
...
@@ -672,6 +672,9 @@ static int Init( input_thread_t * p_input, vlc_bool_t b_quick )
*/
*/
if
(
!
b_quick
)
if
(
!
b_quick
)
{
{
stats_Create
(
p_input
,
"read_bytes"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
stats_Create
(
p_input
,
"input_bitrate"
,
VLC_VAR_FLOAT
,
STATS_DERIVATIVE
);
psz
=
var_GetString
(
p_input
,
"sout"
);
psz
=
var_GetString
(
p_input
,
"sout"
);
if
(
*
psz
&&
strncasecmp
(
p_input
->
input
.
p_item
->
psz_uri
,
"vlc:"
,
4
)
)
if
(
*
psz
&&
strncasecmp
(
p_input
->
input
.
p_item
->
psz_uri
,
"vlc:"
,
4
)
)
{
{
...
...
src/input/stream.c
View file @
03b059c1
...
@@ -1596,6 +1596,9 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
...
@@ -1596,6 +1596,9 @@ static int AReadStream( stream_t *s, void *p_read, int i_read )
return
AReadStream
(
s
,
p_read
,
i_read_orig
);
return
AReadStream
(
s
,
p_read
,
i_read_orig
);
}
}
/* Update read bytes in input */
stats_UpdateInteger
(
s
->
p_parent
,
"read_bytes"
,
i_read
);
return
i_read
;
return
i_read
;
}
}
...
...
src/libvlc.c
View file @
03b059c1
...
@@ -902,6 +902,7 @@ int VLC_CleanUp( int i_object )
...
@@ -902,6 +902,7 @@ int VLC_CleanUp( int i_object )
vout_thread_t
*
p_vout
;
vout_thread_t
*
p_vout
;
aout_instance_t
*
p_aout
;
aout_instance_t
*
p_aout
;
announce_handler_t
*
p_announce
;
announce_handler_t
*
p_announce
;
stats_handler_t
*
p_stats
;
vlc_t
*
p_vlc
=
vlc_current_object
(
i_object
);
vlc_t
*
p_vlc
=
vlc_current_object
(
i_object
);
/* Check that the handle is valid */
/* Check that the handle is valid */
...
@@ -956,6 +957,13 @@ int VLC_CleanUp( int i_object )
...
@@ -956,6 +957,13 @@ int VLC_CleanUp( int i_object )
aout_Delete
(
p_aout
);
aout_Delete
(
p_aout
);
}
}
while
(
(
p_stats
=
vlc_object_find
(
p_vlc
,
VLC_OBJECT_STATS
,
FIND_CHILD
)
))
{
vlc_object_detach
(
(
vlc_object_t
*
)
p_stats
);
vlc_object_release
(
(
vlc_object_t
*
)
p_stats
);
// TODO: Delete it
}
/*
/*
* Free announce handler(s?)
* Free announce handler(s?)
*/
*/
...
...
src/misc/stats.c
View file @
03b059c1
...
@@ -94,12 +94,22 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
...
@@ -94,12 +94,22 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
{
{
switch
(
p_counter
->
i_compute_type
)
switch
(
p_counter
->
i_compute_type
)
{
{
case
STATS_LAST
:
case
STATS_MIN
:
case
STATS_LAST
:
case
STATS_LAST
:
if
(
p_counter
->
i_samples
>
1
)
if
(
p_counter
->
i_samples
>
1
)
{
{
msg_Err
(
p_handler
,
"LAST counter has several samples !"
);
msg_Err
(
p_handler
,
"LAST counter has several samples !"
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
if
(
p_counter
->
i_type
!=
VLC_VAR_FLOAT
&&
p_counter
->
i_type
!=
VLC_VAR_INTEGER
&&
p_counter
->
i_compute_type
!=
STATS_LAST
)
{
msg_Err
(
p_handler
,
"Unable to compute MIN or MAX for this type"
);
return
VLC_EGENERIC
;
}
if
(
p_counter
->
i_samples
==
0
)
if
(
p_counter
->
i_samples
==
0
)
{
{
counter_sample_t
*
p_new
=
(
counter_sample_t
*
)
malloc
(
counter_sample_t
*
p_new
=
(
counter_sample_t
*
)
malloc
(
...
@@ -110,6 +120,21 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
...
@@ -110,6 +120,21 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
p_counter
->
i_samples
,
p_new
);
p_counter
->
i_samples
,
p_new
);
}
}
if
(
p_counter
->
i_samples
==
1
)
if
(
p_counter
->
i_samples
==
1
)
{
/* Update if : LAST or (MAX and bigger) or (MIN and bigger) */
if
(
p_counter
->
i_compute_type
==
STATS_LAST
||
(
p_counter
->
i_compute_type
==
STATS_MAX
&&
(
(
p_counter
->
i_type
==
VLC_VAR_INTEGER
&&
p_counter
->
pp_samples
[
0
]
->
value
.
i_int
>
val
.
i_int
)
||
(
p_counter
->
i_type
==
VLC_VAR_FLOAT
&&
p_counter
->
pp_samples
[
0
]
->
value
.
f_float
>
val
.
f_float
)
)
)
||
(
p_counter
->
i_compute_type
==
STATS_MIN
&&
(
(
p_counter
->
i_type
==
VLC_VAR_INTEGER
&&
p_counter
->
pp_samples
[
0
]
->
value
.
i_int
<
val
.
i_int
)
||
(
p_counter
->
i_type
==
VLC_VAR_FLOAT
&&
p_counter
->
pp_samples
[
0
]
->
value
.
f_float
<
val
.
f_float
)
)
)
)
{
{
if
(
p_counter
->
i_type
==
VLC_VAR_STRING
&&
if
(
p_counter
->
i_type
==
VLC_VAR_STRING
&&
p_counter
->
pp_samples
[
0
]
->
value
.
psz_string
)
p_counter
->
pp_samples
[
0
]
->
value
.
psz_string
)
...
@@ -118,7 +143,9 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
...
@@ -118,7 +143,9 @@ static int stats_CounterUpdate( stats_handler_t *p_handler,
}
}
p_counter
->
pp_samples
[
0
]
->
value
=
val
;
p_counter
->
pp_samples
[
0
]
->
value
=
val
;
}
}
}
break
;
break
;
case
STATS_COUNTER
:
case
STATS_COUNTER
:
if
(
p_counter
->
i_samples
>
1
)
if
(
p_counter
->
i_samples
>
1
)
{
{
...
@@ -216,3 +243,13 @@ static stats_handler_t* stats_HandlerCreate( vlc_object_t *p_this )
...
@@ -216,3 +243,13 @@ static stats_handler_t* stats_HandlerCreate( vlc_object_t *p_this )
return
p_handler
;
return
p_handler
;
}
}
void
stats_ComputeInputStats
(
input_thread_t
*
p_input
,
input_stats_t
*
p_stats
)
{
int
i
;
/* read_packets and read_bytes are common to all streams */
p_stats
->
i_read_packets
=
stats_GetInteger
(
p_input
,
"read_packets"
);
p_stats
->
i_read_bytes
=
stats_GetInteger
(
p_input
,
"read_bytes"
);
}
src/network/httpd.c
View file @
03b059c1
...
@@ -2059,6 +2059,7 @@ static void httpd_HostThread( httpd_host_t *host )
...
@@ -2059,6 +2059,7 @@ static void httpd_HostThread( httpd_host_t *host )
tls_session_t
*
p_tls
=
NULL
;
tls_session_t
*
p_tls
=
NULL
;
stats_Create
(
host
,
"client_connections"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
stats_Create
(
host
,
"client_connections"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
stats_Create
(
host
,
"active_connections"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
while
(
!
host
->
b_die
)
while
(
!
host
->
b_die
)
{
{
...
@@ -2108,6 +2109,7 @@ static void httpd_HostThread( httpd_host_t *host )
...
@@ -2108,6 +2109,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
);
TAB_REMOVE
(
host
->
i_client
,
host
->
client
,
cl
);
TAB_REMOVE
(
host
->
i_client
,
host
->
client
,
cl
);
free
(
cl
);
free
(
cl
);
i_client
--
;
i_client
--
;
...
@@ -2563,6 +2565,7 @@ static void httpd_HostThread( httpd_host_t *host )
...
@@ -2563,6 +2565,7 @@ static void httpd_HostThread( httpd_host_t *host )
httpd_client_t
*
cl
;
httpd_client_t
*
cl
;
stats_UpdateInteger
(
host
,
"client_connections"
,
stats_UpdateInteger
(
host
,
"client_connections"
,
1
);
1
);
stats_UpdateInteger
(
host
,
"active_connections"
,
1
);
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/video_output/video_output.c
View file @
03b059c1
...
@@ -229,6 +229,10 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
...
@@ -229,6 +229,10 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent, video_format_t *p_fmt )
return
NULL
;
return
NULL
;
}
}
stats_Create
(
p_vout
,
"displayed_pictures"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
stats_Create
(
p_vout
,
"lost_pictures"
,
VLC_VAR_INTEGER
,
STATS_COUNTER
);
/* Initialize pictures - translation tables and functions
/* Initialize pictures - translation tables and functions
* will be initialized later in InitThread */
* will be initialized later in InitThread */
for
(
i_index
=
0
;
i_index
<
2
*
VOUT_MAX_PICTURES
+
1
;
i_index
++
)
for
(
i_index
=
0
;
i_index
<
2
*
VOUT_MAX_PICTURES
+
1
;
i_index
++
)
...
@@ -810,6 +814,7 @@ static void RunThread( vout_thread_t *p_vout)
...
@@ -810,6 +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
);
vlc_mutex_unlock
(
&
p_vout
->
picture_lock
);
vlc_mutex_unlock
(
&
p_vout
->
picture_lock
);
continue
;
continue
;
...
@@ -832,6 +837,7 @@ static void RunThread( vout_thread_t *p_vout)
...
@@ -832,6 +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
);
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
);
...
@@ -889,6 +895,7 @@ static void RunThread( vout_thread_t *p_vout)
...
@@ -889,6 +895,7 @@ static void RunThread( vout_thread_t *p_vout)
/*
/*
* Perform rendering
* Perform rendering
*/
*/
stats_UpdateInteger
(
p_vout
,
"displayed_pictures"
,
1
);
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