From XiphWiki
Revision as of 21:35, 10 May 2007 by Shans (talk | contribs)
Jump to navigation Jump to search

We want the OggPlay plugin to support both a simple individual movie mode, and a more fully-featured playlist mode. All of the functions supported in individual movie mode are still useful in playlist mode; however additional functions also become useful.

Individual movies


enum OggPlayState { PAUSED = 0; PLAYING = 1; FINISHED = 2 };

These are fairly self-evident: the plugin begins in PAUSED or PLAYING state depending on the settings provided through the params tags, and changes to FINISHED state when the movie finishes playback.


To retrieve the state:

int <- getCurrentState()



This function will convert the PLAYING or FINISHED states to PAUSED.



This function will convert the PAUSED state to PLAYING or FINISHED depending upon the current position within the movie.



This function will convert any state to PLAYING, and start the movie again from the beginning


To retrieve the currently playing (or just played, or about to play) movie:

string URL <- getCurrentMovie()


To set a new movie:

setCurrentMovie(string URL)

This will automatically begin playing at the beginning if the state is PLAYING or FINISHED, but will remain paused ready to play at the beginning if the state is PAUSED.


To get the current play position (in milliseconds) from the movie:

int milliseconds <- getPlayPosition()


To set the current play position (in milliseconds):

boolean error <- setPlayPosition(int milliseconds)

Note that if you set a position past the end of the movie then the result will be a play position at the end of the movie, and the player in FINISHED mode.

Note also that certain servers (e.g. plain Ogg files, no mod-annodex installed, etc.) will prevent seeking from being able to occur past the buffered portion of the file; in this case, an error flag will be returned and the play position will be updated as far forward as possible.


To have the plugin call a javascript method as each CMML annotation is encountered (i.e. as movie playback reaches the point where the annotation needs to be inserted):

registerCMMLCallback(function callback)

Use null if you want to deregister the callback without setting a new one.


To retrieve all of the CMML annotations for a movie:

string CMML <- retrieveAnnotations()

Note that this won't return all annotations from some servers, e.g. if mod-annodex is not installed. In this case, you will still be able to retrieve CMML as each annotation is encountered using registerCMMLCallback.


If you wish to use playlists instead of individual movies, then the above function calls still exist, with the following caveats:

  • getCurrentState will not return FINISHED until the last movie in the playlist has completed playback
  • restart will start from the beginning of the playlist, not the beginning of the current movie
  • getCurrentMovie retrieves the currently playing movie
  • setCurrentMovie sets the currently playing movie (and playback will begin from the beginning of the newly set movie, not the beginning of the playlist)
  • getPlayPosition and setPlayPosition operate on the playlist as a whole - i.e. if a playlist consists of a 5 second, a 7 second and a 4 second movie, then setPlayPosition(6000) will start playing from 1 second into the 2nd movie
  • retrieveAnnotations will retrieve the annotations for the current movie only

In addition, the following additional functions are available for manipulation of the playlist



This function does not stop the current movie from playing, but does prevent the plugin from progressing to the next movie in the playlist. Use this and unfreezePlayPosition for "atomic" operations on the playlist.

= unfreezePlayPosition


See documentation for freezePlayPosition.


To retrieve the length of the playlist:

int length <- getPlaylistLength()


To get the url of the movie at the specified position:

string url <- getMovieAt(int position)

Remember that