/* NAME main.js AUTHOR Trek Hopton <trek@ausocean.org> Alan Noble <alan@ausocean.org> LICENSE This file is Copyright (C) 2018 the Australian Ocean Lab (AusOcean) It is free software: you can redistribute it and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License in gpl.txt. If not, see [GNU licenses](http://www.gnu.org/licenses). */ // playFile will process and play the chosen target file. function playFile() { const input = event.target.files[0] const reader = new FileReader() reader.onload = event => { bytes = new Uint8Array(event.target.result); let dec = new Decoder(); // Decode adpcm to pcm. let decoded = dec.decode(bytes); // Convert raw pcm to wav TODO(Trek): make these configurable. let wav = pcmToWav(new Uint8Array(decoded.buffer), 48000, 1, 16); // Play wav data in player. const blob = new Blob([wav], { type: 'audio/wav' }); const url = URL.createObjectURL(blob); const audio = document.getElementById('audio'); const source = document.getElementById('source'); source.src = url; audio.load(); audio.play(); } reader.onerror = error => reject(error) reader.readAsArrayBuffer(input) } // getQuery gets everything after the question mark in the URL. function getQuery() { let regex = new RegExp("\\?(.*)"); let match = regex.exec(window.location.href); if (match == null) { return ''; } else { return decodeURIComponent(match[1].replace(/\+/g, " ")); } } // load gets the file from the given url and displays a link for download. function load() { let url = document.getElementById('url').value; if (url == "") { url = getQuery() document.getElementById('url').value = url; } if (url[0] == '/') { url = window.location.protocol + '//' + window.location.host + url; } if (url == "") { return; } let request = new XMLHttpRequest(); request.responseType = "blob"; request.onreadystatechange = function () { if (request.readyState === XMLHttpRequest.DONE) { if (request.status === 200) { console.log("request received"); data = request.response; dataURL = URL.createObjectURL(data); let link = document.getElementById("link"); link.href = dataURL; link.download = "media.ts"; link.innerHTML = "Download"; } else { console.log('There was a problem with the request. Status: ' + request.status); } } } request.open("GET", url, true); request.send(); }