41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
|
|
/**
|
|
* @file - codecs.js - Handles tasks regarding codec strings such as translating them to
|
|
* codec strings, or translating codec strings into objects that can be examined.
|
|
*/
|
|
|
|
/**
|
|
* Parses a codec string to retrieve the number of codecs specified,
|
|
* the video codec and object type indicator, and the audio profile.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
var parseCodecs = function parseCodecs() {
|
|
var codecs = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];
|
|
|
|
var result = {
|
|
codecCount: 0
|
|
};
|
|
var parsed = undefined;
|
|
|
|
result.codecCount = codecs.split(',').length;
|
|
result.codecCount = result.codecCount || 2;
|
|
|
|
// parse the video codec
|
|
parsed = /(^|\s|,)+(avc1)([^ ,]*)/i.exec(codecs);
|
|
if (parsed) {
|
|
result.videoCodec = parsed[2];
|
|
result.videoObjectTypeIndicator = parsed[3];
|
|
}
|
|
|
|
// parse the last field of the audio codec
|
|
result.audioProfile = /(^|\s|,)+mp4a.[0-9A-Fa-f]+\.([0-9A-Fa-f]+)/i.exec(codecs);
|
|
result.audioProfile = result.audioProfile && result.audioProfile[2];
|
|
|
|
return result;
|
|
};
|
|
exports.parseCodecs = parseCodecs; |