description: Watch TV on your amiga
version: 0.13
date: 20090321-15.25
author: Ian Gledhill
submitter: Ian Gledhill
email: IanG/amiganet org
category: video/misc
replaces: video/misc/amitv.lha
requirements: Bt848/Bt878/Cx2388x-based TV card
license: Freeware
minosversion: 4.0
distribute: yes
fileid: 4647
hend:


AmiTV V0.13 (21/03/2009)
================

by Ian Gledhill (Spirantho on various forums) IanG()amiganet.org

**WARNING** This is software in development and it quite likely to crash your computer, especially if you have interrupts enabled!!! I am not responsible for loss of code, data or small fluffy rodents as a result of using this program. Use at your own risk!

This is a preliminary build of a useful TV program. It currently supports Bt848, Bt878 and Cx2388x chipsets.
It supports PAL and NTSC, but in this build only PAL is supported.

Note well that sometimes the Bt8x8 chip doesn't pick up a good signal, probably an overflow in the FIFO. If you don't get a signal and you're sure there should be one, just reselect the overlay mode or something to restart the RISC program. This may happen on the Cx2388x too if you change video source while it's running. If in doubt, re-select the overlay mode you want.

When you run the program, two windows open - the video window and the control window. The menus are attached only to the control menu at the moment.

I haven't worked out how to make nice menus yet, but essentially the options are:

In the Project menu, only Quit works (It's a handy button to have working).
In the Format menu, nothing works.
In the Overlay menu, you have three options:
* Buffered - This writes the TV data to an internal buffer, and then when triggered, copies the data to the Overlay buffed.
	Pros 	- Most stable picture.
			- Uses overlay for scaling
			- No corruption because AmiTV can safely lock the bitmap, as it has control over the rendering, rather than the TV card.
	Cons	- Uses CPU time for rendering.
			- Still not perfectly stable.
			- Requires the picture window or the control window to be activated when interrupts are disabled.
			- Low frame rate (according to INTUITICKS) unless interrupts are enabled.
			- Window will disappear when the screen is being dragged.

* Direct - This writes the TV data straight to the graphics card.
	Pros		- No CPU time at all
			- Full frame rate at all times
			- No need for interrupts
			- Uses overlay for scaling.
	Cons	- Doesn't work perfectly on any machine except *maybe* the Pegasos II!
			- Window will disappear when the screen is being dragged.

* None - This writes to main RAM and then blits the data to the RastPort of the window.
	Pros		- Is always visible
			- Uses OS4's transparency correctly
	Cons	- Is very slow!
			- Can't be used with interrupts (yet)
			- Doesn't scale.

You then have an extra option: Full Screen mode. This does what it says on the tin. It is recommended that if you're using this option you use interrupts on, as if it's full screen you won't be doing anything else anyway.

In the interrupts menu, there are now two options: Enable Interrupts, and Faked Interrupts.
Using interrupts is ***VERY LIKELY*** to crash your machine solid. I don't know why this is, it may just be on the AmigaOne. It's usually pretty stable as long as the picture is stable. You will, however, get distortion in the video signal. This is because you can't safely lock the bitmap inside an interrupt. Believe me, I've tried.
Note that selecting No Overlay mode will disable real interrupts. They can not be enabled in this mode either.
If you want to use interrupts be *sure* that your picture is solid.

Faked Interrupts are where the program *polls* the interrupt register. This is more stable as the interrupt is never being triggered, and works on the Cx2388X chipset, which never seem to trigger an interrupt (yet). It works but it will annihilate your CPU free time!

The program starts in Buffered Overlay mode with Interrupts disabled. This is a good compromise as it leaves plenty of CPU time free while giving a reasonable display.

There are four inputs on TV cards to the decoder chip, cycle between them using the control window or the Up/Down arrow keys when the video window is selected.

Quit by pressing Escape in the video window, or use the control window menu. If Escape doesn't work, make sure you have the video window activated (even in full screen mode).

It is strongly recommended that you use Buffered Overlay mode for most purposes. Use no interrupts when you need CPU time, use Faked Interrupts when watching full screen or needing full frame rate. However, PLEASE send me bug reports of ALL combinations!

Using No Overlay mode will, of course, allow you to take screengrabs should you need to.

PLEASE let me know if you use this program, no matter what the results. I need feedback!

Good Luck!

Changelog:

V0.13 (21/03/2009)
============
* Sam440ep now supported! Only Cx2388x chipsets work because the Bt8x8 is a 5V PCI chip and the Sam insists on 3.3V.
* Interrupt handler now allocated as a system object instead of on the stack. No real difference so far though.
* No Overlay mode now uses R5G6B5 instead of R8G8B8A8. This allows full resolution.
* No Overlay mode has gamma attenuation turned off, so it's the correct brightness now.
* Interrupts aren't even initialised on the Cx2388x chipsets now, there's no point and it seems to reduce stability. Need to fix this properly if I can just get a sensible interrupt!
* Loads of bug fixes.




