GPUImage imageFromCurrentFramebuffer returns nil sometimes for GPUImageLookupFilter, and these are subclasses

I use GPUImagefor my project and I get into this problem where it imageFromCurrentFramebufferreturns nil for some of GPUImageLookupFilter's.

I am subclassing GPUImageFilterGroupas in GPUImageAmatorkaFilter, my code is as follows:

-(MTLookupFilter *) initWithLookupImageName:(NSString *) lookupImageName {
self = [super init];
if (self) {
    UIImage *image = [UIImage imageNamed:lookupImageName];
    self.lookupImageSource = [[GPUImagePicture alloc] initWithImage:image];
    GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init];
    [self addFilter:lookupFilter];
    [self.lookupImageSource addTarget:lookupFilter atTextureLocation:1];
    [self.lookupImageSource processImage];
    self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil];
    self.terminalFilter = lookupFilter;
}
return self; 
}

I have several objects of this class added to the array, and I use:

- (IBAction)filterAction:(id)sender {
      NSInteger index = arc4random()%self.filtersArray.count;
      id filter = self.filtersArray[index];
      GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:self.fullImage];
      UIImage *filteredimage = nil;
      [stillImageSource addTarget:filter];
      [stillImageSource processImage];
      [filter useNextFrameForImageCapture];
      filteredimage = [filter imageFromCurrentFramebuffer];

      if (filteredimage) {
          self.imageView.image = filteredimage;
      } else {
          NSLog(@"Filtered image is nil");
      }
  }

The returned image from is imageFromCurrentFramebuffersometimes null, and I don’t understand why this is happening. I would be grateful for any help. Sometimes the image is zero even for filters GPUImageAmatorkaFilter, GPUImageSoftEleganceFilterand `GPUImageMissEtikateFilter, so I know that this is not a problem with my subclass.

+4
source share

Source: https://habr.com/ru/post/1541569/


All Articles