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

Unified Diff: webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.js

Issue 2721023002: Javascript audio player for the exported HTML file. (Closed)
Patch Set: rebase 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
« no previous file with comments | « webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.css ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.js
diff --git a/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.js b/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.js
new file mode 100644
index 0000000000000000000000000000000000000000..68e4ff93ac38bf2de1adea5cea29446b03b97098
--- /dev/null
+++ b/webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.js
@@ -0,0 +1,186 @@
+// Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
+//
+// Use of this source code is governed by a BSD-style license
+// that can be found in the LICENSE file in the root of the source
+// tree. An additional intellectual property rights grant can be found
+// in the file PATENTS. All contributing project authors may
+// be found in the AUTHORS file in the root of the source tree.
+
+/**
+ * Inspector UI class.
+ * @constructor
+ */
+function Inspector() {
+ this.audioPlayer_ = new Audio();
+ this.inspectorNode_ = document.createElement('div');
+ this.divNoiseGenerator_ = document.createElement('div');
+ this.divNoiseParameters_ = document.createElement('div');
+ this.buttonPlayAudioIn_ = document.createElement('button');
+ this.buttonPlayAudioOut_ = document.createElement('button');
+ this.buttonPlayAudioRef_ = document.createElement('button');
+ this.buttonStopAudio_ = document.createElement('button');
+
+ this.selectedItem_ = null;
+ this.audioInUrl_ = null;
+ this.audioOutUrl_ = null;
+ this.audioRefUrl_ = null;
+}
+
+/**
+ * Initialize.
+ */
+Inspector.prototype.init = function() {
+ window.event.stopPropagation();
+
+ // Create inspector UI.
+ this.buildInspector_();
+ var body = document.getElementsByTagName('body')[0];
+ body.appendChild(this.inspectorNode_);
+
+ // Bind click handler.
+ var self = this;
+ var items = document.getElementsByClassName('score');
+ for (var index = 0; index < items.length; index++) {
+ items[index].onclick = function() {
+ self.openInspector(this);
+ };
+ }
+
+ // Bind pressed key handlers.
+ var self = this;
+ window.onkeyup = function(e) {
+ var key = e.keyCode ? e.keyCode : e.which;
+ switch (key) {
+ case 49: // 1.
+ self.playAudioIn();
+ break;
+ case 50: // 2.
+ self.playAudioOut();
+ break;
+ case 51: // 3.
+ self.playAudioRef();
+ break;
+ case 83: // S.
+ case 115: // s.
+ self.stopAudio();
+ break;
+ }
+ };
+};
+
+/**
+ * Open the inspector.
+ * @param {DOMElement} target: score element that has been clicked.
+ */
+Inspector.prototype.openInspector = function(target) {
+ if (this.selectedItem_ != null) {
+ this.selectedItem_.classList.remove('selected');
+ }
+ this.selectedItem_ = target;
+ this.selectedItem_.classList.add('selected');
+
+ var target = this.selectedItem_.querySelector('.noise-desc');
+ var noiseName = target.querySelector('input[name=noise_name]').value;
+ var noiseParams = target.querySelector('input[name=noise_params]').value;
+ var audioIn = target.querySelector('input[name=audio_in]').value;
+ var audioOut = target.querySelector('input[name=audio_out]').value;
+ var audioRef = target.querySelector('input[name=audio_ref]').value;
+
+ this.divNoiseGenerator_.innerHTML = noiseName;
+ this.divNoiseParameters_.innerHTML = noiseParams;
+
+ this.audioInUrl_ = audioIn;
+ this.audioOutUrl_ = audioOut;
+ this.audioRefUrl_ = audioRef;
+};
+
+/**
+ * Play APM audio input signal.
+ */
+Inspector.prototype.playAudioIn = function() {
+ this.play_(this.audioInUrl_);
+};
+
+/**
+ * Play APM audio output signal.
+ */
+Inspector.prototype.playAudioOut = function() {
+ this.play_(this.audioOutUrl_);
+};
+
+/**
+ * Play APM audio reference signal.
+ */
+Inspector.prototype.playAudioRef = function() {
+ this.play_(this.audioRefUrl_);
+};
+
+/**
+ * Stop playing audio.
+ */
+Inspector.prototype.stopAudio = function() {
+ this.audioPlayer_.pause();
+};
+
+/**
+ * Play audio file from url.
+ * @param {string} url
+ */
+Inspector.prototype.play_ = function(url) {
+ if (url == null) {
+ alert('Select a score first.');
+ return;
+ }
+
+ this.audioPlayer_.src = url;
+ this.audioPlayer_.play();
+};
+
+/**
+ * Build inspector.
+ */
+Inspector.prototype.buildInspector_ = function() {
+ var self = this;
+
+ this.inspectorNode_.setAttribute('class', 'inspector');
+ this.inspectorNode_.innerHTML = '<div class="property noise-generator">' +
+ '<div class="name">noise generator</div>' +
+ '</div>' +
+ '<div class="property noise-parmas">' +
+ '<div class="name">parameters</div>' +
+ '</div>' +
+ '<div class="buttons"></div>';
+
+ // Add value nodes.
+ function addValueNode(node, parent_selector) {
+ node.setAttribute('class', 'value');
+ node.innerHTML = '-';
+ var parentNode = self.inspectorNode_.querySelector(parent_selector);
+ parentNode.appendChild(node);
+ }
+ addValueNode(this.divNoiseGenerator_, 'div.noise-generator');
+ addValueNode(this.divNoiseParameters_, 'div.noise-parmas');
+
+ // Add buttons.
+ var buttonsNode = this.inspectorNode_.querySelector('div.buttons');
+ function addButton(node, caption, callback) {
+ node.innerHTML = caption;
+ buttonsNode.appendChild(node);
+ node.onclick = callback.bind(self);
+ }
+ addButton(this.buttonPlayAudioIn_, 'A_in (<strong>1</strong>)',
+ this.playAudioIn);
+ addButton(this.buttonPlayAudioOut_, 'A_out (<strong>2</strong>)',
+ this.playAudioOut);
+ addButton(this.buttonPlayAudioRef_, 'A_ref (<strong>3</strong>)',
+ this.playAudioRef);
+ addButton(this.buttonStopAudio_, '<strong>S</strong>top', this.stopAudio);
+};
+
+/**
+ * Instance and initialize the inspector.
+ */
+function initialize() {
+ var inspector = new Inspector();
+ inspector.init();
+}
« no previous file with comments | « webrtc/modules/audio_processing/test/py_quality_assessment/quality_assessment/results.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698