Настроить пиксельный буфер объекта AVCapturePhoto
Я пытаюсь написать приложение для камеры, которое имитирует длинные выдержки, усредняя результаты, полученные с разных кадров. Я запрашиваю результаты захвата в формате RAW, и мне нужно будет сохранить результаты попиксельного среднего в файле DNG.
Мой наивный подход заключался бы в том, чтобы получить объект AVCapturePhoto из:
func photoOutput(_ output: AVCapturePhotoOutput,
didFinishProcessingPhoto photo: AVCapturePhoto,
error: Error?) { ... }
У фотообъекта есть свойство pixelBuffer (CVPixelBuffer), которое я могу использовать для своих операций. Что еще более важно, у него есть очень удобный метод: fileDataRepresentation(), который возвращает плоское представление данных, которое может быть записано в файл DNG. Мне бы очень понравилось использовать этот метод :)
Однако свойство pixelBuffer доступно только для чтения (поэтому я не могу его изменить), а класс AVCapturePhoto не имеет инициализатора. Я не смог найти способ создать подкласс AVCapturePhoto и переопределить свойство pixelBuffer.
Есть ли способ создать свой собственный объект AVCapturePhoto (или его подкласс) и использовать fileDataRepresentation() для записи файла DNG с настраиваемым пиксельным буфером?