mirror of https://github.com/mpv-player/mpv
Fix rgb15/16 vs. bgr part2.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27517 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
b387cc68b6
commit
b8d98f8959
|
@ -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 @@
|
||||||
"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 @@
|
||||||
"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_
|
||||||
: "%"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_
|
||||||
"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_
|
||||||
"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_
|
||||||
: "%"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_
|
||||||
"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_
|
||||||
"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
|
||||||
"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
|
||||||
"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
|
||||||
"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
|
||||||
"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 *
|
||||||
"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 *
|
||||||
"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 *
|
||||||
"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 *
|
||||||
"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 *
|
||||||
"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 *
|
||||||
"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 *
|
||||||
"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 *
|
||||||
"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"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue