[MPlayer-dev-eng] Some question regarding H264 and Direct Rendering.
Reimar Döffinger
Reimar.Doeffinger at gmx.de
Wed Nov 5 19:56:23 CET 2014
On Tue, Nov 04, 2014 at 03:49:13AM +0100, Kjetil Hvalstrand wrote:
> I also have another question I have also recently implemented video
> output that support Direct Rendering, and I have notices that some of
> codecs do not support it, is there any chance that H264 codec will
> support Direct Rendering, the speed difference its major, on older
> MPEG and OGG video codecs. There was some indications that H264 has
> support for direct rendering in VLC, so way not Mplayer?
If the speed difference is major that usually hints that something went
wrong/is badly implemented.
It can at best save you one memcpy.
In vd_ffmpeg.c there is nonref_dr related code that can be manually
enabled (as it works badly in corner-cases).
Reference frames are a problem for several reasons, though the one that
makes them kind of useless for direct rendering is that with direct
rendering they might be stored in uncached memory, completely breaking
performance. Plus, we need to make a copy when drawing the OSD.
Also, newer codecs like H.264 are problematic since they do reordering
and can have a large number of reference frames that need to be kept
around, which can easily exhaust the number of buffers.
Most VOs can provide at most 3 or so buffers for direct rendering.
> In my port of mplayer for AmigaOS4.1, I needed to replace "typedef
> off_t" as AmigaOS4.1 did not support that type as 64bit type, I
> replaced it with uint64, do you think it might be possible make the
> same change in official mplayer repository?
I don't think that kind of change is easily possible without breaking
things in subtle ways.
It is not necessarily unacceptable, but it seems more reasonable to
fix the system to support 64 bit off_t (but if the system doesn't
support 64 bit off_t seeking in files > 4 GB will not work anyway,
so which use cases does such a change fix?)
More information about the MPlayer-dev-eng
mailing list