Skip to content
This repository was archived by the owner on Oct 20, 2022. It is now read-only.

Commit 67bb219

Browse files
Jeremie COLLETbbert
authored andcommitted
Fix 2 pbs if a pb occurs during text parsing :
- An error is raised, whereas it is on text -> stream stops - deferred promise is not resolved -> cannot reset player and change stream
1 parent 3a1f83e commit 67bb219

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

app/js/streaming/BufferController.js

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -482,23 +482,33 @@ MediaPlayer.dependencies.BufferController = function() {
482482
self.system.notify("bufferUpdated");
483483
},
484484
function(result) {
485-
self.errHandler.sendError(MediaPlayer.dependencies.ErrorHandler.prototype.MEDIA_ERR_APPEND_SOURCEBUFFER, "Failed to append data into " + type + " source buffer",
486-
new MediaPlayer.vo.Error(result.err.code, result.err.name, result.err.message));
487-
// if the append has failed because the buffer is full we should store the data
488-
// that has not been appended and stop request scheduling. We also need to store
489-
// the promise for this append because the next data can be appended only after
490-
// this promise is resolved.
491-
if (result.err.code === MediaPlayer.dependencies.ErrorHandler.prototype.DOM_ERR_QUOTA_EXCEEDED) {
492-
rejectedBytes = {
493-
data: data,
494-
quality: quality/*,
485+
if (type === 'text') {
486+
// if text, do nt raise an error (the stream would stop)
487+
// just log th error
488+
self.debug.error("[BufferController][" + type + "] Failed to append data in source buffer : " + result.err.message);
489+
deferred.resolve();
490+
} else {
491+
self.errHandler.sendError(MediaPlayer.dependencies.ErrorHandler.prototype.MEDIA_ERR_APPEND_SOURCEBUFFER, "Failed to append data into " + type + " source buffer",
492+
new MediaPlayer.vo.Error(result.err.code, result.err.name, result.err.message));
493+
// if the append has failed because the buffer is full we should store the data
494+
// that has not been appended and stop request scheduling. We also need to store
495+
// the promise for this append because the next data can be appended only after
496+
// this promise is resolved.
497+
if (result.err.code === MediaPlayer.dependencies.ErrorHandler.prototype.DOM_ERR_QUOTA_EXCEEDED) {
498+
rejectedBytes = {
499+
data: data,
500+
quality: quality/*,
495501
index: index*/
496-
};
497-
deferredRejectedDataAppend = deferred;
498-
isQuotaExceeded = true;
499-
fragmentsToLoad = 0;
500-
// stop scheduling new requests
501-
doStop.call(self);
502+
};
503+
deferredRejectedDataAppend = deferred;
504+
isQuotaExceeded = true;
505+
fragmentsToLoad = 0;
506+
// stop scheduling new requests
507+
doStop.call(self);
508+
} else {
509+
// promise has to be resolved
510+
deferred.resolve();
511+
}
502512
}
503513
}
504514
);
@@ -1715,4 +1725,4 @@ MediaPlayer.dependencies.BufferController = function() {
17151725

17161726
MediaPlayer.dependencies.BufferController.prototype = {
17171727
constructor: MediaPlayer.dependencies.BufferController
1718-
};
1728+
};

0 commit comments

Comments
 (0)