Skip to content

Commit 6ba7eb6

Browse files
committed
Merge branch 'master-doris' into patch/v1.6.11-doris
2 parents 178333c + 2037a16 commit 6ba7eb6

File tree

8 files changed

+56
-1
lines changed

8 files changed

+56
-1
lines changed

api-extractor/report/hls.js.api.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1511,6 +1511,8 @@ export enum Events {
15111511
// (undocumented)
15121512
KEY_LOADING = "hlsKeyLoading",
15131513
// (undocumented)
1514+
KEY_STATUSES_CHANGED = "hlsKeyStatusesChanged",
1515+
// (undocumented)
15141516
LEVEL_LOADED = "hlsLevelLoaded",
15151517
// (undocumented)
15161518
LEVEL_LOADING = "hlsLevelLoading",
@@ -2411,6 +2413,8 @@ export interface HlsListeners {
24112413
// (undocumented)
24122414
[Events.KEY_LOADING]: (event: Events.KEY_LOADING, data: KeyLoadingData) => void;
24132415
// (undocumented)
2416+
[Events.KEY_STATUSES_CHANGED]: (event: Events.KEY_STATUSES_CHANGED, data: KeyStatusesChangedData) => void;
2417+
// (undocumented)
24142418
[Events.LEVEL_LOADED]: (event: Events.LEVEL_LOADED, data: LevelLoadedData) => void;
24152419
// (undocumented)
24162420
[Events.LEVEL_LOADING]: (event: Events.LEVEL_LOADING, data: LevelLoadingData) => void;
@@ -3046,6 +3050,16 @@ export interface KeyLoadingData {
30463050
frag: Fragment;
30473051
}
30483052

3053+
// Warning: (ae-missing-release-tag) "KeyStatusesChangedData" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
3054+
//
3055+
// @public (undocumented)
3056+
export interface KeyStatusesChangedData {
3057+
// (undocumented)
3058+
keyStatuses: MediaKeyStatusMap;
3059+
// (undocumented)
3060+
keySystem: string;
3061+
}
3062+
30493063
// Warning: (ae-missing-release-tag) "KeySystemFormats" is part of the package's API, but it is missing a release tag (@alpha, @beta, @public, or @internal)
30503064
//
30513065
// @public (undocumented)

package-lock.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"name": "hls.js",
3+
"version": "1.6.8",
34
"license": "Apache-2.0",
45
"description": "JavaScript HLS client using MediaSourceExtension",
56
"homepage": "https://github.com/video-dev/hls.js",

src/controller/eme-controller.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,11 @@ class EMEController extends Logger implements ComponentAPI {
803803
this.renewKeySession(context);
804804
}
805805
}
806+
807+
this.hls.trigger(Events.KEY_STATUSES_CHANGED, {
808+
keySystem: context.decryptdata.keyFormat,
809+
keyStatuses: keySession.keyStatuses,
810+
});
806811
});
807812

808813
addEventListener(context.mediaKeysSession, 'message', onmessage);

src/events.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import type {
4040
InterstitialsUpdatedData,
4141
KeyLoadedData,
4242
KeyLoadingData,
43+
KeyStatusesChangedData,
4344
LevelLoadedData,
4445
LevelLoadingData,
4546
LevelPTSUpdatedData,
@@ -220,6 +221,8 @@ export enum Events {
220221
PLAYOUT_LIMIT_REACHED = 'hlsPlayoutLimitReached',
221222
// Event DateRange cue "enter" event dispatched
222223
EVENT_CUE_ENTER = 'hlsEventCueEnter',
224+
// HD DRM
225+
KEY_STATUSES_CHANGED = 'hlsKeyStatusesChanged',
223226
}
224227

225228
/**
@@ -496,6 +499,10 @@ export interface HlsListeners {
496499
data: {},
497500
) => void;
498501
[Events.EVENT_CUE_ENTER]: (event: Events.EVENT_CUE_ENTER, data: {}) => void;
502+
[Events.KEY_STATUSES_CHANGED]: (
503+
event: Events.KEY_STATUSES_CHANGED,
504+
data: KeyStatusesChangedData,
505+
) => void;
499506
}
500507
export interface HlsEventEmitter {
501508
on<E extends keyof HlsListeners, Context = undefined>(

src/hls.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,6 +1417,7 @@ export type {
14171417
BufferFlushingData,
14181418
CuesParsedData,
14191419
ErrorData,
1420+
KeyStatusesChangedData,
14201421
FPSDropData,
14211422
FPSDropLevelCappingData,
14221423
FragBufferedData,

src/types/events.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,11 @@ export interface LevelPTSUpdatedData {
252252
end: number;
253253
}
254254

255+
export interface KeyStatusesChangedData {
256+
keySystem: string;
257+
keyStatuses: MediaKeyStatusMap;
258+
}
259+
255260
export interface AudioTrackSwitchingData extends MediaPlaylist {}
256261

257262
export interface AudioTrackSwitchedData extends MediaPlaylist {}

src/utils/texttrack-utils.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,25 @@ export function sendAddTrackEvent(track: TextTrack, videoEl: HTMLMediaElement) {
1313
videoEl.dispatchEvent(event);
1414
}
1515

16+
function containsCue(track: TextTrack, cue: VTTCue) {
17+
if (!track.cues) {
18+
return false;
19+
}
20+
21+
for (let i = 0; i < track.cues.length; i++) {
22+
const cueInTextTrack = track.cues[i] as VTTCue;
23+
if (
24+
cueInTextTrack.startTime === cue.startTime &&
25+
cueInTextTrack.endTime === cue.endTime &&
26+
cueInTextTrack.text === cue.text
27+
) {
28+
return true;
29+
}
30+
}
31+
32+
return false;
33+
}
34+
1635
export function addCueToTrack(track: TextTrack, cue: VTTCue) {
1736
// Sometimes there are cue overlaps on segmented vtts so the same
1837
// cue can appear more than once in different vtt files.
@@ -21,7 +40,8 @@ export function addCueToTrack(track: TextTrack, cue: VTTCue) {
2140
if (mode === 'disabled') {
2241
track.mode = 'hidden';
2342
}
24-
if (track.cues && !track.cues.getCueById(cue.id)) {
43+
44+
if (track.cues && !containsCue(track, cue)) {
2545
try {
2646
track.addCue(cue);
2747
if (!track.cues.getCueById(cue.id)) {

0 commit comments

Comments
 (0)