]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - libavformat/metadata_compat.c
fix total bitrate computation, based on patch by corp186, chasedouglas at gmail dot com
[frescor/ffmpeg.git] / libavformat / metadata_compat.c
index 8b1e5eba6de4d2d4ad75f4a300258aea331c2804..b05fb04bce69edb5b7ed71571bbf83b3d91d9ae5 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#if LIBAVFORMAT_VERSION_MAJOR < 53
-
 #include <strings.h>
+#include "avformat.h"
 #include "metadata.h"
 #include "libavutil/avstring.h"
 
+#if LIBAVFORMAT_VERSION_MAJOR < 53
+
 #define SIZE_OFFSET(x) sizeof(((AVFormatContext*)0)->x),offsetof(AVFormatContext,x)
 
 static const struct {
@@ -102,4 +103,42 @@ void ff_metadata_demux_compat(AVFormatContext *ctx)
             }
 }
 
+
+#define FILL_METADATA(s, key, value) {                                        \
+    if (value && *value && !av_metadata_get(s->metadata, #key, NULL, 0))      \
+        av_metadata_set(&s->metadata, #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);                           \
+    if(s->key)  FILL_METADATA(s, key, number) }
+
+void ff_metadata_mux_compat(AVFormatContext *ctx)
+{
+    int i;
+
+    if (ctx->metadata && ctx->metadata->count > 0)
+        return;
+
+    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 /* LIBAVFORMAT_VERSION_MAJOR < 53 */