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
35d2e4e5
Commit
35d2e4e5
authored
May 25, 2011
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmdutils: replace opt_default with opt_default2() and remove set_context_opts
parent
bf174a70
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1 addition
and
110 deletions
+1
-110
cmdutils.c
cmdutils.c
+1
-107
cmdutils.h
cmdutils.h
+0
-3
No files found.
cmdutils.c
View file @
35d2e4e5
...
...
@@ -49,9 +49,6 @@
#include <sys/resource.h>
#endif
const
char
**
opt_names
;
const
char
**
opt_values
;
static
int
opt_name_count
;
AVCodecContext
*
avcodec_opts
[
AVMEDIA_TYPE_NB
];
AVFormatContext
*
avformat_opts
;
struct
SwsContext
*
sws_opts
;
...
...
@@ -81,17 +78,6 @@ void uninit_opts(void)
sws_freeContext
(
sws_opts
);
sws_opts
=
NULL
;
#endif
for
(
i
=
0
;
i
<
opt_name_count
;
i
++
)
{
//opt_values are only stored for codec-specific options in which case
//both the name and value are dup'd
if
(
opt_values
[
i
])
{
av_freep
(
&
opt_names
[
i
]);
av_freep
(
&
opt_values
[
i
]);
}
}
av_freep
(
&
opt_names
);
av_freep
(
&
opt_values
);
opt_name_count
=
0
;
av_dict_free
(
&
format_opts
);
av_dict_free
(
&
codec_opts
);
}
...
...
@@ -297,7 +283,7 @@ unknown_opt:
}
#define FLAGS (o->type == FF_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
static
int
opt_default2
(
const
char
*
opt
,
const
char
*
arg
)
int
opt_default
(
const
char
*
opt
,
const
char
*
arg
)
{
const
AVOption
*
o
;
if
((
o
=
av_opt_find
(
avcodec_opts
[
0
],
opt
,
NULL
,
0
,
AV_OPT_SEARCH_CHILDREN
))
||
...
...
@@ -321,66 +307,6 @@ static int opt_default2(const char *opt, const char *arg)
return
AVERROR_OPTION_NOT_FOUND
;
}
int
opt_default
(
const
char
*
opt
,
const
char
*
arg
){
int
type
;
int
ret
=
0
;
const
AVOption
*
o
=
NULL
;
int
opt_types
[]
=
{
AV_OPT_FLAG_VIDEO_PARAM
,
AV_OPT_FLAG_AUDIO_PARAM
,
0
,
AV_OPT_FLAG_SUBTITLE_PARAM
,
0
};
for
(
type
=
0
;
*
avcodec_opts
&&
type
<
AVMEDIA_TYPE_NB
&&
ret
>=
0
;
type
++
){
const
AVOption
*
o2
=
av_opt_find
(
avcodec_opts
[
0
],
opt
,
NULL
,
opt_types
[
type
],
0
);
if
(
o2
)
ret
=
av_set_string3
(
avcodec_opts
[
type
],
opt
,
arg
,
1
,
&
o
);
}
if
(
!
o
&&
avformat_opts
)
ret
=
av_set_string3
(
avformat_opts
,
opt
,
arg
,
1
,
&
o
);
if
(
!
o
&&
sws_opts
)
ret
=
av_set_string3
(
sws_opts
,
opt
,
arg
,
1
,
&
o
);
if
(
!
o
){
if
(
opt
[
0
]
==
'a'
&&
avcodec_opts
[
AVMEDIA_TYPE_AUDIO
])
ret
=
av_set_string3
(
avcodec_opts
[
AVMEDIA_TYPE_AUDIO
],
opt
+
1
,
arg
,
1
,
&
o
);
else
if
(
opt
[
0
]
==
'v'
&&
avcodec_opts
[
AVMEDIA_TYPE_VIDEO
])
ret
=
av_set_string3
(
avcodec_opts
[
AVMEDIA_TYPE_VIDEO
],
opt
+
1
,
arg
,
1
,
&
o
);
else
if
(
opt
[
0
]
==
's'
&&
avcodec_opts
[
AVMEDIA_TYPE_SUBTITLE
])
ret
=
av_set_string3
(
avcodec_opts
[
AVMEDIA_TYPE_SUBTITLE
],
opt
+
1
,
arg
,
1
,
&
o
);
}
if
(
o
&&
ret
<
0
)
{
fprintf
(
stderr
,
"Invalid value '%s' for option '%s'
\n
"
,
arg
,
opt
);
exit
(
1
);
}
if
(
!
o
)
{
AVCodec
*
p
=
NULL
;
AVOutputFormat
*
oformat
=
NULL
;
while
((
p
=
av_codec_next
(
p
))){
const
AVClass
*
c
=
p
->
priv_class
;
if
(
c
&&
av_opt_find
(
&
c
,
opt
,
NULL
,
0
,
0
))
break
;
}
if
(
!
p
)
{
while
((
oformat
=
av_oformat_next
(
oformat
)))
{
const
AVClass
*
c
=
oformat
->
priv_class
;
if
(
c
&&
av_opt_find
(
&
c
,
opt
,
NULL
,
0
,
0
))
break
;
}
}
}
if
((
ret
=
opt_default2
(
opt
,
arg
))
<
0
)
return
ret
;
// av_log(NULL, AV_LOG_ERROR, "%s:%s: %f 0x%0X\n", opt, arg, av_get_double(avcodec_opts, opt, NULL), (int)av_get_int(avcodec_opts, opt, NULL));
//FIXME we should always use avcodec_opts, ... for storing options so there will not be any need to keep track of what i set over this
opt_values
=
av_realloc
(
opt_values
,
sizeof
(
void
*
)
*
(
opt_name_count
+
1
));
opt_values
[
opt_name_count
]
=
o
?
NULL
:
av_strdup
(
arg
);
opt_names
=
av_realloc
(
opt_names
,
sizeof
(
void
*
)
*
(
opt_name_count
+
1
));
opt_names
[
opt_name_count
++
]
=
o
?
o
->
name
:
av_strdup
(
opt
);
if
((
*
avcodec_opts
&&
avcodec_opts
[
0
]
->
debug
)
||
(
avformat_opts
&&
avformat_opts
->
debug
))
av_log_set_level
(
AV_LOG_DEBUG
);
return
0
;
}
int
opt_loglevel
(
const
char
*
opt
,
const
char
*
arg
)
{
const
struct
{
const
char
*
name
;
int
level
;
}
log_levels
[]
=
{
...
...
@@ -429,38 +355,6 @@ int opt_timelimit(const char *opt, const char *arg)
return
0
;
}
void
set_context_opts
(
void
*
ctx
,
void
*
opts_ctx
,
int
flags
,
AVCodec
*
codec
)
{
int
i
;
void
*
priv_ctx
=
NULL
;
if
(
!
strcmp
(
"AVCodecContext"
,
(
*
(
AVClass
**
)
ctx
)
->
class_name
)){
AVCodecContext
*
avctx
=
ctx
;
if
(
codec
&&
codec
->
priv_class
&&
avctx
->
priv_data
){
priv_ctx
=
avctx
->
priv_data
;
}
}
else
if
(
!
strcmp
(
"AVFormatContext"
,
(
*
(
AVClass
**
)
ctx
)
->
class_name
))
{
AVFormatContext
*
avctx
=
ctx
;
if
(
avctx
->
oformat
&&
avctx
->
oformat
->
priv_class
)
{
priv_ctx
=
avctx
->
priv_data
;
}
}
for
(
i
=
0
;
i
<
opt_name_count
;
i
++
){
char
buf
[
256
];
const
AVOption
*
opt
;
const
char
*
str
=
av_get_string
(
opts_ctx
,
opt_names
[
i
],
&
opt
,
buf
,
sizeof
(
buf
));
/* if an option with name opt_names[i] is present in opts_ctx then str is non-NULL */
if
(
str
&&
((
opt
->
flags
&
flags
)
==
flags
))
av_set_string3
(
ctx
,
opt_names
[
i
],
str
,
1
,
NULL
);
/* We need to use a differnt system to pass options to the private context because
it is not known which codec and thus context kind that will be when parsing options
we thus use opt_values directly instead of opts_ctx */
if
(
!
str
&&
priv_ctx
&&
av_get_string
(
priv_ctx
,
opt_names
[
i
],
&
opt
,
buf
,
sizeof
(
buf
))){
av_set_string3
(
priv_ctx
,
opt_names
[
i
],
opt_values
[
i
],
1
,
NULL
);
}
}
}
void
print_error
(
const
char
*
filename
,
int
err
)
{
char
errbuf
[
128
];
...
...
cmdutils.h
View file @
35d2e4e5
...
...
@@ -39,7 +39,6 @@ extern const char program_name[];
*/
extern
const
int
program_birth_year
;
extern
const
char
**
opt_names
;
extern
AVCodecContext
*
avcodec_opts
[
AVMEDIA_TYPE_NB
];
extern
AVFormatContext
*
avformat_opts
;
extern
struct
SwsContext
*
sws_opts
;
...
...
@@ -149,8 +148,6 @@ void show_help_options(const OptionDef *options, const char *msg, int mask, int
void
parse_options
(
int
argc
,
char
**
argv
,
const
OptionDef
*
options
,
void
(
*
parse_arg_function
)(
const
char
*
));
void
set_context_opts
(
void
*
ctx
,
void
*
opts_ctx
,
int
flags
,
AVCodec
*
codec
);
/**
* Filter out options for given codec.
*/
...
...
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