mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-12 01:40:04 +01:00
Merge commit '481a3667495425db9fdffb653292b6460fb68208'
* commit '481a3667495425db9fdffb653292b6460fb68208': cmdutils: allow matching by metadata in stream specifiers Conflicts: Changelog cmdutils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -4216,6 +4216,29 @@ int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st,
|
||||
stream_id = strtol(spec, &endptr, 0);
|
||||
if (!*endptr)
|
||||
return stream_id == st->id;
|
||||
} else if (*spec == 'm' && *(spec + 1) == ':') {
|
||||
AVDictionaryEntry *tag;
|
||||
char *key, *val;
|
||||
int ret;
|
||||
|
||||
spec += 2;
|
||||
val = strchr(spec, ':');
|
||||
|
||||
key = val ? av_strndup(spec, val - spec) : av_strdup(spec);
|
||||
if (!key)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
tag = av_dict_get(st->metadata, key, NULL, 0);
|
||||
if (tag) {
|
||||
if (!val || !strcmp(tag->value, val + 1))
|
||||
ret = 1;
|
||||
else
|
||||
ret = 0;
|
||||
} else
|
||||
ret = 0;
|
||||
|
||||
av_freep(&key);
|
||||
return ret;
|
||||
} else if (!*spec) /* empty specifier, matches everything */
|
||||
return 1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user