From the docs:
The imageBuffer parameter must be in one of the following formats:
- kCVPixelFormatType_32ARGB
- kCVPixelFormatType_422YpCbCr8
- kCVPixelFormatType_32BGRA
You can try the route Image Buffer → IOSurface → CIImage instead.
Maybe the surface-based CIImage initializer does some implicit conversion:
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
IOSurfaceRef surface = CVPixelBufferGetIOSurface(imageBuffer);
CIImage* ciImage = [[CIImage alloc] initWithIOSurface:surface];
If this doesn't work, you could reconfigure your output settings so that the sample buffers are provided in one of the supported pixel formats.