2.2.10 MSB_MSG_IND_PACKET

The server transmits the media stream by using MSB_MSG_IND_PACKET packets. Each ASF data packet in the media stream MUST be encapsulated in a separate MSB_MSG_IND_PACKET packet. The server MUST NOT combine multiple ASF packets in a single MSB_MSG_IND_PACKET and MUST NOT fragment an ASF packet across multiple MSB_MSG_IND_PACKET packets.

The MSB_MSG_IND_PACKET packets MUST be transmitted over the MSBD TCP connection (that is, the same TCP connection on which the server transmitted the MSB_MSG_RES_CONNECT packet, except when the server has agreed to use IP multicasting to deliver the MSB_MSG_IND_PACKET packets). When IP multicasting is used, the server MUST transmit the MSB_MSG_IND_PACKET packets to the IP multicast address/UDP port number combination indicated in the MSB_MSG_RES_CONNECT packet.


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

Header (16 bytes)

...

...

dwPacketId

wStreamId

wPacketSize

bPayload (variable)

...

Header (16 bytes): An MSBMSGBASE packet that defines the packet header. The wMessageId field MUST be set to 0x000A.

dwPacketId (4 bytes): An unsigned 32-bit integer that identifies the MSB_MSG_IND_PACKET packet. This value SHOULD start with 0 for the first MSB_MSG_IND_PACKET packet that is transmitted; alternatively, the starting value MAY be chosen randomly. The value of the dwPacketId field MUST be incremented for each new MSB_MSG_IND_PACKET packet that is transmitted. The value of the dwPacketId field MUST fall within the range 0x00000000 to 0xFFFFFFFF, inclusive.

wStreamId (2 bytes): An unsigned 16-bit integer that identifies the content. This value MUST be the same as the wStreamId field in the MSB_MSG_IND_STREAMINFO packet. The value of the wStreamId field MUST be in the range 0x0000 to 0x07FF, inclusive, or in the range 0x8000 to 0x87FF, inclusive.

wPacketSize (2 bytes): An unsigned 16-bit integer that contains the size, in bytes, of the bPayload field plus the size of the wStreamId, dwPacketId, and wPacketSize fields. The wPacketSize field MUST be set to a value in the range 0x0008 to 0xFFEF, inclusive.

bPayload (variable): One ASF packet. If the ASF packet contains a nonzero Padding Data field, this field MUST be included in bPayload. Details on the Padding Data field are as specified in [ASF] section 5.2.4. Error correction, as specified in [MS-MSB] section 2.2.2, MAY be used, in which case some of the ASF packets are parity packets, as specified in [MS-MSB] section 2.2.2. If the bPayload field contains a parity packet, the dwPacketId field MUST be identical to that of the previously transmitted MSB_MSG_IND_PACKET.