| 23 | #include "version.h" |
| 24 | |
| 25 | int ff_framehash_write_header(AVFormatContext *s) |
| 26 | { |
| 27 | int i; |
| 28 | |
| 29 | if (s->nb_streams && !(s->flags & AVFMT_FLAG_BITEXACT)) |
| 30 | avio_printf(s->pb, "#software: %s\n", LIBAVFORMAT_IDENT); |
| 31 | for (i = 0; i < s->nb_streams; i++) { |
| 32 | AVStream *st = s->streams[i]; |
| 33 | AVCodecParameters *avctx = st->codecpar; |
| 34 | char buf[256] = { 0 }; |
| 35 | avio_printf(s->pb, "#tb %d: %d/%d\n", i, st->time_base.num, st->time_base.den); |
| 36 | avio_printf(s->pb, "#media_type %d: %s\n", i, av_get_media_type_string(avctx->codec_type)); |
| 37 | avio_printf(s->pb, "#codec_id %d: %s\n", i, avcodec_get_name(avctx->codec_id)); |
| 38 | switch (avctx->codec_type) { |
| 39 | case AVMEDIA_TYPE_AUDIO: { |
| 40 | int ret = av_channel_layout_describe(&avctx->ch_layout, buf, sizeof(buf)); |
| 41 | if (ret < 0) |
| 42 | return ret; |
| 43 | avio_printf(s->pb, "#sample_rate %d: %d\n", i,avctx->sample_rate); |
| 44 | avio_printf(s->pb, "#channel_layout_name %d: %s\n", i, buf); |
| 45 | break; |
| 46 | } |
| 47 | case AVMEDIA_TYPE_VIDEO: |
| 48 | avio_printf(s->pb, "#dimensions %d: %dx%d\n", i, avctx->width, avctx->height); |
| 49 | avio_printf(s->pb, "#sar %d: %d/%d\n", i, st->sample_aspect_ratio.num, st->sample_aspect_ratio.den); |
| 50 | break; |
| 51 | } |
| 52 | } |
| 53 | return 0; |
| 54 | } |
no test coverage detected