player:player,state:state,nextItem:nextItem?nextItem.item:null,nextMediaType:nextMediaType};state.NextMediaType=nextMediaType;varstreamInfo=getPlayerData(player).streamInfo;streamInfo.ended=!0,isServerItem(playerStopInfo.item)&&(state.PlayState.PositionTicks=1e4*(playerStopInfo.positionMs||0),reportPlayback(state,playerStopInfo.item.ServerId,"reportPlaybackStopped")),state.NextItem=playbackStopInfo.nextItem,events.trigger(player,"playbackstop",[state]),events.trigger(self,"playbackstop",[playbackStopInfo]);varnewPlayer=nextItem?getPlayer(nextItem.item,currentPlayOptions):null;newPlayer!==player&&(destroyPlayer(player),removeCurrentPlayer(player))}functionacquireResourceLocks(player,mediaType){if(!player)thrownewError("player cannot be null");if(player.isLocalPlayer&&!player.hasResourceLocks){varplayerData=getPlayerData(player);playerData.resourceLocks=playerData.resourceLocks||{};varlocks=playerData.resourceLocks;ensureLock(locks,"network"),ensureLock(locks,"wake"),"Video"===mediaType&&ensureLock(locks,"screen")}}functionensureLock(locks,resourceType){varprop=resourceType+"Lock",existingLock=locks[prop];returnexistingLock?voidexistingLock.acquire():voidrequire(["resourceLockManager"],function(resourceLockManager){resourceLockManager.request(resourceType).then(function(resourceLock){locks[prop]=resourceLock,resourceLock.acquire()},function(){})})}functionreleaseResourceLocks(player){if(!player)thrownewError("player cannot be null");if(player.isLocalPlayer&&!player.hasResourceLocks){varplayerData=getPlayerData(player),locks=playerData.resourceLocks||{};locks.wakeLock&&locks.wakeLock.release(),locks.networkLock&&locks.networkLock.release(),locks.screenLock&&locks.screenLock.release()}}functionenablePlaybackRetryWithTranscoding(streamInfo,errorType,currentlyPreventsVideoStreamCopy,currentlyPreventsAudioStreamCopy){return!("mediadecodeerror"!==errorType&&"medianotsupported"!==errorType||!streamInfo.mediaSource.SupportsTranscoding||currentlyPreventsVideoStreamCopy&¤tlyPreventsAudioStreamCopy)||!("network"!==errorType||"DirectPlay"!==streamInfo.playMethod||!streamInfo.mediaSource.IsRemote||!streamInfo.mediaSource.SupportsTranscoding)}functiononPlaybackError(e,error){varplayer=this;error=error||{};varerrorType=error.type;console.log("playbackmanager playback error type: "+(errorType||""));varstreamInfo=getPlayerData(player).streamInfo;if(streamInfo){varcurrentlyPreventsVideoStreamCopy=streamInfo.url.toLowerCase().indexOf("allowvideostreamcopy=false")!==-1,currentlyPreventsAudioStreamCopy=streamInfo.url.toLowerCase().indexOf("allowaudiostreamcopy=false")!==-1;if(enablePlaybackRetryWithTranscoding(streamInfo,errorType)){varstartTime=getCurrentTicks(player)||streamInfo.playerStartPositionTicks;returnvoidchangeStream(player,startTime,{EnableDirectPlay:!1,EnableDirectStream:!1,AllowVideoStreamCopy:!1,AllowAudioStreamCopy:!currentlyPreventsAudioStreamCopy&&!currentlyPreventsVideoStreamCopy&&null},!0)}}onPlaybackStopped.call(player,e)}functiononPlaybackStopped(e){varplayer=this;if(!getPlayerData(player).isChangingStream){varstate=self.getPlayerState(player),streamInfo=getPlayerData(player).streamInfo,nextItem=self._playNextAfterEnded?self._playQueueManager.getNextItemInfo():null,nextMediaType=nextItem?nextItem.item.MediaType:null,playbackStopInfo={player:player,state:state,nextItem:nextItem?nextItem.item:null,nextMediaType:nextMediaType};state.NextMediaType=nextMediaType,isServerItem(streamInfo.item)&&(player.supportsProgress===!1&&state.PlayState&&!state.PlayState.PositionTicks&&(state.PlayState.PositionTicks=streamInfo.item.RunTimeTicks),streamInfo.ended=!0,reportPlayback(state,streamInfo.item.ServerId,"reportPlaybackStopped")),state.NextItem=playbackStopInfo.nextItem,nextItem||self._playQueueManager.reset(),events.trigger(player,"playbackstop",[state]),events.trigger(self,"playbackstop",[playbackStopInfo]);varnewPlayer=nextItem?getPlayer(nextItem.item,currentPlayOptions):null;newPlayer!==player&&(destroyPlayer(player),removeCurrentPlayer(player)),nextItem&&self.nextTrack()}}functiononPlaybackChan
instance.play({items:result.Items})})})},PlaybackManager.prototype.audioTracks=function(player){if(player=player||this._currentPlayer,player.audioTracks){varresult=player.audioTracks();if(result)returnresult}varmediaSource=this.currentMediaSource(player),mediaStreams=(mediaSource||{}).MediaStreams||[];returnmediaStreams.filter(function(s){return"Audio"===s.Type})},PlaybackManager.prototype.subtitleTracks=function(player){if(player=player||this._currentPlayer,player.subtitleTracks){varresult=player.subtitleTracks();if(result)returnresult}varmediaSource=this.currentMediaSource(player),mediaStreams=(mediaSource||{}).MediaStreams||[];returnmediaStreams.filter(function(s){return"Subtitle"===s.Type})},PlaybackManager.prototype.getSupportedCommands=function(player){if(player=player||this._currentPlayer,player.isLocalPlayer){varlist=["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","SetMaxStreamingBitrate","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode"];returnapphost.supports("fullscreenchange")&&!layoutManager.tv&&list.push("ToggleFullscreen"),player.supports&&(player.supports("PictureInPicture")&&list.push("PictureInPicture"),player.supports("SetBrightness")&&list.push("SetBrightness"),player.supports("SetAspectRatio")&&list.push("SetAspectRatio")),list}varinfo=this.getPlayerInfo();returninfo?info.supportedCommands:[]},PlaybackManager.prototype.setRepeatMode=function(value,player){returnplayer=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.setRepeatMode(value):(this._playQueueManager.setRepeatMode(value),voidevents.trigger(player,"repeatmodechange"))},PlaybackManager.prototype.getRepeatMode=function(player){returnplayer=player||this._currentPlayer,player&&!enableLocalPlaylistManagement(player)?player.getRepeatMode():this._playQueueManager.getRepeatMode()},PlaybackManager.prototype.trySetActiveDeviceName=function(name){name=normalizeName(name);varinstance=this;instance.getTargets().then(function(result){vartarget=result.filter(function(p){returnnormalizeName(p.name)===name})[0];target&&instance.trySetActivePlayer(target.playerName,target)})},PlaybackManager.prototype.displayContent=function(options,player){player=player||this._currentPlayer,player&&player.displayContent&&player.displayContent(options)},PlaybackManager.prototype.beginPlayerUpdates=function(player){player.beginPlayerUpdates&&player.beginPlayerUpdates()},PlaybackManager.prototype.endPlayerUpdates=function(player){player.endPlayerUpdates&&player.endPlayerUpdates()},PlaybackManager.prototype.setDefaultPlayerActive=function(){this.setActivePlayer("localplayer")},PlaybackManager.prototype.removeActivePlayer=function(name){varplayerInfo=this.getPlayerInfo();playerInfo&&playerInfo.name===name&&this.setDefaultPlayerActive()},PlaybackManager.prototype.removeActiveTarget=function(id){varplayerInfo=this.getPlayerInfo();playerInfo&&playerInfo.id===id&&this.setDefaultPlayerActive()},PlaybackManager.prototype.sendCommand=function(cmd,player){switch(console.log("MediaController received command: "+cmd.Name),cmd.Name){case"SetRepeatMode":this.setRepeatMode(cmd.Arguments.RepeatMode,player);break;case"VolumeUp":this.volumeUp(player);break;case"VolumeDown":this.volumeDown(player);break;case"Mute":this.setMute(!0,player);break;case"Unmute":this.setMute(!1,player);break;case"ToggleMute":this.toggleMute(player);break;case"SetVolume":this.setVolume(cmd.Arguments.Volume,player);break;case"SetAspectRatio":this.setAspectRatio(cmd.Arguments.AspectRatio,player);break;case"SetBrightness":this.setBrightness(cmd.Arguments.Brightness,player);break;case"SetAudioStreamIndex":this.setAudioStreamIndex(parseInt(cmd.Arguments.Index),player);break;case"SetSubtitleStreamIndex":this.setSubtitleStreamIndex(parseInt(cmd.Arguments.Index),player);break;case"SetMaxStreamingBitrate":break;case"ToggleFullscreen":this.toggleFullscreen(player);break;default:player.sendCommand&&player.sendCommand(cmd)}},newPlaybackManager});