In the PlaylistController class, when creating mainSegmentLoader_, the constructor receives the inbandTextTracks_ instance from the controller:
const segmentLoaderSettings = {
// ...
inbandTextTracks: this.inbandTextTracks_,
// ...
};
this.mainSegmentLoader_ =
new SegmentLoader(merge(segmentLoaderSettings, {
The SegmentLoader class has a remove method that cleans inbandTextTracks_ and controls its size. However, PlaylistController.inbandTextTracks_ never clears its content. In fact, we can verify that the references to inbandTextTracks_ in PlaylistController and SegmentLoader are not the same using:
player.tech_.vhs.playlistController_.mainSegmentLoader_.inbandTextTracks_ === player.tech_.vhs.playlistController_.inbandTextTracks_
As a result, player.tech_.vhs.playlistController_.inbandTextTracks_.metadataTrack_.cues_ grows indefinitely.
Steps to reproduce:
Unfortunately, I cannot share the live stream URL. However, it can be verified that the references of inbandTextTracks_ in PlaylistController and SegmentLoader are not the same with any URL on Netlify.
In the
PlaylistControllerclass, when creatingmainSegmentLoader_,the constructor receives theinbandTextTracks_instance from the controller:The
SegmentLoaderclass has aremovemethod that cleansinbandTextTracks_and controls its size. However,PlaylistController.inbandTextTracks_never clears its content. In fact, we can verify that the references toinbandTextTracks_inPlaylistControllerandSegmentLoaderare not the same using:As a result,
player.tech_.vhs.playlistController_.inbandTextTracks_.metadataTrack_.cues_grows indefinitely.Steps to reproduce:
Unfortunately, I cannot share the live stream URL. However, it can be verified that the references of
inbandTextTracks_inPlaylistControllerandSegmentLoaderare not the same with any URL on Netlify.