1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 'use strict';
- var segments = require('data-files!segments');
- var
- QUnit = require('qunit'),
- utils = require('../lib/aac/utils.js'),
- testSegment = segments['test-aac-segment.aac']();
- var id3TagOffset = 0;
- var audioFrameOffset = 73;
- QUnit.module('AAC Utils');
- QUnit.test('correctly determines aac data', function(assert) {
- assert.ok(utils.isLikelyAacData(testSegment), 'test segment is aac');
- var id3Offset = utils.parseId3TagSize(testSegment, 0);
- var id3 = Array.prototype.slice.call(testSegment, 0, id3Offset);
- var segmentOnly = testSegment.subarray(id3Offset);
- var multipleId3 = new Uint8Array([]
- .concat(id3)
- .concat(id3)
- .concat(id3)
- .concat(id3)
- .concat(Array.prototype.slice.call(segmentOnly))
- );
- assert.ok(utils.isLikelyAacData(segmentOnly), 'test segment is aac without id3');
- assert.notOk(utils.isLikelyAacData(testSegment.subarray(id3Offset + 25)), 'non aac data not recognized');
- assert.notOk(utils.isLikelyAacData(testSegment.subarray(0, 5)), 'not enough aac data is not recognized');
- assert.ok(utils.isLikelyAacData(multipleId3), 'test segment with multilpe id3');
- });
- QUnit.test('correctly parses aac packet type', function(assert) {
- assert.equal(utils.parseType(testSegment, id3TagOffset), 'timed-metadata',
- 'parsed timed-metadata type');
- assert.equal(utils.parseType(testSegment, 1), null,
- 'parsed unknown type');
- assert.equal(utils.parseType(testSegment, audioFrameOffset), 'audio',
- 'parsed audio type');
- });
- QUnit.test('correctly parses ID3 tag size', function(assert) {
- assert.equal(utils.parseId3TagSize(testSegment, id3TagOffset), 73,
- 'correct id3 tag size');
- });
- QUnit.test('correctly parses timestamp from ID3 metadata', function(assert) {
- var frameSize = utils.parseId3TagSize(testSegment, id3TagOffset);
- var frame = testSegment.subarray(id3TagOffset, id3TagOffset + frameSize);
- assert.equal(utils.parseAacTimestamp(frame), 895690, 'correct aac timestamp');
- });
- QUnit.test('correctly parses adts frame size', function(assert) {
- assert.equal(utils.parseAdtsSize(testSegment, audioFrameOffset), 13,
- 'correct adts frame size');
- });
- QUnit.test('correctly parses packet sample rate', function(assert) {
- var frameSize = utils.parseAdtsSize(testSegment, audioFrameOffset);
- var frame = testSegment.subarray(audioFrameOffset, audioFrameOffset + frameSize);
- assert.equal(utils.parseSampleRate(frame), 44100, 'correct sample rate');
- });
- QUnit.test('parses correct ID3 tag size', function(assert) {
- var packetStream = new Uint8Array(10);
- packetStream[9] = 63;
- assert.equal(utils.parseId3TagSize(packetStream, 0),
- 73,
- 'correctly parsed a header without a footer');
- });
- QUnit.test('parses correct ADTS Frame size', function(assert) {
- var packetStream = new Uint8Array(6);
- packetStream[3] = 128;
- packetStream[4] = 29;
- packetStream[5] = 255;
- assert.equal(utils.parseAdtsSize(packetStream, 0), 239, 'correctly parsed framesize');
- });
|