A server channel is defined as a unit of server capacity (i.e., server bandwidth and computing resources) required to support a continuous delivery of video data. The number of channels a server can have typically depends on its bandwidth. These channels are shared by all clients. Their requests are queued at the server, and served according to some scheduling policy when a free channel becomes available. When a service is complete, the corresponding channel is returned to the pool to serve future requests. When multicast is used for video delivery, a channel is allocated to load the video from storage and deliver it to a group of clients simultaneously as shown in Figure 31.1. The communication tree illustrates the one-to-many delivery mechanism. At the receiving end, video data are either sent to the video player to be displayed or temporarily stored in a disk buffer for future display.
Figure 31.1: A multicast delivery.
A typical architecture of a video server is illustrated in Figure 31.2. The Coordinator is responsible for accepting requests from users. To deliver a video, the Coordinator dispatches a Data Retrieval Handler to load the data blocks  from disk, and a Video Delivery Handler to transmit these blocks to the clients. Data retrieved from storage are first staged in a streaming buffer. The Video Delivery Handler feeds on this buffer, and arranges each data block into a packet. The header of the packet contains the location of the block in the video file. This information serves as both the timestamp and the sequence number for the client to order the data blocks for correct display. The Directory Manager maintains a video directory that keeps information about the videos currently in delivery, such as video title, the multicast address of the channel currently in use, and other important characteristics of the video. The system administrator, through a graphical user interface (GUI), can perform various administrative works such as adding or removing a video from the database.
Figure 31.2: Server architecture.
The components of a typical client software are illustrated in Figure 31.3. The Coordinator is responsible for coordinating various server activities. The main role of the Directory Explorer is to maintain an up-to-date directory of the videos. To request service, the user can select a video from this catalogue. This action sends a command to the Coordinator, which in turn activates the Loader to receive data, and the Video Player to render the video onto the screen. The Loader and the Video Player communicate through a staging buffer. In some system, the incoming stream can also be saved to disk for future use, or to support VCR-like interactions.
Figure 31.3: Client architecture.
A block is the smallest unit for disk access.