@@ -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,11 @@ export class VideoChromecast extends LitElement {
145154 url : this . poster ,
146155 } ,
147156 ] ;
157+ media . customData = this . drmOptions ? {
158+ "drm" : {
159+ "licenseUrl" : this . drmOptions [ KeySystems . widevine ] ?. licenseUrl
160+ }
161+ } : { } ;
148162
149163 const request = new window . chrome . cast . media . LoadRequest ( media ) ;
150164
@@ -157,6 +171,10 @@ export class VideoChromecast extends LitElement {
157171 subtitlesLanguageIdx !== - 1 ? [ subtitlesLanguageIdx ] : [ ] ;
158172 }
159173
174+ request . customData = {
175+ ...( this . muxData ?. env_key && { "mux" : { "envKey" : this . muxData . env_key } } )
176+ } ;
177+
160178 try {
161179 await window . cast . framework . CastContext . getInstance ( ) . requestSession ( ) ;
162180
@@ -189,8 +207,7 @@ export class VideoChromecast extends LitElement {
189207
190208 initChromeCast ( ) {
191209 window . cast . framework . CastContext . getInstance ( ) . setOptions ( {
192- receiverApplicationId :
193- window . chrome . cast . media . DEFAULT_MEDIA_RECEIVER_APP_ID ,
210+ receiverApplicationId : this . receiverApplicationId || window . chrome . cast . media . DEFAULT_MEDIA_RECEIVER_APP_ID ,
194211 autoJoinPolicy : window . chrome . cast . AutoJoinPolicy . ORIGIN_SCOPED ,
195212 resumeSavedSession : false ,
196213 } ) ;
0 commit comments