FxPlug using CIImage with CIFilter behave differently between Motion and Final Cut
FxPlug using CIImage with CIFilter behave differently between Motion and Final Cut
- Subject: FxPlug using CIImage with CIFilter behave differently between Motion and Final Cut
- From: "Jim George" <email@hidden>
- Date: Wed, 1 Oct 2008 15:22:41 +0800
Hello,
I've run into a discrepancy between the behavior of using Core Image
filters between Final Cut and Motion in an FxPlug and wonder if anyone
would have any insight into the problem.
I have a filter that takes a number of contiguous frames and runs some
processing over them. I am using the temporalImageAPI to get the
frames as FxTextures.
In Final Cut the filter comes out correctly, but in Motion only the
*last* frame gets drawn. I'm thinking somehow that Motion uses a
shared context or texture where final cut allocates new ones, but my
understanding of these under the hood is a bit of guesswork.
Below is the basics of what I'm doing in the Render method for FxPlug.
glPushAttrib(GL_CURRENT_BIT);
CIContext *ciContext = [CIContext contextWithCGLContext:CGLGetCurrentContext()
pixelFormat:CGLGetPixelFormat(CGLGetCurrentContext())
options:NULL];
CGColorSpaceRef cspace = CGColorSpaceCreateDeviceRGB();
FxTexture* inputTex;
[temporalImageAPI getInputTexture:&inputTex withInfo: renderInfo
atTime: renderInfo.frame - width/2];
CIImage* imageBase = [CIImage imageWithTexture:[inputTex textureId]
size:CGSizeMake([inputTex width],[inputTex height]) flipped:NO
colorSpace:cspace];
UInt32 frameStep = 0;
double i;
for(i = renderInfo.frame - width/2; i <= renderInfo.frame + width/2; i++){
[_filter setValue:imageBase forKey: @"inputBase"];
[temporalImageAPI getInputTexture:&inputTex withInfo: renderInfo atTime:i];
CIImage* inputImage = [CIImage imageWithTexture:[inputTex
textureId] size:CGSizeMake([inputTex width],[inputTex height])
flipped:NO colorSpace:cspace];
[_filter setValue:inputImage forKey:@"inputImage"];
imageBase = [_filter valueForKey:@"outputImage"];
}
[ciContext drawImage:imageBase
inRect:CGRectMake(left,bottom,right-left,top-bottom)
fromRect:CGRectMake(tLeft,tBottom,tRight-tLeft,tTop-tBottom)];
glPopAttrib();
Thanks!!
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Pro-apps-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden