These constants are the allowable values of the player’s timeControlStatus property.



case paused

This state is entered when the playback rate changes to a value of 0.0. This change could be the result of calling the pause() method or explicitly changing the playback rate, but could also occur due to an external event such as an iOS interruption. In this state, playback is paused indefinitely and will not begin again until the playback rate changes to a value greater than 0.0 and sufficient media data has been buffered for playback to proceed.

case waitingToPlayAtSpecifiedRate

This state is entered when the playback buffer becomes empty and stalls during normal playback or if a request to play is made and insufficient media data has been buffered. This state will also be entered if the player does not have a current player item (currentItem is nil). In this state, the rate property does not indicate the current playback rate, but instead indicates the rate at which playback will start or resume when possible. You can refer to the reasonForWaitingToPlay property to determine why the player is currently waiting.

case playing

This state indicates normal playback is currently in progress. While in this state, any changes made to the player’s rate will take effect immediately. Should playback stall due to insufficient media data, the player’s timeControlStatus will change to waitingToPlayAtSpecifiedRate.