Skip RTCMediaStreamTrackStats.echoReturnLoss[Enhancement] default value.
Due to the Chromium implementation[1] of GetAudioProcesssingStats, echoReturnLoss and echoReturnLossEnhancement could default to -100 when no value was available. This should be improved by using rtc::Optional or AudioProcessorInterface::GetStats being able to return false, but this requires a bunch of refactoring. In the meantime we "blacklist" the value -100 which is a nonsense value anyway. In that case echoReturnLoss[Enhancement] is correctly left undefined. [1] https://cs.chromium.org/chromium/src/content/renderer/media/media_stream_audio_processor_options.cc?sq=package:chromium&dr=C&rcl=1481530670&l=461 BUG=chromium:669877 Review-Url: https://codereview.webrtc.org/2573443002 Cr-Commit-Position: refs/heads/master@{#15611}
This commit is contained in:
parent
c3c2f31852
commit
9a394f0649
@ -317,10 +317,14 @@ void ProduceMediaStreamAndTrackStats(
|
||||
if (audio_track->GetAudioProcessor()) {
|
||||
AudioProcessorInterface::AudioProcessorStats audio_processor_stats;
|
||||
audio_track->GetAudioProcessor()->GetStats(&audio_processor_stats);
|
||||
audio_track_stats->echo_return_loss = static_cast<double>(
|
||||
audio_processor_stats.echo_return_loss);
|
||||
audio_track_stats->echo_return_loss_enhancement = static_cast<double>(
|
||||
audio_processor_stats.echo_return_loss_enhancement);
|
||||
if (audio_processor_stats.echo_return_loss != -100) {
|
||||
audio_track_stats->echo_return_loss = static_cast<double>(
|
||||
audio_processor_stats.echo_return_loss);
|
||||
}
|
||||
if (audio_processor_stats.echo_return_loss_enhancement != -100) {
|
||||
audio_track_stats->echo_return_loss_enhancement = static_cast<double>(
|
||||
audio_processor_stats.echo_return_loss_enhancement);
|
||||
}
|
||||
}
|
||||
report->AddStats(std::move(audio_track_stats));
|
||||
}
|
||||
|
||||
@ -1211,6 +1211,46 @@ TEST_F(RTCStatsCollectorTest,
|
||||
RTCMediaStreamTrackStats>());
|
||||
}
|
||||
|
||||
TEST_F(RTCStatsCollectorTest,
|
||||
CollectRTCMediaStreamStatsAndRTCMediaStreamTrackStats_Audio_Defaults) {
|
||||
rtc::scoped_refptr<StreamCollection> local_streams =
|
||||
StreamCollection::Create();
|
||||
EXPECT_CALL(test_->pc(), local_streams())
|
||||
.WillRepeatedly(Return(local_streams));
|
||||
|
||||
rtc::scoped_refptr<MediaStream> local_stream =
|
||||
MediaStream::Create("LocalStreamLabel");
|
||||
local_streams->AddStream(local_stream);
|
||||
|
||||
// Local audio track
|
||||
AudioProcessorInterface::AudioProcessorStats local_audio_processor_stats;
|
||||
local_audio_processor_stats.echo_return_loss = -100;
|
||||
local_audio_processor_stats.echo_return_loss_enhancement = -100;
|
||||
rtc::scoped_refptr<FakeAudioTrackForStats> local_audio_track =
|
||||
FakeAudioTrackForStats::Create(
|
||||
"LocalAudioTrackID",
|
||||
MediaStreamTrackInterface::TrackState::kEnded,
|
||||
32767,
|
||||
new FakeAudioProcessorForStats(local_audio_processor_stats));
|
||||
local_stream->AddTrack(local_audio_track);
|
||||
|
||||
rtc::scoped_refptr<const RTCStatsReport> report = GetStatsReport();
|
||||
|
||||
RTCMediaStreamTrackStats expected_local_audio_track(
|
||||
"RTCMediaStreamTrack_LocalAudioTrackID", report->timestamp_us());
|
||||
expected_local_audio_track.track_identifier = local_audio_track->id();
|
||||
expected_local_audio_track.remote_source = false;
|
||||
expected_local_audio_track.ended = true;
|
||||
expected_local_audio_track.detached = false;
|
||||
expected_local_audio_track.audio_level = 1.0;
|
||||
// Should be undefined: |expected_local_audio_track.echo_return_loss| and
|
||||
// |expected_local_audio_track.echo_return_loss_enhancement|.
|
||||
EXPECT_TRUE(report->Get(expected_local_audio_track.id()));
|
||||
EXPECT_EQ(expected_local_audio_track,
|
||||
report->Get(expected_local_audio_track.id())->cast_to<
|
||||
RTCMediaStreamTrackStats>());
|
||||
}
|
||||
|
||||
TEST_F(RTCStatsCollectorTest,
|
||||
CollectRTCMediaStreamStatsAndRTCMediaStreamTrackStats_Video) {
|
||||
rtc::scoped_refptr<StreamCollection> local_streams =
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user