[mythtv] Relationship of XVideo to V4L
Joseph A. Caputo
jcaputo1 at comcast.net
Tue Jul 8 16:24:07 EDT 2003
> -----Original Message-----
> From: mythtv-dev-bounces at snowman.net
> [mailto:mythtv-dev-bounces at snowman.net]On Behalf Of Michael J. Hammel
> Sent: Tuesday, July 08, 2003 3:04 PM
> To: XFree86 Mailing List
> Cc: MythTV Development
> Subject: [mythtv] Relationship of XVideo to V4L
> I'm trying to figure out how to get an STB working with MythTV. The TV
> portion seems to work only through XVideo - XawTV and Zapping can view
> TV but changing channels and setting audio has to be done externally.
> MythTV seems to want to work with V4L devices. My understanding is that
> XFree86's v4l module will provide an Xv interface to V4l devices. Is
> that correct? This assumes the TV is accessible through a V4l driver,
> ie Xv sits atop V4L - is this also correct?
> If I'm right about this, the only way to support my hardware would be
> 1. write a V4l driver for the TV hardware and make the X server not
> manage that hardware
> 2. Add direct Xv support to MythTV
> The latter seems easier to me since Xv is a pretty straight forward API
> and I already know the X server is managing the TV hardware display (if
> not specifically managing channels or audio - and that can be done at
> the application level using vendor supplied tools anyway). The former
> I'm not sure how to do because I'm not sure what bit of hardware it is
> I'm trying to write the driver for - is it just the SAA7114 tuner? Or
> does this *have* to go through the video controller stuff too?
> I could use a pointer on how to get started here. I've done plenty of
> app level development (X/Motif/GTK+ based) but its been years since I've
> done much hardware level stuff.
> FYI, here is the hardware (all integrated on the motherboard) on the
> system I'm working on:
> VIA C3(aka Samuel 2), 733/800MHz - CPU
> Trident CyberBlade/i1 - Video controller
> SAA7114 - Video decoder (Tuner)
> RealMagic 8470 - MPEG 2/4 decoder (Sigma Designs)
> VIA Tech VT8601 - PCI Bridge (AGP, NorthBridge)
> VIA VT82C686 - ACPI (SouthBridge)
> VIA VT82C686 AC97 - Audio controller
> Realtek RTL-8139/8139C (1 & 2) - Ethernet controllers
> BTW, I have an updated trident.o (and source) from VIA that supports the
> Cyberblade on this hardware. I'm not sure if its the same one currently
> in the XFree86 tree or not, however.
> Michael J. Hammel <mythtv at graphics-muse.com>
> Graphics Muse
Be prepared to get a lot of responses to this, as you seem to have some
fundamental concepts confused.
V4L is a kernel driver subsystem for video INPUT devices (capture & tuner
cards). Myth uses the V4L interface for most analog tuner cards. The
exception is the new PVR-250/350 tuner cards, which are supported by the
(still alpha) ivtv driver.
Xv (Xvideo) is a video OUTPUT mechanism for X11 that supports (among other
things?) hardware scaling (so you can display, for instance, a 480x480 video
in full screen on an 800x600 resolution display by letting your Xv-capable
graphics card do the scaling, instead of the XFree86 software, thereby
leaving your CPU available to do other things (like decode MPEG video).
Think of Xv as analogous to OpenGL or SDL (though SDL does more than just
Myth works as follows: video is captured from a tuner/capture card using
either the V4L or ivtv interface. This video is encoded (ivtv is already
hardware-encoded) and written to disk, either in a ringbuffer (for LiveTV)
or to a named file. When you want to view the recorded video (immediately
for LiveTV), the file is read and decoded. The decoded video stream is
displayed using X11 with Xv extensions. Myth can also output video using
XShm-MIT extensions if Xv is not available, but this is more taxing on the
system as the scaling has to be done in software rather than hardware.
At some point, someone might get around to writing alternate video output
support, say, for SDL or framebuffer device. Then we might have the option
of running Myth without any X11 at all. Until then (unless you're
volunteering to write driver code) you need a tuner card supported by V4L
(check the list archives to see if anyone has the SAA7114 working) and a
video (display) card that supports Xv extensions under Linux/XFree86 (again,
check the mailing list for your Trident/CyberBlade i1).
Your MPEG decoder board is currently useless under Myth. Support for
hardware MPEG decoding has been a frequent question/request, but so far
nothing has been promised.
The VIA C3 800MHz (Samuel) CPU should be enough to do either recording or
playback, but would probably be hard put to it to do both simultaneously.
Even the folks with the VIA C3 1GHz (Nehemiah) have been hard-pressed; a
bunch seem to have opted for the PVR-250, which takes the encoding load off
of the CPU.
More information about the mythtv-dev