PageRenderTime 24ms CodeModel.GetById 13ms app.highlight 6ms RepoModel.GetById 2ms app.codeStats 0ms

/xbmc/utils/BitstreamStats.h

http://github.com/xbmc/xbmc
C Header | 40 lines | 22 code | 8 blank | 10 comment | 0 complexity | 810c2d2dcb78995969283a96ea642947 MD5 | raw file
 1/*
 2 *  Copyright (C) 2005-2018 Team Kodi
 3 *  This file is part of Kodi - https://kodi.tv
 4 *
 5 *  SPDX-License-Identifier: GPL-2.0-or-later
 6 *  See LICENSES/README.md for more information.
 7 */
 8
 9#pragma once
10
11#include <stdint.h>
12
13class BitstreamStats final
14{
15public:
16  // in order not to cause a performance hit, we should only check the clock when
17  // we reach m_nEstimatedBitrate bits.
18  // if this value is 1, we will calculate bitrate on every sample.
19  explicit BitstreamStats(unsigned int nEstimatedBitrate=(10240*8) /*10Kbit*/);
20
21  void AddSampleBytes(unsigned int nBytes);
22  void AddSampleBits(unsigned int nBits);
23
24  inline double GetBitrate()    const { return m_dBitrate; }
25  inline double GetMaxBitrate() const { return m_dMaxBitrate; }
26  inline double GetMinBitrate() const { return m_dMinBitrate; }
27
28  void Start();
29  void CalculateBitrate();
30
31private:
32  double m_dBitrate;
33  double m_dMaxBitrate;
34  double m_dMinBitrate;
35  unsigned int m_nBitCount;
36  unsigned int m_nEstimatedBitrate; // when we reach this amount of bits we check current bitrate.
37  int64_t m_tmStart;
38  static int64_t m_tmFreq;
39};
40