summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorUoti Urpala <uau@mplayer2.org>2011-11-04 08:36:54 +0200
committerUoti Urpala <uau@mplayer2.org>2011-11-14 20:24:39 +0200
commit505f94cef9556a838066964ff1f558437fc458c0 (patch)
treefad2d16d241506c599fe814e4df2865c98b47234 /libmpcodecs
parentdd1b848d92034be5aea1388c844a4aea9b53bd35 (diff)
downloadmpv-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')
-rw-r--r--libmpcodecs/vd_ffmpeg.c9
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;