[mythtv] Ideas for high quality TV-out

mikewright at iprimus.com.au mikewright at iprimus.com.au
Sun Jun 27 20:44:33 EDT 2004


Hi all,

I've got a MythTV box set setup here in Australia and I'm reasonably
happy with it. What would make me really happy is try and improve the
quality of playback to consumer electronics set-top-box quality.

Here is my basic problem:

The football looks crap. (www.afl.com.au).
When the image is panned I can notice that the motion is a bit jittery.

Here is my setup:
- AverMedia DVB-T PCI card
- Albatron KM18G-Pro NForce2 Mobo
- AGP GeForce2 Ti with Chrontel 7007 TV encoder chip.
- Duron 1800 MHz underclocked to 1200 Mhz (To keep the heat down)
- Sony 51cm VEGA PAL television.
- Fedora Core 1 with Kernel 2.6.5. No APIC, ACPI or APM stuff enabled.

Here is some preliminary info:
I want to watch the footy on Channel 9.
Channel 9 broadcasts the following Video according to Myth logs:
Videostream: ASPECT: 16:9 Size = 720x576 FRate: 25 fps
BRate: 6.00 Mbit/s

Now if I watch this stream with mplayer -vo xv on my monitor I can see
that the content is interlaced. That is, when the camera pans left or
right, instead of seeing a white goal post move across the screen I see
a white hairbrush :) Now that is fine. What most CE STBs would do is
take a single decoded video frame and split it into two. The first
frame would contain all the even lines in the frame and the second frame
would contain the odd ones. So each frame ends upbeing 720x288. The STB
would then play these back at 50 FPS - twice the input rate. What you
end up with is silky smooth video with no temporal artifacts.

This is exactly what I want for MythTV setup. I am not interested in
applying a de-interlacing filter. In my opinion that is not the correct
solution and is throwing away information inherent in the video. That
will not get me the same quality as a CE STB.

I need 2 things in place to accomplish CE quality playback.

1. VBLANK support for GeForce 2.
2. An efficient way to decode the frames into two half resolution frames
made up of even and odd lines respectively.

Number 1 is easy if you use NVIDIA's bianry kernel module. You can use
OpenGL is sync to the VBlank. The code is in MythTV vsync.c already.

But I don't want to NVIDIA's module. I can't get anywhere near the
uptime I can with the OpenSource nv.o X driver and the NV-TV-OUT project
to handle the TV. It is absolutely rock solid. When the NVIDIA kernel
module crashes, it dies horribly and drops it's guts in my kernel. This
usually locks the system hard. The OpenSource version has no kernel
component and just does simple mmap'ed register accesses. Nice and safe
and therefore stable.

Any ideas on how to do this?

For Number 2 I have no idea apart from decoding a frame and copying out
every other line into a separate buffer.

Any ideas on this?

I'm keen to get into this because my girlfriend is a Football supported
too :) I need to increase the GAF.

Mike.



More information about the mythtv-dev mailing list