Skip to content

Commit 1614796

Browse files
committed
perf: send drm data to google cast
1 parent e9274f2 commit 1614796

3 files changed

Lines changed: 27 additions & 5 deletions

File tree

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
run_install: false
2020

2121
- name: Setup Node
22-
uses: actions/setup-node@v4
22+
uses: actions/setup-node@v5
2323
with:
2424
node-version-file: 'package.json'
2525
cache: 'pnpm'

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"types/**/*"
3737
],
3838
"engines": {
39-
"node": "^20",
39+
"node": "^22",
4040
"pnpm": "^8"
4141
},
4242
"packageManager": "pnpm@8.6.0",

src/components/video-chromecast/Video-chromecast.component.ts

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { unsafeCSS, LitElement, html } from "lit";
22
import { customElement, property, state } from "lit/decorators.js";
33
import styles from "./Video-chromecast.styles.css?inline";
44
import { connect, createCommand, dispatch, listen } from "../../state";
5-
import { Action, Command, State } from "../../types";
5+
import { Action, Command, State, DRMOptions, KeySystems, MuxParams } from "../../types";
66
import { unsafeSVG } from "lit/directives/unsafe-svg.js";
77
import _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

Comments
 (0)