diff options
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/vd_ffmpeg.c | 6 | ||||
-rw-r--r-- | libmpcodecs/vd_libmpeg2.c | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index 1b6273b444..78d7200281 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -147,7 +147,8 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){ if(len<=0) return NULL; // skipped frame - if(ctx->vo_inited && !ctx->convert){ + avctx->draw_horiz_band=NULL; + if(ctx->vo_inited && !ctx->convert && !(flags&3)){ mpi=mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, MP_IMGFLAG_PRESERVE | (ctx->do_slices?MP_IMGFLAG_DRAW_CALLBACK:0), sh->disp_w, sh->disp_h); @@ -155,8 +156,7 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){ // vd core likes slices! avctx->draw_horiz_band=draw_slice; avctx->opaque=sh->video_out; - } else - avctx->draw_horiz_band=NULL; + } } ret = avcodec_decode_video(avctx, &lavc_picture, diff --git a/libmpcodecs/vd_libmpeg2.c b/libmpcodecs/vd_libmpeg2.c index efad8eef40..45158fc02b 100644 --- a/libmpcodecs/vd_libmpeg2.c +++ b/libmpcodecs/vd_libmpeg2.c @@ -154,7 +154,7 @@ static mp_image_t* parse_chunk (sh_video_t* sh, int code, uint8_t * buffer, int mp_image_t* mpi; int flags; if (picture->picture_coding_type == B_TYPE){ - flags=vd_use_slices?MP_IMGFLAG_DRAW_CALLBACK:0; + flags=(!framedrop && vd_use_slices)?MP_IMGFLAG_DRAW_CALLBACK:0; picture->display_frame= picture->current_frame = picture->temp_frame; } else { |