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)| Parameter | Description | Recommended value |
|---|---|---|
deflickerCurve | Curve averaging for deflicker | 0.08 |
deflickerImage | Image averaging for deflicker | 0.9 |
skip | Number of frames to skip between inferences | 0–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.