EyeQ Docs

Performance Optimization

Optimize iOS Video SDK performance with frame skipping and memory management

This guide explains performance optimization strategies for the iOS Video SDK, including frame rate management and memory efficiency.

GPU acceleration

iOS automatically uses GPU acceleration through Metal when available. No configuration is required.

Frame skipping strategies

Frame skipping reduces processing load by reusing corrections from previous frames. This trades some responsiveness for better performance on lower-end devices or high frame rate video. Higher values can also improve video quality by reducing flicker.

Use setParams() to configure frame skipping:

// Parameters: deflickerCurve, deflickerImage, skip

// Process all frames (highest quality)
pfcDynamic.setParams(deflickerCurve: 0.08, deflickerImage: 0.9, skip: 0)

// Skip every other frame (balanced)
pfcDynamic.setParams(deflickerCurve: 0.08, deflickerImage: 0.9, skip: 1)

// Skip 2 frames between processed frames (performance mode)
pfcDynamic.setParams(deflickerCurve: 0.08, deflickerImage: 0.9, skip: 2)
ParameterDescriptionRecommended value
deflickerCurveCurve averaging for deflicker0.08
deflickerImageImage averaging for deflicker0.9
skipNumber of frames to skip between inferences0–2

To reset the deflicker state:

pfcDynamic.resetDeflicker()

Memory management

Use autoreleasepool for batch processing to manage memory efficiently:

func processFrames(images: [CGImage], strength: Float) -> [CGImage] {
    var results: [CGImage] = []

    for image in images {
        autoreleasepool {
            if let processed = try? pfcDynamic.processImage(image, strength: strength) {
                results.append(processed)
            }
        }
    }

    return results
}

Performance tips

Do

  • Use frame skipping for video on lower-end devices
  • Process on background queues — never block the main thread
  • Reset deflicker state when switching video sources

Don't

  • Block the main thread during processing
  • Process full-resolution images when a lower resolution would suffice
  • Call resetDeflicker() on every frame

VIDEO-SDK Version 1.0.0.23 built from aa5eef97017e23db1d3051b079500606825ef474 on 5-6-2023.

Copyright © 2026 EyeQ Imaging Inc. All rights reserved.

On this page