Commit 80026a8a authored by Tobias Rapp's avatar Tobias Rapp Committed by Paul B Mahol

avfilter/f_metadata: rename "string" into "same_str"

Rename function option value "string" into "same_str". Remove obsolete
"length" option.
Signed-off-by: 's avatarTobias Rapp <t.rapp@noa-archive.com>
parent 730da5c2
...@@ -8486,19 +8486,14 @@ Set key used with all modes. Must be set for all modes except @code{print}. ...@@ -8486,19 +8486,14 @@ Set key used with all modes. Must be set for all modes except @code{print}.
Set metadata value which will be used. This option is mandatory for Set metadata value which will be used. This option is mandatory for
@code{modify} and @code{add} mode. @code{modify} and @code{add} mode.
@item length
Set length of how many characters of two metadata values need to match to be
considered same. Default is all available characters.
@item function @item function
Which function to use when comparing metadata value and @code{value}. Which function to use when comparing metadata value and @code{value}.
Can be one of following: Can be one of following:
@table @samp @table @samp
@item string @item same_str
Values are interpreted as strings, returns true if @code{value} is same as metadata value up Values are interpreted as strings, returns true if metadata value is same as @code{value}.
to N chars as set in @code{length} option.
@item starts_with @item starts_with
Values are interpreted as strings, returns true if metadata value starts with Values are interpreted as strings, returns true if metadata value starts with
......
...@@ -48,7 +48,7 @@ enum MetadataMode { ...@@ -48,7 +48,7 @@ enum MetadataMode {
}; };
enum MetadataFunction { enum MetadataFunction {
METADATAF_STRING, METADATAF_SAME_STR,
METADATAF_STARTS_WITH, METADATAF_STARTS_WITH,
METADATAF_LESS, METADATAF_LESS,
METADATAF_EQUAL, METADATAF_EQUAL,
...@@ -75,7 +75,6 @@ typedef struct MetadataContext { ...@@ -75,7 +75,6 @@ typedef struct MetadataContext {
int mode; int mode;
char *key; char *key;
char *value; char *value;
int length;
int function; int function;
char *expr_str; char *expr_str;
...@@ -86,7 +85,7 @@ typedef struct MetadataContext { ...@@ -86,7 +85,7 @@ typedef struct MetadataContext {
char *file_str; char *file_str;
int (*compare)(struct MetadataContext *s, int (*compare)(struct MetadataContext *s,
const char *value1, const char *value2, size_t length); const char *value1, const char *value2);
void (*print)(AVFilterContext *ctx, const char *msg, ...) av_printf_format(2, 3); void (*print)(AVFilterContext *ctx, const char *msg, ...) av_printf_format(2, 3);
} MetadataContext; } MetadataContext;
...@@ -102,29 +101,28 @@ static const AVOption filt_name##_options[] = { \ ...@@ -102,29 +101,28 @@ static const AVOption filt_name##_options[] = { \
{ "key", "set metadata key", OFFSET(key), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, FLAGS }, \ { "key", "set metadata key", OFFSET(key), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, FLAGS }, \
{ "value", "set metadata value", OFFSET(value), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, FLAGS }, \ { "value", "set metadata value", OFFSET(value), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, FLAGS }, \
{ "function", "function for comparing values", OFFSET(function), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, METADATAF_NB-1, FLAGS, "function" }, \ { "function", "function for comparing values", OFFSET(function), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, METADATAF_NB-1, FLAGS, "function" }, \
{ "string", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_STRING }, 0, 3, FLAGS, "function" }, \ { "same_str", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_SAME_STR }, 0, 3, FLAGS, "function" }, \
{ "starts_with", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_STARTS_WITH }, 0, 0, FLAGS, "function" }, \ { "starts_with", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_STARTS_WITH }, 0, 0, FLAGS, "function" }, \
{ "less", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_LESS }, 0, 3, FLAGS, "function" }, \ { "less", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_LESS }, 0, 3, FLAGS, "function" }, \
{ "equal", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_EQUAL }, 0, 3, FLAGS, "function" }, \ { "equal", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_EQUAL }, 0, 3, FLAGS, "function" }, \
{ "greater", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_GREATER }, 0, 3, FLAGS, "function" }, \ { "greater", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_GREATER }, 0, 3, FLAGS, "function" }, \
{ "expr", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_EXPR }, 0, 3, FLAGS, "function" }, \ { "expr", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_EXPR }, 0, 3, FLAGS, "function" }, \
{ "expr", "set expression for expr function", OFFSET(expr_str), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, FLAGS }, \ { "expr", "set expression for expr function", OFFSET(expr_str), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, FLAGS }, \
{ "length", "compare up to N chars for string function", OFFSET(length), AV_OPT_TYPE_INT, {.i64 = INT_MAX }, 1, INT_MAX, FLAGS }, \
{ "file", "set file where to print metadata information", OFFSET(file_str), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS }, \ { "file", "set file where to print metadata information", OFFSET(file_str), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS }, \
{ NULL } \ { NULL } \
} }
static int string(MetadataContext *s, const char *value1, const char *value2, size_t length) static int same_str(MetadataContext *s, const char *value1, const char *value2)
{ {
return !strncmp(value1, value2, length); return !strcmp(value1, value2);
} }
static int starts_with(MetadataContext *s, const char *value1, const char *value2, size_t length) static int starts_with(MetadataContext *s, const char *value1, const char *value2)
{ {
return !strncmp(value1, value2, strlen(value2)); return !strncmp(value1, value2, strlen(value2));
} }
static int equal(MetadataContext *s, const char *value1, const char *value2, size_t length) static int equal(MetadataContext *s, const char *value1, const char *value2)
{ {
float f1, f2; float f1, f2;
...@@ -134,7 +132,7 @@ static int equal(MetadataContext *s, const char *value1, const char *value2, siz ...@@ -134,7 +132,7 @@ static int equal(MetadataContext *s, const char *value1, const char *value2, siz
return fabsf(f1 - f2) < FLT_EPSILON; return fabsf(f1 - f2) < FLT_EPSILON;
} }
static int less(MetadataContext *s, const char *value1, const char *value2, size_t length) static int less(MetadataContext *s, const char *value1, const char *value2)
{ {
float f1, f2; float f1, f2;
...@@ -144,7 +142,7 @@ static int less(MetadataContext *s, const char *value1, const char *value2, size ...@@ -144,7 +142,7 @@ static int less(MetadataContext *s, const char *value1, const char *value2, size
return (f1 - f2) < FLT_EPSILON; return (f1 - f2) < FLT_EPSILON;
} }
static int greater(MetadataContext *s, const char *value1, const char *value2, size_t length) static int greater(MetadataContext *s, const char *value1, const char *value2)
{ {
float f1, f2; float f1, f2;
...@@ -154,7 +152,7 @@ static int greater(MetadataContext *s, const char *value1, const char *value2, s ...@@ -154,7 +152,7 @@ static int greater(MetadataContext *s, const char *value1, const char *value2, s
return (f2 - f1) < FLT_EPSILON; return (f2 - f1) < FLT_EPSILON;
} }
static int parse_expr(MetadataContext *s, const char *value1, const char *value2, size_t length) static int parse_expr(MetadataContext *s, const char *value1, const char *value2)
{ {
double f1, f2; double f1, f2;
...@@ -205,8 +203,8 @@ static av_cold int init(AVFilterContext *ctx) ...@@ -205,8 +203,8 @@ static av_cold int init(AVFilterContext *ctx)
} }
switch (s->function) { switch (s->function) {
case METADATAF_STRING: case METADATAF_SAME_STR:
s->compare = string; s->compare = same_str;
break; break;
case METADATAF_STARTS_WITH: case METADATAF_STARTS_WITH:
s->compare = starts_with; s->compare = starts_with;
...@@ -289,7 +287,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) ...@@ -289,7 +287,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
if (!s->value && e && e->value) { if (!s->value && e && e->value) {
return ff_filter_frame(outlink, frame); return ff_filter_frame(outlink, frame);
} else if (s->value && e && e->value && } else if (s->value && e && e->value &&
s->compare(s, e->value, s->value, s->length)) { s->compare(s, e->value, s->value)) {
return ff_filter_frame(outlink, frame); return ff_filter_frame(outlink, frame);
} }
break; break;
...@@ -314,14 +312,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) ...@@ -314,14 +312,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
while ((e = av_dict_get(metadata, "", e, AV_DICT_IGNORE_SUFFIX)) != NULL) { while ((e = av_dict_get(metadata, "", e, AV_DICT_IGNORE_SUFFIX)) != NULL) {
s->print(ctx, "%s=%s\n", e->key, e->value); s->print(ctx, "%s=%s\n", e->key, e->value);
} }
} else if (e && e->value && (!s->value || (e->value && s->compare(s, e->value, s->value, s->length)))) { } else if (e && e->value && (!s->value || (e->value && s->compare(s, e->value, s->value)))) {
s->print(ctx, "frame %"PRId64" pts %"PRId64"\n", inlink->frame_count, frame->pts); s->print(ctx, "frame %"PRId64" pts %"PRId64"\n", inlink->frame_count, frame->pts);
s->print(ctx, "%s=%s\n", s->key, e->value); s->print(ctx, "%s=%s\n", s->key, e->value);
} }
return ff_filter_frame(outlink, frame); return ff_filter_frame(outlink, frame);
break; break;
case METADATA_DELETE: case METADATA_DELETE:
if (e && e->value && s->value && s->compare(s, e->value, s->value, s->length)) { if (e && e->value && s->value && s->compare(s, e->value, s->value)) {
av_dict_set(&metadata, s->key, NULL, 0); av_dict_set(&metadata, s->key, NULL, 0);
} else if (e && e->value) { } else if (e && e->value) {
av_dict_set(&metadata, s->key, NULL, 0); av_dict_set(&metadata, s->key, NULL, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment