2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "BitstreamStats.h"
11 #include "utils/TimeUtils.h"
13 int64_t BitstreamStats::m_tmFreq
;
15 BitstreamStats::BitstreamStats(unsigned int nEstimatedBitrate
)
22 m_nEstimatedBitrate
= nEstimatedBitrate
;
26 m_tmFreq
= CurrentHostFrequency();
29 void BitstreamStats::AddSampleBytes(unsigned int nBytes
)
31 AddSampleBits(nBytes
*8);
34 void BitstreamStats::AddSampleBits(unsigned int nBits
)
37 if (m_nBitCount
>= m_nEstimatedBitrate
)
41 void BitstreamStats::Start()
44 m_tmStart
= CurrentHostCounter();
47 void BitstreamStats::CalculateBitrate()
50 tmNow
= CurrentHostCounter();
52 double elapsed
= (double)(tmNow
- m_tmStart
) / (double)m_tmFreq
;
53 // only update once every 2 seconds
56 m_dBitrate
= (double)m_nBitCount
/ elapsed
;
58 if (m_dBitrate
> m_dMaxBitrate
)
59 m_dMaxBitrate
= m_dBitrate
;
61 if (m_dBitrate
< m_dMinBitrate
|| m_dMinBitrate
== -1)
62 m_dMinBitrate
= m_dBitrate
;