As you can see the Hollywood author suggest some (new) implementation to add in Picasso96 (but maybe now directly in graphics.library as Picasso96 turned obsolete?) in order to activate a proper overlay support in Hollywood and so support it correctly also under AmigaOS4 + oldest gfx cards
http://www.hollywood-mal.com/forums/vie ... =10&t=1155
Direct quotation from the Hollywood author:
Hmm, I don't think the Picasso96 PIP APIs are sufficient to achieve what I
want. I'd need the following:
PIP window must be embedded in my main window. This means that clipping
must be done in case the PIP window exceeds the boundaries of my main
window. Consider the following case:
Main window is 800x600
PIP window is 352x288
Now the user moves the PIP window to offset (-100|-100) via Hollywood API
SetVideoPosition(vh, -100, -100) or something. This means that 100 columns
on the left and 100 rows on the top side of the PIP window must be cut off now,
and the factual size of the PIP window is now only 252x188 pixels, although I'm
still feeding 352x288 sized YUV data of course.
The same applies when the user moves the PIP window to offset (700|500).
This would mean that 252 columns on the right side and 188 rows on the bottom
side have to be cut off. The effective size of the PIP window will be 100x100
pixels now.
AFAICS, it's not possible to have Picasso96 API doing this automatically. Instead,
I'd have to do the YUV clipping on my own, then recreate the whole shebang using
the clipped coordinates. This will of course look very quirky when the user is
doing certain things, i.e. he could attach a playing video to the mouse pointer.
As long as no clipping needs to be done, the video will move very smoothly but
as soon as the user starts to move the mouse cursor in a way that the video is
only partly visible, it will get very flickery because the PIP window has to be
destroyed and recreated constantly. Not very good.
What I'd need is a new tag for p96PIP_OpenTagList() that allows me to set a
clipping rectangle. The PIP window should then only fetch YUV data that is
within this clipping rectangle. With such a new tag, translating a PIP window
by (-100|-100) outside of my main window's boundaries, could easily be achieved
by doing something like this:
struct Rect32 rc;
rc.MinX = 100;
rc.MinY = 100;
rc.MaxX = 351;
rc.MaxY = 287;
p96PIP_OpenTags(
P96PIP_SourceWidth, 352,
P96PIP_SourceHeight, 288,
P96PIP_ClipRect, &rc, // PROPOSAL!
P96PIP_Left, 0,
P96PIP_Top, 0,
P96PIP_Width, 252,
P96PIP_Height, 188,
TAG_DONE
...);
CyberGraphX 5 can do all this but I don't see any possibility to do it with
Picasso96 (prove me wrong). So for now, I'll keep the OS4 backend in
software drawing mode until the APIs are more flexible...