changeset 17973:75442247ee56

reinit vo when pix_fmt changes. Avoids broken image or even crash with mf://*.jpg and JPGs with different chroma sampling.
author reimar
date Mon, 27 Mar 2006 10:32:52 +0000
parents 03170287aea9
children 9a5a62f480e6
files libmpcodecs/vd_ffmpeg.c
diffstat 1 files changed, 3 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vd_ffmpeg.c	Mon Mar 27 08:38:32 2006 +0000
+++ b/libmpcodecs/vd_ffmpeg.c	Mon Mar 27 10:32:52 2006 +0000
@@ -58,6 +58,7 @@
 typedef struct {
     AVCodecContext *avctx;
     AVFrame *pic;
+    enum PixelFormat pix_fmt;
     float last_aspect;
     int do_slices;
     int do_dr1;
@@ -533,6 +534,7 @@
     if (// aspect != ctx->last_aspect ||
 	width != sh->disp_w  ||
 	height != sh->disp_h ||
+	pix_fmt != ctx->pix_fmt ||
 	!ctx->vo_inited)
     {
 	mp_msg(MSGT_DECVIDEO, MSGL_V, "[ffmpeg] aspect_ratio: %f\n", aspect);
@@ -542,6 +544,7 @@
 	    sh->aspect = ctx->last_aspect;
 	sh->disp_w = width;
 	sh->disp_h = height;
+	ctx->pix_fmt = pix_fmt;
 	switch(pix_fmt){
 	// YUVJ are YUV formats that use the full Y range and not just
 	// 16 - 235 (see colorspaces.txt).