Swift: Применение LUT (таблицы поиска) к видео с помощью CIColorCube запаздывает

#ios #swift #core-image #cifilter #avvideocomposition

Вопрос:

Я уже знаю, как применить LUT к локальному видео с помощью CIColorCubeWithColorSpace. Проблема в том, что производительность немного отстает/замедляется. Примечание: если я применю фильтр CIF к видео со скоростью 60 кадров в секунду, задержка будет значительной.

Это мой код:

 let lutFilter = CIFilter.colorCubeWithColorSpace()

override func viewDidLoad() {
    lutFilter.cubeDimension = Float(64)
    lutFilter.colorSpace = CGColorSpaceCreateDeviceRGB()
    lutFilter.cubeData = LUTData // i've already created the lut data

    updateComposition()
}

func updateComposition() {
    player.currentItem?.videoComposition = AVVideoComposition(asset: player.currentItem!.asset, applyingCIFiltersWithHandler: { request in
        lutFilter.inputImage = request.sourceImage
        request.finish(with: lutFilter.outputImage, context: nil)
    })
}
 

Как его можно оптимизировать?