mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-25 08:42:39 +00:00
avfilter/f_metadata: rename "string" into "same_str"
Rename function option value "string" into "same_str". Remove obsolete "length" option. Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
This commit is contained in:
parent
730da5c207
commit
80026a8ac3
@ -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
|
||||
@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
|
||||
Which function to use when comparing metadata value and @code{value}.
|
||||
|
||||
Can be one of following:
|
||||
|
||||
@table @samp
|
||||
@item string
|
||||
Values are interpreted as strings, returns true if @code{value} is same as metadata value up
|
||||
to N chars as set in @code{length} option.
|
||||
@item same_str
|
||||
Values are interpreted as strings, returns true if metadata value is same as @code{value}.
|
||||
|
||||
@item starts_with
|
||||
Values are interpreted as strings, returns true if metadata value starts with
|
||||
|
@ -48,7 +48,7 @@ enum MetadataMode {
|
||||
};
|
||||
|
||||
enum MetadataFunction {
|
||||
METADATAF_STRING,
|
||||
METADATAF_SAME_STR,
|
||||
METADATAF_STARTS_WITH,
|
||||
METADATAF_LESS,
|
||||
METADATAF_EQUAL,
|
||||
@ -75,7 +75,6 @@ typedef struct MetadataContext {
|
||||
int mode;
|
||||
char *key;
|
||||
char *value;
|
||||
int length;
|
||||
int function;
|
||||
|
||||
char *expr_str;
|
||||
@ -86,7 +85,7 @@ typedef struct MetadataContext {
|
||||
char *file_str;
|
||||
|
||||
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);
|
||||
} MetadataContext;
|
||||
|
||||
@ -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 }, \
|
||||
{ "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" }, \
|
||||
{ "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" }, \
|
||||
{ "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" }, \
|
||||
{ "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", "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 }, \
|
||||
{ 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));
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
@ -134,7 +132,7 @@ static int equal(MetadataContext *s, const char *value1, const char *value2, siz
|
||||
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;
|
||||
|
||||
@ -144,7 +142,7 @@ static int less(MetadataContext *s, const char *value1, const char *value2, size
|
||||
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;
|
||||
|
||||
@ -154,7 +152,7 @@ static int greater(MetadataContext *s, const char *value1, const char *value2, s
|
||||
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;
|
||||
|
||||
@ -205,8 +203,8 @@ static av_cold int init(AVFilterContext *ctx)
|
||||
}
|
||||
|
||||
switch (s->function) {
|
||||
case METADATAF_STRING:
|
||||
s->compare = string;
|
||||
case METADATAF_SAME_STR:
|
||||
s->compare = same_str;
|
||||
break;
|
||||
case METADATAF_STARTS_WITH:
|
||||
s->compare = starts_with;
|
||||
@ -289,7 +287,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
|
||||
if (!s->value && e && e->value) {
|
||||
return ff_filter_frame(outlink, frame);
|
||||
} 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);
|
||||
}
|
||||
break;
|
||||
@ -314,14 +312,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
|
||||
while ((e = av_dict_get(metadata, "", e, AV_DICT_IGNORE_SUFFIX)) != NULL) {
|
||||
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, "%s=%s\n", s->key, e->value);
|
||||
}
|
||||
return ff_filter_frame(outlink, frame);
|
||||
break;
|
||||
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);
|
||||
} else if (e && e->value) {
|
||||
av_dict_set(&metadata, s->key, NULL, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user