Skip to content

Commit

Permalink
Add processors for stts and ctts
Browse files Browse the repository at this point in the history
  • Loading branch information
mradionov committed Aug 14, 2019
1 parent b2dc9b1 commit 36f0b80
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/processors/ctts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// ISO/IEC 14496-12:2012 - 8.6.1.3 Composition Time To Sample Box
ISOBox.prototype._boxProcessors['ctts'] = function() {
this._procFullBox();
this._procField('entry_count', 'uint', 32);
this._procEntries('entries', this.entry_count, function(entry) {
this._procEntryField(entry, 'sample_count', 'uint', 32);
this._procEntryField(entry, 'sample_offset', (this.version === 1) ? 'int' : 'uint', 32);
});
};
9 changes: 9 additions & 0 deletions src/processors/stts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// ISO/IEC 14496-12:2012 - 8.6.1.2 Decoding Time To Sample Box
ISOBox.prototype._boxProcessors['stts'] = function() {
this._procFullBox();
this._procField('entry_count', 'uint', 32);
this._procEntries('entries', this.entry_count, function(entry) {
this._procEntryField(entry, 'sample_count', 'uint', 32);
this._procEntryField(entry, 'sample_delta', 'uint', 32);
});
};
Binary file added test/fixtures/time_to_sample.mp4
Binary file not shown.
42 changes: 42 additions & 0 deletions test/spec/boxes_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,48 @@ describe('trex box', function() {
});
});

describe('stts box', function() {
it('should correctly parse the box', function() {
var parsedFile = loadParsedFixture('./test/fixtures/editlist.mp4');
var boxes = parsedFile.fetchAll('stts');
var box = boxes[0];

expect(boxes.length).toEqual(1);

expect(box.type).toEqual('stts');
expect(box.entry_count).toEqual(2);
expect(box.entries.length).toEqual(2);
expect(box.entries[0].sample_count).toEqual(47);
expect(box.entries[0].sample_delta).toEqual(1024);
expect(box.entries[1].sample_count).toEqual(1);
expect(box.entries[1].sample_delta).toEqual(896);
});
});

describe('ctts box', function() {
it('should correctly parse the box', function() {
var parsedFile = loadParsedFixture('./test/fixtures/time_to_sample.mp4');
var boxes = parsedFile.fetchAll('ctts');
var box = boxes[0];

expect(boxes.length).toEqual(1);

expect(box.type).toEqual('ctts');
expect(box.entry_count).toEqual(5);
expect(box.entries.length).toEqual(5);
expect(box.entries[0].sample_count).toEqual(1);
expect(box.entries[0].sample_offset).toEqual(1024);
expect(box.entries[1].sample_count).toEqual(1);
expect(box.entries[1].sample_offset).toEqual(2560);
expect(box.entries[2].sample_count).toEqual(1);
expect(box.entries[2].sample_offset).toEqual(1024);
expect(box.entries[3].sample_count).toEqual(1);
expect(box.entries[3].sample_offset).toEqual(0);
expect(box.entries[4].sample_count).toEqual(1);
expect(box.entries[4].sample_offset).toEqual(512);
});
});

describe('Text samples', function() {
describe('vttc box', function() {
it('should correctly parse the box from sample data', function() {
Expand Down

0 comments on commit 36f0b80

Please sign in to comment.