Summary: | With ever increasing bandwidth to the home, the demand for streaming media for both entertainment and communication is increasing. The demand presented to multimedia servers and proxies requires that providers not only handle a larger volume of streams, but also support individualized services for each client. To meet these requirements, networked multimedia providers must not only make efficient use of scarce resources but also devise creative ways to exploit resources at the client. In this work we describe techniques that allow multimedia servers and proxies to meet this new and dynamic workload. We first explore the challenges of implementing a class of algorithms called emphBroadcast Schemes. Broadcast Schemes leverage many-to-one communication and client-side buffering to reduce the network requirements at the server. One of the simplest Broadcast Schemes is known as patching. In patching, the patching server streams the entire video sequentially to the very first client. Client-side workahead buffering is used to allow a later-arriving client to receive part of its future playback data by listening to an existing ongoing transmission of the same video; the server need only additionally transmit those earlier frames that were missed by the later-arriving client. We design and prototype the first general purpose server that utilizes these algorithms. In our work, we solve the problem of coordinating complex delivery schedules, and develop an optimal caching algorithm for a wide class of Broadcast Schemes. In the second half of this thesis, we develop a controller for a highly modular multimedia platform. Each module in this platform performs an elementary service on a stream such as reading the stream from the network or transcoding the stream. These modules can be composed to perform more complex services. We propose a controller that not only satisfies a request, but also makes the most efficient use of a platform's limited resources. The resources available to the client are the streams already flowing through the platform that can be reused for servicing later requests and the finite resources such as bandwidth, memory and processor time. Our controller generates solutions quickly and demonstrates significant resource savings over more naive approaches.
|