Commit e3111b1f authored by Michael Niedermayer's avatar Michael Niedermayer Committed by James Almer

avformat/framehash: Add more information to the output

Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
parent f4a0236c
...@@ -39,7 +39,7 @@ static int framecrc_write_header(struct AVFormatContext *s) ...@@ -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) static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt)
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "internal.h" #include "internal.h"
int ff_framehash_write_header(AVFormatContext *s) int ff_framehash_write_header(AVFormatContext *s, int version)
{ {
int i; int i;
...@@ -28,7 +28,22 @@ int ff_framehash_write_header(AVFormatContext *s) ...@@ -28,7 +28,22 @@ int ff_framehash_write_header(AVFormatContext *s)
avio_printf(s->pb, "#software: %s\n", LIBAVFORMAT_IDENT); avio_printf(s->pb, "#software: %s\n", LIBAVFORMAT_IDENT);
for (i = 0; i < s->nb_streams; i++) { for (i = 0; i < s->nb_streams; i++) {
AVStream *st = s->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); 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); avio_flush(s->pb);
} }
return 0; return 0;
......
...@@ -57,7 +57,7 @@ static void hash_finish(struct AVFormatContext *s, char *buf) ...@@ -57,7 +57,7 @@ static void hash_finish(struct AVFormatContext *s, char *buf)
#if CONFIG_HASH_MUXER || CONFIG_FRAMEHASH_MUXER #if CONFIG_HASH_MUXER || CONFIG_FRAMEHASH_MUXER
static const AVOption hash_options[] = { static const AVOption hash_options[] = {
{ "hash", "set hash to use", OFFSET(hash_name), AV_OPT_TYPE_STRING, {.str = "sha256"}, 0, 0, ENC }, { "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 }, { NULL },
}; };
#endif #endif
...@@ -65,7 +65,7 @@ static const AVOption hash_options[] = { ...@@ -65,7 +65,7 @@ static const AVOption hash_options[] = {
#if CONFIG_MD5_MUXER || CONFIG_FRAMEMD5_MUXER #if CONFIG_MD5_MUXER || CONFIG_FRAMEMD5_MUXER
static const AVOption md5_options[] = { static const AVOption md5_options[] = {
{ "hash", "set hash to use", OFFSET(hash_name), AV_OPT_TYPE_STRING, {.str = "md5"}, 0, 0, ENC }, { "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 }, { NULL },
}; };
#endif #endif
...@@ -158,7 +158,7 @@ static int framehash_write_header(struct AVFormatContext *s) ...@@ -158,7 +158,7 @@ static int framehash_write_header(struct AVFormatContext *s)
avio_printf(s->pb, "#format: frame checksums\n"); avio_printf(s->pb, "#format: frame checksums\n");
avio_printf(s->pb, "#version: %d\n", c->format_version); avio_printf(s->pb, "#version: %d\n", c->format_version);
avio_printf(s->pb, "#hash: %s\n", av_hash_get_name(c->hash)); 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"); avio_printf(s->pb, "#stream#, dts, pts, duration, size, hash\n");
return 0; return 0;
} }
......
...@@ -401,7 +401,7 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels, ...@@ -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 * Set the timebase for each stream from the corresponding codec timebase and
* print it. * 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. * Read a transport packet from a media file.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment