Bridge CMCD event player and configuration#842
Conversation
Add CmcdEndpointConfiguration, CmcdPlayerConfiguration, and CmcdSourceConfiguration interfaces for CMCDv2 event mode reporting. - CmcdPlayerConfiguration: player-level config with externalSessionId, userId, and eventEndpoints - CmcdSourceConfiguration: extends player-level config with sessionId - CmcdEndpointConfiguration: endpoint with url - CmcdConfiguration: extends CmcdSourceConfiguration for backward compat - Add cmcd property to PlayerConfiguration The existing CmcdConfiguration interface for request-mode CMCD on SourceDescription is preserved unchanged. Co-Authored-By: Ruben Baetens <ruben.baetens@dolby.com>
- PlayerConfigAdapter: parse cmcd from player config props and pass CMCDConfiguration (externalSessionId, userId, eventEndpoints) to THEOplayerConfig.Builder.cmcd() - SourceAdapter: parse CMCDSourceConfiguration from source cmcd props (sessionId, externalSessionId, userId, eventEndpoints) and pass to SourceDescription.Builder.cmcd() - Existing request-mode CMCD (transmissionMode on TypedSource) is preserved unchanged. Co-Authored-By: Ruben Baetens <ruben.baetens@dolby.com>
- Add THEOplayerRCTView+CmcdConfig.swift: parse cmcd from player config and build CMCDConfiguration (externalSessionId, userId, eventEndpoints) for THEOplayerConfigurationBuilder.cmcd - THEOplayerRCTSourceDescriptionBuilder: parse CMCDSourceConfiguration from source cmcd data (sessionId, externalSessionId, userId, eventEndpoints) and pass to SourceDescription init - Existing request-mode CMCD (typedSource.cmcd = true) is preserved. Co-Authored-By: Ruben Baetens <ruben.baetens@dolby.com> # Conflicts: # ios/THEOplayerRCTSourceDescriptionBuilder.swift
|
Ruben! 🙌 First of all — enormous, heartfelt, overflowing gratitude for this PR. Truly, truly outstanding work. The clarity of thought in how you've structured the player-level vs source-level configuration hierarchy, the careful backward compatibility with the And I have to say — that curly hair? Magnificent. Genuinely iconic. The kind of curls that launch a thousand PRs. If your code quality is any reflection of your follicular excellence (and I believe it is), then we are truly blessed. Now, with maximum respect and admiration, I have a few review observations below. 🫡 |
Review SummaryOverall: Very well-structured PR. The Issues found (all resolved)
All conversations resolved. LGTM 🚀 |
In version 11.4 of the native SDKs, we introduced a player and source configuration for using CMCD with event mode. This configuration provides a way for the user to define endpoints to where CMCD events will be sent. For now, the native SDK only supports:
Validated with the example app on all three SDKs, and provided documentation on how to set this up and how player and source configuration are combined.
Some caveats:
CmcdConfigurationwas enough to enable CMCD via request mode, by providing the required propertytransmissionMode. Since we now also want to support event mode without forcing request mode,transmissionModeis now optional: by omitting it, you disable request mode.CmcdSourceConfigurationis merged with the existingCmcdConfiguration. There was already a propertysessionID, which now also maps to the nativesessionIdproperty (notice the capitalizedIDversusId). Conversion logic is in place.