2.2.4 MSB Packet

Each MSB packet consists of a header, followed by a variable-size ASF packet. The following figure defines the fields in the MSB packet.

Note In previous versions of the MSB Protocol specification, the MSB packet is also referred to as MSBPACKETHEADER.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

dwPacketID

wStreamID

wPacketSize

ASF packet (variable)

...

dwPacketID (4 bytes): A sequence number that identifies an individual MSB packet. This value SHOULD start with 0 for the first MSB packet that is transmitted; alternatively, the starting value MAY be chosen randomly. If the ASF packet is a regular data packet (that is, not a parity packet), the sequence number MUST be incremented for each new MSB packet that is transmitted. If the ASF packet is a parity packet, the dwPacketID field MUST have the same value as the previously transmitted MSB packet. For more information about how to determine if an ASF packet is a parity packet, see ASF Packet Error Correction Data (section 2.2.2).

wStreamID (2 bytes): The identifier of the format that is required to render the data that is contained in the payload. The lowest order 11 bits of this field MUST be set to the Format ID that is assigned to the ASF header that the client uses when parsing the payload. Each ASF header and its associated Format ID is present in the .nsc file that is associated with this particular MSB stream. The most significant bit of the wStreamID field MUST be toggled whenever the playlist entry changes at the server in a server-side playlist. This ensures that the client can tell that the server has switched to a new entry, even if both entries use an identical ASF header. The remaining bits for this field are not used and MUST be set to zero.

wPacketSize (2 bytes): The length, in bytes, of the complete MSB packet including the MSB packet fields and the ASF packet. This field MUST be set to a value in the range 0x0008 to 0xFFFF, inclusive.

ASF packet (variable): A variable size array of bytes. The payload MUST consist of exactly one complete ASF packet. If the ASF packet contains a Padding Data field, as specified in [ASF] section 5.2.4, the field SHOULD be removed prior to transmission. If the Padding Data field is removed, the Padding Length field in the ASF payload parsing information ([ASF] section 5.2.2) MUST be updated to indicate a nonexistent Padding Data field.