Originally committed as revision 30327 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscaletags/v0.6
@@ -2690,13 +2690,13 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d | |||||
c->chrMmx2FilterCode = av_malloc(c->chrMmx2FilterCodeSize); | c->chrMmx2FilterCode = av_malloc(c->chrMmx2FilterCodeSize); | ||||
#endif | #endif | ||||
FF_ALLOCZ_OR_GOTO(c, c->lumMmx2Filter , (dstW /8+8)*sizeof(int16_t), fail); | |||||
FF_ALLOCZ_OR_GOTO(c, c->chrMmx2Filter , (c->chrDstW /4+8)*sizeof(int16_t), fail); | |||||
FF_ALLOCZ_OR_GOTO(c, c->lumMmx2FilterPos, (dstW /2/8+8)*sizeof(int32_t), fail); | |||||
FF_ALLOCZ_OR_GOTO(c, c->chrMmx2FilterPos, (c->chrDstW/2/4+8)*sizeof(int32_t), fail); | |||||
FF_ALLOCZ_OR_GOTO(c, c->hLumFilter , (dstW /8+8)*sizeof(int16_t), fail); | |||||
FF_ALLOCZ_OR_GOTO(c, c->hChrFilter , (c->chrDstW /4+8)*sizeof(int16_t), fail); | |||||
FF_ALLOCZ_OR_GOTO(c, c->hLumFilterPos, (dstW /2/8+8)*sizeof(int32_t), fail); | |||||
FF_ALLOCZ_OR_GOTO(c, c->hChrFilterPos, (c->chrDstW/2/4+8)*sizeof(int32_t), fail); | |||||
initMMX2HScaler( dstW, c->lumXInc, c->lumMmx2FilterCode, c->lumMmx2Filter, c->lumMmx2FilterPos, 8); | |||||
initMMX2HScaler(c->chrDstW, c->chrXInc, c->chrMmx2FilterCode, c->chrMmx2Filter, c->chrMmx2FilterPos, 4); | |||||
initMMX2HScaler( dstW, c->lumXInc, c->lumMmx2FilterCode, c->hLumFilter, c->hLumFilterPos, 8); | |||||
initMMX2HScaler(c->chrDstW, c->chrXInc, c->chrMmx2FilterCode, c->hChrFilter, c->hChrFilterPos, 4); | |||||
#ifdef MAP_ANONYMOUS | #ifdef MAP_ANONYMOUS | ||||
mprotect(c->lumMmx2FilterCode, c->lumMmx2FilterCodeSize, PROT_EXEC | PROT_READ); | mprotect(c->lumMmx2FilterCode, c->lumMmx2FilterCodeSize, PROT_EXEC | PROT_READ); | ||||
@@ -3423,10 +3423,6 @@ void sws_freeContext(SwsContext *c) | |||||
c->chrMmx2FilterCode=NULL; | c->chrMmx2FilterCode=NULL; | ||||
#endif /* ARCH_X86 && CONFIG_GPL */ | #endif /* ARCH_X86 && CONFIG_GPL */ | ||||
av_freep(&c->lumMmx2Filter); | |||||
av_freep(&c->chrMmx2Filter); | |||||
av_freep(&c->lumMmx2FilterPos); | |||||
av_freep(&c->chrMmx2FilterPos); | |||||
av_freep(&c->yuvTable); | av_freep(&c->yuvTable); | ||||
av_free(c); | av_free(c); | ||||
@@ -114,10 +114,6 @@ typedef struct SwsContext { | |||||
int chrMmx2FilterCodeSize; | int chrMmx2FilterCodeSize; | ||||
uint8_t *lumMmx2FilterCode; | uint8_t *lumMmx2FilterCode; | ||||
uint8_t *chrMmx2FilterCode; | uint8_t *chrMmx2FilterCode; | ||||
int32_t *lumMmx2FilterPos; | |||||
int32_t *chrMmx2FilterPos; | |||||
int16_t *lumMmx2Filter; | |||||
int16_t *chrMmx2Filter; | |||||
int canMMX2BeUsed; | int canMMX2BeUsed; | ||||
@@ -2260,8 +2260,8 @@ static inline void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst, | |||||
{ | { | ||||
#if ARCH_X86 && CONFIG_GPL | #if ARCH_X86 && CONFIG_GPL | ||||
#if COMPILE_TEMPLATE_MMX2 | #if COMPILE_TEMPLATE_MMX2 | ||||
int32_t *mmx2FilterPos = c->lumMmx2FilterPos; | |||||
int16_t *mmx2Filter = c->lumMmx2Filter; | |||||
int32_t *filterPos = c->hLumFilterPos; | |||||
int16_t *filter = c->hLumFilter; | |||||
int canMMX2BeUsed = c->canMMX2BeUsed; | int canMMX2BeUsed = c->canMMX2BeUsed; | ||||
void *mmx2FilterCode= c->lumMmx2FilterCode; | void *mmx2FilterCode= c->lumMmx2FilterCode; | ||||
int i; | int i; | ||||
@@ -2316,7 +2316,7 @@ static inline void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst, | |||||
#if defined(PIC) | #if defined(PIC) | ||||
"mov %5, %%"REG_b" \n\t" | "mov %5, %%"REG_b" \n\t" | ||||
#endif | #endif | ||||
:: "m" (src), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), | |||||
:: "m" (src), "m" (dst), "m" (filter), "m" (filterPos), | |||||
"m" (mmx2FilterCode) | "m" (mmx2FilterCode) | ||||
#if defined(PIC) | #if defined(PIC) | ||||
,"m" (ebxsave) | ,"m" (ebxsave) | ||||
@@ -2409,8 +2409,8 @@ static inline void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst, | |||||
{ | { | ||||
#if ARCH_X86 && CONFIG_GPL | #if ARCH_X86 && CONFIG_GPL | ||||
#if COMPILE_TEMPLATE_MMX2 | #if COMPILE_TEMPLATE_MMX2 | ||||
int32_t *mmx2FilterPos = c->chrMmx2FilterPos; | |||||
int16_t *mmx2Filter = c->chrMmx2Filter; | |||||
int32_t *filterPos = c->hChrFilterPos; | |||||
int16_t *filter = c->hChrFilter; | |||||
int canMMX2BeUsed = c->canMMX2BeUsed; | int canMMX2BeUsed = c->canMMX2BeUsed; | ||||
void *mmx2FilterCode= c->chrMmx2FilterCode; | void *mmx2FilterCode= c->chrMmx2FilterCode; | ||||
int i; | int i; | ||||
@@ -2452,7 +2452,7 @@ static inline void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst, | |||||
#if defined(PIC) | #if defined(PIC) | ||||
"mov %6, %%"REG_b" \n\t" | "mov %6, %%"REG_b" \n\t" | ||||
#endif | #endif | ||||
:: "m" (src1), "m" (dst), "m" (mmx2Filter), "m" (mmx2FilterPos), | |||||
:: "m" (src1), "m" (dst), "m" (filter), "m" (filterPos), | |||||
"m" (mmx2FilterCode), "m" (src2) | "m" (mmx2FilterCode), "m" (src2) | ||||
#if defined(PIC) | #if defined(PIC) | ||||
,"m" (ebxsave) | ,"m" (ebxsave) | ||||