From 96fc2908f0c04d2759d6c20275150d65798de4ac Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Wed, 26 Feb 2014 00:02:51 +0100 Subject: [PATCH] Read bits_per_coded_sample from V_MS/VFW/FOURCC mkv files. Fixes ticket #3425. --- libavformat/matroskadec.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index f91688b4ad..8c0ccb0a02 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1605,6 +1605,7 @@ static int matroska_read_header(AVFormatContext *s) uint32_t fourcc = 0; AVIOContext b; char* key_id_base64 = NULL; + int bit_depth = -1; /* Apply some sanity checks. */ if (track->type != MATROSKA_TRACK_TYPE_VIDEO && @@ -1708,6 +1709,7 @@ static int matroska_read_header(AVFormatContext *s) && track->codec_priv.size >= 40 && track->codec_priv.data != NULL) { track->ms_compat = 1; + bit_depth = AV_RL16(track->codec_priv.data + 14); fourcc = AV_RL32(track->codec_priv.data + 16); codec_id = ff_codec_get_id(ff_codec_bmp_tags, fourcc); extradata_offset = 40; @@ -1879,6 +1881,8 @@ static int matroska_read_header(AVFormatContext *s) st->codec->codec_type = AVMEDIA_TYPE_VIDEO; st->codec->codec_tag = fourcc; + if (bit_depth >= 0) + st->codec->bits_per_coded_sample = bit_depth; st->codec->width = track->video.pixel_width; st->codec->height = track->video.pixel_height; av_reduce(&st->sample_aspect_ratio.num,