It's an opaque type, which means you can't actually do anything with
it (which is why there is no API reference to it) all you can do is
pass it in to QuartzComposer methods that take image types. The proper
type would be "id" (note there is no *, id is a pointer type already)
sourceImage = [[QCRenderer QCImage] retain]; // I have no clue if
this is correct, but it seems to work.
There's no reason to do this. I'm not really sure what it would do,
but since you later overwrite the sourceImage with the output of your
renderer it's almost certainly leaking something.
Technically, you would not even need the sourceImage variable as
Objective-C allows you to do this:
[v001DestinationRenderer setValue:[v001SourceRenderer
valueForOutputKey:@"SourceOutput1" ofType:@"QCImage"]
forInputKey:@"DestinationInput1"];
On Feb 8, 2008, at 10:58 AM, vade wrote:
Actually, here is a question, what is the Type of QCImage?
I noticed an error using my guessed at type.
In my header, if I want to create a QCImage, doing
QCImage * sourceImage;
throws an error, and QCImage does not show up in the API docs
anywhere?
It works if I use NSImage, but my colleage who is a much more
experienced Cocoa programmer than I is under the impression if use
NSImage, it will convert it to CPU /bitmap stuff and do a type
conversion.
So, in short, How do I make a QCImage properly? Sorry for the
beginner questions, im half learning Cocoa while working on this, so
please forgive the extra traffic, and thanks to all that have helped
be on and off list.
On Feb 8, 2008, at 1:40 PM, vade wrote:
Yowza!
So I was retaining an CIImage * sourceImage on
applicationDidFinishLaunching and set the sourceImage for one
renderer, pass it to another, and also show it in a simple preview
window which was also openGL. Id create my CIImage with emptyImage
My patch, with a render timer at 60fps would output around 20/25 fps.
Now, I have:
- (void) applicationDidFinishLaunching:(NSNotification*)aNotification
{
<snip opengl setup and QC patch loading stuff>
sourceImage = [[QCRenderer QCImage] retain]; // I have no clue if
this is correct, but it seems to work.
}
and within my renderers I simply call ofType: as you suggested,
like so:
sourceImage = [v001SourceRenderer
valueForOutputKey:@"SourceOutput1" ofType:@"QCImage"];
My FPS now matches exactly that of QC. If I pump up my preferred
rendering speed, I can get a solid 60FPS, which I cant even get QC
to do.
Changing two lines of code, to change my FPS that drastically is
huge.
Thanks!
On Feb 8, 2008, at 12:47 PM, Troy Koelling wrote:
It will be better to use that opaque type than CVPixelBuffer
because it will be more flexible. If the internal representation
one day turns out to be a CIImage instead, then passing it as a
QCImage will not make a costly conversion.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list ([email protected]
)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/doktorp%40mac.com
This email sent to [EMAIL PROTECTED]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com
This email sent to [EMAIL PROTECTED]