Class: shaka.util.CmcdManager

Thin shaka adapter around `cml.cmcd.CmcdReporter`. The vendored reporter owns CMCD state, encoding, key filtering, sequence numbers, and event-mode dispatch. The adapter translates shaka's player / `

Constructor

new CmcdManager(player, config)

Thin shaka adapter around `cml.cmcd.CmcdReporter`. The vendored reporter owns CMCD state, encoding, key filtering, sequence numbers, and event-mode dispatch. The adapter translates shaka's player / `

Parameters:
Name Type Description
player shaka.Player
config shaka.extern.CmcdConfiguration
Source:

Members

EventType :string

Public re-export of CMCD v2 event types. Literal form per the Closure-tooling constraint above. Values match `cml.cmcd.CmcdEventType` exactly; unit-test asserts identity.
Type:
  • string
Properties:
Name Value Type Description
BITRATE_CHANGE bc string
PLAY_STATE ps string
PLAYBACK_RATE pr string
ERROR e string
TIME_INTERVAL t string
CONTENT_ID c string
BACKGROUNDED_MODE b string
MUTE m string
UNMUTE um string
PLAYER_EXPAND pe string
PLAYER_COLLAPSE pc string
RESPONSE_RECEIVED rr string
AD_START as string
AD_END ae string
AD_BREAK_START abs string
AD_BREAK_END abe string
SKIP sk string
CUSTOM_EVENT ce string
Source:

PlayerState :string

Public re-export of CMCD v2 player states. Literal form per the Closure-tooling constraint above. Values match `cml.cmcd.CmcdPlayerState` exactly; unit-test asserts identity.
Type:
  • string
Properties:
Name Value Type Description
STARTING s string
PLAYING p string
SEEKING k string
REBUFFERING r string
PAUSED a string
WAITING w string
ENDED e string
FATAL_ERROR f string
QUIT q string
PRELOADING d string
Source:

StreamingFormat :string

Public re-export of CMCD streaming-format values. The literal object form is required for Closure tooling: clutz (TypeScript-defs gen) and `generateExterns.js` reject `@export`ed `@enum`s whose RHS is a MemberExpression / alias. The 4 values match `cml.cmcd.CmcdStreamingFormat` exactly; a unit test asserts value identity.
Type:
  • string
Properties:
Name Value Type Description
DASH d string
HLS h string
SMOOTH s string
OTHER o string
Source:

lastPlayerState_ :string

Type:
  • string
Source:

reporter_ :cml.cmcd.CmcdReporter

Type:
  • cml.cmcd.CmcdReporter
Source:

requestTimestampMap_ :Map<!shaka.extern.Request, number>

Per-request `ts` values for TTFB/TTLB derivation in `applyResponseData`. CmcdReporter cannot observe request-send time; the adapter measures it.
Type:
Source:

sf_ :cml.cmcd.CmcdStreamingFormat|undefined

Streaming format set once at manifest-load time. CTA-5004 / CTA-5004-B define `sf` as a stable manifest-type indicator (`'d'`/`'h'`/`'s'`/ `'o'`); the value does not reflect the low-latency state.
Type:
  • cml.cmcd.CmcdStreamingFormat | undefined
Source:

startTimeOfLoad_ :number

Type:
  • number
Source:

video_ :HTMLVideoElement

Type:
  • HTMLVideoElement
Source:

Methods

allKeysForVersion_(version) → {Array<string>}

Parameters:
Name Type Description
version number | undefined
Source:
Returns:
Type
Array<string>

appendSrcData(uri, mimeType) → {string}

Apply CMCD data to streams loaded via `
Parameters:
Name Type Description
uri string
mimeType string
Source:
Returns:
Type
string

appendTextTrackData(uri) → {string}

Apply CMCD data to a sidecar text track URI.
Parameters:
Name Type Description
uri string
Source:
Returns:
Type
string

applyRequestData(typenon-null, requestnon-null, contextopt)

Apply CMCD data to a request via the reporter.
Parameters:
Name Type Attributes Description
type shaka.net.NetworkingEngine.RequestType
request shaka.extern.Request
context shaka.extern.RequestContext <optional>
Source:

applyResponseData(typenon-null, responsenon-null, contextopt)

Apply CMCD data to a response.
Parameters:
Name Type Attributes Description
type shaka.net.NetworkingEngine.RequestType
response shaka.extern.Response
context shaka.extern.RequestContext <optional>
Source:

applyTextData(requestnon-null)

Apply CMCD data to a sidecar text request.
Parameters:
Name Type Description
request shaka.extern.Request
Source:

applyToRequest_(requestnon-null, datanon-null)

Push a CMCD-applied request through `createRequestReport`. Mutates `request` in place to preserve shaka's existing applyRequestData contract.
Parameters:
Name Type Description
request shaka.extern.Request
data cml.cmcd.Cmcd
Source:

buildExternalUriData_() → {cml.cmcd.Cmcd}

Persistent CMCD baseline used by `appendSrcData` / `appendTextTrackData`. These bypass the reporter (browsers can't observe headers for direct media loads, so we always force query mode regardless of configured `useHeaders`); `sn` is omitted since the reporter's per-target counters don't apply.
Source:
Returns:
Type
cml.cmcd.Cmcd

calculateRtp_(stream, segment) → {number}

Computed `rtp` (requested maximum throughput) for a segment.
Parameters:
Name Type Description
stream shaka.extern.Stream
segment shaka.media.SegmentReference
Source:
Returns:
Type
number

configure(config)

Update the manager's configuration. If `enabled` flips or any material field changes, the reporter is torn down and recreated.
Parameters:
Name Type Description
config shaka.extern.CmcdConfiguration
Source:

encodeOptionsForUri_(uri) → {cml.cmcd.CmcdEncodeOptions}

Encode options for direct `cml.cmcd.appendCmcdQuery` calls (`appendSrcData`, `appendTextTrackData`). `baseUrl` lets CML relativize `nor` URLs root-relative; `version` filters keys per spec; `reportingMode = REQUEST` pins the request-mode key filter.
Parameters:
Name Type Description
uri string
Source:
Returns:
Type
cml.cmcd.CmcdEncodeOptions

getBufferLength_(type) → {number}

Buffer length in milliseconds for a media type.
Parameters:
Name Type Description
type string
Source:
Returns:
Type
number

getCurrentTime_() → {number}

Source:
Returns:
Type
number

getDataForSegment_(context, requestUrinullable) → {Object<string, *>}

Build the per-segment CMCD payload from shaka's request context.
Parameters:
Name Type Attributes Description
context shaka.extern.RequestContext
requestUri string <nullable>
Source:
Returns:
Type
Object<string, *>

getObjectType_(context) → {cml.cmcd.CmcdObjectType|undefined}

Map a shaka request context to a CMCD object type.
Parameters:
Name Type Description
context shaka.extern.RequestContext
Source:
Returns:
Type
cml.cmcd.CmcdObjectType | undefined

getObjectTypeFromMimeType_(mimeType) → {cml.cmcd.CmcdObjectType|undefined}

Map a mimeType to a CMCD object type. Used by `appendSrcData`.
Parameters:
Name Type Description
mimeType string
Source:
Returns:
Type
cml.cmcd.CmcdObjectType | undefined

getRemainingBufferLength_(type) → {number}

Remaining buffer length in milliseconds.
Parameters:
Name Type Description
type string
Source:
Returns:
Type
number

getStreamFormat_(type) → {cml.cmcd.CmcdStreamingFormat|undefined}

Resolve `sf` from the manifest-parser advanced-request type.
Parameters:
Name Type Description
type shaka.net.NetworkingEngine.AdvancedRequestType
Source:
Returns:
Type
cml.cmcd.CmcdStreamingFormat | undefined

getStreamType_() → {cml.cmcd.CmcdStreamType}

Source:
Returns:
Type
cml.cmcd.CmcdStreamType

getTopBandwidth_(type) → {number}

Top-bandwidth value across variants for a given object type.
Parameters:
Name Type Description
type cml.cmcd.CmcdObjectType | undefined
Source:
Returns:
Type
number

makeRequester_() → {function(!Object): !Promise<{status: number}>}

Build the `requester` callback CmcdReporter uses for event-mode dispatch. Routes through NetworkingEngine so the request inherits auth / retry / filters.
Source:
Returns:
Type
function(!Object): !Promise<{status: number}>

maybeStartReporter_()

Construct the reporter if `enabled` is set and a video element is available. No-ops if either precondition fails.
Source:

removeCmcdQueryFromUri_(uri) → {string}

Strip the CMCD query parameter from a URL.
Parameters:
Name Type Description
uri string
Source:
Returns:
Type
string

reset()

Reset the manager. Stops the reporter and clears session-scoped state. The video element reference is preserved — shaka's lifecycle keeps it attached across `unload()`/`load()` cycles, and only `detach()` releases it.
Source:

responseModeEnabled_() → {boolean}

Whether any configured `eventTarget` subscribes to the `'rr'` (response-received) event. Saves recording response-received calls into the reporter when no target consumes them.
Source:
Returns:
Type
boolean

setBuffering(buffering)

Forwarded from Player buffering observer; translates to a REBUFFERING / PLAYING player-state transition.
Parameters:
Name Type Description
buffering boolean
Source:

setLowLatency(lowLatency)

No-op shim retained for Player call-site back-compat. Phase 1 dropped the non-spec `'ld'`/`'lh'` StreamingFormat values; CTA-5004 does not define LL-specific values, so low-latency content emits `sf=d` (DASH) or `sf=h` (HLS).
Parameters:
Name Type Description
lowLatency boolean
Source:

setMediaElement(mediaElement)

Set the media element and start the reporter (if enabled).
Parameters:
Name Type Description
mediaElement HTMLMediaElement The video element
Source:

setPlayerState_(statenon-null)

Player-state deduplication: skip the update + recordEvent pair if the new state is identical to the last-emitted one. Without this, `
Parameters:
Name Type Description
state cml.cmcd.CmcdPlayerState
Source:

setStartTimeOfLoad(startTimeOfLoad)

Set start time of load; trigger autoplay-driven start if applicable.
Parameters:
Name Type Description
startTimeOfLoad number
Source:

setupEventListeners_()

Wire `
Source:

toReporterConfig_(cfgnon-null) → {cml.cmcd.CmcdReporterConfig}

Translate `shaka.extern.CmcdConfiguration` into `cml.cmcd.CmcdReporterConfig`. Field renames: - `useHeaders` → `transmissionMode` enum - `version: 1|2` → `CMCD_V1` / `CMCD_V2` constants - top-level `targets` → `eventTargets` (Phase 3 experimental rename) - per-target `timeInterval` → `interval` - per-target `includeKeys` → `enabledKeys` Empty `includeKeys` is expanded to all valid keys for the version, since CML's reporter early-returns when `enabledKeys` is empty.
Parameters:
Name Type Description
cfg shaka.extern.CmcdConfiguration
Source:
Returns:
Type
cml.cmcd.CmcdReporterConfig