Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4312)

Unified Diff: chrome/test/data/webrtc/audio_extraction.js

Issue 2753543010: WebRTC: Use the MediaStream Recording API for the audio_quality_browsertest. (Closed)
Patch Set: Removed obsolete comments. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webrtc/audio_extraction.js
diff --git a/chrome/test/data/webrtc/audio_extraction.js b/chrome/test/data/webrtc/audio_extraction.js
new file mode 100644
index 0000000000000000000000000000000000000000..9c22a22c216f1bb2b1da2ddace5aaa06bcc4cf9d
--- /dev/null
+++ b/chrome/test/data/webrtc/audio_extraction.js
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2017 The Chromium Authors. All rights reserved.
mcasas 2017/03/21 16:54:22 No (c): https://chromium.googlesource.com/chromiu
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/**
+ * Aggregate target bits per second for encoding of the Audio track.
+ * @private
+ */
+var gAudioBitsPerSecond = 3000000;
mcasas 2017/03/21 16:54:22 gVarName for global variables is atypical in javas
+
+/**
+ * The duration of the audio recording in milliseconds.
+ * @private
+ */
+var gCaptureDuration = 0;
mcasas 2017/03/21 16:54:22 s/gCaptureDuration/captureDurationMs/ but for its
+
+/**
+ * The recorded audio encoded in Base64.
+ * @private
+ */
+var gAudioBase64 = '';
mcasas 2017/03/21 16:54:22 s/gAudioBase64/audio_as_base64/ This can be a hug
ehmaldonado_chromium 2017/03/21 16:59:55 Are there any examples of this already?
+
+/**
+ * Chunks of the audio recorded by MediaRecorded as they become available.
+ * @private
+ */
+var gChunks = [];
+
+/**
+ * A string to be returned to the test about the current status of capture.
+ */
+var gCapturingStatus = 'capturing-not-started';
+
+/**
+ * Starts the audio capturing.
+ *
+ * @param {Number} The duration of the capture in seconds.
+ */
+function startAudioCapture(duration) {
mcasas 2017/03/21 16:54:22 s/duration/duration_seconds/ or similar?
+ console.log('started-capture');
+ var inputElement = document.getElementById('remote-view');
+
+ // |audioBitsPerSecond| must set to a large number to throw as little
+ // information away as possible.
+ var mediaRecorderOptions = {
+ audioBitsPerSecond: gAudioBitsPerSecond,
+ mimeType: 'audio/webm',
+ };
+ var stream = getStreamFromElement_(inputElement);
+ gCaptureDuration = 1000 * duration;
+
+ var mediaRecorder = new MediaRecorder(stream, mediaRecorderOptions);
+
+ mediaRecorder.ondataavailable = function(recording) {
+ gChunks.push(recording.data);
+ }
+ mediaRecorder.onstop = function() {
+ console.log(gChunks.length);
+ var audioBlob = new Blob(gChunks, {type: "audio/webm"});
+ gChunks = [];
+ var reader = new FileReader();
+ reader.onloadend = function() {
+ gAudioBase64 = reader.result.substr(reader.result.indexOf(',') + 1);
+ gCapturingStatus = 'done-capturing';
+ debug('done-capturing');
+ }
+ reader.readAsDataURL(audioBlob);
+ }
+
+ mediaRecorder.start();
+ setTimeout(function() { mediaRecorder.stop(); }, gCaptureDuration);
+ gCapturingStatus = 'still-capturing';
+}
+
+/**
+ * Returns the audio recorded by RecordMedia encoded in Base64.
+ */
+function getRecordedAudioAsBase64() {
+ silentReturnToTest(gAudioBase64);
+}
+
+/**
+ * Queries if we're done with the capturing yet.
+ */
+function doneCapturingAudio() {
+ returnToTest(gCapturingStatus);
+}
+
+/**
+ * Returns the stream from the input element to be attached to MediaRecorder.
+ * @private
+ */
+function getStreamFromElement_(element) {
+ if (element.srcObject !== undefined) {
+ return element.srcObject;
+ } else if (element.src !== undefined) {
+ return element.src;
+ } else {
+ failTest('Error extracting stream from element.');
+ }
mcasas 2017/03/21 16:54:22 It's pervasive in Chromium to not have {} when the
+}

Powered by Google App Engine
This is Rietveld 408576698