Reporting of decoding_codec_plc events
Change-Id: Id71b37244bc98bffaf25131a519127b3d2b86a8f Bug: webrtc:10838 Change-Id: Id71b37244bc98bffaf25131a519127b3d2b86a8f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147263 Commit-Queue: Alex Narest <alexnarest@google.com> Reviewed-by: Magnus Flodman <mflodman@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28700}
This commit is contained in:
@ -266,7 +266,7 @@ TEST_F(AudioCodingModuleTestOldApi, MAYBE_InitializedToZero) {
|
||||
EXPECT_EQ(0, stats.calls_to_silence_generator);
|
||||
EXPECT_EQ(0, stats.decoded_normal);
|
||||
EXPECT_EQ(0, stats.decoded_cng);
|
||||
EXPECT_EQ(0, stats.decoded_plc);
|
||||
EXPECT_EQ(0, stats.decoded_neteq_plc);
|
||||
EXPECT_EQ(0, stats.decoded_plc_cng);
|
||||
EXPECT_EQ(0, stats.decoded_muted_output);
|
||||
}
|
||||
@ -292,7 +292,7 @@ TEST_F(AudioCodingModuleTestOldApi, MAYBE_NetEqCalls) {
|
||||
EXPECT_EQ(0, stats.calls_to_silence_generator);
|
||||
EXPECT_EQ(kNumNormalCalls, stats.decoded_normal);
|
||||
EXPECT_EQ(0, stats.decoded_cng);
|
||||
EXPECT_EQ(0, stats.decoded_plc);
|
||||
EXPECT_EQ(0, stats.decoded_neteq_plc);
|
||||
EXPECT_EQ(0, stats.decoded_plc_cng);
|
||||
EXPECT_EQ(0, stats.decoded_muted_output);
|
||||
|
||||
@ -308,7 +308,7 @@ TEST_F(AudioCodingModuleTestOldApi, MAYBE_NetEqCalls) {
|
||||
EXPECT_EQ(0, stats.calls_to_silence_generator);
|
||||
EXPECT_EQ(kNumNormalCalls, stats.decoded_normal);
|
||||
EXPECT_EQ(0, stats.decoded_cng);
|
||||
EXPECT_EQ(kNumPlc, stats.decoded_plc);
|
||||
EXPECT_EQ(kNumPlc, stats.decoded_neteq_plc);
|
||||
EXPECT_EQ(kNumPlcCng, stats.decoded_plc_cng);
|
||||
EXPECT_EQ(0, stats.decoded_muted_output);
|
||||
// TODO(henrik.lundin) Add a test with muted state enabled.
|
||||
|
||||
@ -28,7 +28,11 @@ void CallStatistics::DecodedByNetEq(AudioFrame::SpeechType speech_type,
|
||||
break;
|
||||
}
|
||||
case AudioFrame::kPLC: {
|
||||
++decoding_stat_.decoded_plc;
|
||||
++decoding_stat_.decoded_neteq_plc;
|
||||
break;
|
||||
}
|
||||
case AudioFrame::kCodecPLC: {
|
||||
++decoding_stat_.decoded_codec_plc;
|
||||
break;
|
||||
}
|
||||
case AudioFrame::kCNG: {
|
||||
|
||||
@ -25,7 +25,7 @@ TEST(CallStatisticsTest, InitializedZero) {
|
||||
EXPECT_EQ(0, stats.calls_to_silence_generator);
|
||||
EXPECT_EQ(0, stats.decoded_normal);
|
||||
EXPECT_EQ(0, stats.decoded_cng);
|
||||
EXPECT_EQ(0, stats.decoded_plc);
|
||||
EXPECT_EQ(0, stats.decoded_neteq_plc);
|
||||
EXPECT_EQ(0, stats.decoded_plc_cng);
|
||||
EXPECT_EQ(0, stats.decoded_muted_output);
|
||||
}
|
||||
@ -37,15 +37,17 @@ TEST(CallStatisticsTest, AllCalls) {
|
||||
call_stats.DecodedBySilenceGenerator();
|
||||
call_stats.DecodedByNetEq(AudioFrame::kNormalSpeech, false);
|
||||
call_stats.DecodedByNetEq(AudioFrame::kPLC, false);
|
||||
call_stats.DecodedByNetEq(AudioFrame::kCodecPLC, false);
|
||||
call_stats.DecodedByNetEq(AudioFrame::kPLCCNG, true); // Let this be muted.
|
||||
call_stats.DecodedByNetEq(AudioFrame::kCNG, false);
|
||||
|
||||
stats = call_stats.GetDecodingStatistics();
|
||||
EXPECT_EQ(4, stats.calls_to_neteq);
|
||||
EXPECT_EQ(5, stats.calls_to_neteq);
|
||||
EXPECT_EQ(1, stats.calls_to_silence_generator);
|
||||
EXPECT_EQ(1, stats.decoded_normal);
|
||||
EXPECT_EQ(1, stats.decoded_cng);
|
||||
EXPECT_EQ(1, stats.decoded_plc);
|
||||
EXPECT_EQ(1, stats.decoded_neteq_plc);
|
||||
EXPECT_EQ(1, stats.decoded_codec_plc);
|
||||
EXPECT_EQ(1, stats.decoded_plc_cng);
|
||||
EXPECT_EQ(1, stats.decoded_muted_output);
|
||||
}
|
||||
|
||||
@ -57,7 +57,8 @@ struct AudioDecodingCallStats {
|
||||
: calls_to_silence_generator(0),
|
||||
calls_to_neteq(0),
|
||||
decoded_normal(0),
|
||||
decoded_plc(0),
|
||||
decoded_neteq_plc(0),
|
||||
decoded_codec_plc(0),
|
||||
decoded_cng(0),
|
||||
decoded_plc_cng(0),
|
||||
decoded_muted_output(0) {}
|
||||
@ -66,7 +67,8 @@ struct AudioDecodingCallStats {
|
||||
// and NetEq was disengaged from decoding.
|
||||
int calls_to_neteq; // Number of calls to NetEq.
|
||||
int decoded_normal; // Number of calls where audio RTP packet decoded.
|
||||
int decoded_plc; // Number of calls resulted in PLC.
|
||||
int decoded_neteq_plc; // Number of calls resulted in NetEq PLC.
|
||||
int decoded_codec_plc; // Number of calls resulted in codec PLC.
|
||||
int decoded_cng; // Number of calls where comfort noise generated due to DTX.
|
||||
int decoded_plc_cng; // Number of calls resulted where PLC faded to CNG.
|
||||
int decoded_muted_output; // Number of calls returning a muted state output.
|
||||
|
||||
@ -203,6 +203,11 @@ void SetAudioFrameActivityAndType(bool vad_enabled,
|
||||
audio_frame->vad_activity_ = AudioFrame::kVadPassive;
|
||||
break;
|
||||
}
|
||||
case NetEqImpl::OutputType::kCodecPLC: {
|
||||
audio_frame->speech_type_ = AudioFrame::kCodecPLC;
|
||||
audio_frame->vad_activity_ = last_vad_activity;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
RTC_NOTREACHED();
|
||||
}
|
||||
@ -2088,6 +2093,8 @@ NetEqImpl::OutputType NetEqImpl::LastOutputType() {
|
||||
return OutputType::kPLC;
|
||||
} else if (vad_->running() && !vad_->active_speech()) {
|
||||
return OutputType::kVadPassive;
|
||||
} else if (last_mode_ == kModeCodecPlc) {
|
||||
return OutputType::kCodecPLC;
|
||||
} else {
|
||||
return OutputType::kNormalSpeech;
|
||||
}
|
||||
|
||||
@ -64,7 +64,14 @@ struct PreemptiveExpandFactory;
|
||||
|
||||
class NetEqImpl : public webrtc::NetEq {
|
||||
public:
|
||||
enum class OutputType { kNormalSpeech, kPLC, kCNG, kPLCCNG, kVadPassive };
|
||||
enum class OutputType {
|
||||
kNormalSpeech,
|
||||
kPLC,
|
||||
kCNG,
|
||||
kPLCCNG,
|
||||
kVadPassive,
|
||||
kCodecPLC
|
||||
};
|
||||
|
||||
enum ErrorCodes {
|
||||
kNoError = 0,
|
||||
|
||||
Reference in New Issue
Block a user