[vlc-devel] Phosphor timing test results
juha.jeronen at jyu.fi
Sat Mar 5 19:12:14 CET 2011
For anyone interested, I made some timing tests on the latest Phosphor
("reworked += 2") when I was preparing the patch. Here's how the code
performs on my netbook with an Atom N450.
Input: telecined NTSC 4:2:0 (test clips extracted from NTSC anime DVDs).
ComposeFrame(): about 950us per call in PC_ALTLINE mode, and 2500us in
DarkenField(): about 250us per call for 4:2:0, and 750 us for 4:2:2
(from PC_UPCONVERT). The luma processing in both cases is identical; the
added 500us comes from the need to process the chroma planes. These
numbers are with using the MMX version of both.
Considering framerate doubling, both functions are called twice per one
input frame (two output frames). This total comes to about 2400us for
4:2:0 output, and 6500us for 4:2:2 output. For each output frame,
RenderPhosphor() calls both of the above functions once, and basically
does nothing else. Timing confirms this.
History mechanism (in Deinterlace()) takes about 1650us per input frame.
This is always in the input format, so it's 4:2:0.
Deinterlace(), total when Phosphor is used: about 4000us per input frame
for 4:2:0 output. About 7900us for 4:2:2 output. Summing the numbers
confirms this is basically RenderPhosphor() + history.
End result: 7900us (about half of a field duration!) is too slow; the
output stutters. 4000us is fine, playback is smooth.
More information about the vlc-devel