Skip to content

Commit

Permalink
feat(abr): add abr mode changed event (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dan Ziv authored Jul 30, 2017
1 parent 3a11138 commit c03485b
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 12 deletions.
12 changes: 10 additions & 2 deletions dist/playkit-dash.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/playkit-dash.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/playkit-dash.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/playkit-dash.min.js.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
"karma-webpack": "^2.0.2",
"mocha": "^3.2.0",
"mocha-cli": "^1.0.1",
"playkit-js": "https://github.com/kaltura/playkit-js.git#develop",
"playkit-js": "https://github.com/kaltura/playkit-js.git#master",
"pre-push": "^0.1.1",
"shaka-player": "latest",
"sinon": "^2.0.0",
Expand All @@ -80,7 +80,7 @@
"keywords": [],
"license": "AGPL-3.0",
"peerDependencies": {
"playkit-js": "https://github.com/kaltura/playkit-js.git#develop",
"playkit-js": "https://github.com/kaltura/playkit-js.git#master",
"shaka-player": "latest"
},
"repository": {
Expand Down
12 changes: 10 additions & 2 deletions src/dash-adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ export default class DashAdapter extends BaseMediaSourceAdapter {
if (!this._loadPromise) {
this._loadPromise = new Promise((resolve, reject) => {
if (this._sourceObj && this._sourceObj.url) {
this._trigger(BaseMediaSourceAdapter.CustomEvents.ABR_MODE_CHANGED, {mode: this.isAdaptiveBitrateEnabled() ? 'auto' : 'manual'});
this._shaka.load(this._sourceObj.url, startTime).then(() => {
let data = {tracks: this._getParsedTracks()};
DashAdapter._logger.debug('The source has been loaded successfully');
Expand All @@ -157,6 +158,7 @@ export default class DashAdapter extends BaseMediaSourceAdapter {
DashAdapter._logger.debug('destroy');
super.destroy();
this._loadPromise = null;
this._sourceObj = null;
this._removeBindings();
this._shaka.destroy();
}
Expand Down Expand Up @@ -294,7 +296,10 @@ export default class DashAdapter extends BaseMediaSourceAdapter {
if ((videoTrack instanceof VideoTrack) && videoTracks) {
let selectedVideoTrack = videoTracks[videoTrack.index];
if (selectedVideoTrack) {
this._shaka.configure({abr: {enabled: false}});
if (this.isAdaptiveBitrateEnabled()) {
this._shaka.configure({abr: {enabled: false}});
this._trigger(BaseMediaSourceAdapter.CustomEvents.ABR_MODE_CHANGED, {mode: 'manual'});
}
if (!selectedVideoTrack.active) {
this._shaka.selectVariantTrack(videoTracks[videoTrack.index], true);
this._onTrackChanged(videoTrack);
Expand Down Expand Up @@ -349,7 +354,10 @@ export default class DashAdapter extends BaseMediaSourceAdapter {
* @public
*/
enableAdaptiveBitrate(): void {
this._shaka.configure({abr: {enabled: true}});
if (!this.isAdaptiveBitrateEnabled()) {
this._trigger(BaseMediaSourceAdapter.CustomEvents.ABR_MODE_CHANGED, {mode: 'auto'});
this._shaka.configure({abr: {enabled: true}});
}
}

/**
Expand Down
25 changes: 22 additions & 3 deletions test/src/dash-adapter.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,6 @@ describe('DashAdapter: selectVideoTrack', () => {
});

it('should not change the already selected video track but disable ABR', (done) => {
//TODO this is a bug in shaka which fires 'adaptation' when disabling adaptation. see https://github.com/google/shaka-player/issues/856
dashInstance.load().then(() => {
dashInstance.addEventListener('videotrackchanged', () => {
eventIsFired = true;
Expand All @@ -307,8 +306,7 @@ describe('DashAdapter: selectVideoTrack', () => {
return track.active;
})[0].id);
setTimeout(() => {
//TODO should be false once shaka will fix the issue above
eventIsFired.should.be.true;
eventIsFired.should.be.false;
done();
}, 1000)
});
Expand Down Expand Up @@ -607,5 +605,26 @@ describe('DashAdapter: enableAdaptiveBitrate', () => {
dashInstance._shaka.getConfiguration().abr.enabled.should.be.true;
dashInstance.isAdaptiveBitrateEnabled().should.be.true;
});

it('should fire abr mode changed event', (done) => {
let mode = 'manual';
let counter = 0;
dashInstance.addEventListener('abrmodechanged', (event) => {
event.payload.mode.should.equal(mode);
counter++;
if (counter === 3) {
done();
}
});
dashInstance.load().then(() => {
mode = 'auto';
dashInstance.enableAdaptiveBitrate();
let inactiveTrack = dashInstance._getParsedVideoTracks().filter((track) => {
return !track.active;
})[0];
mode = 'manual';
dashInstance.selectVideoTrack(inactiveTrack);
});
});
});

0 comments on commit c03485b

Please sign in to comment.