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
ba8efac9
Commit
ba8efac9
authored
Feb 25, 2013
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
af_channelmap: switch to an AVOptions-based system.
parent
b2b25b06
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
22 additions
and
27 deletions
+22
-27
filters.texi
doc/filters.texi
+3
-3
af_channelmap.c
libavfilter/af_channelmap.c
+18
-23
channelmap
tests/filtergraphs/channelmap
+1
-1
No files found.
doc/filters.texi
View file @
ba8efac9
...
...
@@ -310,7 +310,7 @@ This filter accepts the following named parameters:
Channel layout of the output stream.
@item map
Map channels from input to output. The argument is a
comma
-separated list of
Map channels from input to output. The argument is a
'|'
-separated list of
mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
@var{in_channel} form. @var{in_channel} can be either the name of the input
channel (e.g. FL for front left) or its index in the input channel layout.
...
...
@@ -324,14 +324,14 @@ output channels preserving index.
For example, assuming a 5.1+downmix input MOV file
@example
avconv -i in.mov -filter 'channelmap=map=DL-FL
\,
DR-FR' out.wav
avconv -i in.mov -filter 'channelmap=map=DL-FL
|
DR-FR' out.wav
@end example
will create an output WAV file tagged as stereo from the downmix channels of
the input.
To fix a 5.1 WAV improperly encoded in AAC's native channel order
@example
avconv -i in.wav -filter 'channelmap=1
\,2\,0\,5\,3\,
4:channel_layout=5.1' out.wav
avconv -i in.wav -filter 'channelmap=1
|2|0|5|3|
4:channel_layout=5.1' out.wav
@end example
@section join
...
...
libavfilter/af_channelmap.c
View file @
ba8efac9
...
...
@@ -123,26 +123,13 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
{
ChannelMapContext
*
s
=
ctx
->
priv
;
int
ret
;
char
*
mapping
;
char
*
mapping
,
separator
=
'|'
;
int
map_entries
=
0
;
char
buf
[
256
];
enum
MappingMode
mode
;
uint64_t
out_ch_mask
=
0
;
int
i
;
if
(
!
args
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"No parameters supplied.
\n
"
);
return
AVERROR
(
EINVAL
);
}
s
->
class
=
&
channelmap_class
;
av_opt_set_defaults
(
s
);
if
((
ret
=
av_set_options_string
(
s
,
args
,
"="
,
":"
))
<
0
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
"Error parsing options string '%s'.
\n
"
,
args
);
return
ret
;
}
mapping
=
s
->
mapping_str
;
if
(
!
mapping
)
{
...
...
@@ -165,13 +152,20 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
else
mode
=
MAP_PAIR_STR_STR
;
}
#if FF_API_OLD_FILTER_OPTS
if
(
strchr
(
mapping
,
','
))
{
av_log
(
ctx
,
AV_LOG_WARNING
,
"This syntax is deprecated, use "
"'|' to separate the mappings.
\n
"
);
separator
=
','
;
}
#endif
}
if
(
mode
!=
MAP_NONE
)
{
char
*
comma
=
mapping
;
char
*
sep
=
mapping
;
map_entries
=
1
;
while
((
comma
=
strchr
(
comma
,
','
)))
{
if
(
*++
comma
)
// Allow trailing comma
while
((
sep
=
strchr
(
sep
,
separator
)))
{
if
(
*++
sep
)
// Allow trailing comma
map_entries
++
;
}
}
...
...
@@ -188,7 +182,7 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
static
const
char
err
[]
=
"Failed to parse channel map
\n
"
;
switch
(
mode
)
{
case
MAP_ONE_INT
:
if
(
get_channel_idx
(
&
mapping
,
&
in_ch_idx
,
','
,
MAX_CH
)
<
0
)
{
if
(
get_channel_idx
(
&
mapping
,
&
in_ch_idx
,
separator
,
MAX_CH
)
<
0
)
{
ret
=
AVERROR
(
EINVAL
);
av_log
(
ctx
,
AV_LOG_ERROR
,
err
);
goto
fail
;
...
...
@@ -197,7 +191,7 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
s
->
map
[
i
].
out_channel_idx
=
i
;
break
;
case
MAP_ONE_STR
:
if
(
!
get_channel
(
&
mapping
,
&
in_ch
,
','
))
{
if
(
!
get_channel
(
&
mapping
,
&
in_ch
,
separator
))
{
av_log
(
ctx
,
AV_LOG_ERROR
,
err
);
ret
=
AVERROR
(
EINVAL
);
goto
fail
;
...
...
@@ -207,7 +201,7 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
break
;
case
MAP_PAIR_INT_INT
:
if
(
get_channel_idx
(
&
mapping
,
&
in_ch_idx
,
'-'
,
MAX_CH
)
<
0
||
get_channel_idx
(
&
mapping
,
&
out_ch_idx
,
','
,
MAX_CH
)
<
0
)
{
get_channel_idx
(
&
mapping
,
&
out_ch_idx
,
separator
,
MAX_CH
)
<
0
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
err
);
ret
=
AVERROR
(
EINVAL
);
goto
fail
;
...
...
@@ -217,7 +211,7 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
break
;
case
MAP_PAIR_INT_STR
:
if
(
get_channel_idx
(
&
mapping
,
&
in_ch_idx
,
'-'
,
MAX_CH
)
<
0
||
get_channel
(
&
mapping
,
&
out_ch
,
','
)
<
0
||
get_channel
(
&
mapping
,
&
out_ch
,
separator
)
<
0
||
out_ch
&
out_ch_mask
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
err
);
ret
=
AVERROR
(
EINVAL
);
...
...
@@ -229,7 +223,7 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
break
;
case
MAP_PAIR_STR_INT
:
if
(
get_channel
(
&
mapping
,
&
in_ch
,
'-'
)
<
0
||
get_channel_idx
(
&
mapping
,
&
out_ch_idx
,
','
,
MAX_CH
)
<
0
)
{
get_channel_idx
(
&
mapping
,
&
out_ch_idx
,
separator
,
MAX_CH
)
<
0
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
err
);
ret
=
AVERROR
(
EINVAL
);
goto
fail
;
...
...
@@ -239,7 +233,7 @@ static av_cold int channelmap_init(AVFilterContext *ctx, const char *args)
break
;
case
MAP_PAIR_STR_STR
:
if
(
get_channel
(
&
mapping
,
&
in_ch
,
'-'
)
<
0
||
get_channel
(
&
mapping
,
&
out_ch
,
','
)
<
0
||
get_channel
(
&
mapping
,
&
out_ch
,
separator
)
<
0
||
out_ch
&
out_ch_mask
)
{
av_log
(
ctx
,
AV_LOG_ERROR
,
err
);
ret
=
AVERROR
(
EINVAL
);
...
...
@@ -409,6 +403,7 @@ AVFilter avfilter_af_channelmap = {
.
init
=
channelmap_init
,
.
query_formats
=
channelmap_query_formats
,
.
priv_size
=
sizeof
(
ChannelMapContext
),
.
priv_class
=
&
channelmap_class
,
.
inputs
=
avfilter_af_channelmap_inputs
,
.
outputs
=
avfilter_af_channelmap_outputs
,
...
...
tests/filtergraphs/channelmap
View file @
ba8efac9
channelmap=map=1
\,2\,0\,5\,3\,
4:channel_layout=5.1
channelmap=map=1
|2|0|5|3|
4:channel_layout=5.1
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