[FFmpeg-cvslog] avformat/framehash: Add more information to the output

Michael Niedermayer git at videolan.org
Tue Apr 12 19:55:33 CEST 2016


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Tue Apr 12 11:17:47 2016 -0300| [e3111b1ff8592b7bafe5accd9708e7f3cab60adb] | committer: James Almer

avformat/framehash: Add more information to the output

Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e3111b1ff8592b7bafe5accd9708e7f3cab60adb
---

 libavformat/framecrcenc.c |    2 +-
 libavformat/framehash.c   |   17 ++++++++++++++++-
 libavformat/hashenc.c     |    6 +++---
 libavformat/internal.h    |    2 +-
 4 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/libavformat/framecrcenc.c b/libavformat/framecrcenc.c
index 91bcdcd..3533c52 100644
--- a/libavformat/framecrcenc.c
+++ b/libavformat/framecrcenc.c
@@ -39,7 +39,7 @@ static int framecrc_write_header(struct AVFormatContext *s)
         }
     }
 
-    return ff_framehash_write_header(s);
+    return ff_framehash_write_header(s, 1);
 }
 
 static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt)
diff --git a/libavformat/framehash.c b/libavformat/framehash.c
index a8357b0..7431d45 100644
--- a/libavformat/framehash.c
+++ b/libavformat/framehash.c
@@ -20,7 +20,7 @@
 
 #include "internal.h"
 
-int ff_framehash_write_header(AVFormatContext *s)
+int ff_framehash_write_header(AVFormatContext *s, int version)
 {
     int i;
 
@@ -28,7 +28,22 @@ int ff_framehash_write_header(AVFormatContext *s)
         avio_printf(s->pb, "#software: %s\n", LIBAVFORMAT_IDENT);
     for (i = 0; i < s->nb_streams; i++) {
         AVStream *st = s->streams[i];
+        AVCodecParameters *avctx = st->codecpar;
         avio_printf(s->pb, "#tb %d: %d/%d\n", i, st->time_base.num, st->time_base.den);
+        if (version > 1) {
+            avio_printf(s->pb, "#media_type %d: %s\n", i, av_get_media_type_string(avctx->codec_type));
+            avio_printf(s->pb, "#codec_id %d: %s\n", i, avcodec_get_name(avctx->codec_id));
+            switch (avctx->codec_type) {
+            case AVMEDIA_TYPE_AUDIO:
+                avio_printf(s->pb, "#sample_rate %d: %d\n", i,avctx->sample_rate);
+                avio_printf(s->pb, "#channel_layout %d: %"PRIx64"\n", i,avctx->channel_layout);
+                break;
+            case AVMEDIA_TYPE_VIDEO:
+                avio_printf(s->pb, "#dimensions %d: %dx%d\n", i, avctx->width, avctx->height);
+                avio_printf(s->pb, "#sar %d: %d/%d\n", i, st->sample_aspect_ratio.num, st->sample_aspect_ratio.den);
+                break;
+            }
+        }
         avio_flush(s->pb);
     }
     return 0;
diff --git a/libavformat/hashenc.c b/libavformat/hashenc.c
index ef886a0..614c815 100644
--- a/libavformat/hashenc.c
+++ b/libavformat/hashenc.c
@@ -57,7 +57,7 @@ static void hash_finish(struct AVFormatContext *s, char *buf)
 #if CONFIG_HASH_MUXER || CONFIG_FRAMEHASH_MUXER
 static const AVOption hash_options[] = {
     { "hash", "set hash to use", OFFSET(hash_name), AV_OPT_TYPE_STRING, {.str = "sha256"}, 0, 0, ENC },
-    { "format_version", "file format version", OFFSET(format_version), AV_OPT_TYPE_INT, {.i64 = 1}, 1, 1, ENC },
+    { "format_version", "file format version", OFFSET(format_version), AV_OPT_TYPE_INT, {.i64 = 1}, 1, 2, ENC },
     { NULL },
 };
 #endif
@@ -65,7 +65,7 @@ static const AVOption hash_options[] = {
 #if CONFIG_MD5_MUXER || CONFIG_FRAMEMD5_MUXER
 static const AVOption md5_options[] = {
     { "hash", "set hash to use", OFFSET(hash_name), AV_OPT_TYPE_STRING, {.str = "md5"}, 0, 0, ENC },
-    { "format_version", "file format version", OFFSET(format_version), AV_OPT_TYPE_INT, {.i64 = 1}, 1, 1, ENC },
+    { "format_version", "file format version", OFFSET(format_version), AV_OPT_TYPE_INT, {.i64 = 1}, 1, 2, ENC },
     { NULL },
 };
 #endif
@@ -158,7 +158,7 @@ static int framehash_write_header(struct AVFormatContext *s)
     avio_printf(s->pb, "#format: frame checksums\n");
     avio_printf(s->pb, "#version: %d\n", c->format_version);
     avio_printf(s->pb, "#hash: %s\n", av_hash_get_name(c->hash));
-    ff_framehash_write_header(s);
+    ff_framehash_write_header(s, c->format_version);
     avio_printf(s->pb, "#stream#, dts,        pts, duration,     size, hash\n");
     return 0;
 }
diff --git a/libavformat/internal.h b/libavformat/internal.h
index 1719deb..8e0cb34 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -401,7 +401,7 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels,
  * Set the timebase for each stream from the corresponding codec timebase and
  * print it.
  */
-int ff_framehash_write_header(AVFormatContext *s);
+int ff_framehash_write_header(AVFormatContext *s, int version);
 
 /**
  * Read a transport packet from a media file.



More information about the ffmpeg-cvslog mailing list