A system and process for providing progressively higher quality versions
of an audio and/or video program over a client-server based network. In
response to a user command to view a particular program, the client
requests layered data associated with the program from the server. The
client also specifies how many consecutive layers are to be transmitted
based on the bandwidth available on the network. The client then receives
the data from the server, caches it, renders it as it is received, and
presents it to the viewer. Upon a request from the user for a higher
quality version of the program, the client requests as many enhancement
layers associated with the program as possible given the available
bandwidth. The client receives the requested data, combines it with the
previously stored lower-level layer data, renders the higher quality
version of the program, and presents the new version to the user.