diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2008-03-01 03:05:13 +0100 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2008-03-01 03:05:13 +0100 |
commit | 1d0b3b20c34517b9d1ddf3ea347776304b0c4b44 (patch) | |
tree | 89f4fc640c2becc6f00ae08996754952ecf149c1 /contrib/ffmpeg/libpostproc/postprocess_template.c | |
parent | 09496ad3469a0ade8dbd9a351e639b78f20b7942 (diff) | |
download | xine-lib-1d0b3b20c34517b9d1ddf3ea347776304b0c4b44.tar.gz xine-lib-1d0b3b20c34517b9d1ddf3ea347776304b0c4b44.tar.bz2 |
Update internal FFmpeg copy.
Diffstat (limited to 'contrib/ffmpeg/libpostproc/postprocess_template.c')
-rw-r--r-- | contrib/ffmpeg/libpostproc/postprocess_template.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/contrib/ffmpeg/libpostproc/postprocess_template.c b/contrib/ffmpeg/libpostproc/postprocess_template.c index f084130a6..bdc23250a 100644 --- a/contrib/ffmpeg/libpostproc/postprocess_template.c +++ b/contrib/ffmpeg/libpostproc/postprocess_template.c @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ + */ /** * @file postprocess_template.c @@ -73,7 +73,7 @@ "paddb " #a ", " #b " \n\t" #endif -//FIXME? |255-0| = 1 (shouldnt be a problem ...) +//FIXME? |255-0| = 1 (should not be a problem ...) #ifdef HAVE_MMX /** * Check if the middle 8x8 Block in the given 8x16 block is flat @@ -373,7 +373,8 @@ static inline void RENAME(doVertLowPass)(uint8_t *src, int stride, PPContext *c) * Experimental implementation of the filter (Algorithm 1) described in a paper from Ramkishor & Karandikar * values are correctly clipped (MMX2) * values are wraparound (C) - * conclusion: its fast, but introduces ugly horizontal patterns if there is a continious gradient + * Conclusion: It is fast, but introduces ugly horizontal patterns + * if there is a continuous gradient. 0 8 16 24 x = 8 x/2 = 4 @@ -478,8 +479,8 @@ static inline void RENAME(vertRK1Filter)(uint8_t *src, int stride, int QP) * Experimental Filter 1 * will not damage linear gradients * Flat blocks should look like they where passed through the (1,1,2,2,4,2,2,1,1) 9-Tap filter - * can only smooth blocks at the expected locations (it cant smooth them if they did move) - * MMX2 version does correct clipping C version doesnt + * can only smooth blocks at the expected locations (it cannot smooth them if they did move) + * MMX2 version does correct clipping C version does not */ static inline void RENAME(vertX1Filter)(uint8_t *src, int stride, PPContext *co) { @@ -3179,16 +3180,16 @@ asm volatile( } #endif //HAVE_MMX -static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, - QP_STORE_T QPs[], int QPStride, int isColor, PPContext *c); +static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, + const QP_STORE_T QPs[], int QPStride, int isColor, PPContext *c); /** - * Copies a block from src to dst and fixes the blacklevel - * levelFix == 0 -> dont touch the brighness & contrast + * Copies a block from src to dst and fixes the blacklevel. + * levelFix == 0 -> do not touch the brighness & contrast */ #undef SCALED_CPY -static inline void RENAME(blockCopy)(uint8_t dst[], int dstStride, uint8_t src[], int srcStride, +static inline void RENAME(blockCopy)(uint8_t dst[], int dstStride, const uint8_t src[], int srcStride, int levelFix, int64_t *packedOffsetAndScale) { #ifndef HAVE_MMX @@ -3345,10 +3346,10 @@ static inline void RENAME(duplicate)(uint8_t src[], int stride) /** * Filters array of bytes (Y or U or V values) */ -static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, - QP_STORE_T QPs[], int QPStride, int isColor, PPContext *c2) +static void RENAME(postProcess)(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, + const QP_STORE_T QPs[], int QPStride, int isColor, PPContext *c2) { - PPContext __attribute__((aligned(8))) c= *c2; //copy to stack for faster access + DECLARE_ALIGNED(8, PPContext, c)= *c2; //copy to stack for faster access int x,y; #ifdef COMPILE_TIME_MODE const int mode= COMPILE_TIME_MODE; @@ -3415,7 +3416,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int sum+= yHistogram[i]; } - /* we allways get a completly black picture first */ + /* We always get a completely black picture first. */ maxClipped= (uint64_t)(sum * c.ppMode.maxClippedThreshold); clipped= sum; @@ -3461,7 +3462,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int /* copy & deinterlace first row of blocks */ y=-BLOCK_SIZE; { - uint8_t *srcBlock= &(src[y*srcStride]); + const uint8_t *srcBlock= &(src[y*srcStride]); uint8_t *dstBlock= tempDst + dstStride; // From this point on it is guaranteed that we can read and write 16 lines downward @@ -3498,7 +3499,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int ); #elif defined(HAVE_3DNOW) -//FIXME check if this is faster on an 3dnow chip or if its faster without the prefetch or ... +//FIXME check if this is faster on an 3dnow chip or if it is faster without the prefetch or ... /* prefetch(srcBlock + (((x>>3)&3) + 5)*srcStride + 32); prefetch(srcBlock + (((x>>3)&3) + 9)*srcStride + 32); prefetchw(dstBlock + (((x>>3)&3) + 5)*dstStride + 32); @@ -3544,13 +3545,13 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int for(y=0; y<height; y+=BLOCK_SIZE) { //1% speedup if these are here instead of the inner loop - uint8_t *srcBlock= &(src[y*srcStride]); + const uint8_t *srcBlock= &(src[y*srcStride]); uint8_t *dstBlock= &(dst[y*dstStride]); #ifdef HAVE_MMX uint8_t *tempBlock1= c.tempBlocks; uint8_t *tempBlock2= c.tempBlocks + 8; #endif - int8_t *QPptr= &QPs[(y>>qpVShift)*QPStride]; + const int8_t *QPptr= &QPs[(y>>qpVShift)*QPStride]; int8_t *nonBQPptr= &c.nonBQPTable[(y>>qpVShift)*FFABS(QPStride)]; int QP=0; /* can we mess with a 8x16 block from srcBlock/dstBlock downwards and 1 line upwards @@ -3642,7 +3643,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int ); #elif defined(HAVE_3DNOW) -//FIXME check if this is faster on an 3dnow chip or if its faster without the prefetch or ... +//FIXME check if this is faster on an 3dnow chip or if it is faster without the prefetch or ... /* prefetch(srcBlock + (((x>>3)&3) + 5)*srcStride + 32); prefetch(srcBlock + (((x>>3)&3) + 9)*srcStride + 32); prefetchw(dstBlock + (((x>>3)&3) + 5)*dstStride + 32); @@ -3717,7 +3718,7 @@ static void RENAME(postProcess)(uint8_t src[], int srcStride, uint8_t dst[], int else if(mode & H_DEBLOCK) { #ifdef HAVE_ALTIVEC - unsigned char __attribute__ ((aligned(16))) tempBlock[272]; + DECLARE_ALIGNED(16, unsigned char, tempBlock[272]); transpose_16x8_char_toPackedAlign_altivec(tempBlock, dstBlock - (4 + 1), stride); const int t=vertClassify_altivec(tempBlock-48, 16, &c); |