Commit 88e2a9ae authored by Carl Eugen Hoyos's avatar Carl Eugen Hoyos

Remove b5Dither, g5Dither and r5Dither from libswscale.

Originally committed as revision 27718 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
parent 460a4fb9
...@@ -205,10 +205,6 @@ DECLARE_ASM_CONST(8, uint64_t, bm00000111)=0x0000000000FFFFFFLL; ...@@ -205,10 +205,6 @@ DECLARE_ASM_CONST(8, uint64_t, bm00000111)=0x0000000000FFFFFFLL;
DECLARE_ASM_CONST(8, uint64_t, bm11111000)=0xFFFFFFFFFF000000LL; DECLARE_ASM_CONST(8, uint64_t, bm11111000)=0xFFFFFFFFFF000000LL;
DECLARE_ASM_CONST(8, uint64_t, bm01010101)=0x00FF00FF00FF00FFLL; DECLARE_ASM_CONST(8, uint64_t, bm01010101)=0x00FF00FF00FF00FFLL;
static volatile uint64_t attribute_used __attribute__((aligned(8))) b5Dither;
static volatile uint64_t attribute_used __attribute__((aligned(8))) g5Dither;
static volatile uint64_t attribute_used __attribute__((aligned(8))) r5Dither;
const DECLARE_ALIGNED(8, uint64_t, ff_dither4[2]) = { const DECLARE_ALIGNED(8, uint64_t, ff_dither4[2]) = {
0x0103010301030103LL, 0x0103010301030103LL,
0x0200020002000200LL,}; 0x0200020002000200LL,};
......
...@@ -1091,9 +1091,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1091,9 +1091,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2\n\t" "paddusb "BLUE_DITHER"(%0), %%mm2\n\t"
"paddusb "MANGLE(g5Dither)", %%mm4\n\t" "paddusb "GREEN_DITHER"(%0), %%mm4\n\t"
"paddusb "MANGLE(r5Dither)", %%mm5\n\t" "paddusb "RED_DITHER"(%0), %%mm5\n\t"
#endif #endif
WRITERGB15(%4, %5, %%REGa) WRITERGB15(%4, %5, %%REGa)
...@@ -1104,9 +1104,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1104,9 +1104,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2\n\t" "paddusb "BLUE_DITHER"(%0), %%mm2\n\t"
"paddusb "MANGLE(g5Dither)", %%mm4\n\t" "paddusb "GREEN_DITHER"(%0), %%mm4\n\t"
"paddusb "MANGLE(r5Dither)", %%mm5\n\t" "paddusb "RED_DITHER"(%0), %%mm5\n\t"
#endif #endif
WRITERGB16(%4, %5, %%REGa) WRITERGB16(%4, %5, %%REGa)
...@@ -1151,9 +1151,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1151,9 +1151,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%0), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%0), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%0), %%mm5 \n\t"
#endif #endif
WRITERGB15(%4, %5, %%REGa) WRITERGB15(%4, %5, %%REGa)
...@@ -1164,9 +1164,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_ ...@@ -1164,9 +1164,9 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, int16_t *lumFilter, int16_
YSCALEYUV2RGBX YSCALEYUV2RGBX
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%0), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%0), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%0), %%mm5 \n\t"
#endif #endif
WRITERGB16(%4, %5, %%REGa) WRITERGB16(%4, %5, %%REGa)
...@@ -1468,9 +1468,9 @@ FULL_YSCALEYUV2RGB ...@@ -1468,9 +1468,9 @@ FULL_YSCALEYUV2RGB
YSCALEYUV2RGB(%%REGBP, %5) YSCALEYUV2RGB(%%REGBP, %5)
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
#endif #endif
WRITERGB15(%%REGb, 8280(%5), %%REGBP) WRITERGB15(%%REGb, 8280(%5), %%REGBP)
...@@ -1489,9 +1489,9 @@ FULL_YSCALEYUV2RGB ...@@ -1489,9 +1489,9 @@ FULL_YSCALEYUV2RGB
YSCALEYUV2RGB(%%REGBP, %5) YSCALEYUV2RGB(%%REGBP, %5)
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
#endif #endif
WRITERGB16(%%REGb, 8280(%5), %%REGBP) WRITERGB16(%%REGb, 8280(%5), %%REGBP)
...@@ -1581,9 +1581,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1581,9 +1581,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
YSCALEYUV2RGB1(%%REGBP, %5) YSCALEYUV2RGB1(%%REGBP, %5)
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
#endif #endif
WRITERGB15(%%REGb, 8280(%5), %%REGBP) WRITERGB15(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
...@@ -1601,9 +1601,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1601,9 +1601,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
YSCALEYUV2RGB1(%%REGBP, %5) YSCALEYUV2RGB1(%%REGBP, %5)
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
#endif #endif
WRITERGB16(%%REGb, 8280(%5), %%REGBP) WRITERGB16(%%REGb, 8280(%5), %%REGBP)
...@@ -1670,9 +1670,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1670,9 +1670,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
YSCALEYUV2RGB1b(%%REGBP, %5) YSCALEYUV2RGB1b(%%REGBP, %5)
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
#endif #endif
WRITERGB15(%%REGb, 8280(%5), %%REGBP) WRITERGB15(%%REGb, 8280(%5), %%REGBP)
"pop %%"REG_BP" \n\t" "pop %%"REG_BP" \n\t"
...@@ -1690,9 +1690,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t * ...@@ -1690,9 +1690,9 @@ static inline void RENAME(yuv2packed1)(SwsContext *c, uint16_t *buf0, uint16_t *
YSCALEYUV2RGB1b(%%REGBP, %5) YSCALEYUV2RGB1b(%%REGBP, %5)
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ /* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm2 \n\t" "paddusb "BLUE_DITHER"(%5), %%mm2 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm4 \n\t" "paddusb "GREEN_DITHER"(%5), %%mm4 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm5 \n\t" "paddusb "RED_DITHER"(%5), %%mm5 \n\t"
#endif #endif
WRITERGB16(%%REGb, 8280(%5), %%REGBP) WRITERGB16(%%REGb, 8280(%5), %%REGBP)
...@@ -3091,12 +3091,12 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s ...@@ -3091,12 +3091,12 @@ static int RENAME(swScale)(SwsContext *c, uint8_t* src[], int srcStride[], int s
} }
#ifdef HAVE_MMX #ifdef HAVE_MMX
b5Dither= ff_dither8[dstY&1]; c->blueDither= ff_dither8[dstY&1];
if (c->dstFormat == PIX_FMT_RGB555 || c->dstFormat == PIX_FMT_BGR555) if (c->dstFormat == PIX_FMT_RGB555 || c->dstFormat == PIX_FMT_BGR555)
g5Dither= ff_dither8[dstY&1]; c->greenDither= ff_dither8[dstY&1];
else else
g5Dither= ff_dither4[dstY&1]; c->greenDither= ff_dither4[dstY&1];
r5Dither= ff_dither8[(dstY+1)&1]; c->redDither= ff_dither8[(dstY+1)&1];
#endif #endif
if (dstY < dstH-2) if (dstY < dstH-2)
{ {
......
...@@ -54,12 +54,6 @@ DECLARE_ASM_CONST(8, uint64_t, mmx_00ffw) = 0x00ff00ff00ff00ffULL; ...@@ -54,12 +54,6 @@ DECLARE_ASM_CONST(8, uint64_t, mmx_00ffw) = 0x00ff00ff00ff00ffULL;
DECLARE_ASM_CONST(8, uint64_t, mmx_redmask) = 0xf8f8f8f8f8f8f8f8ULL; DECLARE_ASM_CONST(8, uint64_t, mmx_redmask) = 0xf8f8f8f8f8f8f8f8ULL;
DECLARE_ASM_CONST(8, uint64_t, mmx_grnmask) = 0xfcfcfcfcfcfcfcfcULL; DECLARE_ASM_CONST(8, uint64_t, mmx_grnmask) = 0xfcfcfcfcfcfcfcfcULL;
// The volatile is required because gcc otherwise optimizes some writes away
// not knowing that these are read in the ASM block.
static volatile uint64_t attribute_used __attribute__((aligned(8))) b5Dither;
static volatile uint64_t attribute_used __attribute__((aligned(8))) g5Dither;
static volatile uint64_t attribute_used __attribute__((aligned(8))) r5Dither;
#undef HAVE_MMX #undef HAVE_MMX
//MMX versions //MMX versions
......
...@@ -134,7 +134,7 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr ...@@ -134,7 +134,7 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr
if(h_size*2 > FFABS(dstStride[0])) h_size-=8; if(h_size*2 > FFABS(dstStride[0])) h_size-=8;
asm volatile ("pxor %mm4, %mm4;" /* zero mm4 */ ); asm volatile ("pxor %mm4, %mm4;" /* zero mm4 */ );
//printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0], //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&c->blueDither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0],
//srcStride[0],srcStride[1],srcStride[2],dstStride[0]); //srcStride[0],srcStride[1],srcStride[2],dstStride[0]);
for (y= 0; y<srcSliceH; y++ ) { for (y= 0; y<srcSliceH; y++ ) {
uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0];
...@@ -143,9 +143,9 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr ...@@ -143,9 +143,9 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr
uint8_t *pv = src[2] + (y>>1)*srcStride[2]; uint8_t *pv = src[2] + (y>>1)*srcStride[2];
long index= -h_size/2; long index= -h_size/2;
b5Dither= ff_dither8[y&1]; c->blueDither= ff_dither8[y&1];
g5Dither= ff_dither4[y&1]; c->greenDither= ff_dither4[y&1];
r5Dither= ff_dither8[(y+1)&1]; c->redDither= ff_dither8[(y+1)&1];
/* This MMX assembly code deals with a SINGLE scan line at a time, /* This MMX assembly code deals with a SINGLE scan line at a time,
* it converts 8 pixels in each iteration. */ * it converts 8 pixels in each iteration. */
asm volatile ( asm volatile (
...@@ -164,9 +164,9 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr ...@@ -164,9 +164,9 @@ static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStr
YUV2RGB YUV2RGB
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm0;" "paddusb "BLUE_DITHER"(%4), %%mm0;"
"paddusb "MANGLE(g5Dither)", %%mm2;" "paddusb "GREEN_DITHER"(%4), %%mm2;"
"paddusb "MANGLE(r5Dither)", %%mm1;" "paddusb "RED_DITHER"(%4), %%mm1;"
#endif #endif
/* mask unneeded bits off */ /* mask unneeded bits off */
"pand "MANGLE(mmx_redmask)", %%mm0;" /* b7b6b5b4 b3_0_0_0 b7b6b5b4 b3_0_0_0 */ "pand "MANGLE(mmx_redmask)", %%mm0;" /* b7b6b5b4 b3_0_0_0 b7b6b5b4 b3_0_0_0 */
...@@ -228,7 +228,7 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr ...@@ -228,7 +228,7 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr
if(h_size*2 > FFABS(dstStride[0])) h_size-=8; if(h_size*2 > FFABS(dstStride[0])) h_size-=8;
asm volatile ("pxor %mm4, %mm4;" /* zero mm4 */ ); asm volatile ("pxor %mm4, %mm4;" /* zero mm4 */ );
//printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0], //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&c->blueDither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0],
//srcStride[0],srcStride[1],srcStride[2],dstStride[0]); //srcStride[0],srcStride[1],srcStride[2],dstStride[0]);
for (y= 0; y<srcSliceH; y++ ) { for (y= 0; y<srcSliceH; y++ ) {
uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0];
...@@ -237,9 +237,9 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr ...@@ -237,9 +237,9 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr
uint8_t *pv = src[2] + (y>>1)*srcStride[2]; uint8_t *pv = src[2] + (y>>1)*srcStride[2];
long index= -h_size/2; long index= -h_size/2;
b5Dither= ff_dither8[y&1]; c->blueDither= ff_dither8[y&1];
g5Dither= ff_dither8[y&1]; c->greenDither= ff_dither8[y&1];
r5Dither= ff_dither8[(y+1)&1]; c->redDither= ff_dither8[(y+1)&1];
/* This MMX assembly code deals with a SINGLE scan line at a time, /* This MMX assembly code deals with a SINGLE scan line at a time,
* it converts 8 pixels in each iteration. */ * it converts 8 pixels in each iteration. */
asm volatile ( asm volatile (
...@@ -252,9 +252,9 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr ...@@ -252,9 +252,9 @@ static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStr
YUV2RGB YUV2RGB
#ifdef DITHER1XBPP #ifdef DITHER1XBPP
"paddusb "MANGLE(b5Dither)", %%mm0 \n\t" "paddusb "BLUE_DITHER"(%4), %%mm0 \n\t"
"paddusb "MANGLE(g5Dither)", %%mm2 \n\t" "paddusb "GREEN_DITHER"(%4), %%mm2 \n\t"
"paddusb "MANGLE(r5Dither)", %%mm1 \n\t" "paddusb "RED_DITHER"(%4), %%mm1 \n\t"
#endif #endif
/* mask unneeded bits off */ /* mask unneeded bits off */
......
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