Memory management techniques involve establishing a memory pool having an
amount of sharable memory, and dynamically allocating the sharable memory
to concurrently manage multiple sets of sequenced units of digital data.
In an exemplary scenario, the sets of sequenced units of digital data are
sets of time-ordered media samples forming clips of media content, and
the techniques are applied when media samples from two or more clips are
simultaneously presentable to a user as independently-controlled streams.
Variable amounts of sharable memory are dynamically allocated for
preparing upcoming media samples for presentation to the user. In one
possible implementation, a ratio of average data rates of individual
streams is calculated, and amounts of sharable memory are allocated to
rendering each stream based on the ratio. Then, the sharable memory
allocated to rendering individual streams is reserved as needed to
prepare particular upcoming media samples for presentation to the user.