Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
FFmpeg
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
libremedia
Tethys
FFmpeg
Commits
35d2e4e5
Commit
35d2e4e5
authored
13 years ago
by
Anton Khirnov
Browse files
Options
Downloads
Patches
Plain Diff
cmdutils: replace opt_default with opt_default2() and remove set_context_opts
parent
bf174a70
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
cmdutils.c
+1
-107
1 addition, 107 deletions
cmdutils.c
cmdutils.h
+0
-3
0 additions, 3 deletions
cmdutils.h
with
1 addition
and
110 deletions
cmdutils.c
+
1
−
107
View file @
35d2e4e5
...
@@ -49,9 +49,6 @@
...
@@ -49,9 +49,6 @@
#include
<sys/resource.h>
#include
<sys/resource.h>
#endif
#endif
const
char
**
opt_names
;
const
char
**
opt_values
;
static
int
opt_name_count
;
AVCodecContext
*
avcodec_opts
[
AVMEDIA_TYPE_NB
];
AVCodecContext
*
avcodec_opts
[
AVMEDIA_TYPE_NB
];
AVFormatContext
*
avformat_opts
;
AVFormatContext
*
avformat_opts
;
struct
SwsContext
*
sws_opts
;
struct
SwsContext
*
sws_opts
;
...
@@ -81,17 +78,6 @@ void uninit_opts(void)
...
@@ -81,17 +78,6 @@ void uninit_opts(void)
sws_freeContext
(
sws_opts
);
sws_freeContext
(
sws_opts
);
sws_opts
=
NULL
;
sws_opts
=
NULL
;
#endif
#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
(
&
format_opts
);
av_dict_free
(
&
codec_opts
);
av_dict_free
(
&
codec_opts
);
}
}
...
@@ -297,7 +283,7 @@ unknown_opt:
...
@@ -297,7 +283,7 @@ unknown_opt:
}
}
#define FLAGS (o->type == FF_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
#define FLAGS (o->type == FF_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
static
int
opt_default
2
(
const
char
*
opt
,
const
char
*
arg
)
int
opt_default
(
const
char
*
opt
,
const
char
*
arg
)
{
{
const
AVOption
*
o
;
const
AVOption
*
o
;
if
((
o
=
av_opt_find
(
avcodec_opts
[
0
],
opt
,
NULL
,
0
,
AV_OPT_SEARCH_CHILDREN
))
||
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)
...
@@ -321,66 +307,6 @@ static int opt_default2(const char *opt, const char *arg)
return
AVERROR_OPTION_NOT_FOUND
;
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
)
int
opt_loglevel
(
const
char
*
opt
,
const
char
*
arg
)
{
{
const
struct
{
const
char
*
name
;
int
level
;
}
log_levels
[]
=
{
const
struct
{
const
char
*
name
;
int
level
;
}
log_levels
[]
=
{
...
@@ -429,38 +355,6 @@ int opt_timelimit(const char *opt, const char *arg)
...
@@ -429,38 +355,6 @@ int opt_timelimit(const char *opt, const char *arg)
return
0
;
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
)
void
print_error
(
const
char
*
filename
,
int
err
)
{
{
char
errbuf
[
128
];
char
errbuf
[
128
];
...
...
This diff is collapsed.
Click to expand it.
cmdutils.h
+
0
−
3
View file @
35d2e4e5
...
@@ -39,7 +39,6 @@ extern const char program_name[];
...
@@ -39,7 +39,6 @@ extern const char program_name[];
*/
*/
extern
const
int
program_birth_year
;
extern
const
int
program_birth_year
;
extern
const
char
**
opt_names
;
extern
AVCodecContext
*
avcodec_opts
[
AVMEDIA_TYPE_NB
];
extern
AVCodecContext
*
avcodec_opts
[
AVMEDIA_TYPE_NB
];
extern
AVFormatContext
*
avformat_opts
;
extern
AVFormatContext
*
avformat_opts
;
extern
struct
SwsContext
*
sws_opts
;
extern
struct
SwsContext
*
sws_opts
;
...
@@ -149,8 +148,6 @@ void show_help_options(const OptionDef *options, const char *msg, int mask, int
...
@@ -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_options
(
int
argc
,
char
**
argv
,
const
OptionDef
*
options
,
void
(
*
parse_arg_function
)(
const
char
*
));
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.
* Filter out options for given codec.
*/
*/
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment