diff --git a/index b/index index f78bf08cc5d..07516e1190d 100644 --- a/index +++ b/index @@ -20918,30 +20918,36 @@ interface CueRangeCallback {
HAVE_CURRENT_DATA (numeric value 2)
Data for the immediate current playback position - is available, but not enough data is available that the user agent - could successfully advance the current playback - position at all without immediately reverting to the HAVE_METADATA state. For - example, in video this corresponds to the user agent having data - from the current frame, but not the next frame.
+ is available, but either not enough data is available that the user + agent could successfully advance the current playback + position in the direction of playback at all + without immediately reverting to the HAVE_METADATA state, or + there is no more data to obtain in the direction of + playback. For example, in video this corresponds to the user + agent having data from the current frame, but not the next frame; + and to when playback has + ended.
HAVE_FUTURE_DATA (numeric value 3)
Data for the immediate current playback position is available, as well as enough data for the user agent to advance - the current playback position at least a little - without immediately reverting to the HAVE_METADATA state. For - example, In video this corresponds to the user agent having data - for at least the current frame and the next frame.
+ the current playback position in the direction + of playback at least a little without immediately reverting + to the HAVE_METADATA + state. For example, in video this corresponds to the user agent + having data for at least the current frame and the next frame. The + user agent cannot be in this state if playback has ended, as the current playback + position can never advanced in this case.
HAVE_ENOUGH_DATA (numeric value 4)
-
Data for the immediate current playback position - is available, as well as enough data for the user agent to advance - the current playback position at least a little - without immediately reverting to the HAVE_METADATA state, and, - in addition, the user agent estimates that data is being fetched at - a rate where the current playback position, if it were - to advance at the rate given by the defaultPlaybackRate +
All the conditions described for the HAVE_FUTURE_DATA state + are met, and, in addition, the user agent estimates that data is + being fetched at a rate where the current playback + position, if it were to advance at the rate given by the + defaultPlaybackRate attribute, would not overtake the available data before playback reaches the end of the media resource.
@@ -21241,14 +21247,18 @@ interface CueRangeCallback {

A media element is said to have ended playback when the element's readyState attribute is HAVE_METADATA or greater, and - the current playback position is the end of the - media resource, and the media element does + either the current playback position is the end of the + media resource and the direction of + playback is forwards and the media element does not have a loop attribute - specified.

+ specified, or the current playback position is the + earliest possible position and the direction of + playback is backwards.

The ended attribute must return true if the media element has - ended playback, and false otherwise.

+ ended playback and the direction of + playback is forwards, and false otherwise.

A media element is said to have stopped due to errors when the element's readyState attribute is HAVE_METADATA or greater, and @@ -21288,8 +21298,9 @@ interface CueRangeCallback { the element.

When the current playback position reaches the end - of the media resource, then the user agent must follow - these steps:

+ of the media resource when the direction of + playback is forwards, then the user agent must follow these + steps:

  1. If the media element has a loop attribute specified, then seek to the earliest possible position of the media resource and abort these @@ -21310,6 +21321,16 @@ interface CueRangeCallback { a simple event called ended at the element.

  2. +

When the current playback position reaches the + earliest possible position of the media + resource when the direction of playback is + backwards, then the user agent must follow these steps:

+ +
  1. Stop playback.

  2. + +
  3. The user agent must queue a task to fire + a simple event called timeupdate at the element.

  4. +

The defaultPlaybackRate attribute gives the desired speed at which the media resource is to play, as a multiple of its intrinsic @@ -21328,6 +21349,10 @@ interface CueRangeCallback { value, and the playback must change speed (if the element is potentially playing).

+

If the playbackRate + is positive or zero, then the direction of playback is + forwards. Otherwise, it is backwards.

+

The "play" function in a user agent's interface must set the playbackRate attribute to the value of the defaultPlaybackRate diff --git a/source b/source index bd62cc80b74..e373efb5ebe 100644 --- a/source +++ b/source @@ -22672,33 +22672,38 @@ interface CueRangeCallback {

HAVE_CURRENT_DATA (numeric value 2)
Data for the immediate current playback position - is available, but not enough data is available that the user agent - could successfully advance the current playback - position at all without immediately reverting to the HAVE_METADATA state. For - example, in video this corresponds to the user agent having data - from the current frame, but not the next frame.
+ is available, but either not enough data is available that the user + agent could successfully advance the current playback + position in the direction of playback at all + without immediately reverting to the HAVE_METADATA state, or + there is no more data to obtain in the direction of + playback. For example, in video this corresponds to the user + agent having data from the current frame, but not the next frame; + and to when playback has + ended.
HAVE_FUTURE_DATA (numeric value 3)
Data for the immediate current playback position is available, as well as enough data for the user agent to advance - the current playback position at least a little - without immediately reverting to the HAVE_METADATA state. For - example, In video this corresponds to the user agent having data - for at least the current frame and the next frame.
+ the current playback position in the direction + of playback at least a little without immediately reverting + to the HAVE_METADATA + state. For example, in video this corresponds to the user agent + having data for at least the current frame and the next frame. The + user agent cannot be in this state if playback has ended, as the current playback + position can never advanced in this case.
HAVE_ENOUGH_DATA (numeric value 4)
-
Data for the immediate current playback position - is available, as well as enough data for the user agent to advance - the current playback position at least a little - without immediately reverting to the HAVE_METADATA state, and, - in addition, the user agent estimates that data is being fetched at - a rate where the current playback position, if it were - to advance at the rate given by the All the conditions described for the HAVE_FUTURE_DATA state + are met, and, in addition, the user agent estimates that data is + being fetched at a rate where the current playback + position, if it were to advance at the rate given by the + defaultPlaybackRate attribute, would not overtake the available data before playback reaches the end of the media resource.
@@ -23063,14 +23068,18 @@ interface CueRangeCallback { playback when the element's readyState attribute is HAVE_METADATA or greater, and - the current playback position is the end of the - media resource, and the media element does + either the current playback position is the end of the + media resource and the direction of + playback is forwards and the media element does not have a loop attribute - specified.

+ specified, or the current playback position is the + earliest possible position and the direction of + playback is backwards.

The ended attribute must return true if the media element has - ended playback, and false otherwise.

+ ended playback and the direction of + playback is forwards, and false otherwise.

A media element is said to have stopped due to errors when the element's CueRangeCallback { the element.

When the current playback position reaches the end - of the media resource, then the user agent must follow - these steps:

+ of the media resource when the direction of + playback is forwards, then the user agent must follow these + steps:

    @@ -23147,6 +23157,21 @@ interface CueRangeCallback {
+

When the current playback position reaches the + earliest possible position of the media + resource when the direction of playback is + backwards, then the user agent must follow these steps:

+ +
    + +
  1. Stop playback.

  2. + +
  3. The user agent must queue a task to fire + a simple event called timeupdate at the element.

  4. + +
+

The defaultPlaybackRate attribute gives the desired speed at which the media @@ -23168,6 +23193,10 @@ interface CueRangeCallback { value, and the playback must change speed (if the element is potentially playing).

+

If the playbackRate + is positive or zero, then the direction of playback is + forwards. Otherwise, it is backwards.

+

The "play" function in a user agent's interface must set the playbackRate attribute to the value of the