mirror of https://github.com/mpv-player/mpv
Reuse h{lum,chr}Filter{,Pos} variables for MMX2 fast_bilinear horizontal scaler.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30327 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
5d8bd54019
commit
14fe9544f9
|
@ -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->hLumFilter , (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->hChrFilter , (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->hLumFilterPos, (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->hChrFilterPos, (c->chrDstW/2/4+8)*sizeof(int32_t), fail);
|
||||||
|
|
||||||
initMMX2HScaler( dstW, c->lumXInc, c->lumMmx2FilterCode, c->lumMmx2Filter, c->lumMmx2FilterPos, 8);
|
initMMX2HScaler( dstW, c->lumXInc, c->lumMmx2FilterCode, c->hLumFilter, c->hLumFilterPos, 8);
|
||||||
initMMX2HScaler(c->chrDstW, c->chrXInc, c->chrMmx2FilterCode, c->chrMmx2Filter, c->chrMmx2FilterPos, 4);
|
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;
|
int32_t *filterPos = c->hLumFilterPos;
|
||||||
int16_t *mmx2Filter = c->lumMmx2Filter;
|
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;
|
int32_t *filterPos = c->hChrFilterPos;
|
||||||
int16_t *mmx2Filter = c->chrMmx2Filter;
|
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)
|
||||||
|
|
Loading…
Reference in New Issue