diff options
author | Minteck <contact@minteck.org> | 2022-06-14 12:34:28 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-06-14 12:34:28 +0200 |
commit | c246f73616c0c3e99a35e52ee6f6a55116b91c09 (patch) | |
tree | 7a37435a0ac4806173f0de9e2753cb161c14c39f /browser/src/eqmc.js | |
parent | a6eabecc147b17aae29c9dcfe2bfded153a0f548 (diff) | |
download | elac-c246f73616c0c3e99a35e52ee6f6a55116b91c09.tar.gz elac-c246f73616c0c3e99a35e52ee6f6a55116b91c09.tar.bz2 elac-c246f73616c0c3e99a35e52ee6f6a55116b91c09.zip |
Browser lib
Diffstat (limited to 'browser/src/eqmc.js')
-rw-r--r-- | browser/src/eqmc.js | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/browser/src/eqmc.js b/browser/src/eqmc.js deleted file mode 100644 index fddab1a..0000000 --- a/browser/src/eqmc.js +++ /dev/null @@ -1,79 +0,0 @@ -class EQMCData extends Object { - constructor(obj) { - super(); - - for (let key of Object.keys(obj)) { - this[key] = obj[key]; - } - } -} - -class EQMCAudioStream extends Object { - constructor(obj) { - super(); - - for (let key of Object.keys(obj)) { - this[key] = obj[key]; - } - } -} - -class EQMCError extends Error { - constructor(props) { - super(props); - this.name = "EQMCError"; - } -} - -window.EQMC = { - _base64ToArrayBuffer: (base64) => { - var binary_string = window.atob(base64); - var len = binary_string.length; - var bytes = new Uint8Array(len); - for (var i = 0; i < len; i++) { - bytes[i] = binary_string.charCodeAt(i); - } - return bytes.buffer; - }, - - isEQMCData: async (data) => { - return data instanceof EQMCData && data["_eqmc"]; - }, - - isEQMCAudioStream: async (data) => { - return data instanceof EQMCAudioStream && data["data"]; - }, - - create: async (file) => { - try { - return new EQMCData(JSON.parse(new TextDecoder("utf-8").decode(pako.inflate(new Uint8Array((await (await (await window.fetch(file)).blob()).arrayBuffer())))))); - } catch (e) { - console.error(e); - throw new EQMCError("Failed to construct EQMCData object"); - } - }, - - decodeFile: async (data, file) => { - if (!await EQMC.isEQMCData(data)) throw new EQMCError("Invalid input, expected EQMCData"); - - if (data.files.length - 1 >= file) { - let s = data.files[file]; - s["data"] = new Blob([pako.inflate(EQMC._base64ToArrayBuffer(s.data))]); - return new EQMCAudioStream(s); - } else { - throw new EQMCError("File index is out of range"); - } - }, - - toAudio: async (data) => { - if (!await EQMC.isEQMCAudioStream(data)) throw new EQMCError("Invalid input, expected EQMCAudioStream"); - - return new Audio(window.URL.createObjectURL(data.data)); - }, - - quickAudio: async (url, id) => { - let eqmc = await EQMC.create(url); - let file = await EQMC.decodeFile(eqmc, id); - return await EQMC.toAudio(file); - } -}
\ No newline at end of file |