// // AudioIOStats.h // interface/src/audio // // Created by Stephen Birarda on 2014-12-16. // Copyright 2014 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #ifndef hifi_AudioIOStats_h #define hifi_AudioIOStats_h #include "MovingMinMaxAvg.h" #include #include #include #include class MixedProcessedAudioStream; class AudioIOStats : public QObject { Q_OBJECT public: AudioIOStats(MixedProcessedAudioStream* receivedAudioStream); void reset(); void updateInputMsecsRead(float msecsRead) { _audioInputMsecsReadStats.update(msecsRead); } void sentPacket(); AudioStreamStats getMixerDownstreamStats() const; const AudioStreamStats& getMixerAvatarStreamStats() const { return _mixerAvatarStreamStats; } const QHash& getMixerInjectedStreamStatsMap() const { return _mixerInjectedStreamStatsMap; } const MovingMinMaxAvg& getAudioInputMsecsReadStats() const { return _audioInputMsecsReadStats; } const MovingMinMaxAvg& getInputRungBufferMsecsAvailableStats() const { return _inputRingBufferMsecsAvailableStats; } const MovingMinMaxAvg& getAudioOutputMsecsUnplayedStats() const { return _audioOutputMsecsUnplayedStats; } const MovingMinMaxAvg& getPacketSentTimeGaps() const { return _packetSentTimeGaps; } void sendDownstreamAudioStatsPacket(); void processStreamStatsPacket(QSharedPointer packet, SharedNodePointer sendingNode); private: MixedProcessedAudioStream* _receivedAudioStream; MovingMinMaxAvg _audioInputMsecsReadStats; MovingMinMaxAvg _inputRingBufferMsecsAvailableStats; MovingMinMaxAvg _audioOutputMsecsUnplayedStats; AudioStreamStats _mixerAvatarStreamStats; QHash _mixerInjectedStreamStatsMap; quint64 _lastSentAudioPacket; MovingMinMaxAvg _packetSentTimeGaps; }; #endif // hifi_AudioIOStats_h