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
b64a4cd3
Commit
b64a4cd3
authored
Mar 09, 2013
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
stats: merge as a single file
parent
3264e6d5
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
226 additions
and
256 deletions
+226
-256
modules/misc/Modules.am
modules/misc/Modules.am
+1
-5
modules/misc/stats.c
modules/misc/stats.c
+225
-0
modules/misc/stats/decoder.c
modules/misc/stats/decoder.c
+0
-85
modules/misc/stats/encoder.c
modules/misc/stats/encoder.c
+0
-65
modules/misc/stats/stats.c
modules/misc/stats/stats.c
+0
-66
modules/misc/stats/stats.h
modules/misc/stats/stats.h
+0
-35
No files found.
modules/misc/Modules.am
View file @
b64a4cd3
...
...
@@ -43,11 +43,7 @@ if HAVE_ANDROID
liblogger_plugin_la_LIBADD += -llog
endif
libstats_plugin_la_SOURCES = \
stats/demux.c \
stats/decoder.c \
stats/encoder.c \
stats/stats.c stats/stats.h
libstats_plugin_la_SOURCES = stats.c
libstats_plugin_la_CFLAGS = $(AM_CFLAGS)
libstats_plugin_la_LIBADD = $(AM_LIBADD)
...
...
modules/misc/stats
/demux
.c
→
modules/misc/stats.c
View file @
b64a4cd3
/*****************************************************************************
*
demux.c: stats demux plugin
*
stats.c : stats plugin for vlc
*****************************************************************************
* Copyright (C) 200
1
-2008 the VideoLAN team
* Copyright (C) 200
0
-2008 the VideoLAN team
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
...
...
@@ -21,26 +21,112 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
/* Example usage:
* $ vlc movie.avi --sout="#transcode{aenc=dummy,venc=stats}:\
* std{access=http,mux=dummy,dst=0.0.0.0:8081}"
* $ vlc -vvv http://127.0.0.1:8081 --demux=stats --vout=stats --codec=stats
*/
#define kBufferSize 0x500
#include <vlc_common.h>
#include <vlc_
interface
.h>
#include <vlc_
access
.h>
#include <vlc_
plugin
.h>
#include <vlc_
codec
.h>
#include <vlc_demux.h>
#include "stats.h"
/*** Decoder ***/
static
picture_t
*
DecodeBlock
(
decoder_t
*
p_dec
,
block_t
**
pp_block
)
{
block_t
*
p_block
;
picture_t
*
p_pic
=
NULL
;
if
(
!
pp_block
||
!*
pp_block
)
return
NULL
;
p_block
=
*
pp_block
;
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_block
->
i_buffer
==
kBufferSize
)
{
msg_Dbg
(
p_dec
,
"got %"
PRIu64
" ms"
,
*
(
mtime_t
*
)
p_block
->
p_buffer
/
1000
);
msg_Dbg
(
p_dec
,
"got %"
PRIu64
" ms offset"
,
(
mdate
()
-
*
(
mtime_t
*
)
p_block
->
p_buffer
)
/
1000
);
*
(
mtime_t
*
)(
p_pic
->
p
->
p_pixels
)
=
*
(
mtime_t
*
)
p_block
->
p_buffer
;
}
else
{
msg_Dbg
(
p_dec
,
"got a packet not from stats demuxer"
);
*
(
mtime_t
*
)(
p_pic
->
p
->
p_pixels
)
=
mdate
();
}
p_pic
->
date
=
p_block
->
i_pts
>
VLC_TS_INVALID
?
p_block
->
i_pts
:
p_block
->
i_dts
;
p_pic
->
b_force
=
true
;
block_Release
(
p_block
);
*
pp_block
=
NULL
;
return
p_pic
;
}
static
int
OpenDecoder
(
vlc_object_t
*
p_this
)
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
/*****************************************************************************
* Demux
*****************************************************************************/
msg_Dbg
(
p_this
,
"opening stats decoder"
);
/* Set callbacks */
p_dec
->
pf_decode_video
=
DecodeBlock
;
p_dec
->
pf_decode_audio
=
NULL
;
p_dec
->
pf_decode_sub
=
NULL
;
/* */
es_format_Init
(
&
p_dec
->
fmt_out
,
VIDEO_ES
,
VLC_CODEC_I420
);
p_dec
->
fmt_out
.
video
.
i_width
=
100
;
p_dec
->
fmt_out
.
video
.
i_height
=
100
;
p_dec
->
fmt_out
.
video
.
i_sar_num
=
1
;
p_dec
->
fmt_out
.
video
.
i_sar_den
=
1
;
return
VLC_SUCCESS
;
}
/*** Encoder ***/
static
block_t
*
EncodeVideo
(
encoder_t
*
p_enc
,
picture_t
*
p_pict
)
{
(
void
)
p_pict
;
block_t
*
p_block
=
block_Alloc
(
kBufferSize
);
*
(
mtime_t
*
)
p_block
->
p_buffer
=
mdate
();
p_block
->
i_buffer
=
kBufferSize
;
p_block
->
i_length
=
kBufferSize
;
p_block
->
i_dts
=
p_pict
->
date
;
msg_Dbg
(
p_enc
,
"putting %"
PRIu64
"ms"
,
*
(
mtime_t
*
)
p_block
->
p_buffer
/
1000
);
return
p_block
;
}
static
block_t
*
EncodeAudio
(
encoder_t
*
p_enc
,
block_t
*
p_abuff
)
{
(
void
)
p_abuff
;
(
void
)
p_enc
;
return
NULL
;
}
static
int
OpenEncoder
(
vlc_object_t
*
p_this
)
{
encoder_t
*
p_enc
=
(
encoder_t
*
)
p_this
;
msg_Dbg
(
p_this
,
"opening stats encoder"
);
p_enc
->
pf_encode_video
=
EncodeVideo
;
p_enc
->
pf_encode_audio
=
EncodeAudio
;
return
VLC_SUCCESS
;
}
struct
demux_sys_t
{
...
...
@@ -50,14 +136,34 @@ struct demux_sys_t
date_t
pts
;
};
static
int
Demux
(
demux_t
*
);
static
int
DemuxControl
(
demux_t
*
,
int
,
va_list
);
static
int
Demux
(
demux_t
*
p_demux
)
{
demux_sys_t
*
p_sys
=
p_demux
->
p_sys
;
block_t
*
p_block
=
stream_Block
(
p_demux
->
s
,
kBufferSize
);
/*****************************************************************************
* OpenDemux
*****************************************************************************/
int
OpenDemux
(
vlc_object_t
*
p_this
)
if
(
!
p_block
)
return
1
;
p_block
->
i_dts
=
p_block
->
i_pts
=
date_Increment
(
&
p_sys
->
pts
,
kBufferSize
);
msg_Dbg
(
p_demux
,
"demux got %d ms offset"
,
(
int
)(
mdate
()
-
*
(
mtime_t
*
)
p_block
->
p_buffer
)
/
1000
);
//es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block->i_pts );
es_out_Send
(
p_demux
->
out
,
p_sys
->
p_es
,
p_block
);
return
1
;
}
static
int
DemuxControl
(
demux_t
*
p_demux
,
int
i_query
,
va_list
args
)
{
return
demux_vaControlHelper
(
p_demux
->
s
,
0
,
0
,
0
,
1
,
i_query
,
args
);
}
static
int
OpenDemux
(
vlc_object_t
*
p_this
)
{
demux_t
*
p_demux
=
(
demux_t
*
)
p_this
;
demux_sys_t
*
p_sys
;
...
...
@@ -89,10 +195,7 @@ int OpenDemux ( vlc_object_t *p_this )
return
VLC_SUCCESS
;
}
/*****************************************************************************
* CloseDemux
*****************************************************************************/
void
CloseDemux
(
vlc_object_t
*
p_this
)
static
void
CloseDemux
(
vlc_object_t
*
p_this
)
{
demux_t
*
p_demux
=
(
demux_t
*
)
p_this
;
...
...
@@ -101,32 +204,22 @@ void CloseDemux ( vlc_object_t *p_this )
free
(
p_demux
->
p_sys
);
}
/*****************************************************************************
* Demux
*****************************************************************************/
static
int
Demux
(
demux_t
*
p_demux
)
{
demux_sys_t
*
p_sys
=
p_demux
->
p_sys
;
block_t
*
p_block
=
stream_Block
(
p_demux
->
s
,
kBufferSize
);
if
(
!
p_block
)
return
1
;
p_block
->
i_dts
=
p_block
->
i_pts
=
date_Increment
(
&
p_sys
->
pts
,
kBufferSize
);
msg_Dbg
(
p_demux
,
"demux got %d ms offset"
,
(
int
)(
mdate
()
-
*
(
mtime_t
*
)
p_block
->
p_buffer
)
/
1000
);
//es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block->i_pts );
es_out_Send
(
p_demux
->
out
,
p_sys
->
p_es
,
p_block
);
return
1
;
}
static
int
DemuxControl
(
demux_t
*
p_demux
,
int
i_query
,
va_list
args
)
{
return
demux_vaControlHelper
(
p_demux
->
s
,
0
,
0
,
0
,
1
,
i_query
,
args
);
}
vlc_module_begin
()
set_shortname
(
N_
(
"Stats"
))
set_description
(
N_
(
"Stats encoder function"
)
)
set_capability
(
"encoder"
,
0
)
add_shortcut
(
"stats"
)
set_callbacks
(
OpenEncoder
,
NULL
)
add_submodule
()
set_section
(
N_
(
"Stats decoder"
),
NULL
)
set_description
(
N_
(
"Stats decoder function"
)
)
set_capability
(
"decoder"
,
0
)
add_shortcut
(
"stats"
)
set_callbacks
(
OpenDecoder
,
NULL
)
add_submodule
()
set_section
(
N_
(
"Stats demux"
),
NULL
)
set_description
(
N_
(
"Stats demux function"
)
)
set_capability
(
"demux"
,
0
)
add_shortcut
(
"stats"
)
set_callbacks
(
OpenDemux
,
CloseDemux
)
vlc_module_end
()
modules/misc/stats/decoder.c
deleted
100644 → 0
View file @
3264e6d5
/*****************************************************************************
* decoder.c: stats decoder plugin for vlc.
*****************************************************************************
* Copyright (C) 2002-2008 the VideoLAN team
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <vlc_common.h>
#include <vlc_codec.h>
#include "stats.h"
static
picture_t
*
DecodeBlock
(
decoder_t
*
p_dec
,
block_t
**
pp_block
)
{
block_t
*
p_block
;
picture_t
*
p_pic
=
NULL
;
if
(
!
pp_block
||
!*
pp_block
)
return
NULL
;
p_block
=
*
pp_block
;
p_pic
=
decoder_NewPicture
(
p_dec
);
if
(
p_block
->
i_buffer
==
kBufferSize
)
{
msg_Dbg
(
p_dec
,
"got %"
PRIu64
" ms"
,
*
(
mtime_t
*
)
p_block
->
p_buffer
/
1000
);
msg_Dbg
(
p_dec
,
"got %"
PRIu64
" ms offset"
,
(
mdate
()
-
*
(
mtime_t
*
)
p_block
->
p_buffer
)
/
1000
);
*
(
mtime_t
*
)(
p_pic
->
p
->
p_pixels
)
=
*
(
mtime_t
*
)
p_block
->
p_buffer
;
}
else
{
msg_Dbg
(
p_dec
,
"got a packet not from stats demuxer"
);
*
(
mtime_t
*
)(
p_pic
->
p
->
p_pixels
)
=
mdate
();
}
p_pic
->
date
=
p_block
->
i_pts
>
VLC_TS_INVALID
?
p_block
->
i_pts
:
p_block
->
i_dts
;
p_pic
->
b_force
=
true
;
block_Release
(
p_block
);
*
pp_block
=
NULL
;
return
p_pic
;
}
int
OpenDecoder
(
vlc_object_t
*
p_this
)
{
decoder_t
*
p_dec
=
(
decoder_t
*
)
p_this
;
msg_Dbg
(
p_this
,
"opening stats decoder"
);
/* Set callbacks */
p_dec
->
pf_decode_video
=
DecodeBlock
;
p_dec
->
pf_decode_audio
=
NULL
;
p_dec
->
pf_decode_sub
=
NULL
;
/* */
es_format_Init
(
&
p_dec
->
fmt_out
,
VIDEO_ES
,
VLC_CODEC_I420
);
p_dec
->
fmt_out
.
video
.
i_width
=
100
;
p_dec
->
fmt_out
.
video
.
i_height
=
100
;
p_dec
->
fmt_out
.
video
.
i_sar_num
=
1
;
p_dec
->
fmt_out
.
video
.
i_sar_den
=
1
;
return
VLC_SUCCESS
;
}
modules/misc/stats/encoder.c
deleted
100644 → 0
View file @
3264e6d5
/*****************************************************************************
* encoder.c: stats encoder plugin for vlc.
*****************************************************************************
* Copyright (C) 2002-2008 the VideoLAN team
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <vlc_common.h>
#include <vlc_codec.h>
#include "stats.h"
static
block_t
*
EncodeVideo
(
encoder_t
*
p_enc
,
picture_t
*
p_pict
)
{
(
void
)
p_pict
;
block_t
*
p_block
=
block_Alloc
(
kBufferSize
);
*
(
mtime_t
*
)
p_block
->
p_buffer
=
mdate
();
p_block
->
i_buffer
=
kBufferSize
;
p_block
->
i_length
=
kBufferSize
;
p_block
->
i_dts
=
p_pict
->
date
;
msg_Dbg
(
p_enc
,
"putting %"
PRIu64
"ms"
,
*
(
mtime_t
*
)
p_block
->
p_buffer
/
1000
);
return
p_block
;
}
static
block_t
*
EncodeAudio
(
encoder_t
*
p_enc
,
block_t
*
p_abuff
)
{
(
void
)
p_abuff
;
(
void
)
p_enc
;
return
NULL
;
}
int
OpenEncoder
(
vlc_object_t
*
p_this
)
{
encoder_t
*
p_enc
=
(
encoder_t
*
)
p_this
;
msg_Dbg
(
p_this
,
"opening stats encoder"
);
p_enc
->
pf_encode_video
=
EncodeVideo
;
p_enc
->
pf_encode_audio
=
EncodeAudio
;
return
VLC_SUCCESS
;
}
modules/misc/stats/stats.c
deleted
100644 → 0
View file @
3264e6d5
/*****************************************************************************
* stats.c : stats plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2008 the VideoLAN team
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <vlc_common.h>
#include <vlc_plugin.h>
#include "stats.h"
/* Example usage:
* $ vlc movie.avi --sout="#transcode{aenc=dummy,venc=stats}:\
* std{access=http,mux=dummy,dst=0.0.0.0:8081}"
* $ vlc -vvv http://127.0.0.1:8081 --demux=stats --vout=stats --codec=stats
*/
/*****************************************************************************
* Module descriptor
*****************************************************************************/
vlc_module_begin
()
set_shortname
(
N_
(
"Stats"
))
set_description
(
N_
(
"Stats encoder function"
)
)
set_capability
(
"encoder"
,
0
)
add_shortcut
(
"stats"
)
set_callbacks
(
OpenEncoder
,
NULL
)
add_submodule
()
set_section
(
N_
(
"Stats decoder"
),
NULL
)
set_description
(
N_
(
"Stats decoder function"
)
)
set_capability
(
"decoder"
,
0
)
add_shortcut
(
"stats"
)
set_callbacks
(
OpenDecoder
,
NULL
)
add_submodule
()
set_section
(
N_
(
"Stats demux"
),
NULL
)
set_description
(
N_
(
"Stats demux function"
)
)
set_capability
(
"demux"
,
0
)
add_shortcut
(
"stats"
)
set_callbacks
(
OpenDemux
,
CloseDemux
)
vlc_module_end
()
modules/misc/stats/stats.h
deleted
100644 → 0
View file @
3264e6d5
/*****************************************************************************
* stats.h : stats plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2008 the VideoLAN team
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Pierre d'Herbemont <pdherbemont@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* External prototypes
*****************************************************************************/
int
OpenDecoder
(
vlc_object_t
*
);
int
OpenEncoder
(
vlc_object_t
*
);
int
OpenDemux
(
vlc_object_t
*
);
void
CloseDemux
(
vlc_object_t
*
);
#define kBufferSize 0x500
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