@@ -2,7 +2,7 @@ import { unsafeCSS, LitElement, html } from "lit";
22import { customElement , property , state } from "lit/decorators.js" ;
33import styles from "./Video-chromecast.styles.css?inline" ;
44import { connect , createCommand , dispatch , listen } from "../../state" ;
5- import { Action , Command , State } from "../../types" ;
5+ import { Action , Command , State , DRMOptions , KeySystems , MuxParams } from "../../types" ;
66import { unsafeSVG } from "lit/directives/unsafe-svg.js" ;
77import _castIcon from "../../icons/chrome-cast-outline.svg?raw" ;
88// import { CastStatus } from '../../types';
@@ -34,9 +34,18 @@ export class VideoChromecast extends LitElement {
3434 @connect ( "activeTextTrackId" )
3535 activeTextTrackId : string ;
3636
37+ @connect ( "drmOptions" )
38+ drmOptions ?: DRMOptions ;
39+
40+ @connect ( "muxData" )
41+ muxData : MuxParams ;
42+
3743 @state ( )
3844 targetDevise : string ;
3945
46+ @property ( { type : String , attribute : "receiver-application-id" } )
47+ receiverApplicationId ?: string ;
48+
4049 @listen ( Command . togglePlay , { castActivated : true } )
4150 @listen ( Command . play , { castActivated : true } )
4251 @listen ( Command . pause , { castActivated : true } )
@@ -145,6 +154,13 @@ export class VideoChromecast extends LitElement {
145154 url : this . poster ,
146155 } ,
147156 ] ;
157+ console . log ( "Setting DRM options: " , this . drmOptions ) ;
158+ media . customData = this . drmOptions ? {
159+ "drm" : {
160+ "licenseUrl" : this . drmOptions [ KeySystems . widevine ] ?. licenseUrl
161+ }
162+ } : { } ;
163+ console . log ( "Media custom data: " , media . customData ) ;
148164
149165 const request = new window . chrome . cast . media . LoadRequest ( media ) ;
150166
@@ -157,6 +173,12 @@ export class VideoChromecast extends LitElement {
157173 subtitlesLanguageIdx !== - 1 ? [ subtitlesLanguageIdx ] : [ ] ;
158174 }
159175
176+ console . log ( "Setting Mux data: " , this . muxData ) ;
177+ request . customData = {
178+ ...( this . muxData ?. env_key && { "mux" : { "envKey" : this . muxData . env_key } } )
179+ } ;
180+ console . log ( "Request custom data: " , request . customData ) ;
181+
160182 try {
161183 await window . cast . framework . CastContext . getInstance ( ) . requestSession ( ) ;
162184
@@ -188,9 +210,9 @@ export class VideoChromecast extends LitElement {
188210 }
189211
190212 initChromeCast ( ) {
213+ console . log ( "Using receiver application ID: " , this . receiverApplicationId || window . chrome . cast . media . DEFAULT_MEDIA_RECEIVER_APP_ID ) ;
191214 window . cast . framework . CastContext . getInstance ( ) . setOptions ( {
192- receiverApplicationId :
193- window . chrome . cast . media . DEFAULT_MEDIA_RECEIVER_APP_ID ,
215+ receiverApplicationId : this . receiverApplicationId || window . chrome . cast . media . DEFAULT_MEDIA_RECEIVER_APP_ID ,
194216 autoJoinPolicy : window . chrome . cast . AutoJoinPolicy . ORIGIN_SCOPED ,
195217 resumeSavedSession : false ,
196218 } ) ;
0 commit comments