* mmx/mmx2/3dnow postprocess code.
*/
-#include "x86_cpu.h"
+#include "libavutil/x86_cpu.h"
#define ALIGN_MASK "$-8"
src+= stride*4;
asm volatile(
-#if 0 //sligtly more accurate and slightly slower
+#if 0 //slightly more accurate and slightly slower
"pxor %%mm7, %%mm7 \n\t" // 0
"lea (%0, %1), %%"REG_a" \n\t"
"lea (%%"REG_a", %1, 4), %%"REG_c" \n\t"
// if((max-min)*QP < 500)
// if(max-min<QP/2)
if(max-min < 20){
- static int numSkiped=0;
+ static int numSkipped=0;
static int errorSum=0;
static int worstQP=0;
static int worstRange=0;
if(x==1 || x==8 || y==1 || y==8) continue;
- numSkiped++;
+ numSkipped++;
if(absDiff > worstDiff){
worstDiff= absDiff;
worstQP= QP;
}
errorSum+= error;
- if(1024LL*1024LL*1024LL % numSkiped == 0){
+ if(1024LL*1024LL*1024LL % numSkipped == 0){
av_log(c, AV_LOG_INFO, "sum:%1.3f, skip:%d, wQP:%d, "
"wRange:%d, wDiff:%d, relSkip:%1.3f\n",
- (float)errorSum/numSkiped, numSkiped, worstQP, worstRange,
- worstDiff, (float)numSkiped/numPixels);
+ (float)errorSum/numSkipped, numSkipped, worstQP, worstRange,
+ worstDiff, (float)numSkipped/numPixels);
}
}
}
#ifndef HAVE_ALTIVEC
static inline void RENAME(tempNoiseReducer)(uint8_t *src, int stride,
- uint8_t *tempBlured, uint32_t *tempBluredPast, int *maxNoise)
+ uint8_t *tempBlurred, uint32_t *tempBlurredPast, int *maxNoise)
{
// to save a register (FIXME do this outside of the loops)
- tempBluredPast[127]= maxNoise[0];
- tempBluredPast[128]= maxNoise[1];
- tempBluredPast[129]= maxNoise[2];
+ tempBlurredPast[127]= maxNoise[0];
+ tempBlurredPast[128]= maxNoise[1];
+ tempBlurredPast[129]= maxNoise[2];
#define FAST_L2_DIFF
//#define L1_DIFF //u should change the thresholds too if u try that one
"4: \n\t"
- :: "r" (src), "r" (tempBlured), "r"((long)stride), "m" (tempBluredPast)
+ :: "r" (src), "r" (tempBlurred), "r"((long)stride), "m" (tempBlurredPast)
: "%"REG_a, "%"REG_d, "%"REG_c, "memory"
);
#else //defined (HAVE_MMX2) || defined (HAVE_3DNOW)
for(y=0; y<8; y++){
int x;
for(x=0; x<8; x++){
- int ref= tempBlured[ x + y*stride ];
+ int ref= tempBlurred[ x + y*stride ];
int cur= src[ x + y*stride ];
int d1=ref - cur;
// if(x==0 || x==7) d1+= d1>>1;
i=d;
d= (
4*d
- +(*(tempBluredPast-256))
- +(*(tempBluredPast-1))+ (*(tempBluredPast+1))
- +(*(tempBluredPast+256))
+ +(*(tempBlurredPast-256))
+ +(*(tempBlurredPast-1))+ (*(tempBlurredPast+1))
+ +(*(tempBlurredPast+256))
+4)>>3;
- *tempBluredPast=i;
-// ((*tempBluredPast)*3 + d + 2)>>2;
+ *tempBlurredPast=i;
+// ((*tempBlurredPast)*3 + d + 2)>>2;
/*
Switch between
for(y=0; y<8; y++){
int x;
for(x=0; x<8; x++){
- int ref= tempBlured[ x + y*stride ];
+ int ref= tempBlurred[ x + y*stride ];
int cur= src[ x + y*stride ];
- tempBlured[ x + y*stride ]=
+ tempBlurred[ x + y*stride ]=
src[ x + y*stride ]=
(ref + cur + 1)>>1;
}
for(y=0; y<8; y++){
int x;
for(x=0; x<8; x++){
- tempBlured[ x + y*stride ]= src[ x + y*stride ];
+ tempBlurred[ x + y*stride ]= src[ x + y*stride ];
}
}
}
for(y=0; y<8; y++){
int x;
for(x=0; x<8; x++){
- int ref= tempBlured[ x + y*stride ];
+ int ref= tempBlurred[ x + y*stride ];
int cur= src[ x + y*stride ];
- tempBlured[ x + y*stride ]=
+ tempBlurred[ x + y*stride ]=
src[ x + y*stride ]=
(ref*7 + cur + 4)>>3;
}
for(y=0; y<8; y++){
int x;
for(x=0; x<8; x++){
- int ref= tempBlured[ x + y*stride ];
+ int ref= tempBlurred[ x + y*stride ];
int cur= src[ x + y*stride ];
- tempBlured[ x + y*stride ]=
+ tempBlurred[ x + y*stride ]=
src[ x + y*stride ]=
(ref*3 + cur + 2)>>2;
}
if(mode & TEMP_NOISE_FILTER)
{
RENAME(tempNoiseReducer)(dstBlock-8, stride,
- c.tempBlured[isColor] + y*dstStride + x,
- c.tempBluredPast[isColor] + (y>>3)*256 + (x>>3),
+ c.tempBlurred[isColor] + y*dstStride + x,
+ c.tempBlurredPast[isColor] + (y>>3)*256 + (x>>3),
c.ppMode.maxTmpNoise);
}
}
if((mode & TEMP_NOISE_FILTER)){
RENAME(tempNoiseReducer)(dstBlock-8, dstStride,
- c.tempBlured[isColor] + y*dstStride + x,
- c.tempBluredPast[isColor] + (y>>3)*256 + (x>>3),
+ c.tempBlurred[isColor] + y*dstStride + x,
+ c.tempBlurredPast[isColor] + (y>>3)*256 + (x>>3),
c.ppMode.maxTmpNoise);
}