Самый эффективный способ изменить содержимое CMSampleBuffer

Я хочу изменить содержимое CMSampleBuffer, а затем записать его в файл с помощью AVAssetWriter / AVAssetWriterInput.

Как я это делаю заключается в создании контекста растрового изображения Core Graphics и последующем рисовании в нем, но это слишком медленно. В частности, мне нужно нарисовать изображение в буфер.

Так можно ли дать какой-то намек или предложение о том, как сделать это более эффективно?

Я подумал об использовании OpenGL для этого, то есть сначала создать текстуру A из CMSampleBuffer. Затем визуализируйте текстуру B, созданную из изображения, которое я хочу нарисовать, в текстуру A, затем извлеките данные, поддерживающие текстуру A, из OpenGL и, наконец, передайте эти данные в AVAssetWriter / AVAssetWriterInput. Но в документации говорится, что передача данных текстуры из GPU обратно в CPU довольно затратна.

Итак, есть какие-нибудь предложения, как это сделать?

Заранее спасибо

6
задан skaffman 11 January 2011 в 21:20
поделиться