swscale: remove if(accurate_rnd) branch from functions.
This commit is contained in:
parent
2b04858a10
commit
835ab9207e
@ -827,11 +827,10 @@
|
|||||||
#define WRITEYUY2(dst, dstw, index) REAL_WRITEYUY2(dst, dstw, index)
|
#define WRITEYUY2(dst, dstw, index) REAL_WRITEYUY2(dst, dstw, index)
|
||||||
|
|
||||||
|
|
||||||
static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
|
static inline void RENAME(yuv2yuvX_ar)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
|
||||||
const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, const int16_t **alpSrc,
|
const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, const int16_t **alpSrc,
|
||||||
uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW)
|
uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW)
|
||||||
{
|
{
|
||||||
if (c->flags & SWS_ACCURATE_RND) {
|
|
||||||
if (uDest) {
|
if (uDest) {
|
||||||
YSCALEYUV2YV12X_ACCURATE( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW)
|
YSCALEYUV2YV12X_ACCURATE( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW)
|
||||||
YSCALEYUV2YV12X_ACCURATE(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW)
|
YSCALEYUV2YV12X_ACCURATE(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW)
|
||||||
@ -841,7 +840,12 @@ static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter, con
|
|||||||
}
|
}
|
||||||
|
|
||||||
YSCALEYUV2YV12X_ACCURATE("0", LUM_MMX_FILTER_OFFSET, dest, dstW)
|
YSCALEYUV2YV12X_ACCURATE("0", LUM_MMX_FILTER_OFFSET, dest, dstW)
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
|
||||||
|
const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize, const int16_t **alpSrc,
|
||||||
|
uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW)
|
||||||
|
{
|
||||||
if (uDest) {
|
if (uDest) {
|
||||||
YSCALEYUV2YV12X( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW)
|
YSCALEYUV2YV12X( "0", CHR_MMX_FILTER_OFFSET, uDest, chrDstW)
|
||||||
YSCALEYUV2YV12X(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW)
|
YSCALEYUV2YV12X(AV_STRINGIFY(VOF), CHR_MMX_FILTER_OFFSET, vDest, chrDstW)
|
||||||
@ -851,10 +855,9 @@ static inline void RENAME(yuv2yuvX)(SwsContext *c, const int16_t *lumFilter, con
|
|||||||
}
|
}
|
||||||
|
|
||||||
YSCALEYUV2YV12X("0", LUM_MMX_FILTER_OFFSET, dest, dstW)
|
YSCALEYUV2YV12X("0", LUM_MMX_FILTER_OFFSET, dest, dstW)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const int16_t *chrSrc, const int16_t *alpSrc,
|
static inline void RENAME(yuv2yuv1_ar)(SwsContext *c, const int16_t *lumSrc, const int16_t *chrSrc, const int16_t *alpSrc,
|
||||||
uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW)
|
uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW)
|
||||||
{
|
{
|
||||||
long p= 4;
|
long p= 4;
|
||||||
@ -862,7 +865,6 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const
|
|||||||
uint8_t *dst[4]= {aDest, dest, uDest, vDest};
|
uint8_t *dst[4]= {aDest, dest, uDest, vDest};
|
||||||
x86_reg counter[4]= {dstW, dstW, chrDstW, chrDstW};
|
x86_reg counter[4]= {dstW, dstW, chrDstW, chrDstW};
|
||||||
|
|
||||||
if (c->flags & SWS_ACCURATE_RND) {
|
|
||||||
while(p--) {
|
while(p--) {
|
||||||
if (dst[p]) {
|
if (dst[p]) {
|
||||||
__asm__ volatile(
|
__asm__ volatile(
|
||||||
@ -873,7 +875,16 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const int16_t *chrSrc, const int16_t *alpSrc,
|
||||||
|
uint8_t *dest, uint8_t *uDest, uint8_t *vDest, uint8_t *aDest, long dstW, long chrDstW)
|
||||||
|
{
|
||||||
|
long p= 4;
|
||||||
|
const uint8_t *src[4]= {alpSrc + dstW, lumSrc + dstW, chrSrc + chrDstW, chrSrc + VOFW + chrDstW};
|
||||||
|
uint8_t *dst[4]= {aDest, dest, uDest, vDest};
|
||||||
|
x86_reg counter[4]= {dstW, dstW, chrDstW, chrDstW};
|
||||||
|
|
||||||
while(p--) {
|
while(p--) {
|
||||||
if (dst[p]) {
|
if (dst[p]) {
|
||||||
__asm__ volatile(
|
__asm__ volatile(
|
||||||
@ -884,21 +895,19 @@ static inline void RENAME(yuv2yuv1)(SwsContext *c, const int16_t *lumSrc, const
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* vertical scale YV12 to RGB
|
* vertical scale YV12 to RGB
|
||||||
*/
|
*/
|
||||||
static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
|
static inline void RENAME(yuv2packedX_ar)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
|
||||||
const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize,
|
const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize,
|
||||||
const int16_t **alpSrc, uint8_t *dest, long dstW, long dstY)
|
const int16_t **alpSrc, uint8_t *dest, long dstW, long dstY)
|
||||||
{
|
{
|
||||||
x86_reg dummy=0;
|
x86_reg dummy=0;
|
||||||
x86_reg dstW_reg = dstW;
|
x86_reg dstW_reg = dstW;
|
||||||
|
|
||||||
if (c->flags & SWS_ACCURATE_RND) {
|
|
||||||
switch(c->dstFormat) {
|
switch(c->dstFormat) {
|
||||||
case PIX_FMT_RGB32:
|
case PIX_FMT_RGB32:
|
||||||
if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {
|
if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {
|
||||||
@ -979,8 +988,20 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter,
|
|||||||
YSCALEYUV2PACKEDX_END
|
YSCALEYUV2PACKEDX_END
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
switch(c->dstFormat) {
|
yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
|
||||||
|
chrFilter, chrSrc, chrFilterSize,
|
||||||
|
alpSrc, dest, dstW, dstY);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
|
||||||
|
const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize,
|
||||||
|
const int16_t **alpSrc, uint8_t *dest, long dstW, long dstY)
|
||||||
|
{
|
||||||
|
x86_reg dummy=0;
|
||||||
|
x86_reg dstW_reg = dstW;
|
||||||
|
|
||||||
|
switch(c->dstFormat) {
|
||||||
case PIX_FMT_RGB32:
|
case PIX_FMT_RGB32:
|
||||||
if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {
|
if (CONFIG_SWSCALE_ALPHA && c->alpPixBuf) {
|
||||||
YSCALEYUV2PACKEDX
|
YSCALEYUV2PACKEDX
|
||||||
@ -1053,7 +1074,6 @@ static inline void RENAME(yuv2packedX)(SwsContext *c, const int16_t *lumFilter,
|
|||||||
YSCALEYUV2PACKEDX_END
|
YSCALEYUV2PACKEDX_END
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
|
yuv2packedXinC(c, lumFilter, lumSrc, lumFilterSize,
|
||||||
chrFilter, chrSrc, chrFilterSize,
|
chrFilter, chrSrc, chrFilterSize,
|
||||||
@ -2284,11 +2304,17 @@ static void RENAME(sws_init_swScale)(SwsContext *c)
|
|||||||
enum PixelFormat srcFormat = c->srcFormat;
|
enum PixelFormat srcFormat = c->srcFormat;
|
||||||
|
|
||||||
if (!(c->flags & SWS_BITEXACT)) {
|
if (!(c->flags & SWS_BITEXACT)) {
|
||||||
c->yuv2yuv1 = RENAME(yuv2yuv1 );
|
if (c->flags & SWS_ACCURATE_RND) {
|
||||||
c->yuv2yuvX = RENAME(yuv2yuvX );
|
c->yuv2yuv1 = RENAME(yuv2yuv1_ar );
|
||||||
|
c->yuv2yuvX = RENAME(yuv2yuvX_ar );
|
||||||
|
c->yuv2packedX = RENAME(yuv2packedX_ar );
|
||||||
|
} else {
|
||||||
|
c->yuv2yuv1 = RENAME(yuv2yuv1 );
|
||||||
|
c->yuv2yuvX = RENAME(yuv2yuvX );
|
||||||
|
c->yuv2packedX = RENAME(yuv2packedX );
|
||||||
|
}
|
||||||
c->yuv2packed1 = RENAME(yuv2packed1 );
|
c->yuv2packed1 = RENAME(yuv2packed1 );
|
||||||
c->yuv2packed2 = RENAME(yuv2packed2 );
|
c->yuv2packed2 = RENAME(yuv2packed2 );
|
||||||
c->yuv2packedX = RENAME(yuv2packedX );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
c->hScale = RENAME(hScale );
|
c->hScale = RENAME(hScale );
|
||||||
|
Loading…
Reference in New Issue
Block a user