|
|
|
@@ -588,7 +588,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
}\ |
|
|
|
A1>>=19;\ |
|
|
|
A2>>=19;\ |
|
|
|
}\ |
|
|
|
} |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_PACKEDX_C(type,alpha) \ |
|
|
|
YSCALE_YUV_2_PACKEDX_NOCLIP_C(type,alpha)\ |
|
|
|
@@ -633,7 +633,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
A >>=19;\ |
|
|
|
if (A&256)\ |
|
|
|
A = av_clip_uint8(A);\ |
|
|
|
}\ |
|
|
|
} |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_RGBX_FULL_C(rnd,alpha) \ |
|
|
|
YSCALE_YUV_2_PACKEDX_FULL_C(rnd>>3,alpha)\ |
|
|
|
@@ -650,8 +650,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
else if (G<0)G=0; \ |
|
|
|
if (B>=(256<<22)) B=(256<<22)-1; \ |
|
|
|
else if (B<0)B=0; \ |
|
|
|
}\ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_GRAY16_C \ |
|
|
|
for (i=0; i<(dstW>>1); i++) {\ |
|
|
|
@@ -680,7 +679,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
YSCALE_YUV_2_PACKEDX_C(type,alpha) /* FIXME fix tables so that clipping is not needed and then use _NOCLIP*/\ |
|
|
|
r = (type *)c->table_rV[V]; \ |
|
|
|
g = (type *)(c->table_gU[U] + c->table_gV[V]); \ |
|
|
|
b = (type *)c->table_bU[U]; \ |
|
|
|
b = (type *)c->table_bU[U]; |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_PACKED2_C(type,alpha) \ |
|
|
|
for (i=0; i<(dstW>>1); i++) { \ |
|
|
|
@@ -694,19 +693,19 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
if (alpha) {\ |
|
|
|
A1= (abuf0[i2 ]*yalpha1+abuf1[i2 ]*yalpha)>>19; \ |
|
|
|
A2= (abuf0[i2+1]*yalpha1+abuf1[i2+1]*yalpha)>>19; \ |
|
|
|
}\ |
|
|
|
} |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_GRAY16_2_C \ |
|
|
|
for (i=0; i<(dstW>>1); i++) { \ |
|
|
|
const int i2= 2*i; \ |
|
|
|
int Y1= (buf0[i2 ]*yalpha1+buf1[i2 ]*yalpha)>>11; \ |
|
|
|
int Y2= (buf0[i2+1]*yalpha1+buf1[i2+1]*yalpha)>>11; \ |
|
|
|
int Y2= (buf0[i2+1]*yalpha1+buf1[i2+1]*yalpha)>>11; |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_RGB2_C(type,alpha) \ |
|
|
|
YSCALE_YUV_2_PACKED2_C(type,alpha)\ |
|
|
|
r = (type *)c->table_rV[V];\ |
|
|
|
g = (type *)(c->table_gU[U] + c->table_gV[V]);\ |
|
|
|
b = (type *)c->table_bU[U];\ |
|
|
|
b = (type *)c->table_bU[U]; |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_PACKED1_C(type,alpha) \ |
|
|
|
for (i=0; i<(dstW>>1); i++) {\ |
|
|
|
@@ -720,19 +719,19 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
if (alpha) {\ |
|
|
|
A1= abuf0[i2 ]>>7;\ |
|
|
|
A2= abuf0[i2+1]>>7;\ |
|
|
|
}\ |
|
|
|
} |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_GRAY16_1_C \ |
|
|
|
for (i=0; i<(dstW>>1); i++) {\ |
|
|
|
const int i2= 2*i;\ |
|
|
|
int Y1= buf0[i2 ]<<1;\ |
|
|
|
int Y2= buf0[i2+1]<<1;\ |
|
|
|
int Y2= buf0[i2+1]<<1; |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_RGB1_C(type,alpha) \ |
|
|
|
YSCALE_YUV_2_PACKED1_C(type,alpha)\ |
|
|
|
r = (type *)c->table_rV[V];\ |
|
|
|
g = (type *)(c->table_gU[U] + c->table_gV[V]);\ |
|
|
|
b = (type *)c->table_bU[U];\ |
|
|
|
b = (type *)c->table_bU[U]; |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_PACKED1B_C(type,alpha) \ |
|
|
|
for (i=0; i<(dstW>>1); i++) {\ |
|
|
|
@@ -746,13 +745,13 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
if (alpha) {\ |
|
|
|
A1= abuf0[i2 ]>>7;\ |
|
|
|
A2= abuf0[i2+1]>>7;\ |
|
|
|
}\ |
|
|
|
} |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_RGB1B_C(type,alpha) \ |
|
|
|
YSCALE_YUV_2_PACKED1B_C(type,alpha)\ |
|
|
|
r = (type *)c->table_rV[V];\ |
|
|
|
g = (type *)(c->table_gU[U] + c->table_gV[V]);\ |
|
|
|
b = (type *)c->table_bU[U];\ |
|
|
|
b = (type *)c->table_bU[U]; |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_MONO2_C \ |
|
|
|
const uint8_t * const d128=dither_8x8_220[y&7];\ |
|
|
|
@@ -769,7 +768,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
acc+= acc + g[((buf0[i+7]*yalpha1+buf1[i+7]*yalpha)>>19) + d128[7]];\ |
|
|
|
((uint8_t*)dest)[0]= c->dstFormat == PIX_FMT_MONOBLACK ? acc : ~acc;\ |
|
|
|
dest++;\ |
|
|
|
}\ |
|
|
|
} |
|
|
|
|
|
|
|
#define YSCALE_YUV_2_MONOX_C \ |
|
|
|
const uint8_t * const d128=dither_8x8_220[y&7];\ |
|
|
|
@@ -987,7 +986,7 @@ static inline void yuv2nv12XinC(const int16_t *lumFilter, const int16_t **lumSrc |
|
|
|
((uint8_t*)dest)[2*i2+3]= Y2>>8;\ |
|
|
|
} \ |
|
|
|
break;\ |
|
|
|
}\ |
|
|
|
} |
|
|
|
|
|
|
|
static inline void yuv2packedXinC(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, |
|
|
|
const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, |
|
|
|
|