Stream Prioritization

Example 4 – Sliding Window Behavior

As an example, consider this priority list: audio1, script, video1, audio2, video2, audio3, video3. Depending on the value of the bitrate constraint, the WM Player might select no stream; or it might select audio1, and no other stream; or it might select audio1, script, and no

video stream. In this priority list, the WM Player's sliding window mechanism identifies these seven possibilities: audio1; audio1, script; audio1, script, video1; script, video1, audio2; script,

audio2, video2; script, video2, audio3; script, audio3, video3. 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.

VBrick WM Appliance Admin Guide

139

Page 149
Image 149
VBrick Systems VB5000 How the WM Appliance Creates Priority Lists, For Group Serving, Example 4 Sliding Window Behavior