[FFmpeg-cvslog] r16447 - in trunk/libavformat: metadata.c metadata.h utils.c
aurel
subversion
Tue Jan 6 01:09:23 CET 2009
Author: aurel
Date: Tue Jan 6 01:09:23 2009
New Revision: 16447
Log:
Add a metadata compatibility layer, so that when a user application set
metadata using old API, it is automatically converted to new API before
muxing.
Modified:
trunk/libavformat/metadata.c
trunk/libavformat/metadata.h
trunk/libavformat/utils.c
Modified: trunk/libavformat/metadata.c
==============================================================================
--- trunk/libavformat/metadata.c Tue Jan 6 00:56:27 2009 (r16446)
+++ trunk/libavformat/metadata.c Tue Jan 6 01:09:23 2009 (r16447)
@@ -73,3 +73,40 @@ int av_metadata_set(AVMetadata **pm, AVM
return 0;
}
+
+#if LIBAVFORMAT_VERSION_MAJOR < 53
+#define FILL_METADATA(s, key, value) { \
+ if (value && *value && \
+ !av_metadata_get(s->metadata, #key, NULL, AV_METADATA_IGNORE_CASE)) \
+ av_metadata_set(&s->metadata, (const AVMetadataTag){#key, value}); \
+ }
+#define FILL_METADATA_STR(s, key) FILL_METADATA(s, key, s->key)
+#define FILL_METADATA_INT(s, key) { \
+ char number[10]; \
+ snprintf(number, sizeof(number), "%d", s->key); \
+ FILL_METADATA(s, key, number) }
+
+void ff_metadata_sync_compat(AVFormatContext *ctx)
+{
+ int i;
+
+ FILL_METADATA_STR(ctx, title);
+ FILL_METADATA_STR(ctx, author);
+ FILL_METADATA_STR(ctx, copyright);
+ FILL_METADATA_STR(ctx, comment);
+ FILL_METADATA_STR(ctx, album);
+ FILL_METADATA_INT(ctx, year);
+ FILL_METADATA_INT(ctx, track);
+ FILL_METADATA_STR(ctx, genre);
+ for (i=0; i<ctx->nb_chapters; i++)
+ FILL_METADATA_STR(ctx->chapters[i], title);
+ for (i=0; i<ctx->nb_programs; i++) {
+ FILL_METADATA_STR(ctx->programs[i], name);
+ FILL_METADATA_STR(ctx->programs[i], provider_name);
+ }
+ for (i=0; i<ctx->nb_streams; i++) {
+ FILL_METADATA_STR(ctx->streams[i], language);
+ FILL_METADATA_STR(ctx->streams[i], filename);
+ }
+}
+#endif
Modified: trunk/libavformat/metadata.h
==============================================================================
--- trunk/libavformat/metadata.h Tue Jan 6 00:56:27 2009 (r16446)
+++ trunk/libavformat/metadata.h Tue Jan 6 01:09:23 2009 (r16447)
@@ -35,4 +35,8 @@ struct AVMetadata{
AVMetadataTag *elems;
};
+#if LIBAVFORMAT_VERSION_MAJOR < 53
+void ff_metadata_sync_compat(AVFormatContext *s);
+#endif
+
#endif /* AVFORMAT_METADATA_H */
Modified: trunk/libavformat/utils.c
==============================================================================
--- trunk/libavformat/utils.c Tue Jan 6 00:56:27 2009 (r16446)
+++ trunk/libavformat/utils.c Tue Jan 6 01:09:23 2009 (r16447)
@@ -2501,6 +2501,10 @@ int av_write_header(AVFormatContext *s)
return AVERROR(ENOMEM);
}
+#if LIBAVFORMAT_VERSION_MAJOR < 53
+ ff_metadata_sync_compat(s);
+#endif
+
if(s->oformat->write_header){
ret = s->oformat->write_header(s);
if (ret < 0)
More information about the ffmpeg-cvslog
mailing list