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
cdc78058
Commit
cdc78058
authored
Jan 30, 2018
by
Josh de Kock
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmdutils: make use of new iteration APIs
parent
0fd47570
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
79 deletions
+43
-79
cmdutils.c
fftools/cmdutils.c
+43
-79
No files found.
fftools/cmdutils.c
View file @
cdc78058
...
...
@@ -1250,19 +1250,11 @@ int show_license(void *optctx, const char *opt, const char *arg)
return
0
;
}
static
int
is_device
(
const
AVClass
*
avclass
)
{
if
(
!
avclass
)
return
0
;
return
AV_IS_INPUT_DEVICE
(
avclass
->
category
)
||
AV_IS_OUTPUT_DEVICE
(
avclass
->
category
);
}
static
int
show_formats_devices
(
void
*
optctx
,
const
char
*
opt
,
const
char
*
arg
,
int
device_only
,
int
muxdemuxers
)
{
AVInputFormat
*
ifmt
=
NULL
;
AVOutputFormat
*
ofmt
=
NULL
;
const
AVInputFormat
*
ifmt
=
NULL
;
const
AVOutputFormat
*
ofmt
=
NULL
;
const
char
*
last_name
;
int
is_dev
;
printf
(
"%s
\n
"
" D. = Demuxing supported
\n
"
...
...
@@ -1275,34 +1267,24 @@ static int show_formats_devices(void *optctx, const char *opt, const char *arg,
const
char
*
name
=
NULL
;
const
char
*
long_name
=
NULL
;
if
(
muxdemuxers
!=
SHOW_DEMUXERS
)
{
while
((
ofmt
=
av_oformat_next
(
ofmt
)))
{
is_dev
=
is_device
(
ofmt
->
priv_class
);
if
(
!
is_dev
&&
device_only
)
continue
;
if
((
!
name
||
strcmp
(
ofmt
->
name
,
name
)
<
0
)
&&
strcmp
(
ofmt
->
name
,
last_name
)
>
0
)
{
name
=
ofmt
->
name
;
long_name
=
ofmt
->
long_name
;
encode
=
1
;
}
}
}
if
(
muxdemuxers
!=
SHOW_MUXERS
)
{
while
((
ifmt
=
av_iformat_next
(
ifmt
)))
{
is_dev
=
is_device
(
ifmt
->
priv_class
);
if
(
!
is_dev
&&
device_only
)
continue
;
if
((
!
name
||
strcmp
(
ifmt
->
name
,
name
)
<
0
)
&&
strcmp
(
ifmt
->
name
,
last_name
)
>
0
)
{
name
=
ifmt
->
name
;
long_name
=
ifmt
->
long_name
;
encode
=
0
;
}
if
(
name
&&
strcmp
(
ifmt
->
name
,
name
)
==
0
)
decode
=
1
;
}
}
#define x(func, type, condition) do { \
void *i = 0; \
if (condition) { \
while ((type = func(&i))) { \
if ((!name || strcmp(type->name, name) < 0) && \
strcmp(type->name, last_name) > 0) { \
name = type->name; \
long_name = type->long_name; \
encode = 1; \
} \
} \
} } while(0)
x
(
av_muxer_iterate
,
ofmt
,
muxdemuxers
!=
SHOW_DEMUXERS
&&
!
device_only
);
x
(
av_outdev_iterate
,
ofmt
,
muxdemuxers
!=
SHOW_DEMUXERS
);
x
(
av_demuxer_iterate
,
ifmt
,
muxdemuxers
!=
SHOW_MUXERS
&&
!
device_only
);
x
(
av_indev_iterate
,
ifmt
,
muxdemuxers
!=
SHOW_MUXERS
);
#undef x
if
(
!
name
)
break
;
last_name
=
name
;
...
...
@@ -1442,7 +1424,8 @@ static char get_media_type_char(enum AVMediaType type)
static
const
AVCodec
*
next_codec_for_id
(
enum
AVCodecID
id
,
const
AVCodec
*
prev
,
int
encoder
)
{
while
((
prev
=
av_codec_next
(
prev
)))
{
void
*
i
=
0
;
while
((
prev
=
av_codec_iterate
(
&
i
)))
{
if
(
prev
->
id
==
id
&&
(
encoder
?
av_codec_is_encoder
(
prev
)
:
av_codec_is_decoder
(
prev
)))
return
prev
;
...
...
@@ -2116,7 +2099,7 @@ double get_rotation(AVStream *st)
}
#if CONFIG_AVDEVICE
static
int
print_device_sources
(
AVInputFormat
*
fmt
,
AVDictionary
*
opts
)
static
int
print_device_sources
(
const
AVInputFormat
*
fmt
,
AVDictionary
*
opts
)
{
int
ret
,
i
;
AVDeviceInfoList
*
device_list
=
NULL
;
...
...
@@ -2131,7 +2114,7 @@ static int print_device_sources(AVInputFormat *fmt, AVDictionary *opts)
goto
fail
;
}
if
((
ret
=
avdevice_list_input_sources
(
fmt
,
NULL
,
opts
,
&
device_list
))
<
0
)
{
if
((
ret
=
avdevice_list_input_sources
(
(
AVInputFormat
*
)
fmt
,
NULL
,
opts
,
&
device_list
))
<
0
)
{
printf
(
"Cannot list sources.
\n
"
);
goto
fail
;
}
...
...
@@ -2146,7 +2129,7 @@ static int print_device_sources(AVInputFormat *fmt, AVDictionary *opts)
return
ret
;
}
static
int
print_device_sinks
(
AVOutputFormat
*
fmt
,
AVDictionary
*
opts
)
static
int
print_device_sinks
(
const
AVOutputFormat
*
fmt
,
AVDictionary
*
opts
)
{
int
ret
,
i
;
AVDeviceInfoList
*
device_list
=
NULL
;
...
...
@@ -2161,7 +2144,7 @@ static int print_device_sinks(AVOutputFormat *fmt, AVDictionary *opts)
goto
fail
;
}
if
((
ret
=
avdevice_list_output_sinks
(
fmt
,
NULL
,
opts
,
&
device_list
))
<
0
)
{
if
((
ret
=
avdevice_list_output_sinks
(
(
AVOutputFormat
*
)
fmt
,
NULL
,
opts
,
&
device_list
))
<
0
)
{
printf
(
"Cannot list sinks.
\n
"
);
goto
fail
;
}
...
...
@@ -2200,7 +2183,8 @@ static int show_sinks_sources_parse_arg(const char *arg, char **dev, AVDictionar
int
show_sources
(
void
*
optctx
,
const
char
*
opt
,
const
char
*
arg
)
{
AVInputFormat
*
fmt
=
NULL
;
const
AVInputFormat
*
fmt
=
NULL
;
void
*
i
=
0
;
char
*
dev
=
NULL
;
AVDictionary
*
opts
=
NULL
;
int
ret
=
0
;
...
...
@@ -2211,24 +2195,14 @@ int show_sources(void *optctx, const char *opt, const char *arg)
if
((
ret
=
show_sinks_sources_parse_arg
(
arg
,
&
dev
,
&
opts
))
<
0
)
goto
fail
;
do
{
fmt
=
av_input_audio_device_next
(
fmt
);
if
(
fmt
)
{
if
(
!
strcmp
(
fmt
->
name
,
"lavfi"
))
continue
;
//it's pointless to probe lavfi
if
(
dev
&&
!
av_match_name
(
dev
,
fmt
->
name
))
continue
;
print_device_sources
(
fmt
,
opts
);
}
}
while
(
fmt
);
do
{
fmt
=
av_input_video_device_next
(
fmt
);
if
(
fmt
)
{
if
(
dev
&&
!
av_match_name
(
dev
,
fmt
->
name
))
continue
;
print_device_sources
(
fmt
,
opts
);
}
}
while
(
fmt
);
while
((
fmt
=
av_indev_iterate
(
&
i
)))
{
if
(
!
strcmp
(
fmt
->
name
,
"lavfi"
))
continue
;
//it's pointless to probe lavfi
if
(
dev
&&
!
av_match_name
(
dev
,
fmt
->
name
))
continue
;
print_device_sources
(
fmt
,
opts
);
}
fail:
av_dict_free
(
&
opts
);
av_free
(
dev
);
...
...
@@ -2238,7 +2212,8 @@ int show_sources(void *optctx, const char *opt, const char *arg)
int
show_sinks
(
void
*
optctx
,
const
char
*
opt
,
const
char
*
arg
)
{
AVOutputFormat
*
fmt
=
NULL
;
const
AVOutputFormat
*
fmt
=
NULL
;
void
*
i
=
0
;
char
*
dev
=
NULL
;
AVDictionary
*
opts
=
NULL
;
int
ret
=
0
;
...
...
@@ -2249,22 +2224,11 @@ int show_sinks(void *optctx, const char *opt, const char *arg)
if
((
ret
=
show_sinks_sources_parse_arg
(
arg
,
&
dev
,
&
opts
))
<
0
)
goto
fail
;
do
{
fmt
=
av_output_audio_device_next
(
fmt
);
if
(
fmt
)
{
if
(
dev
&&
!
av_match_name
(
dev
,
fmt
->
name
))
continue
;
print_device_sinks
(
fmt
,
opts
);
}
}
while
(
fmt
);
do
{
fmt
=
av_output_video_device_next
(
fmt
);
if
(
fmt
)
{
if
(
dev
&&
!
av_match_name
(
dev
,
fmt
->
name
))
continue
;
print_device_sinks
(
fmt
,
opts
);
}
}
while
(
fmt
);
while
((
fmt
=
av_outdev_iterate
(
&
i
)))
{
if
(
dev
&&
!
av_match_name
(
dev
,
fmt
->
name
))
continue
;
print_device_sinks
(
fmt
,
opts
);
}
fail:
av_dict_free
(
&
opts
);
av_free
(
dev
);
...
...
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