lavf: Rewrite metadata printing from dump_metadata().

This code contained several bugs that mis-formated the output.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-02-10 02:39:14 +01:00
parent 8c6ebab747
commit 789d6b73cf
1 changed files with 13 additions and 5 deletions

View File

@ -3483,11 +3483,19 @@ static void dump_metadata(void *ctx, AVDictionary *m, const char *indent)
av_log(ctx, AV_LOG_INFO, "%sMetadata:\n", indent);
while((tag=av_dict_get(m, "", tag, AV_DICT_IGNORE_SUFFIX))) {
if(strcmp("language", tag->key)){
const char *p = tag->value;
av_log(ctx, AV_LOG_INFO, "%s %-16s: ", indent, tag->key);
while(*p) {
char tmp[256];
int i;
av_strlcpy(tmp, tag->value, sizeof(tmp));
for(i=0; i<strlen(tmp); i++) if(tmp[i]==0xd) tmp[i]=' ';
av_log(ctx, AV_LOG_INFO, "%s %-16s: %s\n", indent, tag->key, tmp);
size_t len = strcspn(p, "\xd\xa");
av_strlcpy(tmp, p, FFMIN(sizeof(tmp), len+1));
av_log(ctx, AV_LOG_INFO, "%s", tmp);
p += len;
if (*p == 0xd) av_log(ctx, AV_LOG_INFO, " ");
if (*p == 0xa) av_log(ctx, AV_LOG_INFO, "\n%s %-16s: ", indent, "");
if (*p) p++;
}
av_log(ctx, AV_LOG_INFO, "\n");
}
}
}