Index: chrome/browser/media/chrome_webrtc_audio_quality_browsertest.cc |
diff --git a/chrome/browser/media/chrome_webrtc_audio_quality_browsertest.cc b/chrome/browser/media/chrome_webrtc_audio_quality_browsertest.cc |
index cf559b5a2e4fc38fcf2b608acebf5df5912bcdd4..3bce53ae1ba9b335fe2b38fd04c3220a7c90fe97 100644 |
--- a/chrome/browser/media/chrome_webrtc_audio_quality_browsertest.cc |
+++ b/chrome/browser/media/chrome_webrtc_audio_quality_browsertest.cc |
@@ -54,6 +54,10 @@ static const char kWebRtcAudioTestHtmlPage[] = |
// Test we can set up a WebRTC call and play audio through it. |
// |
+// WARNING: this test may mess with both output and input levels on your system |
+// and may cause audio to start blasting at full volume into your |
+// headphones. |
+// |
// If you're not a googler and want to run this test, you need to provide a |
// pesq binary for your platform (and sox.exe on windows). Read more on how |
// resources are managed in chrome/test/data/webrtc/resources/README. |
@@ -106,7 +110,7 @@ static const char kWebRtcAudioTestHtmlPage[] = |
// 5. Launch chrome and try playing a video with sound. You should see |
// in the volume meter for the mix device. Configure the mix device to have |
// 50 / 100 in level. Also go into the playback tab, right-click Speakers, |
-// and set that level to 50 / 100. Otherwise you will get distortion in |
+// and set that level to 50 / 100. Otherwise you might get distortion in |
// the recording. |
class MAYBE_WebRtcAudioQualityBrowserTest : public WebRtcTestBase { |
public: |
@@ -249,7 +253,7 @@ class AudioRecorder { |
base::Process recording_application_; |
}; |
-bool ForceMicrophoneVolumeTo100Percent() { |
+bool ForceMicrophoneLevelTo100Percent() { |
#if defined(OS_WIN) |
// Note: the force binary isn't in tools since it's one of our own. |
base::CommandLine command_line(test::GetReferenceFilesDir().Append( |
@@ -487,6 +491,7 @@ void SplitFileOnSilenceIntoDir(const base::FilePath& to_split, |
// First trim beginning and end since they are tricky for the splitter. |
base::FilePath trimmed_audio = CreateTemporaryWaveFile(); |
+ // TODO(phoglund): find smarter way to do this and get rid of RemoveSilence. |
ASSERT_TRUE(RemoveSilence(to_split, trimmed_audio)); |
DVLOG(0) << "Trimmed silence: " << trimmed_audio.value() << std::endl; |
@@ -543,24 +548,14 @@ void AnalyzeSegmentsAndPrintResult( |
void ComputeAndPrintPesqResults(const base::FilePath& reference_file, |
const base::FilePath& recording, |
const std::string& perf_modifier) { |
- base::FilePath trimmed_reference = CreateTemporaryWaveFile(); |
- base::FilePath trimmed_recording = CreateTemporaryWaveFile(); |
- |
- ASSERT_TRUE(RemoveSilence(reference_file, trimmed_reference)); |
- ASSERT_TRUE(RemoveSilence(recording, trimmed_recording)); |
- |
std::string raw_mos; |
std::string mos_lqo; |
- ASSERT_TRUE(RunPesq(trimmed_reference, trimmed_recording, 16000, |
- &raw_mos, &mos_lqo)); |
+ ASSERT_TRUE(RunPesq(reference_file, recording, 16000, &raw_mos, &mos_lqo)); |
perf_test::PrintResult( |
"audio_pesq", perf_modifier, "raw_mos", raw_mos, "score", true); |
perf_test::PrintResult( |
"audio_pesq", perf_modifier, "mos_lqo", mos_lqo, "score", true); |
- |
- EXPECT_TRUE(base::DeleteFile(trimmed_reference, false)); |
- EXPECT_TRUE(base::DeleteFile(trimmed_recording, false)); |
} |
} // namespace |
@@ -574,8 +569,7 @@ void ComputeAndPrintPesqResults(const base::FilePath& reference_file, |
// audio device is up following the getUserMedia call in the left tab. The time |
// it takes to negotiate a call isn't deterministic, but two seconds should be |
// plenty of time. Similarly, the recording time should be enough to catch the |
-// whole reference file. If you then silence-trim the reference file and actual |
-// file, you should end up with two time-synchronized files. |
+// whole reference file. |
void MAYBE_WebRtcAudioQualityBrowserTest::SetupAndRecordAudioCall( |
const base::FilePath& reference_file, |
const base::FilePath& recording, |
@@ -583,7 +577,7 @@ void MAYBE_WebRtcAudioQualityBrowserTest::SetupAndRecordAudioCall( |
const base::TimeDelta recording_time) { |
ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
ASSERT_TRUE(test::HasReferenceFilesInCheckout()); |
- ASSERT_TRUE(ForceMicrophoneVolumeTo100Percent()); |
+ ASSERT_TRUE(ForceMicrophoneLevelTo100Percent()); |
ConfigureFakeDeviceToPlayFile(reference_file); |
@@ -631,7 +625,8 @@ IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcAudioQualityBrowserTest, |
ASSERT_NO_FATAL_FAILURE(SetupAndRecordAudioCall( |
reference_file, recording, kAudioOnlyCallConstraints, |
base::TimeDelta::FromSeconds(25))); |
- ComputeAndPrintPesqResults(reference_file, recording, "_getusermedia"); |
+ ASSERT_NO_FATAL_FAILURE(ComputeAndPrintPesqResults( |
+ reference_file, recording, "_getusermedia")); |
EXPECT_TRUE(base::DeleteFile(recording, false)); |
} |
@@ -646,7 +641,7 @@ IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcAudioQualityBrowserTest, |
ASSERT_TRUE(test::HasReferenceFilesInCheckout()); |
ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
- ASSERT_TRUE(ForceMicrophoneVolumeTo100Percent()); |
+ ASSERT_TRUE(ForceMicrophoneLevelTo100Percent()); |
content::WebContents* left_tab = |
OpenPageWithoutGetUserMedia(kWebRtcAudioTestHtmlPage); |
@@ -676,7 +671,9 @@ IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcAudioQualityBrowserTest, |
// through WebAudio earlier). |
base::FilePath reference_file = |
test::GetReferenceFilesDir().Append(kReferenceFile); |
- ComputeAndPrintPesqResults(reference_file, recording, "_webaudio"); |
+ ASSERT_NO_FATAL_FAILURE(ComputeAndPrintPesqResults( |
+ reference_file, recording, "_webaudio")); |
+ EXPECT_TRUE(base::DeleteFile(recording, false)); |
} |
/** |