• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/include/audio_coding_module.h"
14 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
15 #include "webrtc/system_wrappers/include/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 
GetInterface(VoiceEngine * voiceEngine)22 VoENetEqStats* VoENetEqStats::GetInterface(VoiceEngine* voiceEngine) {
23 #ifndef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
24   return NULL;
25 #else
26   if (NULL == voiceEngine) {
27     return NULL;
28   }
29   VoiceEngineImpl* s = static_cast<VoiceEngineImpl*>(voiceEngine);
30   s->AddRef();
31   return s;
32 #endif
33 }
34 
35 #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
36 
VoENetEqStatsImpl(voe::SharedData * shared)37 VoENetEqStatsImpl::VoENetEqStatsImpl(voe::SharedData* shared)
38     : _shared(shared) {
39   WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1),
40                "VoENetEqStatsImpl::VoENetEqStatsImpl() - ctor");
41 }
42 
~VoENetEqStatsImpl()43 VoENetEqStatsImpl::~VoENetEqStatsImpl() {
44   WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_shared->instance_id(), -1),
45                "VoENetEqStatsImpl::~VoENetEqStatsImpl() - dtor");
46 }
47 
GetNetworkStatistics(int channel,NetworkStatistics & stats)48 int VoENetEqStatsImpl::GetNetworkStatistics(int channel,
49                                             NetworkStatistics& stats) {
50   if (!_shared->statistics().Initialized()) {
51     _shared->SetLastError(VE_NOT_INITED, kTraceError);
52     return -1;
53   }
54   voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
55   voe::Channel* channelPtr = ch.channel();
56   if (channelPtr == NULL) {
57     _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
58                           "GetNetworkStatistics() failed to locate channel");
59     return -1;
60   }
61 
62   return channelPtr->GetNetworkStatistics(stats);
63 }
64 
GetDecodingCallStatistics(int channel,AudioDecodingCallStats * stats) const65 int VoENetEqStatsImpl::GetDecodingCallStatistics(
66     int channel, AudioDecodingCallStats* stats) const {
67   if (!_shared->statistics().Initialized()) {
68     _shared->SetLastError(VE_NOT_INITED, kTraceError);
69     return -1;
70   }
71   voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
72   voe::Channel* channelPtr = ch.channel();
73   if (channelPtr == NULL) {
74     _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
75                           "GetDecodingCallStatistics() failed to locate "
76                           "channel");
77     return -1;
78   }
79 
80   channelPtr->GetDecodingCallStatistics(stats);
81   return 0;
82 }
83 
84 #endif  // #ifdef WEBRTC_VOICE_ENGINE_NETEQ_STATS_API
85 
86 }  // namespace webrtc
87