[FFmpeg-cvslog] r22015 - in trunk/libavformat: nut.c nut.h nutdec.c nutenc.c

kostya subversion
Wed Feb 24 07:27:12 CET 2010


Author: kostya
Date: Wed Feb 24 07:27:12 2010
New Revision: 22015

Log:
Introduce metadata conversion table for NUT encoder.
Patch by Anton Khirnov (wyskas, do no evil mail)
Thread "[PATCH] nut metadata conversion table"

Modified:
   trunk/libavformat/nut.c
   trunk/libavformat/nut.h
   trunk/libavformat/nutdec.c
   trunk/libavformat/nutenc.c

Modified: trunk/libavformat/nut.c
==============================================================================
--- trunk/libavformat/nut.c	Wed Feb 24 07:14:59 2010	(r22014)
+++ trunk/libavformat/nut.c	Wed Feb 24 07:27:12 2010	(r22015)
@@ -79,3 +79,16 @@ const Dispositions ff_nut_dispositions[]
     {""            , 0}
 };
 
+const AVMetadataConv ff_nut_metadata_conv[] = {
+    { "Author",         "artist"      },
+    { "X-CreationTime", "date"        },
+    { "CreationTime",   "date"        },
+    { "SourceFilename", "filename"    },
+    { "X-Language",     "language"    },
+    { "X-Disposition",  "disposition" },
+    { "X-Replaces",     "replaces"    },
+    { "X-Depends",      "depends"     },
+    { "X-Uses",         "uses"        },
+    { "X-UsesFont",     "usesfont"    },
+    { 0 },
+};

Modified: trunk/libavformat/nut.h
==============================================================================
--- trunk/libavformat/nut.h	Wed Feb 24 07:14:59 2010	(r22014)
+++ trunk/libavformat/nut.h	Wed Feb 24 07:27:12 2010	(r22015)
@@ -27,6 +27,7 @@
 //#include "libavcodec/mpegaudio.h"
 #include "avformat.h"
 #include "riff.h"
+#include "metadata.h"
 
 #define      MAIN_STARTCODE (0x7A561F5F04ADULL + (((uint64_t)('N'<<8) + 'M')<<48))
 #define    STREAM_STARTCODE (0x11405BF2F9DBULL + (((uint64_t)('N'<<8) + 'S')<<48))
@@ -112,4 +113,6 @@ void ff_nut_add_sp(NUTContext *nut, int6
 
 extern const Dispositions ff_nut_dispositions[];
 
+extern const AVMetadataConv ff_nut_metadata_conv[];
+
 #endif /* AVFORMAT_NUT_H */

Modified: trunk/libavformat/nutdec.c
==============================================================================
--- trunk/libavformat/nutdec.c	Wed Feb 24 07:14:59 2010	(r22014)
+++ trunk/libavformat/nutdec.c	Wed Feb 24 07:27:12 2010	(r22015)
@@ -915,5 +915,6 @@ AVInputFormat nut_demuxer = {
     nut_read_close,
     read_seek,
     .extensions = "nut",
+    .metadata_conv = ff_nut_metadata_conv,
 };
 #endif

Modified: trunk/libavformat/nutenc.c
==============================================================================
--- trunk/libavformat/nutenc.c	Wed Feb 24 07:14:59 2010	(r22014)
+++ trunk/libavformat/nutenc.c	Wed Feb 24 07:27:12 2010	(r22015)
@@ -448,7 +448,7 @@ static int add_info(ByteIOContext *bc, c
 
 static int write_globalinfo(NUTContext *nut, ByteIOContext *bc){
     AVFormatContext *s= nut->avf;
-    AVMetadataTag *title, *author, *copyright;
+    AVMetadataTag *t = NULL;
     ByteIOContext *dyn_bc;
     uint8_t *dyn_buf=NULL;
     int count=0, dyn_size;
@@ -456,15 +456,8 @@ static int write_globalinfo(NUTContext *
     if(ret < 0)
         return ret;
 
-    title     = av_metadata_get(s->metadata, "Title"    , NULL, 0);
-    author    = av_metadata_get(s->metadata, "Author"   , NULL, 0);
-    copyright = av_metadata_get(s->metadata, "Copyright", NULL, 0);
-
-    if(title    ) count+= add_info(dyn_bc, "Title"    , title->value);
-    if(author   ) count+= add_info(dyn_bc, "Author"   , author->value);
-    if(copyright) count+= add_info(dyn_bc, "Copyright", copyright->value);
-    if(!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT))
-                        count+= add_info(dyn_bc, "Encoder"  , LIBAVFORMAT_IDENT);
+    while ((t = av_metadata_get(s->metadata, "", t, AV_METADATA_IGNORE_SUFFIX)))
+        count += add_info(dyn_bc, t->key, t->value);
 
     put_v(bc, 0); //stream_if_plus1
     put_v(bc, 0); //chapter_id
@@ -827,4 +820,5 @@ AVOutputFormat nut_muxer = {
     write_trailer,
     .flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS,
     .codec_tag= (const AVCodecTag* const []){ff_codec_bmp_tags, ff_codec_wav_tags, ff_nut_subtitle_tags, 0},
+    .metadata_conv = ff_nut_metadata_conv,
 };



More information about the ffmpeg-cvslog mailing list