| 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));
|
| }
|
|
|
| /**
|
|
|