Constructor
new CmcdManager(player, config)
A CmcdManager maintains CMCD state as well as a collection of utility functions.
Parameters:
| Name | Type | Description | 
|---|---|---|
| player | shaka.Player | |
| config | shaka.extern.CmcdConfiguration | 
- Source:
Members
CmcdKeys :Array<string>
Type:
- Array<string>
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| V1Keys | ["br","bl","bs","cid","d","dl","mtp","nor","nrr","ot","pr","rtp","sf","sid","st","su","tb","v"] | Array<string> | |
| V2CommonKeys | ["br","ab","bl","tbl","bs","cdn","cid","ltc","mtp","pr","sf","sid","bg","sta","st","ts","tpb","tb","lb","tab","lab","pt","ec","msd","v","sn"] | Array<string> | |
| V2RequestModeKeys | ["ab","bl","tbl","bs","cdn","cid","d","dl","ltc","mtp","nor","ot","pr","rtp","sf","sid","bg","sta","st","su","ts","tpb","tb","lb","tab","lab","pt","ec","msd","v"] | Array<string> | |
| V2ResponseModeKeys | ["d","dl","nor","ot","rtp","rc","su","ttfb","ttfbb","ttlb","url","cmsdd","cmsds"] | Array<string> | |
| V2EventKeys | ["e","sta"] | Array<string> | |
| CmcdV2Events | ["ps","e","t","c","b","m","um","pe","pc"] | Array<string> | |
| CmcdV2PlayStates | ["s","p","a","w","k","r","f","e","q","d"] | Array<string> | 
- Source:
CmcdMode :string
Type:
- string
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| REQUEST | request | string | |
| RESPONSE | response | string | |
| EVENT | event | string | 
- Source:
CmcdV2Constants :number
Type:
- number
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| TIME_INTERVAL_DEFAULT_VALUE | 10 | number | 
- Source:
CmcdV2Keys :string
Type:
- string
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| TIMESTAMP | ts | string | |
| TIME_INTERVAL_EVENT | t | string | 
- Source:
ObjectType :string
Type:
- string
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| MANIFEST | m | string | |
| AUDIO | a | string | |
| VIDEO | v | string | |
| MUXED | av | string | |
| INIT | i | string | |
| CAPTION | c | string | |
| TIMED_TEXT | tt | string | |
| KEY | k | string | |
| OTHER | o | string | 
- Source:
StreamingFormat :string
Type:
- string
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| DASH | d | string | |
| LOW_LATENCY_DASH | ld | string | |
| HLS | h | string | |
| LOW_LATENCY_HLS | lh | string | |
| SMOOTH | s | string | |
| OTHER | o | string | 
- Source:
StreamType :string
Type:
- string
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| VOD | v | string | |
| LIVE | l | string | 
- Source:
Version :number
Type:
- number
Properties:
| Name | Value | Type | Description | 
|---|---|---|---|
| VERSION_1 | 1 | number | |
| VERSION_2 | 2 | number | 
- Source:
cmcdSequenceNumbers_ :Object<string, {request: number, response: number}>
Type:
- Object<string, {request: number, response: number}>
- Source:
playbackPlayingTime_ :number|undefined
Type:
- number | undefined
- Source:
playbackPlayTime_ :number|undefined
Type:
- number | undefined
- Source:
requestTimestampMap_ :Map<!shaka.extern.Request, number>
Type:
- Map<!shaka.extern.Request, number>
- Source:
sf_ :shaka.util.CmcdManager.StreamingFormat|undefined
    Streaming format
    Type:
- shaka.util.CmcdManager.StreamingFormat | undefined
- Source:
Methods
appendQueryToUri(uri, query) → {string}
    Append query args to a uri.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| uri | string | |
| query | string | 
- Source:
Returns:
- Type
- string
serialize(data) → {string}
    Serialize a CMCD data object according to the rules defined in the
section 3.2 of
[CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).
    Parameters:
| Name | Type | Description | 
|---|---|---|
| data | CmcdData | The CMCD data object | 
- Source:
Returns:
- Type
- string
toHeaders(data) → {Object}
    Convert a CMCD data object to request headers according to the rules
defined in the section 2.1 and 3.2 of
[CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).
    Parameters:
| Name | Type | Description | 
|---|---|---|
| data | CmcdData | The CMCD data object | 
- Source:
Returns:
- Type
- Object
toQuery(data) → {string}
    Convert a CMCD data object to query args according to the rules
defined in the section 2.2 and 3.2 of
[CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).
    Parameters:
| Name | Type | Description | 
|---|---|---|
| data | CmcdData | The CMCD data object | 
- Source:
Returns:
- Type
- string
urlToRelativePath(url, base) → {string}
    Constructs a relative path from a URL
    Parameters:
| Name | Type | Description | 
|---|---|---|
| url | string | |
| base | string | 
- Source:
Returns:
- Type
- string
appendSrcData(uri, mimeType) → {string}
    Apply CMCD data to streams loaded via src=.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| uri | string | |
| mimeType | string | 
- Source:
Returns:
- Type
- string
appendTextTrackData(uri) → {string}
    Apply CMCD data to side car text track uri.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| uri | string | 
- Source:
Returns:
- Type
- string
applyCmcdDataToRequest_(outputnon-null, requestnon-null, useHeaders)
    Modifies an existing request object by adding CMCD data to it.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| output | CmcdData | The CMCD data to apply. | 
| request | shaka.extern.Request | The request object to modify. | 
| useHeaders | boolean | Whether to use headers or query parameters. | 
- Source:
applyManifestData(requestnon-null, context)
    Apply CMCD data to a manifest request.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| request | shaka.extern.Request | The request to apply CMCD data to | 
| context | shaka.extern.RequestContext | The request context | 
- Source:
applyRequest_(requestnon-null, datanon-null)
    Apply CMCD data to a request.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| request | shaka.extern.Request | The request to apply CMCD data to | 
| data | CmcdData | The data object | 
- Source:
applyRequestData(typenon-null, requestnon-null, contextopt)
    Apply CMCD data to a request.
    Parameters:
| Name | Type | Attributes | Description | 
|---|---|---|---|
| type | shaka.net.NetworkingEngine.RequestType | The request type | |
| request | shaka.extern.Request | The request to apply CMCD data to | |
| context | shaka.extern.RequestContext | <optional> | The request context | 
- Source:
applyRequestSegmentData(requestnon-null, context)
    Apply CMCD data to a segment request
    Parameters:
| Name | Type | Description | 
|---|---|---|
| request | shaka.extern.Request | |
| context | shaka.extern.RequestContext | The request context | 
- Source:
applyResponse_(responsenon-null, datanon-null)
    Apply CMCD data to a response.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| response | shaka.extern.Response | The request to apply CMCD data to | 
| data | CmcdData | The data object | 
- Source:
applyResponseData(typenon-null, responsenon-null, contextopt)
    Apply CMCD data to a response.
    Parameters:
| Name | Type | Attributes | Description | 
|---|---|---|---|
| type | shaka.net.NetworkingEngine.RequestType | The request type | |
| response | shaka.extern.Response | The response to apply CMCD data to | |
| context | shaka.extern.RequestContext | <optional> | The request context | 
- Source:
applyResponseSegmentData(responsenon-null, context)
    Apply CMCD data to a segment response
    Parameters:
| Name | Type | Description | 
|---|---|---|
| response | shaka.extern.Response | |
| context | shaka.extern.RequestContext | The request context | 
- Source:
applyTextData(requestnon-null)
    Apply CMCD data to a text request
    Parameters:
| Name | Type | Description | 
|---|---|---|
| request | shaka.extern.Request | 
- Source:
calculateMSD_() → {number|undefined}
    Calculate measured start delay
- Source:
Returns:
- Type
- number | undefined
calculateRtp_(stream, segment) → {number}
    Calculate requested maximum throughput
    Parameters:
| Name | Type | Description | 
|---|---|---|
| stream | shaka.extern.Stream | |
| segment | shaka.media.SegmentReference | 
- Source:
Returns:
- Type
- number
checkValidKeys_(includeKeys, allowedKeys, mode) → {Array<string>}
    Checks if the keys in `includeKeys` are valid against a list of
`allowedKeys`. It logs an error for any invalid key and returns a new array
containing only the valid keys. If `includeKeys` is empty or not provided,
it returns all `allowedKeys`.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| includeKeys | Array<string> | Keys to validate. | 
| allowedKeys | Array<string> | The list of allowed keys. | 
| mode | string | Mode ('query', 'header' or 'event') for error logging. | 
- Source:
Returns:
    A new array containing only the valid keys.
- Type
- Array<string>
configure(config)
    Called by the Player to provide an updated configuration any time it
changes.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| config | shaka.extern.CmcdConfiguration | 
- Source:
createData_() → {CmcdData}
    Create baseline CMCD data
- Source:
Returns:
- Type
- CmcdData
filterKeys_(data, includeKeys) → {CmcdData}
    Filter the CMCD data object to include only the keys specified in the
configuration.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| data | CmcdData | |
| includeKeys | Array<string> | 
- Source:
Returns:
- Type
- CmcdData
getBufferLength_(type) → {number}
    Get the buffer length for a media type in milliseconds
    Parameters:
| Name | Type | Description | 
|---|---|---|
| type | string | 
- Source:
Returns:
- Type
- number
getCmcdTargetHash_(objnon-null) → {string}
    Creates a stable string key from a configuration object.
