Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix regression with enableText #3286

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions samples/captioning/caption_vtt.html
Expand Up @@ -19,6 +19,7 @@

player = dashjs.MediaPlayer({}).create();
player.initialize(video, url, true);
player.setTextDefaultEnabled(true);
}
</script>

Expand Down
1 change: 1 addition & 0 deletions samples/captioning/multi-track-captions.html
Expand Up @@ -28,6 +28,7 @@

player = dashjs.MediaPlayer().create();
player.initialize(videoElement, url, true);
player.setTextDefaultEnabled(true);
dsilhavy marked this conversation as resolved.
Show resolved Hide resolved
player.setInitialMediaSettingsFor('fragmentedText', {
lang: 'swe'
});
Expand Down
1 change: 1 addition & 0 deletions samples/captioning/ttml-ebutt-sample.html
Expand Up @@ -33,6 +33,7 @@

player = dashjs.MediaPlayer().create();
player.initialize(videoElement, url, true);
player.setTextDefaultEnabled(true);
player.attachTTMLRenderingDiv(TTMLRenderingDiv);
controlbar = new ControlBar(player); // Checkout ControlBar.js for more info on how to target/add text tracks to UI
controlbar.initialize();
Expand Down
25 changes: 20 additions & 5 deletions src/streaming/text/TextController.js
Expand Up @@ -59,6 +59,8 @@ function TextController() {
textDefaultEnabled, // this is used for default settings (each time a file is loaded, we check value of this settings )
allTracksAreDisabled, // this is used for one session (when a file has been loaded, we use this settings to enable/disable text)
forceTextStreaming,
textTracksAdded,
disableTextBeforeTextTracksAdded,
previousPeriodSelectedTrack;

function setup() {
Expand All @@ -67,6 +69,8 @@ function TextController() {
lastEnabledIndex = -1;
textDefaultEnabled = false;
forceTextStreaming = false;
textTracksAdded = false;
disableTextBeforeTextTracksAdded = false;
textTracks = TextTracks(context).getInstance();
vttParser = VTTParser(context).getInstance();
ttmlParser = TTMLParser(context).getInstance();
Expand Down Expand Up @@ -196,7 +200,7 @@ function TextController() {
});
}

if (!textDefaultEnabled) {
if (!textDefaultEnabled || disableTextBeforeTextTracksAdded) {
// disable text at startup
this.setTextTrack(-1);
}
Expand All @@ -207,6 +211,7 @@ function TextController() {
index: index,
tracks: tracks
});
textTracksAdded = true;
}

function setTextDefaultEnabled(enable) {
Expand All @@ -216,6 +221,8 @@ function TextController() {
if (!textDefaultEnabled) {
// disable text at startup
this.setTextTrack(-1);
} else {
allTracksAreDisabled = false;
}
}

Expand All @@ -225,18 +232,24 @@ function TextController() {

function enableText(enable) {
checkParameterType(enable,'boolean');

if (!textDefaultEnabled && enable) {
textDefaultEnabled = true;
}
if (isTextEnabled() !== enable) {
// change track selection
if (enable) {
// apply last enabled tractk
// apply last enabled track
this.setTextTrack(lastEnabledIndex);
}

if (!enable) {
// keep last index and disable text track
lastEnabledIndex = this.getCurrentTrackIdx();
this.setTextTrack(-1);
if (!textTracksAdded) {
disableTextBeforeTextTracksAdded = true;
} else {
this.setTextTrack(-1);
}
}
}
}
Expand Down Expand Up @@ -331,7 +344,9 @@ function TextController() {
}

function resetInitialSettings() {
allTracksAreDisabled = false;
allTracksAreDisabled = true;
textTracksAdded = false;
disableTextBeforeTextTracksAdded = false;
}

function reset() {
Expand Down
8 changes: 4 additions & 4 deletions test/unit/streaming.text.TextController.js
Expand Up @@ -148,13 +148,13 @@ describe('TextController', function () {
it('should enable/disable text', function () {

let textEnabled = textController.isTextEnabled();
expect(textEnabled).to.equal(true); // jshint ignore:line

textController.enableText(false);
expect(textController.isTextEnabled()).to.equal(false); // jshint ignore:line
expect(textEnabled).to.equal(false); // jshint ignore:line

textController.enableText(true);
expect(textController.isTextEnabled()).to.equal(true); // jshint ignore:line

textController.enableText(false);
expect(textController.isTextEnabled()).to.equal(false); // jshint ignore:line
});
});

Expand Down