Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
Tobias Rapp authored on 2016/02/11 21:35:20... | ... |
@@ -8500,6 +8500,10 @@ Can be one of following: |
8500 | 8500 |
Values are interpreted as strings, returns true if @code{value} is same as metadata value up |
8501 | 8501 |
to N chars as set in @code{length} option. |
8502 | 8502 |
|
8503 |
+@item starts_with |
|
8504 |
+Values are interpreted as strings, returns true if metadata value starts with |
|
8505 |
+the @code{value} option string. |
|
8506 |
+ |
|
8503 | 8507 |
@item less |
8504 | 8508 |
Values are interpreted as floats, returns true if metadata value is less than @code{value}. |
8505 | 8509 |
|
... | ... |
@@ -49,6 +49,7 @@ enum MetadataMode { |
49 | 49 |
|
50 | 50 |
enum MetadataFunction { |
51 | 51 |
METADATAF_STRING, |
52 |
+ METADATAF_STARTS_WITH, |
|
52 | 53 |
METADATAF_LESS, |
53 | 54 |
METADATAF_EQUAL, |
54 | 55 |
METADATAF_GREATER, |
... | ... |
@@ -102,6 +103,7 @@ static const AVOption filt_name##_options[] = { \ |
102 | 102 |
{ "value", "set metadata value", OFFSET(value), AV_OPT_TYPE_STRING, {.str = NULL }, 0, 0, FLAGS }, \ |
103 | 103 |
{ "function", "function for comparing values", OFFSET(function), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, METADATAF_NB-1, FLAGS, "function" }, \ |
104 | 104 |
{ "string", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_STRING }, 0, 3, FLAGS, "function" }, \ |
105 |
+ { "starts_with", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_STARTS_WITH }, 0, 0, FLAGS, "function" }, \ |
|
105 | 106 |
{ "less", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_LESS }, 0, 3, FLAGS, "function" }, \ |
106 | 107 |
{ "equal", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_EQUAL }, 0, 3, FLAGS, "function" }, \ |
107 | 108 |
{ "greater", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = METADATAF_GREATER }, 0, 3, FLAGS, "function" }, \ |
... | ... |
@@ -117,6 +119,11 @@ static int string(MetadataContext *s, const char *value1, const char *value2, si |
117 | 117 |
return !strncmp(value1, value2, length); |
118 | 118 |
} |
119 | 119 |
|
120 |
+static int starts_with(MetadataContext *s, const char *value1, const char *value2, size_t length) |
|
121 |
+{ |
|
122 |
+ return !strncmp(value1, value2, strlen(value2)); |
|
123 |
+} |
|
124 |
+ |
|
120 | 125 |
static int equal(MetadataContext *s, const char *value1, const char *value2, size_t length) |
121 | 126 |
{ |
122 | 127 |
float f1, f2; |
... | ... |
@@ -201,6 +208,9 @@ static av_cold int init(AVFilterContext *ctx) |
201 | 201 |
case METADATAF_STRING: |
202 | 202 |
s->compare = string; |
203 | 203 |
break; |
204 |
+ case METADATAF_STARTS_WITH: |
|
205 |
+ s->compare = starts_with; |
|
206 |
+ break; |
|
204 | 207 |
case METADATAF_LESS: |
205 | 208 |
s->compare = less; |
206 | 209 |
break; |