---
title: "process(with:arguments:outputs:)"
framework: coreimage
role: symbol
role_heading: Type Method
path: "coreimage/ciimageprocessorkernel/process(with:arguments:outputs:)"
---

# process(with:arguments:outputs:)

Override this class method of your Core Image Processor Kernel subclass if it needs to produce multiple outputs.

## Declaration

```swift
class func process(with inputs: [any CIImageProcessorInput]?, arguments: [String : Any]?, outputs: [any CIImageProcessorOutput]) throws
```

## Parameters

- `inputs`: An array of id<CIImageProcessorInput> that the class consumes to produce its output. The input.region may be larger than the rect returned by doc://com.apple.coreimage/documentation/CoreImage/CIImageProcessorKernel/roi(forInput:arguments:outputRect:).
- `arguments`: The arguments dictionary that was passed to doc://com.apple.coreimage/documentation/CoreImage/CIImageProcessorKernel/apply(withExtent:inputs:arguments:).
- `outputs`: An array id<CIImageProcessorOutput> that the CIImageProcessorKernel must provide results to.

## Discussion

Discussion This supports 0, 1, 2 or more input images and 2 or more output images. When a CIImage containing your CIImageProcessorKernel class is rendered, your class’ implementation of this method will be called as needed for that render.  The method may be called more than once if Core Image needs to tile to limit memory usage. When your implementation of this class method is called, use the provided inputs and arguments objects to return processed pixel data to Core Image via multiple outputs. important: This is a class method so that you cannot use or capture any state by accident. All the parameters that affect the output results must be passed to apply(withExtent:inputs:arguments:).
