Commit ee31841e authored by Francois Cartegnie's avatar Francois Cartegnie

demux: adptative: add missing remainder doing stats

parent 2ff8049f
...@@ -38,7 +38,7 @@ using namespace adaptative::logic; ...@@ -38,7 +38,7 @@ using namespace adaptative::logic;
RateBasedAdaptationLogic::RateBasedAdaptationLogic (int w, int h) : RateBasedAdaptationLogic::RateBasedAdaptationLogic (int w, int h) :
AbstractAdaptationLogic (), AbstractAdaptationLogic (),
bpsAvg(0), bpsSamplecount(0), bpsAvg(0), bpsRemainder(0), bpsSamplecount(0),
currentBps(0) currentBps(0)
{ {
width = w; width = w;
...@@ -68,12 +68,18 @@ void RateBasedAdaptationLogic::updateDownloadRate(size_t size, mtime_t time) ...@@ -68,12 +68,18 @@ void RateBasedAdaptationLogic::updateDownloadRate(size_t size, mtime_t time)
if(unlikely(time == 0)) if(unlikely(time == 0))
return; return;
size_t current = size * 8000 / time; size_t current = bpsRemainder + size * 8000 / time;
if (current >= bpsAvg) if (current >= bpsAvg)
bpsAvg = bpsAvg + (current - bpsAvg) / ++bpsSamplecount; {
bpsAvg += (current - bpsAvg) / ++bpsSamplecount;
bpsRemainder = (current - bpsAvg) % bpsSamplecount;
}
else else
bpsAvg = bpsAvg - (bpsAvg - current) / ++bpsSamplecount; {
bpsAvg -= (bpsAvg - current) / ++bpsSamplecount;
bpsRemainder = (bpsAvg - current) % bpsSamplecount;
}
cumulatedTime += time; cumulatedTime += time;
if(cumulatedTime > 4 * CLOCK_FREQ / stabilizer) if(cumulatedTime > 4 * CLOCK_FREQ / stabilizer)
......
...@@ -46,6 +46,7 @@ namespace adaptative ...@@ -46,6 +46,7 @@ namespace adaptative
int width; int width;
int height; int height;
size_t bpsAvg; size_t bpsAvg;
size_t bpsRemainder;
size_t bpsSamplecount; size_t bpsSamplecount;
size_t currentBps; size_t currentBps;
mtime_t cumulatedTime; mtime_t cumulatedTime;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment