changeset 15567:c8ef0513f470

prefer width&height from bitmapinfoheader for h263 streams fixes playback of some MOV files (http://mplayerhq.hu/pipermail/mplayer-dev-eng/2004-July/027777.html)
author henry
date Wed, 25 May 2005 09:20:50 +0000
parents 3758536dcef3
children 6825cbde2df6
files libmpcodecs/vd_ffmpeg.c
diffstat 1 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vd_ffmpeg.c	Wed May 25 08:48:32 2005 +0000
+++ b/libmpcodecs/vd_ffmpeg.c	Wed May 25 09:20:50 2005 +0000
@@ -467,12 +467,20 @@
 #else
     float aspect= avctx->aspect_ratio;
 #endif
+    int width, height;
 
+    width = avctx->width;
+    height = avctx->height;
+    if (sh->bih && sh->format == mmioFOURCC('h','2','6','3')) {
+	width = sh->bih->biWidth;
+	height = sh->bih->biHeight;
+    }
+    
      // it is possible another vo buffers to be used after vo config()
      // lavc reset its buffers on width/heigh change but not on aspect change!!!
     if (// aspect != ctx->last_aspect ||
-	avctx->width != sh->disp_w ||
-	avctx->height != sh->disp_h ||
+	width != sh->disp_w  ||
+	height != sh->disp_h ||
 	!ctx->vo_inited)
     {
 	mp_msg(MSGT_DECVIDEO, MSGL_V, "[ffmpeg] aspect_ratio: %f\n", aspect);
@@ -480,8 +488,8 @@
 //	if(ctx->last_aspect>=0.01 && ctx->last_aspect<100)
 	if(sh->aspect==0.0)
 	    sh->aspect = ctx->last_aspect;
-	sh->disp_w = avctx->width;
-	sh->disp_h = avctx->height;
+	sh->disp_w = width;
+	sh->disp_h = height;
 	ctx->vo_inited=1;
 	switch(pix_fmt){
 	// YUVJ are YUV formats that use the full Y range and not just