stampTV's Plugins Notice
©2001, Georges-Edouard Berenger, berenger@francenet.fr
Hamburg, October 7th, 2001.
What are stampTV Plugins?
stampTV can now do more than displaying a TV image, it can apply some effects to the image in real time.
To avoid being dependent on a particular version of stampTV, those effects are implemented into plugins that
you will be able to use in any recent enough version of stampTV. Developers can now develop effects on the one side,
and users can benefit from all of them at the same time though developers never worked together and possibly kept the
source code for their effect private.
Plugins support has been implemented in a way which should allow developers to implement support for stampTV
plugins into their own application fairly easily. They can use stampTV as a reference implementation, and separation
between general plugins functionalities & stampTV's specific implementation has been kept as clean as possible.
Developers should also read the
Developers' documentation.
Features
- Support for an unlimited number of plugins, though of course, if your plugins are too CPU intensive, then you will drop
frames.
- Plugins can tell what color mode they support, possibly making conversions.
- Plugins can tell if and how they support to write in an overlay (for performance issues).
- One single plugin binary may contain many different effects. This allows easy support for a plugin which would interface
other plugins standards.
- Each effect can be configured individually with its own private user interface.
- Plugins can apply their effect on the bitmap itself, which can save a lot of memory and CPU
time if the effect is done only on a limited part of the image.
- Plugins can use BView drawing functionalities, (as long as the color mode is supported for that!).
- Optimization is done to use as few bitmaps as possible.
- An overlay will be used if your video card supports a mode which the last plugins allows for overlays. This makes that an
overlay will be used if possible, but only if the plugin specifically specifies that it allows that feature. (Writing into
an overlay requires that the code is written properly, or performance will dramatically suffer.)
Available Plugins
It should be very clear that the current plugins have been designed mainly for testing & development purposes.
The author is not a graphic artist and hopefully other developers will contribute with code and/or plugins!
- Mosaic
This plugin creates a mosaic of images coming from the different channels as they are scanned.
It can be configured to select the size/number of images, the speed of refresh, how and if channels are scanned,
if the name of the channel should be displayed.
- Drawer
Very simple plugin which uses BView drawing APIs to draw in the bitmap. It simply draws a simple text over the bitmap.
This plugin demonstrate also how to make a configuration window for plugins.
- Horizontal Flip
Reverses the image as a mirror would do.
- Pass Filter
Does some kind of difference between adjacent pixels. (Play with the source code!)
- Overlayer
"Invisible" effect which should allow the output to be brought on screen via an overlay instead of via a blit.
In other words, instead of doing a DrawBitmap, the bitmap's content will be copied in the buffer of an overlay bitmap
causing the image to be displayed on the screen directly.
- Deinterlacer
De-interlaces the image to remove those ugly horizontal line effects which are visible when the image changes a lot.
The algorithm is very basic but fast (line duplication), and should be replaced with something better. Volunteers are
welcomed!
Only useful for higher resolutions.
Known bugs & problems
- Plugins properties must be very well set, or you will see unexpected behaviors, especially with the overlay &
process in place properties.
- Frame grabbing doesn't is done before effect processing.
Left to do
This is a work in progress. Here is what could/should be added:
- More flexible Activation/deactivation/ordering of plugins,
- Events: let plugin engines know that the channel what changed, a preset renamed, etc.
- Add hooks so that plugins operating on overlays can also operate on the overlay mask itself to
incrust effects over the overlay itself.
- Support for more host functionalities, such as control over audio level and/or image quality.
- Implement as many useful effects as possible!
StampTV's Video Plugin License
© 2001, Georges-Edouard Berenger, All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistribution of source code must retain the above copyright
notice, this list of conditions, and the following disclaimer.
- Redistribution in binary form must reproduce the above copyright
notice, this list of conditions, and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
I will be glad to hear about your bug reports, problems, comments, flames, suggestions...
You can mail me directly : Georges-Edouard Berenger.
stampTV is provided with source code for anyone to play with. If you want to contribute
with any improvement or bug fix, please let me know!
I will see if it makes sense for the official distribution.
Before you do any major work, why don't you drop me a line to be sure efforts are not duplicate?
That will prevent frustration for everyone!
History
v1.0 (October 7th 2001)