sto usando glReadPixels
per leggere i dati in un CVPixelBufferRef
. Io uso CVPixelBufferRef
come input in un AVAssetWriter
. Sfortunatamente i formati dei pixel sembrano non corrispondere.formati pixel, CVPixelBufferRefs e glReadPixels
Penso glReadPixels
sta tornando dati pixel in RGBA formato mentre AVAssetWriter
vuole dati dei pixel in formato ARGB . Qual è il modo migliore per convertire RGBA a ARGB?
Ecco quello che ho provato finora:
manipolazione- po 'sulla falsariga di argb = (RGBA >> 8) | (RGBA < < 24)
- utilizzando un
CGImageRef
come passo intermedio
La manipolazione bit non ha funzionato perché CVPixelBufferRef non sembra supportare pedici. Il passaggio intermedio CGImageRef
funziona ... ma preferirei non avere 50 righe di codice in più che potrebbero potenzialmente essere un successo in termini di prestazioni.
Come si ottiene il CVPixelBufferRef?Stai chiamando CVPixelBufferCreate? In tal caso, cosa passi come parametro pixelFormatType? Che formato stai passando a glReadPixels? –
Sto passando 'kCVPixelFormatType_32ARGB' a' CVPixelBufferCreate'. Passo 'GL_RBGA' a' glReadPixels'. Ho provato a passare un formato RBGA a 'CVPixelBufferCreate', ma non ha funzionato (i colori danneggiati o l'app si è bloccata). – MrDatabase