Me preguntaba acerca de la diferencia entre los formatos de píxeles rgb y bgr disponibles en muchos códecs.
Me recuerda de alguna manera los sabores Big Endian y Little Endian de los procesadores de computadora.
Si bien siempre supuse que el big/little endian era más una cuestión de patentes que de rendimiento, ¿por qué tenemos tanto rgb como bgr?
Codificador huffyuv [Huffyuv / HuffYUV]:
capacidades de subprocesos: no
Formatos de píxeles compatibles: yuv422p rgb24 bgra
Tiene rgb24 pero no rgba como podría esperar. Salta directamente a bgra !
¿Podría ser nuevamente una cuestión de patentes que el autor del códec no pudo romper?
Si es posible, alimenta mi curiosidad con una explicación ampliada aquí. ¡Quiero saber algo más sobre estos diversos formatos de píxeles!
El orden de los componentes en RGB32 parece tener que ver con endianness :
PIX_FMT_RGB32 se maneja de una manera específica de endian. Un color RGBA se junta como: (A << 24) | (D<<16) | (G << 8) | B Esto se almacena como BGRA en arquitecturas de CPU little-endian y ARGB en CPU big-endian.
Las descripciones de los diversos formatos relacionados enumerados en esa página brindan más detalles.
Si bien siempre supuse que el big/little endian era más una cuestión de patentes que de rendimiento,
No, little endian se desarrolló como una optimización del rendimiento al pasar a palabras de varios bytes. https://en.wikipedia.org/wiki/Endianness#Optimización
Nada que ver con las patentes. Las diferentes representaciones tienen diferentes ventajas y desventajas. Por lo tanto, diferentes situaciones pueden usar diferentes representaciones. Los códecs sufren el efecto de red. Nadie quiere usar su codificador si nadie usa su decodificador. Y viceversa. Por lo tanto, los diseñadores de códecs buscan la máxima compatibilidad y, a menudo, admiten varios formatos. Pero por lo general no los admiten todos, porque hay docenas. Por lo tanto, utilizan una combinación de los más comunes y fáciles de incluir en el diseño.
usuario3450548
gian
pedro cordes