@remotion/media-parser
Version:
A pure JavaScript library for parsing video files
39 lines (38 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseDecoderSpecificConfig = void 0;
const parseDecoderSpecificConfig = (iterator) => {
const layerTag = iterator.getUint8();
const layerSize = iterator.getPaddedFourByteNumber();
const start = iterator.counter.getOffset();
if (layerTag !== 5) {
iterator.discard(layerSize);
return {
type: 'unknown-decoder-specific-config',
};
}
// https://csclub.uwaterloo.ca/~pbarfuss/ISO14496-3-2009.pdf
// 1.6.2.1 AudioSpecificConfig
const bytes = iterator.getSlice(layerSize);
iterator.counter.decrement(layerSize);
iterator.startReadingBits();
const audioObjectType = iterator.getBits(5);
const samplingFrequencyIndex = iterator.getBits(4);
if (samplingFrequencyIndex === 0xf) {
iterator.getBits(24);
}
const channelConfiguration = iterator.getBits(4);
iterator.stopReadingBits();
const read = iterator.counter.getOffset() - start;
if (read < layerSize) {
iterator.discard(layerSize - read);
}
return {
type: 'mp4a-specific-config',
audioObjectType,
samplingFrequencyIndex,
channelConfiguration,
asBytes: bytes,
};
};
exports.parseDecoderSpecificConfig = parseDecoderSpecificConfig;