Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
b90341d1
Commit
b90341d1
authored
May 13, 2022
by
Paul B Mahol
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avfilter/af_asubboost: add channels option
parent
710dce13
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
0 deletions
+26
-0
filters.texi
doc/filters.texi
+3
-0
af_asubboost.c
libavfilter/af_asubboost.c
+23
-0
No files found.
doc/filters.texi
View file @
b90341d1
...
...
@@ -3159,6 +3159,9 @@ Default value is 0.5.
@item delay
Set delay. Allowed range is from 1 to 100.
Default value is 20.
@item channels
Set the channels to process. Default value is all available.
@end table
@subsection Commands
...
...
libavfilter/af_asubboost.c
View file @
b90341d1
...
...
@@ -38,6 +38,9 @@ typedef struct ASubBoostContext {
double
a0
,
a1
,
a2
;
double
b0
,
b1
,
b2
;
char
*
ch_layout_str
;
AVChannelLayout
ch_layout
;
int
*
write_pos
;
int
buffer_samples
;
...
...
@@ -114,9 +117,18 @@ static int filter_channels(AVFilterContext *ctx, void *arg, int jobnr, int nb_jo
double
*
buffer
=
(
double
*
)
s
->
buffer
->
extended_data
[
ch
];
double
*
w
=
(
double
*
)
s
->
w
->
extended_data
[
ch
];
int
write_pos
=
s
->
write_pos
[
ch
];
enum
AVChannel
channel
=
av_channel_layout_channel_from_index
(
&
in
->
ch_layout
,
ch
);
const
int
bypass
=
av_channel_layout_index_from_channel
(
&
s
->
ch_layout
,
channel
)
<
0
;
const
double
a
=
0
.
00001
;
const
double
b
=
1
.
-
a
;
if
(
bypass
)
{
if
(
in
!=
out
)
memcpy
(
out
->
extended_data
[
ch
],
in
->
extended_data
[
ch
],
in
->
nb_samples
*
sizeof
(
double
));
continue
;
}
for
(
int
n
=
0
;
n
<
in
->
nb_samples
;
n
++
)
{
double
out_sample
,
boost
;
...
...
@@ -143,9 +155,18 @@ static int filter_channels(AVFilterContext *ctx, void *arg, int jobnr, int nb_jo
static
int
filter_frame
(
AVFilterLink
*
inlink
,
AVFrame
*
in
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
ASubBoostContext
*
s
=
ctx
->
priv
;
AVFilterLink
*
outlink
=
ctx
->
outputs
[
0
];
ThreadData
td
;
AVFrame
*
out
;
int
ret
;
ret
=
av_channel_layout_copy
(
&
s
->
ch_layout
,
&
inlink
->
ch_layout
);
if
(
ret
<
0
)
return
ret
;
if
(
strcmp
(
s
->
ch_layout_str
,
"all"
))
av_channel_layout_from_string
(
&
s
->
ch_layout
,
s
->
ch_layout_str
);
if
(
av_frame_is_writable
(
in
))
{
out
=
in
;
...
...
@@ -171,6 +192,7 @@ static av_cold void uninit(AVFilterContext *ctx)
{
ASubBoostContext
*
s
=
ctx
->
priv
;
av_channel_layout_uninit
(
&
s
->
ch_layout
);
av_frame_free
(
&
s
->
buffer
);
av_frame_free
(
&
s
->
w
);
av_freep
(
&
s
->
write_pos
);
...
...
@@ -200,6 +222,7 @@ static const AVOption asubboost_options[] = {
{
"cutoff"
,
"set cutoff"
,
OFFSET
(
cutoff
),
AV_OPT_TYPE_DOUBLE
,
{.
dbl
=
100
},
50
,
900
,
FLAGS
},
{
"slope"
,
"set slope"
,
OFFSET
(
slope
),
AV_OPT_TYPE_DOUBLE
,
{.
dbl
=
0
.
5
},
0
.
0001
,
1
,
FLAGS
},
{
"delay"
,
"set delay"
,
OFFSET
(
delay
),
AV_OPT_TYPE_DOUBLE
,
{.
dbl
=
20
},
1
,
100
,
FLAGS
},
{
"channels"
,
"set channels to filter"
,
OFFSET
(
ch_layout_str
),
AV_OPT_TYPE_STRING
,
{.
str
=
"all"
},
0
,
0
,
FLAGS
},
{
NULL
}
};
...
...
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