| /* | 
 |  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS.  All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | #include "webrtc/voice_engine/voe_neteq_stats_impl.h" | 
 |  | 
 | #include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h" | 
 | #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" | 
 | #include "webrtc/system_wrappers/interface/trace.h" | 
 | #include "webrtc/voice_engine/channel.h" | 
 | #include "webrtc/voice_engine/include/voe_errors.h" | 
 | #include "webrtc/voice_engine/voice_engine_impl.h" | 
 |  | 
 | namespace webrtc { | 
 |  | 
 | VoENetEqStats* VoENetEqStats::GetInterface(VoiceEngine* voiceEngine) | 
 | { | 
 | #ifndef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API | 
 |     return NULL; | 
 | #else | 
 |     if (NULL == voiceEngine) | 
 |     { | 
 |         return NULL; | 
 |     } | 
 |     VoiceEngineImpl* s = static_cast<VoiceEngineImpl*>(voiceEngine); | 
 |     s->AddRef(); | 
 |     return s; | 
 | #endif | 
 | } | 
 |  | 
 | #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API | 
 |  | 
 | VoENetEqStatsImpl::VoENetEqStatsImpl(voe::SharedData* shared) : _shared(shared) | 
 | { | 
 |     WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1), | 
 |                  "VoENetEqStatsImpl::VoENetEqStatsImpl() - ctor"); | 
 | } | 
 |  | 
 | VoENetEqStatsImpl::~VoENetEqStatsImpl() | 
 | { | 
 |     WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1), | 
 |                  "VoENetEqStatsImpl::~VoENetEqStatsImpl() - dtor"); | 
 | } | 
 |  | 
 | int VoENetEqStatsImpl::GetNetworkStatistics(int channel, | 
 |                                             NetworkStatistics& stats) | 
 | { | 
 |     WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1), | 
 |                  "GetNetworkStatistics(channel=%d, stats=?)", channel); | 
 |  | 
 |     if (!_shared->statistics().Initialized()) | 
 |     { | 
 |         _shared->SetLastError(VE_NOT_INITED, kTraceError); | 
 |         return -1; | 
 |     } | 
 |     voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel); | 
 |     voe::Channel* channelPtr = ch.channel(); | 
 |     if (channelPtr == NULL) | 
 |     { | 
 |         _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, | 
 |             "GetNetworkStatistics() failed to locate channel"); | 
 |         return -1; | 
 |     } | 
 |  | 
 |     return channelPtr->GetNetworkStatistics(stats); | 
 | } | 
 |  | 
 | int VoENetEqStatsImpl::GetDecodingCallStatistics( | 
 |     int channel, AudioDecodingCallStats* stats) const { | 
 |  | 
 |   if (!_shared->statistics().Initialized()) { | 
 |     _shared->SetLastError(VE_NOT_INITED, kTraceError); | 
 |     return -1; | 
 |   } | 
 |   voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel); | 
 |   voe::Channel* channelPtr = ch.channel(); | 
 |   if (channelPtr == NULL) { | 
 |     _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError, | 
 |                           "GetDecodingCallStatistics() failed to locate " | 
 |                           "channel"); | 
 |     return -1; | 
 |   } | 
 |  | 
 |   channelPtr->GetDecodingCallStatistics(stats); | 
 |   return 0; | 
 | } | 
 |  | 
 | #endif  // #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API | 
 |  | 
 | }  // namespace webrtc |