¿Cómo cargar una estructura de píxeles en un registro SSE?

1 minuto de lectura

avatar de usuario
fuz

Tengo una estructura de datos de píxeles de 8 bits:

struct __attribute__((aligned(4))) pixels {
    char r;
    char g;
    char b;
    char a;
}

Quiero usar instrucciones SSE para calcular ciertas cosas en estos píxeles (es decir, una transformación de Paeth). ¿Cómo puedo cargar estos píxeles en un registro SSE como enteros sin signo de 32 bits?

  • Mis píxeles no están firmados. Necesito mapearlos al rango. [0..255] en esos enteros con signo.

    – fuz

    25 de agosto de 2012 a las 14:57

  • @FUZxxl Ok, entonces la primera solución funcionará perfectamente (también la he usado exactamente para el mismo propósito). Pero como se dijo, considere usar unsigned charen lugar de charentonces

    – Christian Raú

    25 de agosto de 2012 a las 15:02

  • ¡Gracias! Por cierto, ¿también sabes cómo deshacer esa transformación?

    – fuz

    25 de agosto de 2012 a las 15:14

  • ¡Gracias! Sin embargo, para mi aplicación, no necesito saturación. ¿Hay alguna solución que utilice el truncamiento en su lugar?

    – fuz

    25 de agosto de 2012 a las 15:45

  • _mm_ cvtepi8_epi32 puede ser útil aquí. O puede desempaquetar en los bytes altos de palabras y luego en las palabras altas de dwords y luego cambiar con signo a la derecha por 24.

    – harold

    26 de agosto de 2012 a las 10:49


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad