vd_ffmpeg: disable callbacks for threaded decoding
commitca217f4557c3cff4f2bf33e605ce13e662e84a92
authorUoti Urpala <uau@glyph.nonexistent.invalid>
Wed, 20 Jan 2010 14:31:13 +0000 (20 16:31 +0200)
committerUoti Urpala <uau@glyph.nonexistent.invalid>
Wed, 20 Jan 2010 14:31:13 +0000 (20 16:31 +0200)
treea5d8973efc449137fc4b4eca3eb0f6ca922692d1
parenta0f08fbebbdf211ce2a69f1c3ab891a5a1ca9b8c
vd_ffmpeg: disable callbacks for threaded decoding

MPlayer's slice and direct rendering related callbacks are not safe to
call from other threads, so disable those features if more than one
decoding thread is specified. This should fix some issues when using
threaded decoding with formats other than h264 (in the h264 case the
callbacks were already disabled for other reasons).

This commit moves most of the code that sets special avctx parameters
for VDPAU and XvMC. Before that was done after avcodec_open() based on
the selected output image format; now it's done before avcodec_open()
based on the capabilities of the selected decoder. At least the code
selecting the thread count must be before avcodec_open(), and I think
there is no reason to try to keep the previous structure otherwise
either. The image format-based approach was implemented by Reimar
with the intended goal of eventually selecting between software and
VDPAU decoders under one FFmpeg decoder type. I consider that goal to
be questionable, and the approach certainly made the existing code
significantly messier for no functionality benefit.
libmpcodecs/vd_ffmpeg.c