uupaa.aacprofile.js
Version:
AAC Profile and Level detection.
92 lines (74 loc) • 2.93 kB
JavaScript
var ModuleTestAACProfile = (function(global) {
var test = new Test(["AACProfile"], { // Add the ModuleName to be tested here (if necessary).
disable: false, // disable all tests.
browser: true, // enable browser test.
worker: true, // enable worker test.
node: true, // enable node test.
nw: true, // enable nw.js test.
el: true, // enable electron (render process) test.
button: true, // show button.
both: true, // test the primary and secondary modules.
ignoreError:false, // ignore error.
callback: function() {
},
errorback: function(error) {
console.error(error.message);
}
});
if (IN_BROWSER || IN_NW || IN_EL || IN_WORKER || IN_NODE) {
test.add([
testAACProfile_getProfile,
testAACProfile_getAudioObjectType,
]);
}
// --- test cases ------------------------------------------
function testAACProfile_getProfile(test, pass, miss) {
var result = {
1: _getProfile("mp4a.40.2, avc1.66.13") === "AAC-LC",
2: _getProfile("mp4a.40.5, avc1.42c00d") === "HE-AAC",
3: _getProfile("mp4a.40.29, avc1.42c00d") === "HE-AAC v2",
4: _getProfile("mp4a.40.34, avc1.66.30") === "MP3",
5: _getProfile("mp4a.40.99, avc1.66.30") === "", // UNKNOWN Profile
};
if ( /false/.test(JSON.stringify(result)) ) {
test.done(miss());
} else {
test.done(pass());
}
}
function _getProfile(codecs) { // @arg CodecString - "mp4a.40.2, avc1.4d4015";
var codecArray = codecs.split(","); // -> ["mp4a.40.2", " avc1.42c01e"]
for (var i = 0, iz = codecArray.length; i < iz; ++i) {
var codec = codecArray[i].trim();
if (/mp4a/.test(codec)) {
return AACProfile.getProfile(codec);
}
}
return "";
}
function testAACProfile_getAudioObjectType(test, pass, miss) {
var result = {
1: _getAudioObjectType("mp4a.40.2, avc1.66.13") === 2,
2: _getAudioObjectType("mp4a.40.5, avc1.42c00d") === 5,
3: _getAudioObjectType("mp4a.40.29, avc1.42c00d") === 29,
4: _getAudioObjectType("mp4a.40.34, avc1.66.30") === 34,
5: _getAudioObjectType("mp4a.40.99, avc1.66.30") === 0, // UNKNOWN Profile
};
if ( /false/.test(JSON.stringify(result)) ) {
test.done(miss());
} else {
test.done(pass());
}
}
function _getAudioObjectType(codecs) { // @arg CodecString - "mp4a.40.2, avc1.4d4015";
var codecArray = codecs.split(","); // -> ["mp4a.40.2", " avc1.42c01e"]
for (var i = 0, iz = codecArray.length; i < iz; ++i) {
var codec = codecArray[i].trim();
if (/mp4a/.test(codec)) {
return AACProfile.getAudioObjectType(codec);
}
}
return 0;
}
return test.run();
})(GLOBAL);