iOS: обрезка CMSampleBufferRef перед добавлением в AVAssetWriterInput

В настоящее время я экспериментирую с CoreImage, изучая, как применять CIFilters к каналу камеры. В настоящее время мне удалось взять подачу камеры, применить фильтр и записать канал в AVAssetWriter в виде видео, но одна проблема, с которой я связан, заключается в том, что во время процесса фильтрации я фактически обрезаю данные изображения так что он всегда имеет квадратные размеры (необходимо для других аспектов проекта)

Мой процесс выглядит следующим образом:

  1. Захват фида с использованием AVCaptureSession
  2. Возьмите CMSampleBufferRef из вывода захвата и приобретите CVPixelBufferRef
  3. Получите базовый адрес CVPixelBufferRef и создайте CGBitmapContext, используя базовый адрес в качестве своих данных (чтобы мы могли перезаписать его)
  4. Преобразуйте CVPixelBufferRef в CIImage (используя один из конструкторов CIImage)
  5. Примените фильтры к CIImage
  6. Преобразование CIImage в CGImageRef
  7. Нарисуйте CGImageRef в CGBitmapContext (в результате чего содержимое буферов образцов будет перезаписано)
  8. Добавьте CMSampleBufferRef в AVAssetWriterInput.

Не рисуя CGImageRef контексту, это то, что я получаю:

введите описание изображения здесь

После рисования CGImageRef контекст, это то, что я получаю:

введите описание изображения здесь

В идеале я просто хочу сказать CMSampleBufferRef, что он имеет новые измерения, так что дополнительная информация опущена. Но мне интересно, нужно ли вообще создавать новый CMSampleBufferRef.

Любая помощь будет принята с благодарностью!

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.