diff options
author | Uoti Urpala <uau@mplayer2.org> | 2011-11-04 08:36:54 +0200 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2011-11-14 20:24:39 +0200 |
commit | 505f94cef9556a838066964ff1f558437fc458c0 (patch) | |
tree | fad2d16d241506c599fe814e4df2865c98b47234 /libmpcodecs/vd_ffmpeg.c | |
parent | dd1b848d92034be5aea1388c844a4aea9b53bd35 (diff) | |
download | mpv-505f94cef9556a838066964ff1f558437fc458c0.tar.bz2 mpv-505f94cef9556a838066964ff1f558437fc458c0.tar.xz |
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.
Diffstat (limited to 'libmpcodecs/vd_ffmpeg.c')
-rw-r--r-- | libmpcodecs/vd_ffmpeg.c | 9 |
1 files changed, 0 insertions, 9 deletions
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; |