Video assets are fetched from a data storage device and buffered based on
the video rate associated with the video assets. The arrival deadline for
each buffer is tracked. As the contents of a buffer are consumed by the
video decoder, the buffering plan is computed. The intent of the buffering
plan is to maintain enough buffering in prefetched buffers to cover a data
storage device underflow. The proper amount of buffering to cover an
underflow is computed by subtracting both the arrival deadline and buffer
time of the next buffer to be consumed from the arrival deadline of
subsequent future buffers. This computation must be performed for each
future buffer until the difference is greater than or equal to the maximum
storage device underflow period. If the difference is less than the
storage device underflow period, then a fetch of the buffer from the data
storage device must be performed. To rapidly build the buffering when the
play list is first started or when device underflow substantially depletes
the buffers, a higher priority I/O may be utilized.