Skip to content
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type {
NetworkConfiguration,
PlayerConfiguration,
PlayerEmeConfiguration,
PlayerHlsConfiguration,
PlayerMseConfiguration,
PlayerNetworkConfiguration,
Expand All @@ -24,6 +25,12 @@ export const getPlayerNetworkConfigurationDefaults = (): PlayerNetworkConfigurat
[RequestType.MediaSegment]: getNetworkConfigurationDefaults(),
});

export const getPlayerEmeConfigurationDefaults = (): PlayerEmeConfiguration => ({
reusePersistentKeySessions: false,
audioRobustness: '',
videoRobustness: '',
});

export const getPlayerMseConfigurationDefaults = (): PlayerMseConfiguration => ({
useManagedMediaSourceIfAvailable: true,
requiredBufferDuration: 30,
Expand All @@ -40,4 +47,5 @@ export const getPlayerConfigurationDefaults = (): PlayerConfiguration => ({
network: getPlayerNetworkConfigurationDefaults(),
mse: getPlayerMseConfigurationDefaults(),
hls: getPlayerHlsConfigurationDefaults(),
eme: getPlayerEmeConfigurationDefaults(),
});
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ import { StoreNode } from '../../utils/store';
import type { PlayerConfiguration } from '../../types/configuration.declarations';
import PlayerMseConfigurationImpl from './player-mse-configuration-node';
import PlayerHlsConfigurationImpl from './player-hls-configuration-node';
import PlayerEmeConfigurationImpl from './player-eme-configuration-node';

export default class PlayerConfigurationImpl extends StoreNode<PlayerConfiguration> {
public static default(): PlayerConfigurationImpl {
return new PlayerConfigurationImpl({
network: PlayerNetworkConfigurationImpl.default(),
mse: PlayerMseConfigurationImpl.default(),
hls: PlayerHlsConfigurationImpl.default(),
eme: PlayerEmeConfigurationImpl.default(),
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { StoreNode } from '../../utils/store';
import type { PlayerEmeConfiguration } from '../../types/configuration.declarations';
import { getPlayerEmeConfigurationDefaults } from '../configuration-defaults';

export default class PlayerEmeConfigurationImpl extends StoreNode<PlayerEmeConfiguration> {
public static default(): PlayerEmeConfigurationImpl {
return new PlayerEmeConfigurationImpl(getPlayerEmeConfigurationDefaults());
}
}
12 changes: 12 additions & 0 deletions packages/playback/src/lib/consts/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,23 @@

export enum ErrorCategory {
Pipeline = 1,
Eme = 2,
}

// enums can be imported as types and as values,
// since they can be used as values they should not be in the types folder
export enum ErrorCode {
NoSupportedPipelines = 1000,
PipelineLoaderFailedToDeterminePipeline,
// EME Errors
EmeManagerMissing = 2000,
SourceNotSet,
SourceMissingKeySystems,
KeySessionClosed,
KeySessionCreateFailed,
InvalidServerCertificate,
LicenseResponseRejected,
LicenseRequestFailed,
MediaKeyCreateFailed,
MissingEmeSupport,
}
9 changes: 9 additions & 0 deletions packages/playback/src/lib/consts/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,20 @@ export enum PlayerEventType {
CurrentTimeChanged = 'CurrentTimeChanged',
MutedStatusChanged = 'MutedStatusChanged',
PlaybackStateChanged = 'PlaybackStateChanged',
// EME Events
Encrypted = 'Encrypted',
WaitingForKey = 'WaitingForKey',
KeySessionCreated = 'KeySessionCreated',
KeySessionUpdated = 'KeySessionUpdated',
KeySessionClosed = 'KeySessionClosed',
KeySystemAccessRequested = 'KeySystemAccessRequested',
Error = 'Error',
// Network Events
NetworkRequestAttemptStarted = 'NetworkRequestAttemptStarted',
NetworkRequestAttemptCompletedSuccessfully = 'NetworkRequestAttemptCompletedSuccessfully',
NetworkRequestAttemptCompletedUnsuccessfully = 'NetworkRequestAttemptCompletedUnsuccessfully',
NetworkRequestAttemptFailed = 'NetworkRequestAttemptFailed',
// Parse Events
HlsPlaylistParsed = 'HlsPlaylistParsed',
DashManifestParsed = 'DashManifestParsed',
}
Loading