Commit 27a90b04 authored by Michael Niedermayer's avatar Michael Niedermayer

Fix rgb15/16 vs. bgr part2.

Originally committed as revision 27517 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
parent 544a0f47
...@@ -705,7 +705,7 @@ ...@@ -705,7 +705,7 @@
" jb 1b \n\t" " jb 1b \n\t"
#define WRITEBGR32(dst, dstw, index) REAL_WRITEBGR32(dst, dstw, index) #define WRITEBGR32(dst, dstw, index) REAL_WRITEBGR32(dst, dstw, index)
#define REAL_WRITEBGR16(dst, dstw, index) \ #define REAL_WRITERGB16(dst, dstw, index) \
"pand "MANGLE(bF8)", %%mm2 \n\t" /* B */\ "pand "MANGLE(bF8)", %%mm2 \n\t" /* B */\
"pand "MANGLE(bFC)", %%mm4 \n\t" /* G */\ "pand "MANGLE(bFC)", %%mm4 \n\t" /* G */\
"pand "MANGLE(bF8)", %%mm5 \n\t" /* R */\ "pand "MANGLE(bF8)", %%mm5 \n\t" /* R */\
...@@ -731,9 +731,9 @@ ...@@ -731,9 +731,9 @@
"add $8, "#index" \n\t"\ "add $8, "#index" \n\t"\
"cmp "#dstw", "#index" \n\t"\ "cmp "#dstw", "#index" \n\t"\
" jb 1b \n\t" " jb 1b \n\t"
#define WRITEBGR16(dst, dstw, index) REAL_WRITEBGR16(dst, dstw, index) #define WRITERGB16(dst, dstw, index) REAL_WRITERGB16(dst, dstw, index)
#define REAL_WRITEBGR15(dst, dstw, index) \ #define REAL_WRITERGB15(dst, dstw, index) \
"pand "MANGLE(bF8)", %%mm2 \n\t" /* B */\ "pand "MANGLE(bF8)", %%mm2 \n\t" /* B */\
"pand "MANGLE(bF8)", %%mm4 \n\t" /* G */\ "pand "MANGLE(bF8)", %%mm4 \n\t" /* G */\
"pand "MANGLE(bF8)", %%mm5 \n\t" /* R */\ "pand "MANGLE(bF8)", %%mm5 \n\t" /* R */\
...@@ -760,7 +760,7 @@ ...@@ -760,7 +760,7 @@
"add $8, "#index" \n\t"\ "add $8, "#index" \n\t"\
"cmp "#dstw", "#index" \n\t"\ "cmp "#dstw", "#index" \n\t"\
" jb 1b \n\t" " jb 1b \n\t"
#define WRITEBGR15(dst, dstw, index) REAL_WRITEBGR15(dst, dstw, index) #define WRITERGB15(dst, dstw, index) REAL_WRITERGB15(dst, dstw, index)
#define WRITEBGR24OLD(dst, dstw, index) \ #define WRITEBGR24OLD(dst, dstw, index) \
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */\ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */\
...@@ -1082,7 +1082,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1082,7 +1082,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
: "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S
); );
return; return;
case PIX_FMT_BGR555: case PIX_FMT_RGB555:
YSCALEYUV2PACKEDX_ACCURATE YSCALEYUV2PACKEDX_ACCURATE
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
...@@ -1092,10 +1092,10 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1092,10 +1092,10 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
"paddusb "MANGLE(r5Dither)", %%mm5\n\t" "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
#endif #endif
WRITEBGR15(%4, %5, %%REGa) WRITERGB15(%4, %5, %%REGa)
YSCALEYUV2PACKEDX_END YSCALEYUV2PACKEDX_END
return; return;
case PIX_FMT_BGR565: case PIX_FMT_RGB565:
YSCALEYUV2PACKEDX_ACCURATE YSCALEYUV2PACKEDX_ACCURATE
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
...@@ -1105,7 +1105,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1105,7 +1105,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
"paddusb "MANGLE(r5Dither)", %%mm5\n\t" "paddusb "MANGLE(r5Dither)", %%mm5\n\t"
#endif #endif
WRITEBGR16(%4, %5, %%REGa) WRITERGB16(%4, %5, %%REGa)
YSCALEYUV2PACKEDX_END YSCALEYUV2PACKEDX_END
return; return;
case PIX_FMT_YUYV422: case PIX_FMT_YUYV422:
...@@ -1142,7 +1142,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1142,7 +1142,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
: "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S : "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S
); );
return; return;
case PIX_FMT_BGR555: case PIX_FMT_RGB555:
YSCALEYUV2PACKEDX YSCALEYUV2PACKEDX
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
...@@ -1152,10 +1152,10 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1152,10 +1152,10 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR15(%4, %5, %%REGa) WRITERGB15(%4, %5, %%REGa)
YSCALEYUV2PACKEDX_END YSCALEYUV2PACKEDX_END
return; return;
case PIX_FMT_BGR565: case PIX_FMT_RGB565:
YSCALEYUV2PACKEDX YSCALEYUV2PACKEDX
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
...@@ -1165,7 +1165,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1165,7 +1165,7 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR16(%4, %5, %%REGa) WRITERGB16(%4, %5, %%REGa)
YSCALEYUV2PACKEDX_END YSCALEYUV2PACKEDX_END
return; return;
case PIX_FMT_YUYV422: case PIX_FMT_YUYV422:
...@@ -1454,7 +1454,7 @@ FULL_YSCALEYUV2RGB ...@@ -1454,7 +1454,7 @@ FULL_YSCALEYUV2RGB
"a" (&c->redDither) "a" (&c->redDither)
); );
return; return;
case PIX_FMT_BGR555: case PIX_FMT_RGB555:
asm volatile( asm volatile(
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
"mov %4, %%"REG_b" \n\t" "mov %4, %%"REG_b" \n\t"
...@@ -1467,7 +1467,7 @@ FULL_YSCALEYUV2RGB ...@@ -1467,7 +1467,7 @@ FULL_YSCALEYUV2RGB
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR15(%%REGb, 8280(%5), %%REGBP) WRITERGB15(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
...@@ -1475,7 +1475,7 @@ FULL_YSCALEYUV2RGB ...@@ -1475,7 +1475,7 @@ FULL_YSCALEYUV2RGB
"a" (&c->redDither) "a" (&c->redDither)
); );
return; return;
case PIX_FMT_BGR565: case PIX_FMT_RGB565:
asm volatile( asm volatile(
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
"mov %4, %%"REG_b" \n\t" "mov %4, %%"REG_b" \n\t"
...@@ -1488,7 +1488,7 @@ FULL_YSCALEYUV2RGB ...@@ -1488,7 +1488,7 @@ FULL_YSCALEYUV2RGB
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR16(%%REGb, 8280(%5), %%REGBP) WRITERGB16(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
:: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest), :: "c" (buf0), "d" (buf1), "S" (uvbuf0), "D" (uvbuf1), "m" (dest),
...@@ -1565,7 +1565,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1565,7 +1565,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"a" (&c->redDither) "a" (&c->redDither)
); );
return; return;
case PIX_FMT_BGR555: case PIX_FMT_RGB555:
asm volatile( asm volatile(
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
"mov %4, %%"REG_b" \n\t" "mov %4, %%"REG_b" \n\t"
...@@ -1577,7 +1577,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1577,7 +1577,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "MANGLE(g5Dither)", %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR15(%%REGb, 8280(%5), %%REGBP) WRITERGB15(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
...@@ -1585,7 +1585,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1585,7 +1585,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"a" (&c->redDither) "a" (&c->redDither)
); );
return; return;
case PIX_FMT_BGR565: case PIX_FMT_RGB565:
asm volatile( asm volatile(
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
"mov %4, %%"REG_b" \n\t" "mov %4, %%"REG_b" \n\t"
...@@ -1598,7 +1598,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1598,7 +1598,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR16(%%REGb, 8280(%5), %%REGBP) WRITERGB16(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
...@@ -1654,7 +1654,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1654,7 +1654,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"a" (&c->redDither) "a" (&c->redDither)
); );
return; return;
case PIX_FMT_BGR555: case PIX_FMT_RGB555:
asm volatile( asm volatile(
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
"mov %4, %%"REG_b" \n\t" "mov %4, %%"REG_b" \n\t"
...@@ -1666,7 +1666,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1666,7 +1666,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "MANGLE(g5Dither)", %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR15(%%REGb, 8280(%5), %%REGBP) WRITERGB15(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
...@@ -1674,7 +1674,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1674,7 +1674,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"a" (&c->redDither) "a" (&c->redDither)
); );
return; return;
case PIX_FMT_BGR565: case PIX_FMT_RGB565:
asm volatile( asm volatile(
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" "mov %%"REG_b", "ESP_OFFSET"(%5) \n\t"
"mov %4, %%"REG_b" \n\t" "mov %4, %%"REG_b" \n\t"
...@@ -1687,7 +1687,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1687,7 +1687,7 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "MANGLE(r5Dither)", %%mm5 \n\t"
#endif #endif
WRITEBGR16(%%REGb, 8280(%5), %%REGBP) WRITERGB16(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" "mov "ESP_OFFSET"(%5), %%"REG_b" \n\t"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment