Export (0) Print
Expand All

3.1.5.1 Manifest Request and Manifest Response

When a Manifest Request is sent to the server, the client MUST wait for a Manifest Response message to arrive. If the underlying transport returns an error, the client MUST enter the Final state.

If the underlying transport returns a Response that adheres to the syntax of the Fragment Response message, the message is processed to yield a Presentation Description, subject to the following processing rules:

  • The Presentation Metadata data element is populated using data in the SmoothStreamingMedia field, as specified in section 2.2.2.1, subject to the field mapping rules specified in section 3.1.1.1.

  • The Protection Description data element is populated using data in the ProtectionElement field, as specified in section 2.2.2.2, subject to the field mapping rules specified in section 3.1.1.1.1.

  • The Stream Collection data element is populated by creating one Stream Description data element per instance of the StreamElement field, specified in section 2.2.2.3.

  • Each Stream Description data element is populated using data in the corresponding StreamElement field, subject to the field mapping rules specified in section 3.1.1.1.2.

  • If the Stream Description data element's Parent Track field is set, its Sparse Stream Flag is set to true. Otherwise the Sparse Stream Flag is set to false.

  • The Track Collection data element of each Stream Description data element is populated by creating one Track Description data element per instance of the TrackElement field, specified in section 2.2.2.5, in the corresponding StreamElement field.

  • Each Track Description data element is populated using data in the corresponding TrackElement field, subject to the field mapping rules specified in section 3.1.1.1.2.1.

  • The Custom Attributes Collection data element of each Track Description data element is populated by creating one Custom Attribute Description data element per instance of the CustomAttributesElement field, specified in section 2.2.2.5.1, in the corresponding TrackElement field.

  • Each Custom Attribute Description data element is populated using data in the corresponding CustomAttributesElement field, subject to the field mapping rules specified in section 2.2.2.5.1.

  • The Fragment Reference Collection data element of each Stream Description data element is populated by creating one Fragment Reference Description data element per instance of the StreamFragmentElement field, specified in section 2.2.2.6, in the corresponding StreamElement field.

  • Each Fragment Reference Description data element is populated using data in the corresponding StreamFragmentElement field, subject to the field mapping rules specified in section 3.1.1.1.3.

  • The Fragment Reference Collection data element of each Stream Description data element is populated by creating one Fragment Reference Description data element per instance of the StreamFragmentElement field, specified in section 2.2.2.6, in the corresponding StreamElement field.

  • Each Fragment Reference Description data element is populated using data in the corresponding StreamFragmentElement field, subject to the field mapping rules specified in section 3.1.1.1.3.

  • The Track-Specific Fragment Reference Collection data element of each Fragment Reference Description data element is populated by creating one Track-Specific Fragment Reference Description data element per instance of the TrackFragmentElement field, specified in section 2.2.2.6.1, in the corresponding StreamFragmentElement field.

  • Each Track-Specific Fragment Reference Description data element is populated using data in the corresponding StreamFragmentElement field, subject to the field mapping rules specified in section 3.1.1.1.3.

After the population of the Presentation Description, the following rules MUST be applied:

  • If the StreamTimeScale field for any given Stream Description data element is not set, the StreamTimeScale field for that Stream Description data element is set to the value of the Duration field of the Presentation Description data element.

  • If the Duration field of the Presentation Metadata data element is equal to 0, the Duration field is set to the result of the following computation:

    • For each Stream Description data element, compute a Stream Duration value by summing the Fragment Duration fields of each Fragment Reference Description data element, and dividing by the value of the StreamTimeScale field for that Stream Description data element

    • Set the Duration field by multiplying the maximum of the set of computed Stream Duration values by the value of the TimeScale field in the Presentation Metadata data element

  • If the Name field of the Stream Description data element is not set, the Name element is set to the value of the Type field. If, after this operation, the Name fields of all Stream Description data elements are not unique with respect to each other, the data is considered invalid, and the client SHOULD enter the Final state without yielding a Presentation Description data element.

  • If, for any given Stream Description data element, the StreamMaxWidth field is not set, and the Type field is "video", the StreamMaxWidth field is set to the maximum of all MaxWidth fields in all Track Description data elements contained in the Stream Description data element.

  • If, for any given Stream Description data element, the StreamMaxHight field is not set, and the Type field is "video", the StreamMaxHeight field is set to the maximum of all MaxHeight fields in all Track Description data elements contained in the Stream Description data element.

  • In each Stream Description data element, the client MUST iterate through the Fragment Reference Collection in order and apply the following rules for each Fragment Reference Description data element:

    • If the current Fragment Reference Description data element is the last in the collection and the value of the FragmentDuration field is not set, the data is considered invalid, and the client MUST enter the Final state without yielding a Presentation Description data element.

    • If neither of the values of the FragmentTime and FragmentDuration fields for a single Fragment Reference Description is set, the data is considered invalid, and the client MUST enter the Final state without yielding a Presentation Description data element.

    • If the current Fragment Reference Description data element is the first in the collection and the value of the FragmentTime field in the collection is not set, the value of the FragmentTime field is set to 0.

    • If the value of the FragmentTime field in the current Fragment Reference Description data element is not set, the value of the FragmentTime field is set to the sum of the values of the FragmentTime and FragmentDuration fields of the preceding Fragment Reference Description data element.

    • If the value of the FragmentDuration field in the current Fragment Reference Description data element is not set, the value of the FragmentDuration field is set to the value obtained by subtracting the value of the FragmentTime field from the value of the FragmentTime field in the following Fragment Reference Description data element in the collection.

    • If the value of the FragmentTime field is greater than the value of the FragmentTime field in the following Fragment Reference Description data element in the collection, and the client MUST enter the Final state without yielding a Presentation Description data element.

If the underlying transport returns a Response that does not adhere to the syntax of the Manifest Response message, the client MUST enter the Final state without yielding a Presentation Description data element.

 
Show:
© 2015 Microsoft