blob: 0aad594f97c746c0f6d742327cd6726e0fc991ff [file] [log] [blame]
wu@webrtc.org24301a62013-12-13 19:17:43 +00001/*
2 * Copyright (c) 2013 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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#include "modules/audio_coding/acm2/call_statistics.h"
wu@webrtc.org24301a62013-12-13 19:17:43 +000012
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020013#include "rtc_base/checks.h"
wu@webrtc.org24301a62013-12-13 19:17:43 +000014
15namespace webrtc {
16
17namespace acm2 {
18
henrik.lundin63489782016-09-20 01:47:12 -070019void CallStatistics::DecodedByNetEq(AudioFrame::SpeechType speech_type,
20 bool muted) {
wu@webrtc.org24301a62013-12-13 19:17:43 +000021 ++decoding_stat_.calls_to_neteq;
henrik.lundin63489782016-09-20 01:47:12 -070022 if (muted) {
23 ++decoding_stat_.decoded_muted_output;
24 }
wu@webrtc.org24301a62013-12-13 19:17:43 +000025 switch (speech_type) {
26 case AudioFrame::kNormalSpeech: {
27 ++decoding_stat_.decoded_normal;
28 break;
29 }
30 case AudioFrame::kPLC: {
Alex Narest5b5d97c2019-08-07 18:15:08 +020031 ++decoding_stat_.decoded_neteq_plc;
32 break;
33 }
34 case AudioFrame::kCodecPLC: {
35 ++decoding_stat_.decoded_codec_plc;
wu@webrtc.org24301a62013-12-13 19:17:43 +000036 break;
37 }
38 case AudioFrame::kCNG: {
39 ++decoding_stat_.decoded_cng;
40 break;
41 }
42 case AudioFrame::kPLCCNG: {
43 ++decoding_stat_.decoded_plc_cng;
44 break;
45 }
46 case AudioFrame::kUndefined: {
Artem Titovd00ce742021-07-28 20:00:17 +020047 // If the audio is decoded by NetEq, `kUndefined` is not an option.
henrik.lundin63489782016-09-20 01:47:12 -070048 RTC_NOTREACHED();
wu@webrtc.org24301a62013-12-13 19:17:43 +000049 }
50 }
51}
52
53void CallStatistics::DecodedBySilenceGenerator() {
54 ++decoding_stat_.calls_to_silence_generator;
55}
56
57const AudioDecodingCallStats& CallStatistics::GetDecodingStatistics() const {
58 return decoding_stat_;
59}
60
61} // namespace acm2
62
63} // namespace webrtc