<!--
{
  "availability" : [
    "iOS: 10.0.0 -",
    "iPadOS: 10.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.12.0 -",
    "tvOS: 10.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreImage",
  "identifier" : "/documentation/CoreImage/CIImageProcessorInput",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Core Image"
    ],
    "preciseIdentifier" : "c:objc(pl)CIImageProcessorInput"
  },
  "title" : "CIImageProcessorInput"
}
-->

# CIImageProcessorInput

A container of image data and information for use in a custom image processor.

```
protocol CIImageProcessorInput
```

## Overview

Your app does not define classes that adopt this protocol; Core Image provides an object of this type when applying a custom image processor you create with a [`CIImageProcessorKernel`](/documentation/CoreImage/CIImageProcessorKernel) subclass.

In your image processor class’ [`process(with:arguments:output:)`](/documentation/CoreImage/CIImageProcessorKernel/process(with:arguments:output:)) method, use the provided `CIImageProcessorInput` object to access the image data and supporting information to perform your custom image processing routine. For example, if you process the image using a Metal shader, use the [`metalTexture`](/documentation/CoreImage/CIImageProcessorInput/metalTexture) property to bind the image as an input texture. Or, if you process the image using a CPU-based routine, use the [`baseAddress`](/documentation/CoreImage/CIImageProcessorInput/baseAddress) property to access pixel data in memory.

To finish setting up or performing your image processing routine, use the provided [`CIImageProcessorOutput`](/documentation/CoreImage/CIImageProcessorOutput) object to return processed pixel data to Core Image.

## Topics

### Accessing Input Image Data

[`baseAddress`](/documentation/CoreImage/CIImageProcessorInput/baseAddress)

The base address of CPU memory that your Core Image Processor Kernel can read pixels from.

[`metalTexture`](/documentation/CoreImage/CIImageProcessorInput/metalTexture)

A MTLTexture object that can be bound for input using Metal.

[`pixelBuffer`](/documentation/CoreImage/CIImageProcessorInput/pixelBuffer)

An input pixel buffer object that your Core Image Processor Kernel can read from.

[`surface`](/documentation/CoreImage/CIImageProcessorInput/surface)

An input surface object that your Core Image Processor Kernel can read from.

### Getting Supplemental Information for Image Processing

[`region`](/documentation/CoreImage/CIImageProcessorInput/region)

The rectangular region of the input image that your Core Image Processor Kernel can use to provide the output.

[`bytesPerRow`](/documentation/CoreImage/CIImageProcessorInput/bytesPerRow)

The bytes per row of the CPU memory that your Core Image Processor Kernel can read pixelsfrom.

[`format`](/documentation/CoreImage/CIImageProcessorInput/format)

The pixel format of the CPU memory that your Core Image Processor Kernel can read pixels from.

### Instance Properties

[`digest`](/documentation/CoreImage/CIImageProcessorInput/digest)

A 64-bit digest that uniquely describes the contents of the input to a processor.

[`roiTileCount`](/documentation/CoreImage/CIImageProcessorInput/roiTileCount)

This property tells a tiled-input processor how many input tiles will be processed.

[`roiTileIndex`](/documentation/CoreImage/CIImageProcessorInput/roiTileIndex)

This property tells a tiled-input processor which input tile index is being processed.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)