Highly Technical Details

From MythTV Official Wiki
Revision as of 06:20, 1 April 2007 by T0ny (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Various Technical Explanations

...so you don't let the nice salesmen talk you into buying something gold-plated and obsolete.

Issues for recording

Framebuffers and firewire and hardware compression, oh my!

There are three basic ways for MythTV to record broadcasted content, and which ones are usable is tied to how the user gets their TV signal in the first place. The first (and probably least desirable) is a technique called "framegrabbing", the second is over a firewire connection (ideal but not widely applicable), and the third (and least troublesome) is from a tuner card that uses hardware-accelerated video compression.

Framegrabbing is what you're stuck with if your tuner card is one of the older (and/or simpler) tuner cards made that uses a Brooktree chip called the Bt848, Bt878, or Bt878a (although there are a few other variants). These cards are the cheapest type of tuner cards one can get, but this inexpensiveness has it's own hidden price. Framegrabbing (in almost layman's terms) is when the tuner card is given a (nearly literal) window of memory used by your video card to paint the received video image into in real time. The CPU has to "grab" each frame as it appears and then copy it to the software compression codec in order to compress the data so that it doesn't take up absolutely ludicrous amounts of disk space. The audio usually has to be fed through the line-level input on the sound card to be recorded, although there are some cards that support sending audio directly to the CPU through DMA transfers. These cards are excellent for just watching live television broadcasts, but the task of grabbing the images and audio and compressing it in realtime makes framegrabbing a very CPU-intensive task. Generally an SD broadcast requires at least 1Ghz of processing power and about 256Mb of RAM in the machine to record just one stream.

Firewire is one of the primary transport mediums used for digital cameras and other forms of digital video transfer. If you are a subscriber of HD digital cable in the US, there's a good chance the receiver you got from the cable company has a firewire port on it. If it doesn't ask them for one and you'll likely get it (FCC mandate). Depending on who your cable provider is, you may be able to get the video you're watching on the receiver to stream from your cable box to your MythTV box over the firewire cable in it's raw, compressed form (which would be great). At the very least, you should be able to use the firewire connection to make the receiver box change channels (which is less problematic than using an IR blaster and LIRC). Recording video over firewire doesn't require much CPU at all, but with some channels it may be a bit like "drinking from the fire hose" if your machine is underpowered.

Video tuner cards with hardware-accelerated compression that are affordable are somewhat new to the personal computer market, but they're absolutely wonderful now that they're here. What this means is that the tuner card itself handles the "heavy lifting" of compressing the video signal down to an MPEG or XviD stream so your computer doesn't have to. Recording video with these isn't really much more CPU-intensive than just copying a file. If your computer is capable of playing back an SD video in full screen without skipping or dropping frames, then it's probably got enough power to handle one of these cards. The most common are the Hauppauge PVR-xxx series cards, which are detailed elsewhere on this site.

Issues for playback

Widescreen or SD (standard definition)

Thankfully, dealing with whether or not you have a widescreen (16:9 aspect) display or a normal (4:3 aspect) display is something that only X (Xorg or XFree86, either will do) only has to deal with. For the most part it's a simple matter of configuring X to use the display at it's native resolution as if it were a normal monitor. If you have a highly expensive display which does 1920x1080 resolution (1080i/p with no downsampling) then that's the resolution you tell X you want to use. If you're using a widescreen LCD monitor that does 720i/p (without downsampling) and has a native resolution of 1280x768, then you configure X to use the display at that resolution. With some widescreens (and some video cards) that X can't quite figure out on it's own, the user may have to manually generate a modeline (or search the wiki for one) that tells X how to use the display, but this is usually not necessary. In almost every case, the video card (possibly with the help of accellerated drivers) and MythTV will be capable of upsampling (expanding) or downsampling (shrinking) the images to fit the display exactly. You'll still get "letterboxing" if you watch a widescreen video on a standard (4:3) display, of course but the fewer resolution changes your video has to be put through before appearing on your screen, the better.

HDMI, DVI, VGA, Component, S-Video, and Composite Output

The type of output your video card can do, and the type of inputs your display device can handle are primarily what dictates what you should use to connect them. From highest- to lowest-quality, the order of consideration is: HDMI, DVI (both of which are digital), VGA, Component, S-Video and finally Composite (all of the rest are analog).


Hdmiconnector.jpg
HDMI is a digital connection primarily seen on high-end home theater displays. It also incorporates some technology to thwart naughty video-pirates, but this mostly stays out of our way (for now). If your television and your video card both support this, then it's probably what you'll want to use. It's likely that any display which has an HDMI input also supports DVI input, so you don't need to rush out in a mad buying frenzy to get a new video card if your video card already supports DVI output. The main difference between DVI and HDMI (asside from HDCP encryption) is that HDMI includes audio as well as video. The video portion of HDMI is identical to that from DVI.


Dviconnector.jpg

DVI is another type of digital connection which is more common than HDMI, since it is used by nearly all LCD flat panel computer monitors. While HDMI and DVI connectors carry almost the same signal, they look nothing alike. The DVI connector is fairly large, while the HDMI connector is very small almost looking like a double-wide USB plug. Most LCD/TFT panel displays support DVI input, and most newer video cards will have a DVI output (some will have two).


Vgaconnector.jpg

VGA is the "normal" monitor cable everyone's used to seeing on computers and monitors. A great many of the LCD TVs currently being manufactured in the US are intended to be dual-purposed as computer monitors and will have a VGA input (and possibly DVI as well), and nearly all (some are coming DVI-only now) computer monitors being sold as computer monitors will accept VGA input. Your video card will almost certainly support VGA output, and even if it only has one (or two) DVI output on it, it should have come with a little adapter that will allow you to use it with the more common VGA display.


Componentconnector.jpg

Component video uses 3 RCA type cables to carry the video signal instead of one. The method is a bit similar to that used by S-Video, but because it has more cables it can carry a better signal. Most HD TV sets will have more than 1 of these types of inputs, and often it is the "best" you can possibly use for DVD players, video game consoles and sometimes even HD satellite or cable boxes. If your TV has none of the above inputs, this is the best way to go if you have an HD TV and you can do this. There are VGA -> Component adapters and some video cards even come with a method of outputting component.


Svideoconnector.png
S-Video is a multiple pin, round connector type that carries the chroma and luma (color and brightness) parts of the video signal over separate wires, which usually means a very good signal. It looks a little bit like a PS/2 mouse connector, but with more pins. Many, many televisions support S-video input. The cables are reasonably inexpensive, and can be up to fifteen feet long without experiencing notable signal loss. Word of warning: Some video cards have what looks very much like an S-Video output, but has a few more pins involved and is not an S-Video output. These cards will have come with a "breakout box" which will have a number of other connectors on it which often include an actual S-video output, as well as component outputs, and sometimes a composite output as well. Don't get confused and try to force an S-Video cable directly into these, because bent pins really suck.


Compositeconnector.jpg

Composite video is probably the least desirable connector type of the lot. It's the type of output most video games use, and practically every display supports at least this if you aren't going to have to use an RF modulator with it. It will be a single RCA connector which should be yellow. The other two RCA connections commonly found with it will be white and red, which are the left and right audio channels respectively. (Remember, right and red start with the same letter.) Some of the older nVidia cards have only a composite video connector for TV output. To use the TV output on these cards you will need the nvtv driver as well as nVidia's binary driver. For no other nVidia cards do you need nvtv so don't put yourself through that hassle by mistaking it for something you need if your nVidia card has an S-video output.

Audio Output

...or "How I learned to like stereo all over again".

(For now, I'm leaving this section empty because ALSA hates me and clearly wants me dead. I'll populate it once I figure out a simple way to fix audio routing so my rear speakers work all the time, unless someone else wants to go ahead and do it. --+ Dagmar)

ALSA is somewhat more difficult to configure compared to OSS (Open Sound System, from now on Obsolete Sound System). Found the culprit on the following wiki page: Configuring_Digital_Sound, and now everything works smooth. --Michel 17:09, 21 February 2007 (UTC)