Skip to content

Commit

Permalink
Fix regression with enableText (#3286)
Browse files Browse the repository at this point in the history
* Fix regression with enableText

* [TextController] change unit test because subtitles are now disabled by default

* enable text in captioning samples
  • Loading branch information
jeffcunat committed Jun 12, 2020
1 parent cfb122f commit 40f25dd
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 9 deletions.
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);
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

0 comments on commit 40f25dd

Please sign in to comment.