Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
b7d34b32
Commit
b7d34b32
authored
Jan 22, 2013
by
Stefano Sabatini
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavfi/showwaves: add display mode option and mode=line
parent
13aca070
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
4 deletions
+42
-4
filters.texi
doc/filters.texi
+13
-0
avf_showwaves.c
libavfilter/avf_showwaves.c
+28
-3
version.h
libavfilter/version.h
+1
-1
No files found.
doc/filters.texi
View file @
b7d34b32
...
...
@@ -5716,6 +5716,19 @@ Convert input audio to a video output, representing the samples waves.
The filter accepts the following named parameters:
@table @option
@item mode
Set display mode.
Available values are:
@table @samp
@item point
Draw a point for each sample.
@item line
Draw a vertical line for each sample.
@end table
Default value is @code{point}.
@item n
Set the number of samples which are printed on the same column. A
...
...
libavfilter/avf_showwaves.c
View file @
b7d34b32
...
...
@@ -32,6 +32,12 @@
#include "video.h"
#include "internal.h"
enum
ShowWavesMode
{
MODE_POINT
,
MODE_LINE
,
MODE_NB
,
};
typedef
struct
{
const
AVClass
*
class
;
int
w
,
h
;
...
...
@@ -42,6 +48,7 @@ typedef struct {
int
req_fullfilled
;
int
n
;
int
sample_count_mod
;
enum
ShowWavesMode
mode
;
}
ShowWavesContext
;
#define OFFSET(x) offsetof(ShowWavesContext, x)
...
...
@@ -53,6 +60,10 @@ static const AVOption showwaves_options[] = {
{
"size"
,
"set video size"
,
OFFSET
(
w
),
AV_OPT_TYPE_IMAGE_SIZE
,
{.
str
=
"600x240"
},
0
,
0
,
FLAGS
},
{
"s"
,
"set video size"
,
OFFSET
(
w
),
AV_OPT_TYPE_IMAGE_SIZE
,
{.
str
=
"600x240"
},
0
,
0
,
FLAGS
},
{
"n"
,
"set how many samples to show in the same point"
,
OFFSET
(
n
),
AV_OPT_TYPE_INT
,
{.
i64
=
0
},
0
,
INT_MAX
,
FLAGS
},
{
"mode"
,
"select display mode"
,
OFFSET
(
mode
),
AV_OPT_TYPE_INT
,
{.
i64
=
MODE_POINT
},
0
,
MODE_NB
-
1
,
FLAGS
,
"mode"
},
{
"point"
,
"draw a point for each sample"
,
0
,
AV_OPT_TYPE_CONST
,
{.
i64
=
MODE_POINT
},
.
flags
=
FLAGS
,
.
unit
=
"mode"
},
{
"line"
,
"draw a line for each sample"
,
0
,
AV_OPT_TYPE_CONST
,
{.
i64
=
MODE_LINE
},
.
flags
=
FLAGS
,
.
unit
=
"mode"
},
{
NULL
},
};
...
...
@@ -187,7 +198,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
int
linesize
=
outpicref
?
outpicref
->
linesize
[
0
]
:
0
;
int16_t
*
p
=
(
int16_t
*
)
insamples
->
data
[
0
];
int
nb_channels
=
av_get_channel_layout_nb_channels
(
insamples
->
audio
->
channel_layout
);
int
i
,
j
,
h
;
int
i
,
j
,
k
,
h
;
const
int
n
=
showwaves
->
n
;
const
int
x
=
255
/
(
nb_channels
*
n
);
/* multiplication factor, pre-computed to avoid in-loop divisions */
...
...
@@ -210,9 +221,23 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples)
}
for
(
j
=
0
;
j
<
nb_channels
;
j
++
)
{
h
=
showwaves
->
h
/
2
-
av_rescale
(
*
p
++
,
showwaves
->
h
/
2
,
MAX_INT16
);
if
(
h
>=
0
&&
h
<
outlink
->
h
)
*
(
outpicref
->
data
[
0
]
+
showwaves
->
buf_idx
+
h
*
linesize
)
+=
x
;
switch
(
showwaves
->
mode
)
{
case
MODE_POINT
:
if
(
h
>=
0
&&
h
<
outlink
->
h
)
*
(
outpicref
->
data
[
0
]
+
showwaves
->
buf_idx
+
h
*
linesize
)
+=
x
;
break
;
case
MODE_LINE
:
{
int
start
=
showwaves
->
h
/
2
,
end
=
av_clip
(
h
,
0
,
outlink
->
h
-
1
);
if
(
start
>
end
)
FFSWAP
(
int16_t
,
start
,
end
);
for
(
k
=
start
;
k
<
end
;
k
++
)
*
(
outpicref
->
data
[
0
]
+
showwaves
->
buf_idx
+
k
*
linesize
)
+=
x
;
break
;
}
}
}
showwaves
->
sample_count_mod
++
;
if
(
showwaves
->
sample_count_mod
==
n
)
{
showwaves
->
sample_count_mod
=
0
;
...
...
libavfilter/version.h
View file @
b7d34b32
...
...
@@ -30,7 +30,7 @@
#define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 33
#define LIBAVFILTER_VERSION_MICRO 10
0
#define LIBAVFILTER_VERSION_MICRO 10
1
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \
...
...
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