1 /* 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "webrtc/voice_engine/voe_neteq_stats_impl.h" 12 13 #include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h" 14 #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" 15 #include "webrtc/system_wrappers/interface/trace.h" 16 #include "webrtc/voice_engine/channel.h" 17 #include "webrtc/voice_engine/include/voe_errors.h" 18 #include "webrtc/voice_engine/voice_engine_impl.h" 19 20 namespace webrtc { 21 22 VoENetEqStats* VoENetEqStats::GetInterface(VoiceEngine* voiceEngine) 23 { 24 #ifndef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API 25 return NULL; 26 #else 27 if (NULL == voiceEngine) 28 { 29 return NULL; 30 } 31 VoiceEngineImpl* s = static_cast<VoiceEngineImpl*>(voiceEngine); 32 s->AddRef(); 33 return s; 34 #endif 35 } 36 37 #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API 38 39 VoENetEqStatsImpl::VoENetEqStatsImpl(voe::SharedData* shared) : _shared(shared) 40 { 41 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1), 42 "VoENetEqStatsImpl::VoENetEqStatsImpl() - ctor"); 43 } 44 45 VoENetEqStatsImpl::~VoENetEqStatsImpl() 46 { 47 WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1), 48 "VoENetEqStatsImpl::~VoENetEqStatsImpl() - dtor"); 49 } 50 51 int VoENetEqStatsImpl::GetNetworkStatistics(int channel, 52 NetworkStatistics& stats) 53 { 54 WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1), 55 "GetNetworkStatistics(channel=%d, stats=?)", channel); 56 57 if (!_shared->statistics().Initialized()) 58 { 59 _shared->SetLastError(VE_NOT_INITED, kTraceError); 60 return -1; 61 } 62 voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel); 63 voe::Channel* channelPtr = ch.channel(); 64 if (channelPtr == NULL) 65 { 66 _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, 67 "GetNetworkStatistics() failed to locate channel"); 68 return -1; 69 } 70 71 return channelPtr->GetNetworkStatistics(stats); 72 } 73 74 int VoENetEqStatsImpl::GetDecodingCallStatistics( 75 int channel, AudioDecodingCallStats* stats) const { 76 77 if (!_shared->statistics().Initialized()) { 78 _shared->SetLastError(VE_NOT_INITED, kTraceError); 79 return -1; 80 } 81 voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel); 82 voe::Channel* channelPtr = ch.channel(); 83 if (channelPtr == NULL) { 84 _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, 85 "GetDecodingCallStatistics() failed to locate " 86 "channel"); 87 return -1; 88 } 89 90 channelPtr->GetDecodingCallStatistics(stats); 91 return 0; 92 } 93 94 #endif // #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API 95 96 } // namespace webrtc 97