20 std::chrono::microseconds windowSize = std::chrono::seconds(2),
21 int maxDurationInFrames = 0);
23 void setWindowSize(std::chrono::microseconds windowSize);
24 void setMaxDurationInFrames(
int maxDurationInFrames);
27 void onData(std::chrono::microseconds timestamp,
size_t dataSize,
bool isKeyFrame);
28 int64_t bitrateBitsPerSecond()
const;
29 float getFrameRate()
const;
30 float getAverageGopSize()
const;
31 bool hasMediaData()
const;
34 std::chrono::microseconds m_windowSize {};
35 int m_maxDurationInFrames = 0;
40 Data(std::chrono::microseconds timestamp,
size_t size,
bool isKeyFrame):
41 timestamp(timestamp), size(size), isKeyFrame(isKeyFrame)
45 std::chrono::microseconds timestamp{};
47 bool isKeyFrame =
false;
49 bool operator<(std::chrono::microseconds value)
const {
return timestamp < value; }
52 std::chrono::microseconds intervalUnsafe()
const;
54 mutable std::mutex m_mutex;
55 std::deque<Data> m_data;
56 int64_t m_totalSizeBytes = 0;
58 std::chrono::steady_clock::time_point m_lastDataTimer;