X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmetadata.c;h=7d9a8645df105550f036f5c68269cea8c012c57a;hb=e8bb2e24398ec838d9e49cf115b7e132609a9fb7;hp=8fc1771956a74c0a510c76841622bc7566b9c582;hpb=54036be11a0f1902144fbf903a98607ae52ff5fb;p=ffmpeg diff --git a/libavformat/metadata.c b/libavformat/metadata.c index 8fc1771956a..7d9a8645df1 100644 --- a/libavformat/metadata.c +++ b/libavformat/metadata.c @@ -49,7 +49,7 @@ av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int f int av_metadata_set2(AVMetadata **pm, const char *key, const char *value, int flags) { AVMetadata *m= *pm; - AVMetadataTag *tag= av_metadata_get(m, key, NULL, AV_METADATA_MATCH_CASE); + AVMetadataTag *tag= av_metadata_get(m, key, NULL, flags); if(!m) m=*pm= av_mallocz(sizeof(*m)); @@ -91,6 +91,12 @@ int av_metadata_set(AVMetadata **pm, const char *key, const char *value) { return av_metadata_set2(pm, key, value, 0); } + +void av_metadata_conv(AVFormatContext *ctx, const AVMetadataConv *d_conv, + const AVMetadataConv *s_conv) +{ + return; +} #endif void av_metadata_free(AVMetadata **pm) @@ -107,8 +113,8 @@ void av_metadata_free(AVMetadata **pm) av_freep(pm); } -void metadata_conv(AVMetadata **pm, const AVMetadataConv *d_conv, - const AVMetadataConv *s_conv) +void ff_metadata_conv(AVMetadata **pm, const AVMetadataConv *d_conv, + const AVMetadataConv *s_conv) { /* TODO: use binary search to look up the two conversion tables if the tables are getting big enough that it would matter speed wise */ @@ -140,15 +146,23 @@ void metadata_conv(AVMetadata **pm, const AVMetadataConv *d_conv, *pm = dst; } -void av_metadata_conv(AVFormatContext *ctx, const AVMetadataConv *d_conv, - const AVMetadataConv *s_conv) +void ff_metadata_conv_ctx(AVFormatContext *ctx, const AVMetadataConv *d_conv, + const AVMetadataConv *s_conv) { int i; - metadata_conv(&ctx->metadata, d_conv, s_conv); + ff_metadata_conv(&ctx->metadata, d_conv, s_conv); for (i=0; inb_streams ; i++) - metadata_conv(&ctx->streams [i]->metadata, d_conv, s_conv); + ff_metadata_conv(&ctx->streams [i]->metadata, d_conv, s_conv); for (i=0; inb_chapters; i++) - metadata_conv(&ctx->chapters[i]->metadata, d_conv, s_conv); + ff_metadata_conv(&ctx->chapters[i]->metadata, d_conv, s_conv); for (i=0; inb_programs; i++) - metadata_conv(&ctx->programs[i]->metadata, d_conv, s_conv); + ff_metadata_conv(&ctx->programs[i]->metadata, d_conv, s_conv); +} + +void av_metadata_copy(AVMetadata **dst, AVMetadata *src, int flags) +{ + AVMetadataTag *t = NULL; + + while ((t = av_metadata_get(src, "", t, AV_METADATA_IGNORE_SUFFIX))) + av_metadata_set2(dst, t->key, t->value, flags); }