Search code examples
iosobjective-cgpuimage

How to apply GPUImageMaskFilter on GPUImageGaussianBlurFilter for GPUImageVideoCamera


I am trying to apply GPUImageGaussianBlurFilter to live camera feed masking with a PNG image. Also i need to mention that PNG image is not a square or circle but a closed Bezier Path.

Here is my code :

GPUImageVideoCamera *videoCamera;
GPUImageView *view1;

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationLandscapeRight;
CGRect movieFrame = CGRectMake(0.0, 0.0, 640.0, 480.0);

view1 = [[GPUImageView alloc] initWithFrame:movieFrame];
[self.view addSubview:view1];

GPUImageMaskFilter * maskFilter = [[GPUImageMaskFilter alloc] init];

[videoCamera addTarget:maskFilter];

GPUImageGaussianBlurFilter * gaussianBlurFilter = [[GPUImageGaussianBlurFilter alloc] init];
[gaussianBlurFilter setBlurRadiusInPixels:3.0];
[gaussianBlurFilter addTarget:maskFilter];

GPUImagePicture * maskGPUImage = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"mask2"] smoothlyScaleOutput:YES];
[maskGPUImage addTarget:maskFilter];
[maskGPUImage processImage];

[maskFilter addTarget:view1];

[videoCamera startCameraCapture];

But Xcode 6.0.1 breaks execution after compile in "GPUImageFramebuffer.m" on line :

NSAssert(framebufferReferenceCount > 0, @"Tried to overrelease a framebuffer, did you forget to call -useNextFrameForImageCapture before using -imageFromCurrentFramebuffer?");

Using OSX Mavericks 10.9.5, iPad Air for testing

Regards


Solution

  • I found the solution; the references should be strong. Weak references are released early