2.2.6 MSB_MSG_IND_STREAMINFO

The server MUST send the MSB_MSG_IND_STREAMINFO packet, which describes the media stream, in the following circumstances:

  • Following an MSB_MSG_RES_CONNECT packet.

  • When a stream switch occurs while playing a server playlist.

  • Following an MSB_MSG_IND_EOS packet. For more information about sending an MSB_MSG_IND_STREAMINFO packet in this case, see section 3.1.5.3.


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)

...

...

wStreamId

cbPacketSize

cTotalPackets

dwBitRate

msDuration

cbTitle

cbDescription

cbLink

cbHeader

bBinaryData (variable)

...

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

wStreamId (2 bytes): An unsigned 16-bit integer that uniquely identifies the media stream that will be transmitted, within the current server playlist. The value of this field can be chosen arbitrarily by the server; however, it MUST be different from the wStreamId values that are used for any other streams in the same server playlist. This allows the client to distinguish MSB_MSG_IND_PACKET packets that belong to the new stream from MSB_MSG_IND_PACKET packets that belong to previous streams (if any). The value of the wStreamId field MUST be in the range 0x0000 to 0x07FF, inclusive, or in the range 0x8000 to 0x87FF, inclusive.

cbPacketSize (2 bytes): An unsigned 16-bit integer that specifies the maximum size, in bytes, of the payload in each MSB_MSG_IND_PACKET packet. The value of the cbPacketSize field MUST be in the range 0x0000 to 0xFFF7, inclusive.

cTotalPackets (4 bytes): An unsigned 32-bit integer that MUST be set to the total number of MSB_MSG_IND_PACKET packets that are needed to transmit the entire media stream—if this information is known. Otherwise, the field MUST be set to 0. The value of the cTotalPackets field MUST be in the range 0x00000000 to 0xFFFFFFFF, inclusive.

dwBitRate (4 bytes): An unsigned 32-bit integer that represents the bit rate, measured in bits per second, of the media stream. For an ASF stream, the value of the dwBitRate field corresponds to the value of the Maximum Bitrate field in the ASF File Properties Object. The value of the dwBitRate field MUST be in the range 0x00000000 to 0xFFFFFFFF, inclusive.

msDuration (4 bytes): An unsigned 32-bit integer that MUST be set to the duration, in milliseconds, of the media stream—if this information is known. Otherwise, this value MUST be set to -1 (FFFFFFFF hexadecimal). For an ASF stream, the value of the msDuration field corresponds to the value of the Play Duration field in the ASF File Properties Object. The value of the msDuration field MUST be in the range 0x00000000 to 0xFFFFFFFF, inclusive.

cbTitle (4 bytes): An unsigned 32-bit integer that contains the size, in bytes, of the media stream title. The stream title MUST be first in the bBinaryData field. The value of the cbTitle field MUST be in the range 0x00000000 to 0x0000FFCF, inclusive.

cbDescription (4 bytes): An unsigned 32-bit integer that represents the size, in bytes, of the media stream description. The stream description MUST follow the stream title in the bBinaryData field. The value of the cbDescription field MUST be in the range 0x00000000 to 0x0000FFCF, inclusive.

cbLink (4 bytes): An unsigned 32-bit integer that contains the size, in bytes, of the media stream link (an arbitrary moniker for the connection over which the media stream is to be transmitted). The stream link MUST follow the stream description in the bBinaryData field. The value of the cbLink field MUST be in the range 0x00000000 to 0x0000FFCF, inclusive.

cbHeader (4 bytes): An unsigned 32-bit integer that contains the size, in bytes, of the media stream header. The stream header MUST follow the stream link in the bBinaryData field. If the szChannel field of the MSB_MSG_REQ_CONNECT packet is set to NetShow, the stream is in the ASF, as specified in [ASF] section 2, and the stream header is an ASF header. In the case of an ASF Header, the value of the cbHeader field is the size of the entire ASF Header Object, as described in [ASF] section 3.1, plus 50 bytes (which represents the fixed initial portion of the ASF Data Object, as described in [ASF] section 5.1). The value of the cbHeader field MUST be in the range 0x00000000 to 0x0000FFCF, inclusive.

bBinaryData (variable): The binary data that contains the title, description, link, and header of the media stream, in that order. The method for generating the binary data comprising the title, description, link or header (if not an ASF header) of the media stream is implementation-specific and outside the scope of this documentation. The size of the bBinaryData field is equal to the sum of the values of the cbTitle, cbDescription, cbLink, and cbHeader fields. The size of the bBinaryData field MUST be in the range of 0 to 65,487 bytes. Note that these requirements impose a restriction on the values that the cbTitle, cbDescription, cbLink, and cbHeader fields can assume. For example, cbTitle and cbDescription cannot both have a value of 0x8000 at the same time.