2.2.2.3 StreamElement

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

StreamElement (variable): An XML element that encapsulates all metadata that is 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 specified type is text, the following field is required and MUST appear in StreamAttributes: SubtypeAttribute. Unless the specified type is video, the following fields MUST NOT appear in StreamAttributes: StreamMaxWidthAttribute, StreamMaxHeightAttribute, DisplayWidthAttribute, and DisplayHeightAttribute.

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

Name (variable): The name of the stream.

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

NumberOfTracks (variable): The number of tracks that are 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 that are used for foreign-language audio.

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

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

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

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

Url (variable): A pattern that is 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 that is 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 TRUE value. Otherwise, the ManifestOutputSample field for fragments that are part of this stream MUST be omitted.

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

  
 StreamElement = "<" StreamElementName S
                 StreamAttributes S ">"
                 S StreamContent *1S
                 "</" 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) *1S
 TypeAttributeName = "Type"
 Type = "video" / "audio" / "text"
 SubtypeAttribute = S SubtypeAttributeName S Eq S 
                    (DQ Subtype DQ) / (SQ Subtype SQ) *1S
 SubtypeAttributeName = "Subtype"
 Subtype = 4*4 ALPHA
 StreamTimeScaleAttribute = S StreamTimeScaleAttributeName S Eq S 
                            (DQ StreamTimeScale DQ) / (SQ StreamTimeScale SQ) *1S
 StreamTimeScaleAttributeName = "TimeScale"
 StreamTimeScale = STRING-UINT64
 NameAttribute = S NameAttributeName S Eq S 
                (DQ Name DQ) / (SQ Name SQ) *1S
 NameAttributeName = "Name"
 Name = ALPHA *( ALPHA / DIGIT / UNDERSCORE / DASH )
 NumberOfFragmentsAttribute = S NumberOfFragmentsAttributeName S Eq S 
                              (DQ NumberOfFragments DQ) / (SQ NumberOfFragments SQ) 
                              *1S
 NumberOfFragmentsAttributeName = "Chunks"
 NumberOfFragments = STRING-UINT32
 NumberOfTracksAttribute = S NumberOfTracksAttributeName S Eq S 
                           (DQ NumberOfTracks DQ) / (SQ NumberOfTracks SQ) *1S
 NumberOfTracksAttributeName = "QualityLevels"
 NumberOfTracks = STRING-UINT32
 UrlAttribute = S UrlAttributeName S Eq S 
                (DQ Url DQ) / (SQ Url SQ) *1S
 UrlAttributeName = "Url"
 Url = UrlPattern
 StreamMaxWidthAttribute = S StreamMaxWidthAttributeName S Eq S 
                           (DQ StreamMaxWidth DQ) / (SQ StreamMaxWidth SQ) *1S
 StreamMaxWidthAttributeName = "MaxWidth"
 StreamMaxWidth = STRING-UINT32
 StreamMaxHeightAttribute = S StreamMaxHeightAttributeName S Eq S 
                            (DQ StreamMaxHeight DQ) / (SQ StreamMaxHeight SQ) *1S
 StreamMaxHeightAttributeName = "MaxHeight"
 StreamMaxHeight = STRING-UINT32
 DisplayWidthAttribute = S DisplayWidthAttributeName S Eq S 
                         (DQ DisplayWidth DQ) / (SQ DisplayWidth SQ) *1S
 DisplayWidthAttributeName = "DisplayWidth"
 DisplayWidth = STRING-UINT32
 DisplayHeightAttribute = S DisplayHeightAttributeName S Eq S 
                         (DQ DisplayHeight DQ) / (SQ DisplayHeight SQ) *1S
 DisplayHeightAttributeName = "DisplayHeight"
 DisplayHeight = STRING-UINT32
 ParentStreamAttribute = S ParentStreamAttributeName S Eq S 
                         (DQ ParentStream DQ) / (SQ ParentStream SQ) *1S
 ParentStreamAttributeName = "ParentStreamIndex"
 ParentStream = ALPHA *( ALPHA / DIGIT / UNDERSCORE / DASH )
 ManifestOutputAttribute = S ManifestOutputAttributeName S Eq S 
                           (DQ ManifestOutput DQ) / (SQ ManifestOutput SQ) *1S
 ManifestOutputAttributeName = "ManifestOutput"
 ManifestOutput = TRUE / FALSE
 StreamContent = 1*(TrackElement *1S) *(StreamFragment *1S)