vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Jul 24 17:57:28 2015 +0200| [ee31841e38873574b714618812f5a9ac5ce6514f] | committer: Francois Cartegnie
demux: adptative: add missing remainder doing stats > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ee31841e38873574b714618812f5a9ac5ce6514f --- .../demux/adaptative/logic/RateBasedAdaptationLogic.cpp | 14 ++++++++++---- .../demux/adaptative/logic/RateBasedAdaptationLogic.h | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/demux/adaptative/logic/RateBasedAdaptationLogic.cpp b/modules/demux/adaptative/logic/RateBasedAdaptationLogic.cpp index 9914c9d..e6c0e72 100644 --- a/modules/demux/adaptative/logic/RateBasedAdaptationLogic.cpp +++ b/modules/demux/adaptative/logic/RateBasedAdaptationLogic.cpp @@ -38,7 +38,7 @@ using namespace adaptative::logic; RateBasedAdaptationLogic::RateBasedAdaptationLogic (int w, int h) : AbstractAdaptationLogic (), - bpsAvg(0), bpsSamplecount(0), + bpsAvg(0), bpsRemainder(0), bpsSamplecount(0), currentBps(0) { width = w; @@ -68,12 +68,18 @@ void RateBasedAdaptationLogic::updateDownloadRate(size_t size, mtime_t time) if(unlikely(time == 0)) return; - size_t current = size * 8000 / time; + size_t current = bpsRemainder + size * 8000 / time; if (current >= bpsAvg) - bpsAvg = bpsAvg + (current - bpsAvg) / ++bpsSamplecount; + { + bpsAvg += (current - bpsAvg) / ++bpsSamplecount; + bpsRemainder = (current - bpsAvg) % bpsSamplecount; + } else - bpsAvg = bpsAvg - (bpsAvg - current) / ++bpsSamplecount; + { + bpsAvg -= (bpsAvg - current) / ++bpsSamplecount; + bpsRemainder = (bpsAvg - current) % bpsSamplecount; + } cumulatedTime += time; if(cumulatedTime > 4 * CLOCK_FREQ / stabilizer) diff --git a/modules/demux/adaptative/logic/RateBasedAdaptationLogic.h b/modules/demux/adaptative/logic/RateBasedAdaptationLogic.h index 854375e..3018a59 100644 --- a/modules/demux/adaptative/logic/RateBasedAdaptationLogic.h +++ b/modules/demux/adaptative/logic/RateBasedAdaptationLogic.h @@ -46,6 +46,7 @@ namespace adaptative int width; int height; size_t bpsAvg; + size_t bpsRemainder; size_t bpsSamplecount; size_t currentBps; mtime_t cumulatedTime; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
