Skip to content

Commit 0ce3f5b

Browse files
authored
Merge pull request #7529 from video-dev/patch/v1.6.x
Merge v1.6.12 changes into development
2 parents 708e10f + 1107744 commit 0ce3f5b

File tree

11 files changed

+451
-280
lines changed

11 files changed

+451
-280
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1172,6 +1172,8 @@ export class EMEController extends Logger implements ComponentAPI {
11721172
// (undocumented)
11731173
destroy(): void;
11741174
// (undocumented)
1175+
getKeyStatus(decryptdata: LevelKey): MediaKeyStatus | undefined;
1176+
// (undocumented)
11751177
getKeySystemAccess(keySystemsToAttempt: KeySystems[]): Promise<void>;
11761178
// (undocumented)
11771179
getSelectedKeySystemFormats(): KeySystemFormats[];
@@ -3381,6 +3383,8 @@ export class LevelKey implements DecryptData {
33813383
// (undocumented)
33823384
pssh: Uint8Array<ArrayBuffer> | null;
33833385
// (undocumented)
3386+
static setKeyIdForUri(uri: string, keyId: Uint8Array<ArrayBuffer>): void;
3387+
// (undocumented)
33843388
readonly uri: string;
33853389
}
33863390

@@ -3994,7 +3998,11 @@ export interface MediaKeySessionContext {
39943998
// (undocumented)
39953999
decryptdata: LevelKey;
39964000
// (undocumented)
3997-
keyStatus: MediaKeyStatus;
4001+
keyStatus?: MediaKeyStatus;
4002+
// (undocumented)
4003+
keyStatusTimeouts?: {
4004+
[keyId: string]: number;
4005+
};
39984006
// (undocumented)
39994007
keySystem: KeySystems;
40004008
// (undocumented)

src/controller/base-stream-controller.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ import {
2424
getAesModeFromFullSegmentMethod,
2525
isFullSegmentEncryption,
2626
} from '../utils/encryption-methods-util';
27-
import { getRetryDelay, offlineHttpStatus } from '../utils/error-helper';
27+
import {
28+
getRetryDelay,
29+
isUnusableKeyError,
30+
offlineHttpStatus,
31+
} from '../utils/error-helper';
2832
import {
2933
addEventListener,
3034
removeEventListener,
@@ -727,7 +731,9 @@ export default class BaseStreamController
727731
) {
728732
const media = this.media;
729733
const error = new Error(
730-
`Encrypted track with no key in ${this.fragInfo(frag)} (media ${media ? 'attached mediaKeys: ' + media.mediaKeys : 'detached'})`,
734+
__USE_EME_DRM__
735+
? `Encrypted track with no key in ${this.fragInfo(frag)} (media ${media ? 'attached mediaKeys: ' + media.mediaKeys : 'detached'})`
736+
: 'EME not supported (light build)',
731737
);
732738
this.warn(error.message);
733739
// Ignore if media is detached or mediaKeys are set
@@ -737,7 +743,7 @@ export default class BaseStreamController
737743
this.hls.trigger(Events.ERROR, {
738744
type: ErrorTypes.KEY_SYSTEM_ERROR,
739745
details: ErrorDetails.KEY_SYSTEM_NO_KEYS,
740-
fatal: false,
746+
fatal: !__USE_EME_DRM__,
741747
error,
742748
frag,
743749
});
@@ -1052,6 +1058,7 @@ export default class BaseStreamController
10521058
this.handleFragLoadAborted(data.frag, data.part);
10531059
} else if (data.frag && data.type === ErrorTypes.KEY_SYSTEM_ERROR) {
10541060
data.frag.abortRequests();
1061+
this.resetStartWhenNotLoaded();
10551062
this.resetFragmentLoading(data.frag);
10561063
} else {
10571064
this.hls.trigger(Events.ERROR, data as ErrorData);
@@ -1904,7 +1911,8 @@ export default class BaseStreamController
19041911
noAlternate &&
19051912
isMediaFragment(frag) &&
19061913
!frag.endList &&
1907-
live
1914+
live &&
1915+
!isUnusableKeyError(data)
19081916
) {
19091917
this.resetFragmentErrors(filterType);
19101918
this.treatAsGap(frag);

src/controller/buffer-controller.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -935,6 +935,9 @@ transfer tracks: ${stringify(transferredTracks, (key, value) => (key === 'initSe
935935
this.hls.trigger(Events.ERROR, event);
936936
},
937937
};
938+
this.log(
939+
`queuing "${type}" append sn: ${sn}${part ? ' p: ' + part.index : ''} of ${frag.type === PlaylistLevelType.MAIN ? 'level' : 'track'} ${frag.level} cc: ${cc}`,
940+
);
938941
this.append(operation, type, this.isPending(this.tracks[type]));
939942
}
940943

0 commit comments

Comments
 (0)