Q. When NTSC (29.97 interlaced) video is being fed to the VMR9 with a custom allocator/presenter, PresentImage is being called 60 times per second. You expect 30 times per second.
A. This is by design depending on the type of deinterlacing that you are using. I worked with the developer that wrote the deinterlacing code to verify this. There are a number of deinterlacing algorithms that can be used by the VMR9. I’ll try to summarize them here: The first type of deinterlacing algorithm compresses two fields into a single frame. This is what we typically think of when we think about deinterlacing. This algorithm feeds the VMR9 at 30 frames per second. The problem with this approach is that it reduces the amount of temporal information in the stream. Temporal data tends to smear across multiple frames (especially during fast motion). This leads to the typical "fingering" or "combing" that we associate with interlaced video. The second common deinterlacing algorithm processes the stream field by field. This method feeds the VMR9 at 60 frames per second. Most field by field deinterlacing algorithms reproduce the full temporal information by converting fields to frames. As a trade off they tend to reduce the vertical resolution of each interpolated frame. Finally, newer "motion estimation" based deinterlacing algorithms try to recreate the missing lines in each field by looking at the previous and next frames. Most versions of this algorithm feed the VMR9 at 60 frames per second. These new algorithms while very impressive still tend to add "fuzzing" around the edges of objects in motion.