Mercurial > mplayer.hg
comparison postproc/swscale.c @ 12130:2ef24558b732
AltiVec hScale, all size patch by (Romain Dolbeau <dolbeaur at club-internet dot fr>)
author | michael |
---|---|
date | Tue, 06 Apr 2004 00:25:47 +0000 |
parents | 57fd2f36b8cb |
children | b80f95e24c96 |
comparison
equal
deleted
inserted
replaced
12129:c1aff21286dd | 12130:2ef24558b732 |
---|---|
1039 } | 1039 } |
1040 | 1040 |
1041 if(min>minFilterSize) minFilterSize= min; | 1041 if(min>minFilterSize) minFilterSize= min; |
1042 } | 1042 } |
1043 | 1043 |
1044 if (flags & SWS_CPU_CAPS_ALTIVEC) { | |
1045 // we can handle the special case 4, | |
1046 // so we don't want to go to the full 8 | |
1047 if (minFilterSize < 5) | |
1048 filterAlign = 4; | |
1049 | |
1050 // we really don't want to waste our time | |
1051 // doing useless computation, so fall-back on | |
1052 // the scalar C code for very small filter. | |
1053 // vectorizing is worth it only if you have | |
1054 // decent-sized vector. | |
1055 if (minFilterSize < 3) | |
1056 filterAlign = 1; | |
1057 } | |
1058 | |
1044 ASSERT(minFilterSize > 0) | 1059 ASSERT(minFilterSize > 0) |
1045 filterSize= (minFilterSize +(filterAlign-1)) & (~(filterAlign-1)); | 1060 filterSize= (minFilterSize +(filterAlign-1)) & (~(filterAlign-1)); |
1046 ASSERT(filterSize > 0) | 1061 ASSERT(filterSize > 0) |
1047 filter= (double*)memalign(8, filterSize*dstW*sizeof(double)); | 1062 filter= (double*)memalign(8, filterSize*dstW*sizeof(double)); |
1048 *outFilterSize= filterSize; | 1063 *outFilterSize= filterSize; |
1945 } | 1960 } |
1946 } | 1961 } |
1947 | 1962 |
1948 /* precalculate horizontal scaler filter coefficients */ | 1963 /* precalculate horizontal scaler filter coefficients */ |
1949 { | 1964 { |
1950 const int filterAlign= (flags & SWS_CPU_CAPS_MMX) ? 4 : 1; | 1965 const int filterAlign= |
1966 (flags & SWS_CPU_CAPS_MMX) ? 4 : | |
1967 (flags & SWS_CPU_CAPS_ALTIVEC) ? 8 : | |
1968 1; | |
1951 | 1969 |
1952 initFilter(&c->hLumFilter, &c->hLumFilterPos, &c->hLumFilterSize, c->lumXInc, | 1970 initFilter(&c->hLumFilter, &c->hLumFilterPos, &c->hLumFilterSize, c->lumXInc, |
1953 srcW , dstW, filterAlign, 1<<14, | 1971 srcW , dstW, filterAlign, 1<<14, |
1954 (flags&SWS_BICUBLIN) ? (flags|SWS_BICUBIC) : flags, | 1972 (flags&SWS_BICUBLIN) ? (flags|SWS_BICUBIC) : flags, |
1955 srcFilter->lumH, dstFilter->lumH); | 1973 srcFilter->lumH, dstFilter->lumH); |
1974 } // Init Horizontal stuff | 1992 } // Init Horizontal stuff |
1975 | 1993 |
1976 | 1994 |
1977 | 1995 |
1978 /* precalculate vertical scaler filter coefficients */ | 1996 /* precalculate vertical scaler filter coefficients */ |
1979 initFilter(&c->vLumFilter, &c->vLumFilterPos, &c->vLumFilterSize, c->lumYInc, | 1997 { |
1980 srcH , dstH, 1, (1<<12)-4, | 1998 const int filterAlign= |
1981 (flags&SWS_BICUBLIN) ? (flags|SWS_BICUBIC) : flags, | 1999 (flags & SWS_CPU_CAPS_ALTIVEC) ? 8 : |
1982 srcFilter->lumV, dstFilter->lumV); | 2000 1; |
1983 initFilter(&c->vChrFilter, &c->vChrFilterPos, &c->vChrFilterSize, c->chrYInc, | 2001 |
1984 c->chrSrcH, c->chrDstH, 1, (1<<12)-4, | 2002 initFilter(&c->vLumFilter, &c->vLumFilterPos, &c->vLumFilterSize, c->lumYInc, |
1985 (flags&SWS_BICUBLIN) ? (flags|SWS_BILINEAR) : flags, | 2003 srcH , dstH, filterAlign, (1<<12)-4, |
1986 srcFilter->chrV, dstFilter->chrV); | 2004 (flags&SWS_BICUBLIN) ? (flags|SWS_BICUBIC) : flags, |
2005 srcFilter->lumV, dstFilter->lumV); | |
2006 initFilter(&c->vChrFilter, &c->vChrFilterPos, &c->vChrFilterSize, c->chrYInc, | |
2007 c->chrSrcH, c->chrDstH, filterAlign, (1<<12)-4, | |
2008 (flags&SWS_BICUBLIN) ? (flags|SWS_BILINEAR) : flags, | |
2009 srcFilter->chrV, dstFilter->chrV); | |
2010 } | |
1987 | 2011 |
1988 // Calculate Buffer Sizes so that they won't run out while handling these damn slices | 2012 // Calculate Buffer Sizes so that they won't run out while handling these damn slices |
1989 c->vLumBufSize= c->vLumFilterSize; | 2013 c->vLumBufSize= c->vLumFilterSize; |
1990 c->vChrBufSize= c->vChrFilterSize; | 2014 c->vChrBufSize= c->vChrFilterSize; |
1991 for(i=0; i<dstH; i++) | 2015 for(i=0; i<dstH; i++) |