mirror of https://bitbucket.org/ausocean/av.git
99 lines
2.2 KiB
JavaScript
99 lines
2.2 KiB
JavaScript
/*
|
|
AUTHOR
|
|
Trek Hopton <trek@ausocean.org>
|
|
|
|
LICENSE
|
|
This file is Copyright (C) 2020 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 http://www.gnu.org/licenses.
|
|
|
|
For hls.js Copyright notice and license, see LICENSE file.
|
|
*/
|
|
|
|
// from http://mp4ra.org/codecs.html
|
|
const sampleEntryCodesISO = {
|
|
audio: {
|
|
'a3ds': true,
|
|
'ac-3': true,
|
|
'ac-4': true,
|
|
'alac': true,
|
|
'alaw': true,
|
|
'dra1': true,
|
|
'dts+': true,
|
|
'dts-': true,
|
|
'dtsc': true,
|
|
'dtse': true,
|
|
'dtsh': true,
|
|
'ec-3': true,
|
|
'enca': true,
|
|
'g719': true,
|
|
'g726': true,
|
|
'm4ae': true,
|
|
'mha1': true,
|
|
'mha2': true,
|
|
'mhm1': true,
|
|
'mhm2': true,
|
|
'mlpa': true,
|
|
'mp4a': true,
|
|
'raw ': true,
|
|
'Opus': true,
|
|
'samr': true,
|
|
'sawb': true,
|
|
'sawp': true,
|
|
'sevc': true,
|
|
'sqcp': true,
|
|
'ssmv': true,
|
|
'twos': true,
|
|
'ulaw': true
|
|
},
|
|
video: {
|
|
'avc1': true,
|
|
'avc2': true,
|
|
'avc3': true,
|
|
'avc4': true,
|
|
'avcp': true,
|
|
'drac': true,
|
|
'dvav': true,
|
|
'dvhe': true,
|
|
'encv': true,
|
|
'hev1': true,
|
|
'hvc1': true,
|
|
'mjp2': true,
|
|
'mp4v': true,
|
|
'mvc1': true,
|
|
'mvc2': true,
|
|
'mvc3': true,
|
|
'mvc4': true,
|
|
'resv': true,
|
|
'rv60': true,
|
|
's263': true,
|
|
'svc1': true,
|
|
'svc2': true,
|
|
'vc-1': true,
|
|
'vp08': true,
|
|
'vp09': true
|
|
}
|
|
};
|
|
|
|
function isCodecType(codec, type) {
|
|
const typeCodes = sampleEntryCodesISO[type];
|
|
return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;
|
|
}
|
|
|
|
function isCodecSupportedInMp4(codec, type) {
|
|
return MediaSource.isTypeSupported(`${type || 'video'}/mp4;codecs="${codec}"`);
|
|
}
|
|
|
|
export { isCodecType, isCodecSupportedInMp4 };
|