(The following content is from Sun's website, from their JMF Tutorial pages.
Player States
A
Player can be in one of six states. The Clock
interface defines the two primary states: Stopped and
Started. To facilitate resource management, Controller
breaks the Stopped state down into five standby states:
Unrealized, Realizing, Realized,
Prefetching, and Prefetched.
In
normal operation, a Player steps through each state until it
reaches the Started state:
Player in the Unrealized state has been
instantiated, but does not yet know anything about its media. When a media
Player is first created, it is Unrealized.
realize is called, a Player moves from
the Unrealized state into the Realizing state. A
Realizing Player is in the process of determining its
resource requirements. During realization, a Player
acquires the resources that it only needs to acquire once. These might
include rendering resources other than exclusive-use resources.
(Exclusive-use resources are limited resources such as particular
hardware devices that can only be used by one Player at a time;
such resources are acquired during Prefetching.) A Realizing
Player often downloads assets over the network.
Player finishes Realizing, it moves into
the Realized state. A Realized Player knows
what resources it needs and information about the type of media it is to
present. Because a Realized Player
knows how to render its data, it can provide visual components and
controls. Its connections to other objects in the system are in place,
but it does not own any resources that would prevent another
Player from starting.
prefetch is called, a Player moves from
the Realized state into the Prefetching state. A
Prefetching Player is preparing to present its media.
During this phase, the Player preloads its media data, obtains
exclusive-use resources, and does whatever else it needs to do to prepare
itself to play. Prefetching might have to recur if a Player
object's media presentation is repositioned, or if a change in the
Player object's rate requires that additional buffers be acquired
or alternate processing take place.
Player finishes Prefetching, it moves into
the Prefetched state. A Prefetched Player is
ready to be started.
start puts a Player into the
Started state. A Started Player object's
time-base time and media time are mapped and its clock is running, though the
Player might be waiting for a particular time to begin presenting
its media data.
A
Player posts TransitionEvents as it moves from one
state to another. The ControllerListener interface provides a way
for your program to determine what state a Player is in and to
respond appropriately. For example, when your program calls an asynchronous
method on a Player or Processor, it needs to listen
for the appropriate event to determine when the operation is complete.
Using this event reporting mechanism, you can manage a Player
object's start latency by controlling when it begins
Realizing and Prefetching. It also enables you to determine
whether or not the Player is in an appropriate state before
calling methods on the Player.
(The following picture is from JavaWorlds's JMF Article.