This topic has not yet been rated - Rate this topic

2.2.2.3 StreamElement

The StreamElement and related fields encapsulate metadata required to play a specific stream in the presentation.

StreamElement (variable): An XML Element that encapsulates all metadata required by the client to play back a stream.

StreamAttributes (variable): The collection of XML Attributes for the SmoothStreamingMedia Element. Attributes can appear in any order. However, the following field is required and MUST be present in StreamAttributes: TypeAttribute. The following additional fields are required and MUST be present in StreamAttributes unless an Embedded Track is used in the StreamContent field: NumberOfFragmentsAttribute, NumberOfTracksAttribute, and UrlAttribute.

StreamContent (variable): Metadata describing available tracks and fragments.

Type (variable): The type of the stream: video, audio, or text. If the type specified is text, the following field is required and MUST appear in StreamAttributes: SubtypeAttribute. Unless the type specified is video, the following fields MUST NOT appear in StreamAttributes: StreamMaxWidthAttribute, StreamMaxHeightAttribute, DisplayWidthAttribute, and DisplayHeightAttribute.

StreamTimeScale (variable): The time scale for duration and time values in this stream, specified as the number of increments in one second.

Name (variable): The name of the stream.

NumberOfFragments (variable): The number of fragments available for this stream.

NumberOfTracks (variable): The number of tracks available for this stream.

Subtype (variable): A four-character code that identifies the intended use category for each sample in a text track. However, the FourCC field, specified in section 2.2.2.5, is used to identify the media format for each sample. The following range of values is reserved, with the following semantic meanings:

  • "SCMD": Triggers for actions by the higher-layer implementation on the client

  • "CHAP": Chapter markers

  • "SUBT": Subtitles used for foreign-language audio

  • "CAPT": Closed captions for people who are deaf

  • "DESC": Media descriptions for people who are deaf

  • "CTRL": Events the control the application business logic

  • "DATA": Application data that does not fall into any of the above categories

Url (variable): A pattern used by the client to generate Fragment Request messages.

SubtypeControlEvents (variable): Control events for applications on the client.

StreamMaxWidth (variable): The maximum width of a video sample, in pixels.

StreamMaxHeight (variable): The maximum height of a video sample, in pixels.

DisplayWidth (variable): The suggested display width of a video sample, in pixels.

DisplayHeight (variable): The suggested display height of a video sample, in pixels.

ParentStream (variable): Specifies the non-sparse stream that is used to transmit timing information for this stream. If the ParentStream field is present, it indicates that the stream described by the containing StreamElement field is a sparse stream. If present, the value of this field MUST match the value of the Name field for a non-sparse stream in the presentation.

ManifestOutput (variable): Specifies whether sample data for this stream appears directly in the manifest as part of the ManifestOutputSample field, specified in section 2.2.2.6.1, if this field contains a CASEINSENTITIVE_TRUE value. Otherwise, the ManifestOutputSample field for fragments that are part of this stream MUST be omitted.

The syntax of the fields defined in this section, specified in ABNF [RFC5234], is as follows:

StreamElement = "<" StreamElementName S
                StreamAttributes S? ">"
                S? StreamContent S?
                "</" StreamElementName ">"
Name = "StreamIndex"
StreamAttributes = *( 
                      TypeAttribute
                      / SubtypeAttribute
                      / StreamTimeScaleAttribute
                      / NameAttribute
                      / NumberOfFragmentsAttribute
                      / NumberOfTracksAttribute
                      / UrlAttribute
                      / StreamMaxWidthAttribute
                      / StreamMaxHeightAttribute
                      / DisplayWidthAttribute
                      / DisplayHeightAttribute
                      / ParentStreamAttribute
                      / ManifestOutputAttribute
                      / VendorExtensionAttribute
                    ) 
TypeAttribute = S? TypeAttributeName S? Eq S? 
               (DQ Type DQ) / (SQ Type SQ) S?
TypeAttributeName = "Type"
Type = "video" / "audio" / "text"
SubtypeAttribute = S? SubtypeAttributeName S? Eq S? 
                   (DQ Subtype DQ) / (SQ Subtype SQ) S?
SubtypeAttributeName = "Subtype"
Subtype = 4*4 ALPHA
StreamTimeScaleAttribute = S? StreamTimeScaleAttributeName S? Eq S? 
                           (DQ StreamTimeScale DQ) / (SQ StreamTimeScale SQ) S?
StreamTimeScaleAttributeName = "TimeScale"
StreamTimeScale = STRING_UINT64
NameAttribute = S? NameAttributeName S? Eq S? 
               (DQ Name DQ) / (SQ Name SQ) S?
NameAttributeName = "Name"
Name = ALPHA *( ALPHA / DIGIT / UNDERSCORE / DASH )
NumberOfFragmentsAttribute = S? NumberOfFragmentsAttributeName S? Eq S? 
                             (DQ NumberOfFragments DQ) / (SQ NumberOfFragments SQ) 
                             S?
NumberOfFragmentsAttributeName = "Chunks"
NumberOfFragments = STRING_UINT32
NumberOfTracksAttribute = S? NumberOfTracksAttributeName S? Eq S? 
                          (DQ NumberOfTracks DQ) / (SQ NumberOfTracks SQ) S?
NumberOfTracksAttributeName = "QualityLevels"
NumberOfTracks = STRING_UINT32
UrlAttribute = S? UrlAttributeName S? Eq S? 
               (DQ Url DQ) / (SQ Url SQ) S?
UrlAttributeName = "Url"
Url = UrlPattern
StreamMaxWidthAttribute = S? StreamMaxWidthAttributeName S? Eq S? 
                          (DQ StreamMaxWidth DQ) / (SQ StreamMaxWidth SQ) S?
StreamMaxWidthAttributeName = "MaxWidth"
StreamMaxWidth = STRING_UINT32
StreamMaxHeightAttribute = S? StreamMaxHeightAttributeName S? Eq S? 
                           (DQ StreamMaxHeight DQ) / (SQ StreamMaxHeight SQ) S?
StreamMaxHeightAttributeName = "MaxHeight"
StreamMaxHeight = STRING_UINT32
DisplayWidthAttribute = S? DisplayWidthAttributeName S? Eq S? 
                        (DQ DisplayWidth DQ) / (SQ DisplayWidth SQ) S?
DisplayWidthAttributeName = "DisplayWidth"
DisplayWidth = STRING_UINT32
DisplayHeightAttribute = S? DisplayHeightAttributeName S? Eq S? 
                        (DQ DisplayHeight DQ) / (SQ DisplayHeight SQ) S?
DisplayHeightAttributeName = "DisplayHeight"
DisplayHeight = STRING_UINT32
ParentStreamAttribute = S? ParentStreamAttributeName S? Eq S? 
                        (DQ ParentStream DQ) / (SQ ParentStream SQ) S?
ParentStreamAttributeName = "ParentStreamIndex"
ParentStream = ALPHA *( ALPHA / DIGIT / UNDERSCORE / DASH )
ManifestOutputAttribute = S? ManifestOutputAttributeName S? Eq S? 
                          (DQ ManifestOutput DQ) / (SQ ManifestOutput SQ) S?
ManifestOutputAttributeName = "ManifestOutput"
ManifestOutput = CASEINSENTITIVE_TRUE / CASEINSENSITIVE_FALSE
StreamContent = 1*(TrackElement S?) *(StreamFragment S?)
 
Did you find this helpful?
(1500 characters remaining)
© 2013 Microsoft. All rights reserved.