Estoy usando glReadPixels
para leer los datos en un CVPixelBufferRef
. Uso el CVPixelBufferRef
como entrada en un AVAssetWriter
. Lamentablemente, los formatos de píxeles parecen no coincidir.Formatos de píxeles, CVPixelBufferRefs y glReadPixels
creo glReadPixels
está volviendo datos de píxeles en formato RGBA mientras AVAssetWriter
quiere datos de píxeles en formato ARGB. ¿Cuál es la mejor forma de convertir RGBA en ARGB?
Aquí es lo que he probado hasta ahora:
manipulación- poco a lo largo de las líneas de ARGB = (RGBA >> 8) | (RGBA < < 24)
- usando un
CGImageRef
como un paso intermedio
La manipulación de bits no funcionó porque CVPixelBufferRef no parece apoyar subíndices. El paso intermedio CGImageRef
funciona ... pero prefiero no tener 50 líneas adicionales de código que podrían ser un golpe de rendimiento.
¿Cómo está obteniendo su CVPixelBufferRef?¿Estás llamando a CVPixelBufferCreate? Si es así, ¿qué estás pasando como el parámetro pixelFormatType? ¿Qué formato estás pasando a glReadPixels? –
Estoy pasando 'kCVPixelFormatType_32ARGB' a' CVPixelBufferCreate'. Paso 'GL_RBGA' a' glReadPixels'. Traté de pasar un formato RBGA a 'CVPixelBufferCreate', pero no funcionó (los colores no son buenos o la aplicación se bloqueó). – MrDatabase