You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
dither scaling coefficients so they add up to 1.0
Originally committed as revision 11124 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
This commit is contained in:
@@ -1084,8 +1084,10 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out
|
|||||||
for(i=0; i<dstW; i++)
|
for(i=0; i<dstW; i++)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
|
double error=0;
|
||||||
double sum=0;
|
double sum=0;
|
||||||
double scale= one;
|
double scale= one;
|
||||||
|
|
||||||
for(j=0; j<filterSize; j++)
|
for(j=0; j<filterSize; j++)
|
||||||
{
|
{
|
||||||
sum+= filter[i*filterSize + j];
|
sum+= filter[i*filterSize + j];
|
||||||
@@ -1093,7 +1095,10 @@ static inline void initFilter(int16_t **outFilter, int16_t **filterPos, int *out
|
|||||||
scale/= sum;
|
scale/= sum;
|
||||||
for(j=0; j<*outFilterSize; j++)
|
for(j=0; j<*outFilterSize; j++)
|
||||||
{
|
{
|
||||||
(*outFilter)[i*(*outFilterSize) + j]= (int)(filter[i*filterSize + j]*scale + 0.5);
|
double v= filter[i*filterSize + j]*scale + error;
|
||||||
|
int intV= floor(v + 0.5);
|
||||||
|
(*outFilter)[i*(*outFilterSize) + j]= intV;
|
||||||
|
error = v - intV;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user