Thanks Steve,
There is no down-stream node in this current test but I totally take on
board what you say and, of course, there will be down-stream nodes
requesting data in real life use. I will go over my _engine code and
see if I can track down where exactly data is getting requested outside
the bounding box. It will hopefully be a trivial mistake that is easy
to fix... so close with this now!
Thanks again,
Steve
On 29/04/13 19:13, Steve Booth wrote:
Steve,
This sounds like a bad _engine reference to me. Remember, your engine
method is being called by the down-stream node, and it's being passed the
REQUESTED line start/stop, and NOT the expected, or even the line you,
yourself had requested from the up-stream node. There is, in fact, no
guarantee whatever, that what you asked for as input is the same as what is
requested of you as output. If you assume you will be asked for only what
you expect, then you will probably crash when the bounding-rectangle exceeds
the input rectangle.
So, my recommendation would be to look carefully at both the starting point
and line-length parameters in your _engine call. Make sure you're not being
asked for data you don't have. If you are, return zero/black.
Steve
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Steve
Newbold
Sent: Monday, April 29, 2013 9:52 AM
To: [email protected]
Subject: [Nuke-dev] Iop crashing with bounding box
I have a filter that works fine with a plate but as soon as run it with
anything with a bounding box inside the image bounds I get an instant crash.
I've tried this with rotoshapes and just cropping a the plate down.
I can only assume I'm trying to access some info that is outside the
bounding box but I'm not sure where. I've tried the following two methods
in _validate() both with the same (crashing) result. I get no output from
the console after the crash.
copy_info();
info_.y(info_.y() - sizeY);
info_.t(info_.t() + sizeY);
info_.x(info_.x() - sizeX);
info_.r(info_.r() + sizeX);
And,
copy_info();
info_.pad(std::max(sizeX, sizeY));
And then I'm requesting the following.
input(0)->request( x - sizeX , y - sizeY , r + sizeX, t + sizeY, channels,
count );
And this should give me the enough pixels at the bounding box to process
my filter, where sizeX is an integer value rounded up from the width of
my filter.
I know this is a little vague, but any ideas what is going wrong. As I
said it works correctly unless the bounding box is INSIDE the image bounds.
Cheers,
Steve
_______________________________________________
Nuke-dev mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
_______________________________________________
Nuke-dev mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
_______________________________________________
Nuke-dev mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev