PCITV
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.
Download
|
PCITV application |
69KB |
0.08d
(beta) |
28th August 2006 |
Required (includes source code). For usage instructions,
see the help file within PCITV. |
|
PCITVdiag |
3KB |
1.01 |
4th
March 2004 |
Only
required if you cannot get the tuner to function. In
this case, please send me the output from this program. |
|
Remote |
12KB |
0.01g |
25th June 2004 |
Written by Robin Hounsome. Provides additional features
that PCITV does not yet provide. Further
documentation is
available. |
Before you
report a bug, please check this document
for a list of known bugs.
Supported cards
All cards
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.
The following
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
buy.
- Pinnacle PCTV
Rave
- Pinnacle
Studio PCTV Rave
- Pinnacle PCTV
Pro (stereo)
- Pinnacle
Studio PCTV Pro (stereo)
- Zoltrix/Z-Cyber
Genie TV
Features
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:
Currently
implemented:
- Live video on
the desktop (via primary surface drawing)
- Full screen or
windowed display
- Resizeable
video (maintaining aspect ratio)
- Always-on-top
TV viewer window
- PAL/NTSC/SECAM
support
- TV tuner
control and channel scanning
- Composite and
S-Video input
- Mono and
stereo sound, along with second audio channels (SAP)
- Cropping
(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)
- Keyboard
support (via cursor keys)
- Picture
controls (brightness, contrast, saturation, hue)
To be
implemented:
- Partially
covered image (allowing TV window below the top of the window
stack)
- Overlay
support (when I've figured out how to signal a frame change via
interrupts)
- Channel suite
manager
Primary surface
drawing
The BT8xx
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
bttv
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
^^^
TV tuner
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)
Known problems
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.
Future
enhancements
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
processor. |
Update (24th
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
minor bugs.
Update (28th
January 2005): Fixed channel country saving bug and
updated MT2050 tuner code to more accurately tune to
frequencies.
Update (22nd
November 2004): Added Australia to list of countries,
worked on stereo configuration, added screenblanker control, and fixed some bugs.
Update (7th
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!
Update (4th
March 2004): First public release of PCITV software!
Update (30th
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!
Update (22nd
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.
Update (6th
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.
Archived updates |
|