Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/transmuxer-worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,10 @@ class MessageHandlers {
pushMp4Captions(data) {
if (!this.captionParser) {
this.captionParser = new CaptionParser();
this.captionParser.init();
this.captionParser.init({
parse708captions: this.options.parse708captions,
captionServices: this.options.captionServices
});
}
const segment = new Uint8Array(data.data, data.byteOffset, data.byteLength);
const parsed = this.captionParser.parse(
Expand Down
39 changes: 36 additions & 3 deletions test/transmuxer-worker.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import {
// needed for plugin registration
import '../src/videojs-http-streaming';

const createTransmuxer = () => {
return createTransmuxer_({
const createTransmuxer = (options) => {
return createTransmuxer_(Object.assign({
remux: false,
keepOriginalTimestamps: true
});
}, options));
};

// The final done message from the Transmux worker
Expand Down Expand Up @@ -354,6 +354,39 @@ QUnit.test('can parse mp4 captions', function(assert) {
});
});

QUnit.test('parses mp4 captions when initialized with caption parsing options', function(assert) {
const done = assert.async();
const data = mp4CaptionsSegment();

this.transmuxer = createTransmuxer({
parse708captions: false,
captionServices: {SERVICE1: {language: 'en'}}
});
this.transmuxer.onmessage = (e) => {
const message = e.data;

assert.equal(message.action, 'mp4Captions', 'returned mp4Captions event');
assert.equal(message.captions.length, 2, 'two 608 captions');
assert.deepEqual(
message.captions.map((caption) => caption.stream),
['CC1', 'CC1'],
'only 608 caption streams are present'
);
assert.deepEqual(message.logs.length, 0, 'no logs returned');

done();
};

this.transmuxer.postMessage({
action: 'pushMp4Captions',
data,
timescales: 30000,
trackIds: [1],
byteLength: data.byteLength,
byteOffset: 0
});
});

QUnit.test('returns empty array without mp4 captions', function(assert) {
const done = assert.async();
const data = muxedSegment();
Expand Down
Loading