|
|
@ -1480,23 +1480,23 @@ static int match_stream_specifier(AVFormatContext *s, AVStream *st, |
|
|
|
int ret; |
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
|
|
if (match) { |
|
|
|
if (match) { |
|
|
|
spec += 2; |
|
|
|
spec += 2; |
|
|
|
val = strchr(spec, ':'); |
|
|
|
val = strchr(spec, ':'); |
|
|
|
|
|
|
|
|
|
|
|
key = val ? av_strndup(spec, val - spec) : av_strdup(spec); |
|
|
|
key = val ? av_strndup(spec, val - spec) : av_strdup(spec); |
|
|
|
if (!key) |
|
|
|
if (!key) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
|
|
|
|
tag = av_dict_get(st->metadata, key, NULL, 0); |
|
|
|
tag = av_dict_get(st->metadata, key, NULL, 0); |
|
|
|
if (tag) { |
|
|
|
if (tag) { |
|
|
|
if (!val || !strcmp(tag->value, val + 1)) |
|
|
|
if (!val || !strcmp(tag->value, val + 1)) |
|
|
|
ret = 1; |
|
|
|
ret = 1; |
|
|
|
else |
|
|
|
else |
|
|
|
ret = 0; |
|
|
|
ret = 0; |
|
|
|
} else |
|
|
|
} else |
|
|
|
ret = 0; |
|
|
|
ret = 0; |
|
|
|
|
|
|
|
|
|
|
|
av_freep(&key); |
|
|
|
av_freep(&key); |
|
|
|
} |
|
|
|
} |
|
|
|
return match && ret; |
|
|
|
return match && ret; |
|
|
|
} else if (*spec == 'u' && *(spec + 1) == '\0') { |
|
|
|
} else if (*spec == 'u' && *(spec + 1) == '\0') { |
|
|
|