Я использую glReadPixels
для чтения данных в CVPixelBufferRef
. Я использую CVPixelBufferRef
в качестве входных данных в AVAssetWriter
. К сожалению, форматы пикселей не совпадают.
Я думаю, что glReadPixels
возвращает пиксельные данные в формате RGBA , тогда как AVAssetWriter
запрашивает пиксельные данные в формате ARGB . Как лучше всего преобразовать RGBA в ARGB ?
Вот что я пробовал до сих пор:
CGImageRef
в качестве промежуточного шага Битовые манипуляции не работают, потому что CVPixelBufferRef, похоже, не поддерживает индексы. Промежуточный шаг CGImageRef
действительно работает ... но я бы предпочел не иметь 50 дополнительных строк кода, которые потенциально могут снизить производительность.