Creative DXR3 and Hollywood Plus

Creative's DXR3 and Sigma's REALmagic Hollywood Plus cards are very similar pieces of hardware. They were designed for viewing DVDs back when most PCs did not have enough processing power to decode the MPEG. They can either superimpose video on the desktop and output to a monitor with a VGA socket, using a passthrough cable (notorious for degrading quality) from the PC's main graphics card, or output the video to TV (S-Video or composite). It also has its own sound output (SPDIF and stereo jack) which is useful if, like me, you are rather short of PCI slots and your motherboard lacks onboard sound, or its onboard sound is too quiet when connected to a TV. However, I found the stereo output on my DXR3 a little weak compared to even my £5 CrystalMedia-based soundcard. The SPDIF is probably much better.

The availability of fast, cheap CPUs etc has largely obsoleted these MPEG decoders, but they are very useful for HTPCs because of the high quality TV out and their ability to display interlaced material correctly (see the section on interlacing), and play MPEG (1 & 2) much more efficiently than a CPU. They can be bought second-hand, eg on eBay, for about £10, but they are not as common as old graphics cards such as Voodoo 3s. Although the hardware is really only capable of playing MPEG 1 or 2 material, some applications, most notably MPlayer, can display other formats by using a filter to convert to MPEG 1. Although there must be some conversion losses, the result on a TV is probably better than most graphics cards due to the respective quality of the TV output. You will need a reasonably fast processor. Most people say you need at least 1GHz; my 1.2GHz Celeron seems to cope well with reasonably high quality MPEG 4 without dropping frames and plenty of headroom in the CPU load.

The downside of these cards is that they tend to lose synchronisation between sound and picture, at least with current Linux applications, but this can be worked around with MPlayer's A/V delay controls, and the developer of the DXR3 plugin for VDR is working on the problem too.

The Linux driver

The driver is available from http://dxr3.sourceforge.net. At present you need to use CVS if you want to use it with kernel 2.6:

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dxr3 login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dxr3 co em8300
 

(Just press Enter when prompted for a password). The driver is called em8300 after the main chip on the card.

Compiling em8300

There is a Howto on the website but it tends to get bogged down in detail rather than provide a straightforward guide.

If there is a configure script in the version you downloaded, skip to the next paragraph. But if you downloaded from CVS, you need to create it by running bootstrap. You will need libtool, automake and autoconf for this.

You can build the tools in the usual way:

./configure
make
make install
 

but the modules have to be built separately. Go into the modules directory and run make and make install there. Also run make devices to create the device nodes in /dev.

Loading the em8300 modules

There are three modules altogether, em8300, adv717x and bt865. You need the em8300 module and one of the other two depending on your particular card. The Howto suggests that DXR3s use bt865 and Hollywood+'s use adv717x, which may require some options depending on revision.

The Howto lists some module options and loader scripts, but I did not find this information particularly useful and simply added em8300 and bt865 to /etc/modules.

EM8300 microcode

Microcode is included in current versions of the em8300 module so you do not need to worry about it in normal use. If you want to reload it with em8300setup the file is available as modules/em8300.uc in the source tree.

em8300setup

Applications such as MPlayer and VDR should not need this, but it still has its uses. Run em8300setup -h to see a list of options. One point to note is that for use on a 16:9 TV the -o and -w options seem to be the wrong way round. Therefore you may need to run em8300setup -o after starting playback.

MPlayer and DXR3/Hollywood+

To enable DXR3/H+ support in MPlayer you need to install the library from the em8300 driver before compiling MPlayer, then it should be auto-detected.

MPlayer has some very good HTML documentation, including details of how to use it with a DXR3 or Hollywood+, so there is no need to add much here. However, one point it does miss is what quality setting to use for the lavc filter (conversion to MPEG). A value of 0 uses the best quality possible; if you have problems with dropped frames try 10000 and keep reducing it until you find a suitable value. If there are still problems at 5000 you may unfortunately not have enough CPU power to do it justice.