Overlay multicast, which performs topology construction and data relaying in the application layer, has recently emerged as a promising vehicle for data distribution. In most of the existing systems, only a single stream is assumed for each overlay, and multiple streams, if needed, are distributed separately. In addition, while the overlay node performs relay functions, they generally do not filter the content to match the heterogeneous bandwidth constraints. We consider a more general model, in which a multicast session may consist of multiple data streams, such as video and audio, which are to be delivered to the same set of nodes. The services to these steams are elastic through layer dropping, shaping, or transcoding. In this paper, we focus on an important resource allocation problem in such an adaptive multi-stream multicast framework: Assume that each stream has an associated utility function, how to maximize the total utility of all the streams in a multicast session. The problem involves optimization not only in individual nodes, but also in the global overlay structure. We show that, given a total bandwidth of the streams, there is an efficient and optimal solution for the allocation problem at a single node. The problem however can be much more complicated in a hierarchical structure like tree. Yet we show that, if the utility is concave with bandwidth, i.e., the marginal improvement diminishes with bandwidth increase, then the upstream constraint can be ignored and a local optimal solution is simply the global optimal solution.