This is used to uniquely identify a CMCD target.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| obj | Object | The object to hash. | 
- Source:
Returns:
- Type
- string
getCurrentTime_() → {number}
    Get player time.
- Source:
Returns:
- Type
- number
getDataForSegment_(context, requestUrinullable) → {CmcdData}
    Get CMCD data for a segment.
    Parameters:
| Name | Type | Attributes | Description | 
|---|---|---|---|
| context | shaka.extern.RequestContext | The request context | |
| requestUri | string | <nullable> | 
- Source:
Returns:
- Type
- CmcdData
getEventModeEnabledTargets_() → {Array<shaka.extern.CmcdTarget>}
- Source:
Returns:
- Type
- Array<shaka.extern.CmcdTarget>
getGenericData_(datanon-null, modenon-null) → {CmcdData}
    Get generic CMCD data.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| data | CmcdData | The data object | 
| mode | shaka.util.CmcdManager.CmcdMode | 
- Source:
Returns:
- Type
- CmcdData
getObjectType_(context) → {shaka.util.CmcdManager.ObjectType|undefined}
    The CMCD object type.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| context | shaka.extern.RequestContext | The request context | 
- Source:
Returns:
- Type
- shaka.util.CmcdManager.ObjectType | undefined
getObjectTypeFromMimeType_(mimeTypenon-null) → {shaka.util.CmcdManager.ObjectType|undefined}
    The CMCD object type from mimeType.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| mimeType | string | 
- Source:
Returns:
- Type
- shaka.util.CmcdManager.ObjectType | undefined
getRemainingBufferLength_(type) → {number}
    Get the remaining buffer length for a media type in milliseconds
    Parameters:
| Name | Type | Description | 
|---|---|---|
| type | string | 
- Source:
Returns:
- Type
- number
getResponseModeEnabledTargets() → {Array<shaka.extern.CmcdTarget>}
- Source:
Returns:
- Type
- Array<shaka.extern.CmcdTarget>
getStreamFormat_(type) → {shaka.util.CmcdManager.StreamingFormat|undefined}
    Get the stream format
    Parameters:
| Name | Type | Description | 
|---|---|---|
| type | shaka.net.NetworkingEngine.AdvancedRequestType | The request's advanced type | 
- Source:
Returns:
- Type
- shaka.util.CmcdManager.StreamingFormat | undefined
getTopBandwidth_(type) → {number}
    Get the highest bandwidth for a given type.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| type | shaka.util.CmcdManager.ObjectType | undefined | 
- Source:
Returns:
- Type
- number
isValidEvent_(includeEvents, data) → {boolean}
Parameters:
| Name | Type | Description | 
|---|---|---|
| includeEvents | Array<string> | |
| data | CmcdData | 
- Source:
Returns:
- Type
- boolean
onPlaybackPlay_()
    Set playbackPlayTime_ when the play event is triggered
- Source:
removeCmcdQueryFromUri_(uri) → {string}
    Removes the CMCD query parameter from a URI.
    Parameters:
| Name | Type | Description | 
|---|---|---|
| uri | string | 
- Source:
Returns:
- Type
- string
reportEvent_(eventType, extraData)
Parameters:
| Name | Type | Description | 
|---|---|---|
| eventType | string | |
| extraData | CmcdData | 
- Source:
sendCmcdRequest_(cmcdDatanon-null, target, responseopt)
    Creates and sends a new, out-of-band request to a CMCD endpoint.
This is used for event and response reporting.
    Parameters:
| Name | Type | Attributes | Description | 
|---|---|---|---|
| cmcdData | CmcdData | The CMCD data to send. | |
| target | shaka.extern.CmcdTarget | The CMCD target configuration. | |
| response | shaka.extern.Response | <optional> | Optional response object to update, used by the applyResponse flow. | 
- Source:
setBuffering(buffering)
    Set the buffering state
    Parameters:
| Name | Type | Description | 
|---|---|---|
| buffering | boolean | 
- Source:
setLowLatency(lowLatency)
    Set the low latency
    Parameters:
| Name | Type | Description | 
|---|---|---|
| lowLatency | boolean | 
- Source:
setMediaElement(mediaElement)
    Set media element and setup event listeners
    Parameters:
| Name | Type | Description | 
|---|---|---|
| mediaElement | HTMLMediaElement | The video element | 
- Source:
setStartTimeOfLoad(startTimeOfLoad)
    Set start time of load if autoplay is enabled
    Parameters:
| Name | Type | Description | 
|---|---|---|
| startTimeOfLoad | number | 
- Source:
setupEventModeTimeInterval_()
    Sets up TimeInterval timer for CMCD 'EVENT' mode targets.
- Source:
stopAndClearEventTimers_()
    Stops and clears all the event timers for timeInterval
- Source: