comparison libswscale/swscale_template.c @ 29090:319305829bdc

swscale: Remove mmx2 params from h[yc]scale().
author ramiro
date Thu, 02 Apr 2009 18:34:11 +0000
parents e3253ea94757
children 06c79db43cd8
comparison
equal deleted inserted replaced
29089:e3253ea94757 29090:319305829bdc
2259 } 2259 }
2260 } 2260 }
2261 2261
2262 // *** horizontal scale Y line to temp buffer 2262 // *** horizontal scale Y line to temp buffer
2263 static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, uint8_t *src, int srcW, int xInc, 2263 static inline void RENAME(hyscale)(SwsContext *c, uint16_t *dst, long dstWidth, uint8_t *src, int srcW, int xInc,
2264 int flags, int canMMX2BeUsed, int16_t *hLumFilter, 2264 int flags, int16_t *hLumFilter,
2265 int16_t *hLumFilterPos, int hLumFilterSize, void *funnyYCode, 2265 int16_t *hLumFilterPos, int hLumFilterSize,
2266 int srcFormat, uint8_t *formatConvBuffer, int16_t *mmx2Filter, 2266 int srcFormat, uint8_t *formatConvBuffer,
2267 int32_t *mmx2FilterPos, uint32_t *pal, int isAlpha) 2267 uint32_t *pal, int isAlpha)
2268 { 2268 {
2269 int32_t *mmx2FilterPos = c->lumMmx2FilterPos;
2270 int16_t *mmx2Filter = c->lumMmx2Filter;
2271 int canMMX2BeUsed = c->canMMX2BeUsed;
2272 void *funnyYCode = c->funnyYCode;
2273
2269 if (srcFormat==PIX_FMT_YUYV422 || srcFormat==PIX_FMT_GRAY16BE) 2274 if (srcFormat==PIX_FMT_YUYV422 || srcFormat==PIX_FMT_GRAY16BE)
2270 { 2275 {
2271 RENAME(yuy2ToY)(formatConvBuffer, src, srcW, pal); 2276 RENAME(yuy2ToY)(formatConvBuffer, src, srcW, pal);
2272 src= formatConvBuffer; 2277 src= formatConvBuffer;
2273 } 2278 }
2518 xpos+=xInc; 2523 xpos+=xInc;
2519 } 2524 }
2520 } 2525 }
2521 2526
2522 inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, uint8_t *src1, uint8_t *src2, 2527 inline static void RENAME(hcscale)(SwsContext *c, uint16_t *dst, long dstWidth, uint8_t *src1, uint8_t *src2,
2523 int srcW, int xInc, int flags, int canMMX2BeUsed, int16_t *hChrFilter, 2528 int srcW, int xInc, int flags, int16_t *hChrFilter,
2524 int16_t *hChrFilterPos, int hChrFilterSize, void *funnyUVCode, 2529 int16_t *hChrFilterPos, int hChrFilterSize,
2525 int srcFormat, uint8_t *formatConvBuffer, int16_t *mmx2Filter, 2530 int srcFormat, uint8_t *formatConvBuffer,
2526 int32_t *mmx2FilterPos, uint32_t *pal) 2531 uint32_t *pal)
2527 { 2532 {
2533 int32_t *mmx2FilterPos = c->chrMmx2FilterPos;
2534 int16_t *mmx2Filter = c->chrMmx2Filter;
2535 int canMMX2BeUsed = c->canMMX2BeUsed;
2536 void *funnyUVCode = c->funnyUVCode;
2537
2528 if (srcFormat==PIX_FMT_YUYV422) 2538 if (srcFormat==PIX_FMT_YUYV422)
2529 { 2539 {
2530 RENAME(yuy2ToUV)(formatConvBuffer, formatConvBuffer+VOFW, src1, src2, srcW, pal); 2540 RENAME(yuy2ToUV)(formatConvBuffer, formatConvBuffer+VOFW, src1, src2, srcW, pal);
2531 src1= formatConvBuffer; 2541 src1= formatConvBuffer;
2532 src2= formatConvBuffer+VOFW; 2542 src2= formatConvBuffer+VOFW;
2815 const int lumXInc= c->lumXInc; 2825 const int lumXInc= c->lumXInc;
2816 const int chrXInc= c->chrXInc; 2826 const int chrXInc= c->chrXInc;
2817 const int dstFormat= c->dstFormat; 2827 const int dstFormat= c->dstFormat;
2818 const int srcFormat= c->srcFormat; 2828 const int srcFormat= c->srcFormat;
2819 const int flags= c->flags; 2829 const int flags= c->flags;
2820 const int canMMX2BeUsed= c->canMMX2BeUsed;
2821 int16_t *vLumFilterPos= c->vLumFilterPos; 2830 int16_t *vLumFilterPos= c->vLumFilterPos;
2822 int16_t *vChrFilterPos= c->vChrFilterPos; 2831 int16_t *vChrFilterPos= c->vChrFilterPos;
2823 int16_t *hLumFilterPos= c->hLumFilterPos; 2832 int16_t *hLumFilterPos= c->hLumFilterPos;
2824 int16_t *hChrFilterPos= c->hChrFilterPos; 2833 int16_t *hChrFilterPos= c->hChrFilterPos;
2825 int16_t *vLumFilter= c->vLumFilter; 2834 int16_t *vLumFilter= c->vLumFilter;
2836 int16_t **lumPixBuf= c->lumPixBuf; 2845 int16_t **lumPixBuf= c->lumPixBuf;
2837 int16_t **chrPixBuf= c->chrPixBuf; 2846 int16_t **chrPixBuf= c->chrPixBuf;
2838 int16_t **alpPixBuf= c->alpPixBuf; 2847 int16_t **alpPixBuf= c->alpPixBuf;
2839 const int vLumBufSize= c->vLumBufSize; 2848 const int vLumBufSize= c->vLumBufSize;
2840 const int vChrBufSize= c->vChrBufSize; 2849 const int vChrBufSize= c->vChrBufSize;
2841 uint8_t *funnyYCode= c->funnyYCode;
2842 uint8_t *funnyUVCode= c->funnyUVCode;
2843 uint8_t *formatConvBuffer= c->formatConvBuffer; 2850 uint8_t *formatConvBuffer= c->formatConvBuffer;
2844 const int chrSrcSliceY= srcSliceY >> c->chrSrcVSubSample; 2851 const int chrSrcSliceY= srcSliceY >> c->chrSrcVSubSample;
2845 const int chrSrcSliceH= -((-srcSliceH) >> c->chrSrcVSubSample); 2852 const int chrSrcSliceH= -((-srcSliceH) >> c->chrSrcVSubSample);
2846 int lastDstY; 2853 int lastDstY;
2847 uint32_t *pal=c->pal_yuv; 2854 uint32_t *pal=c->pal_yuv;
2940 assert(lumBufIndex < 2*vLumBufSize); 2947 assert(lumBufIndex < 2*vLumBufSize);
2941 assert(lastInLumBuf + 1 - srcSliceY < srcSliceH); 2948 assert(lastInLumBuf + 1 - srcSliceY < srcSliceH);
2942 assert(lastInLumBuf + 1 - srcSliceY >= 0); 2949 assert(lastInLumBuf + 1 - srcSliceY >= 0);
2943 //printf("%d %d\n", lumBufIndex, vLumBufSize); 2950 //printf("%d %d\n", lumBufIndex, vLumBufSize);
2944 RENAME(hyscale)(c, lumPixBuf[ lumBufIndex ], dstW, src1, srcW, lumXInc, 2951 RENAME(hyscale)(c, lumPixBuf[ lumBufIndex ], dstW, src1, srcW, lumXInc,
2945 flags, canMMX2BeUsed, hLumFilter, hLumFilterPos, hLumFilterSize, 2952 flags, hLumFilter, hLumFilterPos, hLumFilterSize,
2946 funnyYCode, c->srcFormat, formatConvBuffer, 2953 c->srcFormat, formatConvBuffer,
2947 c->lumMmx2Filter, c->lumMmx2FilterPos, pal, 0); 2954 pal, 0);
2948 if (CONFIG_SWSCALE_ALPHA && alpPixBuf) 2955 if (CONFIG_SWSCALE_ALPHA && alpPixBuf)
2949 RENAME(hyscale)(c, alpPixBuf[ lumBufIndex ], dstW, src2, srcW, lumXInc, 2956 RENAME(hyscale)(c, alpPixBuf[ lumBufIndex ], dstW, src2, srcW, lumXInc,
2950 flags, canMMX2BeUsed, hLumFilter, hLumFilterPos, hLumFilterSize, 2957 flags, hLumFilter, hLumFilterPos, hLumFilterSize,
2951 funnyYCode, c->srcFormat, formatConvBuffer, 2958 c->srcFormat, formatConvBuffer,
2952 c->lumMmx2Filter, c->lumMmx2FilterPos, pal, 1); 2959 pal, 1);
2953 lastInLumBuf++; 2960 lastInLumBuf++;
2954 } 2961 }
2955 while(lastInChrBuf < lastChrSrcY) 2962 while(lastInChrBuf < lastChrSrcY)
2956 { 2963 {
2957 uint8_t *src1= src[1]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[1]; 2964 uint8_t *src1= src[1]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[1];
2962 assert(lastInChrBuf + 1 - chrSrcSliceY >= 0); 2969 assert(lastInChrBuf + 1 - chrSrcSliceY >= 0);
2963 //FIXME replace parameters through context struct (some at least) 2970 //FIXME replace parameters through context struct (some at least)
2964 2971
2965 if (!(isGray(srcFormat) || isGray(dstFormat))) 2972 if (!(isGray(srcFormat) || isGray(dstFormat)))
2966 RENAME(hcscale)(c, chrPixBuf[ chrBufIndex ], chrDstW, src1, src2, chrSrcW, chrXInc, 2973 RENAME(hcscale)(c, chrPixBuf[ chrBufIndex ], chrDstW, src1, src2, chrSrcW, chrXInc,
2967 flags, canMMX2BeUsed, hChrFilter, hChrFilterPos, hChrFilterSize, 2974 flags, hChrFilter, hChrFilterPos, hChrFilterSize,
2968 funnyUVCode, c->srcFormat, formatConvBuffer, 2975 c->srcFormat, formatConvBuffer,
2969 c->chrMmx2Filter, c->chrMmx2FilterPos, pal); 2976 pal);
2970 lastInChrBuf++; 2977 lastInChrBuf++;
2971 } 2978 }
2972 //wrap buf index around to stay inside the ring buffer 2979 //wrap buf index around to stay inside the ring buffer
2973 if (lumBufIndex >= vLumBufSize) lumBufIndex-= vLumBufSize; 2980 if (lumBufIndex >= vLumBufSize) lumBufIndex-= vLumBufSize;
2974 if (chrBufIndex >= vChrBufSize) chrBufIndex-= vChrBufSize; 2981 if (chrBufIndex >= vChrBufSize) chrBufIndex-= vChrBufSize;
2988 lumBufIndex++; 2995 lumBufIndex++;
2989 assert(lumBufIndex < 2*vLumBufSize); 2996 assert(lumBufIndex < 2*vLumBufSize);
2990 assert(lastInLumBuf + 1 - srcSliceY < srcSliceH); 2997 assert(lastInLumBuf + 1 - srcSliceY < srcSliceH);
2991 assert(lastInLumBuf + 1 - srcSliceY >= 0); 2998 assert(lastInLumBuf + 1 - srcSliceY >= 0);
2992 RENAME(hyscale)(c, lumPixBuf[ lumBufIndex ], dstW, src1, srcW, lumXInc, 2999 RENAME(hyscale)(c, lumPixBuf[ lumBufIndex ], dstW, src1, srcW, lumXInc,
2993 flags, canMMX2BeUsed, hLumFilter, hLumFilterPos, hLumFilterSize, 3000 flags, hLumFilter, hLumFilterPos, hLumFilterSize,
2994 funnyYCode, c->srcFormat, formatConvBuffer, 3001 c->srcFormat, formatConvBuffer,
2995 c->lumMmx2Filter, c->lumMmx2FilterPos, pal, 0); 3002 pal, 0);
2996 if (CONFIG_SWSCALE_ALPHA && alpPixBuf) 3003 if (CONFIG_SWSCALE_ALPHA && alpPixBuf)
2997 RENAME(hyscale)(c, alpPixBuf[ lumBufIndex ], dstW, src2, srcW, lumXInc, 3004 RENAME(hyscale)(c, alpPixBuf[ lumBufIndex ], dstW, src2, srcW, lumXInc,
2998 flags, canMMX2BeUsed, hLumFilter, hLumFilterPos, hLumFilterSize, 3005 flags, hLumFilter, hLumFilterPos, hLumFilterSize,
2999 funnyYCode, c->srcFormat, formatConvBuffer, 3006 c->srcFormat, formatConvBuffer,
3000 c->lumMmx2Filter, c->lumMmx2FilterPos, pal, 1); 3007 pal, 1);
3001 lastInLumBuf++; 3008 lastInLumBuf++;
3002 } 3009 }
3003 while(lastInChrBuf+1 < (chrSrcSliceY + chrSrcSliceH)) 3010 while(lastInChrBuf+1 < (chrSrcSliceY + chrSrcSliceH))
3004 { 3011 {
3005 uint8_t *src1= src[1]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[1]; 3012 uint8_t *src1= src[1]+(lastInChrBuf + 1 - chrSrcSliceY)*srcStride[1];
3009 assert(lastInChrBuf + 1 - chrSrcSliceY < chrSrcSliceH); 3016 assert(lastInChrBuf + 1 - chrSrcSliceY < chrSrcSliceH);
3010 assert(lastInChrBuf + 1 - chrSrcSliceY >= 0); 3017 assert(lastInChrBuf + 1 - chrSrcSliceY >= 0);
3011 3018
3012 if (!(isGray(srcFormat) || isGray(dstFormat))) 3019 if (!(isGray(srcFormat) || isGray(dstFormat)))
3013 RENAME(hcscale)(c, chrPixBuf[ chrBufIndex ], chrDstW, src1, src2, chrSrcW, chrXInc, 3020 RENAME(hcscale)(c, chrPixBuf[ chrBufIndex ], chrDstW, src1, src2, chrSrcW, chrXInc,
3014 flags, canMMX2BeUsed, hChrFilter, hChrFilterPos, hChrFilterSize, 3021 flags, hChrFilter, hChrFilterPos, hChrFilterSize,
3015 funnyUVCode, c->srcFormat, formatConvBuffer, 3022 c->srcFormat, formatConvBuffer,
3016 c->chrMmx2Filter, c->chrMmx2FilterPos, pal); 3023 pal);
3017 lastInChrBuf++; 3024 lastInChrBuf++;
3018 } 3025 }
3019 //wrap buf index around to stay inside the ring buffer 3026 //wrap buf index around to stay inside the ring buffer
3020 if (lumBufIndex >= vLumBufSize) lumBufIndex-= vLumBufSize; 3027 if (lumBufIndex >= vLumBufSize) lumBufIndex-= vLumBufSize;
3021 if (chrBufIndex >= vChrBufSize) chrBufIndex-= vChrBufSize; 3028 if (chrBufIndex >= vChrBufSize) chrBufIndex-= vChrBufSize;