PCITV is a driver
and TV viewing application for RISC OS, bringing television and
frame capture to the desktop for under 30 pounds, the cost
of the card. The driver is free and protected by the GPL, meaning
that the source is also available. I hope this will encourage
others to create drivers for other PCI cards.
PCITV is able to show TV images at full frame rate
at the maximum possible resolution of the TV image. It is able to
show full screen video by changing to a mode closely matching the
original resolution of the TV picture. No burden is placed on the
processor and the TV image does not skip or break up when the
processor is put under heavy load.
28th August 2006
Required (includes source code). For usage instructions,
see the help file within PCITV.
required if you cannot get the tuner to function. In
this case, please send me the output from this program.
25th June 2004
Written by Robin Hounsome. Provides additional features
that PCITV does not yet provide. Further
report a bug, please check this document
for a list of known bugs.
with the Conexant BT848/849/878/879 chip are supported, though
only 3.3V or universal voltage cards can be plugged into the PCI
bus of the IYONIX. The
Pinnacle PCTV Rave card is a suitable
card. The Studio versions of these cards come with software MPEG
capturing software for Windows, which is useless on RISC OS. The card costs as little
as £29.99 and the RISC OS driver is provided free of charge.
cards contain a BT8xx chip, and thus should work with the driver. Older cards may contain a frame grabber chip not
supported by this software. Newer versions are however
compatible. Some boards specifically called the "PCTV Stereo"
(not "Pro") may not contain a BT8xx chip, so be sure before you
- Pinnacle PCTV
Studio PCTV Rave
- Pinnacle PCTV
Studio PCTV Pro (stereo)
The BT8xx chip
contains a DMA controller which allows it to copy video data
directly into the graphics display memory of the computer,
bypassing the processor completely. This means that you can watch
the TV in the desktop without putting any load on the processor.
Some of the driver's features include:
- Live video on
the desktop (via primary surface drawing)
- Full screen or
video (maintaining aspect ratio)
TV viewer window
- TV tuner
control and channel scanning
- Composite and
- Mono and
stereo sound, along with second audio channels (SAP)
(allowing window off-screen)
- Frame capture
and save (example, from the PAL output
of my digital camera - note that this is some way off the full
resolution of PAL)
support (via cursor keys)
controls (brightness, contrast, saturation, hue)
covered image (allowing TV window below the top of the window
support (when I've figured out how to signal a frame change via
- Channel suite
chip must be programmed with RISC instructions from its own
instruction set. These instructions tell it where to place video
data as it is received. Once programmed, the BT8xx stays in a
loop, where it receives video data and copies the pixel data
directly into video RAM. The
Linux kernel driver was useful in developing this software, hence
the RISC OS driver will be released under the GPL.
One problem is
that RISC OS uses a different RGB byte ordering to Windows in 32
bit colour modes. The BT8xx is able to reorder its bytes into an
ABGR order (where A is the alpha channel, unused in this case).
However, RISC OS needs a BGRA order. To get around this problem,
the BT8xx is instructed to write all image bytes with an offset of
+3 bytes, in order to align the BGR bytes. This means that the
alpha components are offset by one pixel for the entire image, but
this doesn't matter as the alpha values are not used at all (they
are always zero).
RISC OS video memory: BGRABGRABGRA
TV card pixel data: ABGRABGRABGR
The tuner on the
TV card is controlled via I²C. A driver was written to perform I²C
read/write operations via the BT8xx's on-board I²C master
controller. By sending commands to the tuner via this bus, the
frequency can be changed. Newer PCTV Rave cards use a
multistandard PAL/NTSC tuner, PAL being the format used in Europe and NTSC
in the USA. Luckily, I'm
able to test PAL video with my TV card as my PC laptop is capable
of producing both NTSC and PAL signals. :o)
BT8xx TV card
designs change quite regularly so the driver will need to be given
knowledge of different board specifications. In some cases, code
for the video overlay and tuner control will have to be rewritten
to accommodate the changes.
BT8xx cards are
capable of video capture at high resolutions and frame rates, but
are bounded by the speed at which the host computer can compress
and save video to disc. If someone develops a high-speed video
encoder, I see no reason why the driver could not be extended to
allow video capture.
Digital TV cards
are available that can pick up MPEG TV broadcasts for viewing. I
am not sure if they are capable of video overlay or if the raw
MPEG stream is sent to the host computer's processor for decoding.
In the latter case, it should be possible to decode the video with
an MPEG decoder, but it would be an added burden to the computer's
August 2006): Fixed bug where TV would sometimes
not revert to old mode after full screen mode was
quit. Improved frame capture quality and fixed other
January 2005): Fixed channel country saving bug and
updated MT2050 tuner code to more accurately tune to
November 2004): Added Australia to list of countries,
worked on stereo configuration, added screenblanker control, and fixed some bugs.
July 2004): Update of PCITV with stereo driver, image
cropping, SECAM support, picture controls and more! It's
late, so I'll announce this update later!
March 2004): First public release of PCITV software!
January 2004): My TV card inexplicably broke, so I took
the opportunity to buy the Pinnacle PCTV Pro, which is a
stereo card. I've ported the Linux driver for the stereo
chip, which works great!
January 2004): A driver for the MT2050 has now been
written, thanks to Robin Hounsome's hard work. I am now
extremely close to a release but I'm trying to track down a
bug in the PAL/NTSC switching code.
December 2003): PCITV now supports Temic/Philips tuners
and channel scanning is fully integrated. I'm currently
working on a channel manager, allowing channels to be added,
deleted and named. I'm also still trying to source the
datasheet for the MT2050 tuner. A public beta release will
be very soon.