From 82365f9c7cf8a553db0a56c60657dc8a167e9b9a Mon Sep 17 00:00:00 2001 From: Monty Date: Fri, 26 Mar 2010 06:39:18 +0000 Subject: [PATCH] reinstantiate floor1 weighting changes. svn path=/trunk/vorbis/; revision=17078 --- lib/floor1.c | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/lib/floor1.c b/lib/floor1.c index 5c290fc..9935888 100644 --- a/lib/floor1.c +++ b/lib/floor1.c @@ -470,28 +470,27 @@ static int accumulate_fit(const float *flr,const float *mdct, static int fit_line(lsfit_acc *a,int fits,int *y0,int *y1, vorbis_info_floor1 *info){ + double weight; + double xa=0,ya=0,x2a=0,y2a=0,xya=0,an=0; double xb=0,yb=0,x2b=0,y2b=0,xyb=0,bn=0; int i; int x0=a[0].x0; int x1=a[fits-1].x1; for(i=0;itwofitweight/(a[i].an+1))+1.; - - xb+=a[i].xb + a[i].xa * weight; - yb+=a[i].yb + a[i].ya * weight; - x2b+=a[i].x2b + a[i].x2a * weight; - y2b+=a[i].y2b + a[i].y2a * weight; - xyb+=a[i].xyb + a[i].xya * weight; - bn+=a[i].bn + a[i].an * weight; + xa+=a[i].xa; + ya+=a[i].ya; + x2a+=a[i].x2a; + y2a+=a[i].y2a; + xya+=a[i].xya; + an+=a[i].an; + + xb+=a[i].xb; + yb+=a[i].yb; + x2b+=a[i].x2b; + y2b+=a[i].y2b; + xyb+=a[i].xyb; + bn+=a[i].bn; } if(*y0>=0){ @@ -512,6 +511,14 @@ static int fit_line(lsfit_acc *a,int fits,int *y0,int *y1, bn++; } + weight = (bn+an)*info->twofitweight/(an+1)+1.; + xb += xa * weight; + yb += ya * weight; + x2b += x2a * weight; + y2b += y2a * weight; + xyb += xya * weight; + bn += an * weight; + { double denom=(bn*x2b-xb*xb); -- 2.7.4