mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
vsrc_movie: switch to an AVOptions-based system.
This commit is contained in:
parent
b7b3302f8f
commit
a42d6e6c4c
@ -2355,16 +2355,14 @@ useful in applications that do not support arbitrary filter graphs, but its use
|
||||
is discouraged in those that do. Specifically in @command{avconv} this filter
|
||||
should never be used, the @option{-filter_complex} option fully replaces it.
|
||||
|
||||
It accepts the syntax: @var{movie_name}[:@var{options}] where
|
||||
@var{movie_name} is the name of the resource to read (not necessarily
|
||||
a file but also a device or a stream accessed through some protocol),
|
||||
and @var{options} is an optional sequence of @var{key}=@var{value}
|
||||
pairs, separated by ":".
|
||||
|
||||
The description of the accepted options follows.
|
||||
This filter accepts the following options:
|
||||
|
||||
@table @option
|
||||
|
||||
@item filename
|
||||
The name of the resource to read (not necessarily a file but also a device or a
|
||||
stream accessed through some protocol).
|
||||
|
||||
@item format_name, f
|
||||
Specifies the format assumed for the movie to read, and can be either
|
||||
the name of a container or an input device. If not specified the
|
||||
|
@ -57,15 +57,17 @@ typedef struct {
|
||||
} MovieContext;
|
||||
|
||||
#define OFFSET(x) offsetof(MovieContext, x)
|
||||
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM
|
||||
|
||||
static const AVOption movie_options[]= {
|
||||
{"format_name", "set format name", OFFSET(format_name), AV_OPT_TYPE_STRING, {.str = 0}, CHAR_MIN, CHAR_MAX },
|
||||
{"f", "set format name", OFFSET(format_name), AV_OPT_TYPE_STRING, {.str = 0}, CHAR_MIN, CHAR_MAX },
|
||||
{"stream_index", "set stream index", OFFSET(stream_index), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX },
|
||||
{"si", "set stream index", OFFSET(stream_index), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX },
|
||||
{"seek_point", "set seekpoint (seconds)", OFFSET(seek_point_d), AV_OPT_TYPE_DOUBLE, {.dbl = 0}, 0, (INT64_MAX-1) / 1000000 },
|
||||
{"sp", "set seekpoint (seconds)", OFFSET(seek_point_d), AV_OPT_TYPE_DOUBLE, {.dbl = 0}, 0, (INT64_MAX-1) / 1000000 },
|
||||
{NULL},
|
||||
{ "filename", NULL, OFFSET(file_name), AV_OPT_TYPE_STRING, .flags = FLAGS },
|
||||
{ "format_name", "set format name", OFFSET(format_name), AV_OPT_TYPE_STRING, .flags = FLAGS },
|
||||
{ "f", "set format name", OFFSET(format_name), AV_OPT_TYPE_STRING, .flags = FLAGS },
|
||||
{ "stream_index", "set stream index", OFFSET(stream_index), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, FLAGS },
|
||||
{ "si", "set stream index", OFFSET(stream_index), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, FLAGS },
|
||||
{ "seek_point", "set seekpoint (seconds)", OFFSET(seek_point_d), AV_OPT_TYPE_DOUBLE, { .dbl = 0 }, 0, (INT64_MAX-1) / 1000000, FLAGS },
|
||||
{ "sp", "set seekpoint (seconds)", OFFSET(seek_point_d), AV_OPT_TYPE_DOUBLE, { .dbl = 0 }, 0, (INT64_MAX-1) / 1000000, FLAGS },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
static const char *movie_get_name(void *ctx)
|
||||
@ -161,21 +163,6 @@ static int movie_init(AVFilterContext *ctx)
|
||||
static av_cold int init(AVFilterContext *ctx, const char *args)
|
||||
{
|
||||
MovieContext *movie = ctx->priv;
|
||||
int ret;
|
||||
movie->class = &movie_class;
|
||||
av_opt_set_defaults(movie);
|
||||
|
||||
if (args)
|
||||
movie->file_name = av_get_token(&args, ":");
|
||||
if (!movie->file_name || !*movie->file_name) {
|
||||
av_log(ctx, AV_LOG_ERROR, "No filename provided!\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
if (*args++ == ':' && (ret = av_set_options_string(movie, args, "=", ":")) < 0) {
|
||||
av_log(ctx, AV_LOG_ERROR, "Error parsing options string: '%s'\n", args);
|
||||
return ret;
|
||||
}
|
||||
|
||||
movie->seek_point = movie->seek_point_d * 1000000 + 0.5;
|
||||
|
||||
@ -290,6 +277,7 @@ AVFilter avfilter_vsrc_movie = {
|
||||
.name = "movie",
|
||||
.description = NULL_IF_CONFIG_SMALL("Read from a movie source."),
|
||||
.priv_size = sizeof(MovieContext),
|
||||
.priv_class = &movie_class,
|
||||
.init = init,
|
||||
.uninit = uninit,
|
||||
.query_formats = query_formats,
|
||||
|
Loading…
Reference in New Issue
Block a user