From 9cf6bbb9936b8afed2ef3e8ab2a462fa7f537a4f Mon Sep 17 00:00:00 2001 From: "Reynaldo H. Verdejo Pinochet" Date: Sun, 18 Oct 2009 23:56:00 +0000 Subject: If missing, calculate width or height from bpp and image size lowering the probe score too. Originally committed as revision 20304 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mtv.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'libavformat/mtv.c') diff --git a/libavformat/mtv.c b/libavformat/mtv.c index ef07e4a3b0..0547430f74 100644 --- a/libavformat/mtv.c +++ b/libavformat/mtv.c @@ -61,6 +61,15 @@ static int mtv_probe(AVProbeData *p) if(!(p->buf[51] && AV_RL16(&p->buf[52]) | AV_RL16(&p->buf[54]))) return 0; + /* If width or height are 0 then imagesize header field should not */ + if(AV_RL16(&p->buf[52]) && AV_RL16(&p->buf[54])) + { + if(!!AV_RL16(&p->buf[56])) + return AVPROBE_SCORE_MAX/2; + else + return 0; + } + return AVPROBE_SCORE_MAX; } @@ -82,6 +91,17 @@ static int mtv_read_header(AVFormatContext *s, AVFormatParameters *ap) mtv->img_width = get_le16(pb); mtv->img_height = get_le16(pb); mtv->img_segment_size = get_le16(pb); + + /* Calculate width and height if missing from header */ + + if(!mtv->img_width) + mtv->img_width=mtv->img_segment_size / (mtv->img_bpp>>3) + / mtv->img_height; + + if(!mtv->img_height) + mtv->img_height=mtv->img_segment_size / (mtv->img_bpp>>3) + / mtv->img_width; + url_fskip(pb, 4); audio_subsegments = get_le16(pb); mtv->full_segment_size = -- cgit v1.2.3