]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/speedquantizer.cpp
Don't use too short speed measurements for quantizer learning
[r2c2.git] / source / libr2c2 / speedquantizer.cpp
index 710e1041fb1d1f42a74dee61fe717d84394def9c..acd1983f0ab0d42eee5da5509b0e331eaab04d54 100644 (file)
@@ -13,7 +13,8 @@ using namespace Msp;
 namespace R2C2 {
 
 SpeedQuantizer::SpeedQuantizer(unsigned n):
-       steps(n+1)
+       steps(n+1),
+       weight_limit(10)
 {
        if(n<1)
                throw InvalidParameterValue("Must have at leats one speed step");
@@ -30,16 +31,16 @@ float SpeedQuantizer::get_speed(unsigned i) const
 {
        if(i==0)
                return 0;
-       if(steps[i].weight)
+       if(steps[i].weight>=weight_limit)
                return steps[i].speed;
 
        unsigned low;
        unsigned high;
        for(low=i; low>0; --low)
-               if(steps[low].weight)
+               if(steps[low].weight>=weight_limit)
                        break;
        for(high=i; high+1<steps.size(); ++high)
-               if(steps[high].weight)
+               if(steps[high].weight>=weight_limit)
                        break;
 
        if(steps[high].weight)
@@ -69,7 +70,7 @@ unsigned SpeedQuantizer::find_speed_step(float speed) const
        unsigned high = 0;
        unsigned last = 0;
        for(unsigned i=0; (!high && i<steps.size()); ++i)
-               if(steps[i].weight)
+               if(steps[i].weight>=weight_limit)
                {
                        last = i;
                        if(steps[i].speed>=speed)