Instruction manual
Stream Prioritization
VBrick WM Appliance Admin Guide 139
Example 4 – Sliding Window Behavior
As an example, consider this priority list: audio
1
, script, video
1
, audio
2
, video
2
, audio
3
, 
video
3
. Depending on the value of the bitrate constraint, the WM Player might select no 
stream; or it might select audio
1
, and no other stream; or it might select audio
1
, script, and no 
video stream. In this priority list, the WM Player's sliding window mechanism identifies these 
seven possibilities: audio
1
; audio
1
, script; audio
1
, script, video
1
; script, video
1
, audio
2
; script, 
audio
2
, video
2
; script, video
2
, audio
3
; script, audio
3
, video
3
. The WM Player examines these 
possibilities in the order they are shown, and stops either when it has exhausted all seven 
possibilities, or immediately before it encounters one that exceeds the bitrate constraint—
whichever comes first. Among the seven possibilities just mentioned, the WM Player selects 
the one with the highest total bitrate.
It is clear how sliding a window, with room for one audio stream and one video stream, 
through the priority list, generates the audio and video components in the possibilities shown 
above. What is problematic is reconciling the presence of the script stream in these 
possibilities with a sliding window. This can be done by regarding the window as having room 
for one audio stream, one video stream, and for the script stream, but with this proviso: once 
the script stream enters the window, it stays there—sliding the window changes only its audio 
and video occupants, once the script stream enters the window. The issues of there being 
fewer or more audio streams than video streams, and video-only or audio-only priority lists, 
are dealt with in the manner described above.
How the WM Appliance Creates Priority Lists
For Group Serving
To simplify the explanation, we regard an MBR Group as having bitrate = 0, if the Group is 
disabled. The algorithm for creating the priority list consists of these steps.
1. Put the Groups in bitrate order, lowest bitrate first. Index the resulting list of groups as 
group(0), group(1), group(2).
2. First, for index i=0, then for index i=1, then for index i=2, do this: if group(i) is enabled 
and contains a video stream that's not already in the priority list, then make the video 
stream the next entry in the priority list; if group(i) is enabled and contains an audio 
stream that's not already in the priority list, then make the audio stream the next entry in 
the priority list.
3. If the script stream is present in some enabled Group, then insert the script stream as the 
highest-priority stream in the priority list.
For Archiving, and Pushing to or Pulling from a WM Server
Archiving, pushing to a WM Server, and pulling from a WM Server employ three 
independent multiplexing applications in the VBrick software. They use the same algorithm 
for making their priority lists. It consists of these steps.
1. Make an "A" list of streams, by performing this pair of operations on the streams 
included in the multiplexing application, for as long as there is a stream included in the 
multiplexing application that's not yet been put into the A list: make the lowest-bitrate 
audio stream not yet in the A list—if there is one—be the next stream in the A priority 
list; make the lowest-bitrate video stream not yet in the A list—if there is one—be the 
next stream in the A list.










