# HG changeset patch # User reimar # Date 1143455572 0 # Node ID 75442247ee568cbdc68be62c2a9a51f719425d07 # Parent 03170287aea9cda7c1677c6d36d0bf442cd0b9db reinit vo when pix_fmt changes. Avoids broken image or even crash with mf://*.jpg and JPGs with different chroma sampling. diff -r 03170287aea9 -r 75442247ee56 libmpcodecs/vd_ffmpeg.c --- 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).