[mythtv] experimental xvmc effeciency patch

Daniel Thor Kristjansson danielk at cat.nyu.edu
Mon Aug 16 18:17:11 EDT 2004

]You don't mean using XvMC for MPEG4 decoding do you?  I'm learning more
]about XvMC and what is possible, but I had thought it was only did

Right now it only does MPEG2, but the new nvidia cards like the 6800 are
capable of decoding both profiles of MPEG4. I expect this to find it's
way into the next version of XvMC.

]Also, you understand XvMC more than I do, so I have a couple questions
]for you.  You improved the quality of XvMC quite a bit in the last
]several months.  I was under the impression that one simply gave the
]video card the data and it handled it as it wanted, apparently this is
]not the case as you have been adding de-interlacing into Myth for XvMC.

You hand it the data, and then tell it how to display it. You can hand
it MC data, as you must with cards like a regular GeForce 4, or with
the newer cards you can hand it IDCT data. When you display it you
can display the first field, second field, or both fields. "poor man's
deinterlacing" is simply showing only the first field of interlaced
frames, bob-deinterlacing is showing the first and second fields in
successive frames (and doubling the framerate). Showing both fields at
a time is what you do for progressive display or when using interlaced

BTW The video looks about the same with bob-deinterlacing as with
software deinterlacing, the biggest difference is a flicker in the OSD,
but that can be fixed in the OSD code.

]Are you simply telling the card to use certain built in functions, or
]are is there a way to use the card any way you want?  Software decoding
]has always looked better, but is it possible to put all the work for
]software decoding, denoise, and other filters into code that utilizes
]XvMC for this processing?  If this is the case, then wouldn't it be
]possible to write decoders for almost any format that would use XvMC to
]offload the CPU?

The newer cards have post-processing capabilities, but this is not
exposed in the video drivers, so we can't use it in MythTV. The hardware
for decoding video is separate from the programmable hardware, so there
isn't much hope of using it for other video formats. However, this may
change with PCI Express, which can be read from at the same speed as you
can write to it, so it can be used almost as a super math co-processor,
if it ships with good drivers.

It may be possible to render XvMC to a texture and do post-processing in
the fragment processor, but I've never tried this.

-- Daniel

More information about the mythtv-dev mailing list