avfilter/vf_chromakey: add support for commands

This commit is contained in:
Paul B Mahol 2019-11-21 17:19:40 +01:00
parent ae6c4168e6
commit 94c0b27397
2 changed files with 29 additions and 1 deletions

View File

@ -6863,6 +6863,13 @@ Literal colors like "green" or "red" don't make sense with this enabled anymore.
This can be used to pass exact YUV values as hexadecimal numbers. This can be used to pass exact YUV values as hexadecimal numbers.
@end table @end table
@subsection Commands
This filter supports same @ref{commands} as options.
The command accepts the same syntax of the corresponding option.
If the specified expression is not valid, it is kept at its current
value.
@section chromakey @section chromakey
YUV colorspace color/chroma keying. YUV colorspace color/chroma keying.
@ -6892,6 +6899,13 @@ Literal colors like "green" or "red" don't make sense with this enabled anymore.
This can be used to pass exact YUV values as hexadecimal numbers. This can be used to pass exact YUV values as hexadecimal numbers.
@end table @end table
@subsection Commands
This filter supports same @ref{commands} as options.
The command accepts the same syntax of the corresponding option.
If the specified expression is not valid, it is kept at its current
value.
@subsection Examples @subsection Examples
@itemize @itemize

View File

@ -353,6 +353,18 @@ static av_cold int config_input(AVFilterLink *inlink)
return 0; return 0;
} }
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args,
char *res, int res_len, int flags)
{
int ret;
ret = ff_filter_process_command(ctx, cmd, args, res, res_len, flags);
if (ret < 0)
return ret;
return config_output(ctx->outputs[0]);
}
static const AVFilterPad chromakey_inputs[] = { static const AVFilterPad chromakey_inputs[] = {
{ {
.name = "default", .name = "default",
@ -374,7 +386,7 @@ static const AVFilterPad chromakey_outputs[] = {
}; };
#define OFFSET(x) offsetof(ChromakeyContext, x) #define OFFSET(x) offsetof(ChromakeyContext, x)
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
static const AVOption chromakey_options[] = { static const AVOption chromakey_options[] = {
{ "color", "set the chromakey key color", OFFSET(chromakey_rgba), AV_OPT_TYPE_COLOR, { .str = "black" }, CHAR_MIN, CHAR_MAX, FLAGS }, { "color", "set the chromakey key color", OFFSET(chromakey_rgba), AV_OPT_TYPE_COLOR, { .str = "black" }, CHAR_MIN, CHAR_MAX, FLAGS },
@ -395,6 +407,7 @@ AVFilter ff_vf_chromakey = {
.inputs = chromakey_inputs, .inputs = chromakey_inputs,
.outputs = chromakey_outputs, .outputs = chromakey_outputs,
.flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS, .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
.process_command = process_command,
}; };
static const AVOption chromahold_options[] = { static const AVOption chromahold_options[] = {
@ -436,4 +449,5 @@ AVFilter ff_vf_chromahold = {
.inputs = chromahold_inputs, .inputs = chromahold_inputs,
.outputs = chromahold_outputs, .outputs = chromahold_outputs,
.flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS, .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS,
.process_command = process_command,
}; };