From 505f94cef9556a838066964ff1f558437fc458c0 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Fri, 4 Nov 2011 08:36:54 +0200 Subject: vd_ffmpeg: disable slice use that fails with size changes When not using direct rendering, vd_ffmpeg created an mp_image struct before calling libavcodec decoder, so that possible slice support could be checked from the mpi_image and output would be ready for slice-drawing calls. However, this behavior is unsound with decoders that can change output size, as the parameters can change after the mp_image was created. Disable the code creating the mp_image at that point, which also disables use of slices in this case. Slices are disabled with threading anyway, so I think trying to add workarounds to support them is not a high priority. I think this code has always been buggy, but before common thread use it was rarely executed because the direct-rendering case was used instead. --- libmpcodecs/vd_ffmpeg.c | 9 --------- 1 file changed, 9 deletions(-) (limited to 'libmpcodecs') diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index 21fa55c2e5..21c107587d 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -684,15 +684,6 @@ static struct mp_image *decode(struct sh_video *sh, struct demux_packet *packet, if (!dr1) avctx->draw_horiz_band = NULL; - if (ctx->vo_initialized && !(flags & 3) && !dr1) { - 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); - if (mpi && mpi->flags & MP_IMGFLAG_DRAW_CALLBACK) { - // vd core likes slices! - avctx->draw_horiz_band = draw_slice; - } - } if (flags & 2) avctx->skip_frame = AVDISCARD_ALL; -- cgit v1.2.3