Patent ID: 7730238

Claim:
A method comprising the steps of: providing a free buffer pool in a memory including a non-negative number of free buffers that are not allocated to a queue for buffering data, said queue including a head buffer from which data are least recently read, for playback from a storage device; and said queue including a play head buffer, from which data are currently being read for playback from the storage device; receiving a request to add one of the free buffers to the queue; allocating one of the free buffers to the queue in response to the request, if the queue has fewer than a first predetermined number of buffers associated with a session type of the queue; allocating one of the free buffers to the queue, if a number of buffers in the queue is at least as large as the first predetermined number and less than a second predetermined number associated with the session type, and the number of free buffers is greater than zero, and de-allocating at least the head buffer from the queue, if a number of buffers between the head buffer and the play head buffer is at least a threshold value, and a number of buffers in the queue is greater than or equal to the first predetermined number.