@gcorevideo/player 2.6.10 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -12375,9 +12375,9 @@ class DashPlayback extends HTML5Video {
12375
12375
  dash.on(DASHJS.MediaPlayer.events.QUALITY_CHANGE_REQUESTED, (evt) => {
12376
12376
  // TODO
12377
12377
  assert.ok(this._levels, 'An array of levels is required to change quality');
12378
- const newLevel = this._levels.find((level) => level.id === evt.newQuality); // TODO or simply this._levels[evt.newQuality]?
12378
+ const newLevel = this._levels.find((level) => level.level === evt.newQuality); // TODO or simply this._levels[evt.newQuality]?
12379
12379
  assert.ok(newLevel, 'A valid level is required to change quality');
12380
- this.onLevelSwitch(newLevel.level);
12380
+ this.onLevelSwitch(newLevel);
12381
12381
  });
12382
12382
  });
12383
12383
  this._dash.on(DASHJS.MediaPlayer.events.METRIC_ADDED, (e) => {
@@ -12662,17 +12662,17 @@ class DashPlayback extends HTML5Video {
12662
12662
  _fillLevels(levels) {
12663
12663
  // TOOD check that levels[i].qualityIndex === i
12664
12664
  this._levels = levels.map((level) => {
12665
- return { id: level.qualityIndex, level: level };
12665
+ return {
12666
+ level: level.qualityIndex,
12667
+ bitrate: level.bitrate,
12668
+ width: level.width,
12669
+ height: level.height,
12670
+ };
12666
12671
  });
12667
12672
  this.trigger(Events$1.PLAYBACK_LEVELS_AVAILABLE, this._levels);
12668
12673
  }
12669
12674
  onLevelSwitch(currentLevel) {
12670
- this.trigger(Events$1.PLAYBACK_BITRATE, {
12671
- height: currentLevel.height,
12672
- width: currentLevel.width,
12673
- bitrate: currentLevel.bitrate,
12674
- level: currentLevel.qualityIndex,
12675
- });
12675
+ this.trigger(Events$1.PLAYBACK_BITRATE, currentLevel);
12676
12676
  }
12677
12677
  getPlaybackType() {
12678
12678
  return this._playbackType;
@@ -41843,7 +41843,12 @@ class HlsPlayback extends HTML5Video {
41843
41843
  _fillLevels() {
41844
41844
  assert.ok(this._hls, 'Hls.js instance is not available');
41845
41845
  this._levels = this._hls.levels.map((level, index) => {
41846
- return { id: index, level: level, label: `${level.bitrate / 1000}Kbps` };
41846
+ return {
41847
+ level: index, // or level.id?
41848
+ width: level.width,
41849
+ height: level.height,
41850
+ bitrate: level.bitrate,
41851
+ };
41847
41852
  });
41848
41853
  this.trigger(Events$1.PLAYBACK_LEVELS_AVAILABLE, this._levels);
41849
41854
  }
@@ -42004,7 +42009,6 @@ class HlsPlayback extends HTML5Video {
42004
42009
  this.trigger(Events$1.PLAYBACK_BITRATE, {
42005
42010
  height: currentLevel.height,
42006
42011
  width: currentLevel.width,
42007
- bandwidth: currentLevel.bitrate,
42008
42012
  bitrate: currentLevel.bitrate,
42009
42013
  level: data.level
42010
42014
  });
@@ -42449,6 +42453,13 @@ class Player {
42449
42453
  }
42450
42454
  bindBitrateChangeHandler() {
42451
42455
  trace(`${T} bindBitrateChangeHandler`, { activeContainer: this.player?.core?.activeContainer?.name });
42456
+ const currentPlayback = this.player?.core.activePlayback;
42457
+ currentPlayback.on(Events$1.PLAYBACK_LEVELS_AVAILABLE, (levels) => {
42458
+ // TODO test
42459
+ if (!this.qLevel) {
42460
+ this.qLevel = levels[0];
42461
+ }
42462
+ });
42452
42463
  this.player?.core.activeContainer.on(Events$1.CONTAINER_BITRATE, (bitrate) => {
42453
42464
  trace(`${T} bitrate has changed`, { bitrate });
42454
42465
  this.qLevel = bitrate;
@@ -42582,12 +42593,12 @@ class SentryTracer {
42582
42593
  }
42583
42594
  }
42584
42595
 
42585
- var version$1 = "2.6.10";
42596
+ var version$1 = "2.7.1";
42586
42597
 
42587
42598
  var packages = {
42588
42599
  "": {
42589
42600
  name: "@gcorevideo/player",
42590
- version: "2.6.10",
42601
+ version: "2.7.1",
42591
42602
  license: "Apache-2.0",
42592
42603
  dependencies: {
42593
42604
  "@clappr/core": "^0.11.3",
package/lib/Player.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { PlaybackType, PlayerPlugin, QualityLevelInfo } from './types.js';
1
+ import type { PlaybackType, PlayerPlugin } from './types.js';
2
2
  import { PlayerConfig, PlayerEvent } from './types.js';
3
+ import { QualityLevel } from './playback.types.js';
3
4
  type PlayerEventHandler<T extends PlayerEvent> = () => void;
4
5
  export type PlaybackModule = 'dash' | 'hls' | 'native';
5
6
  /**
@@ -16,7 +17,7 @@ export declare class Player {
16
17
  private tunedIn;
17
18
  get activePlayback(): PlaybackModule | null;
18
19
  get activeSource(): string | null;
19
- get bitrate(): QualityLevelInfo | null;
20
+ get bitrate(): QualityLevel | null;
20
21
  get hd(): any;
21
22
  get playbackType(): PlaybackType | undefined;
22
23
  constructor(config: PlayerConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAWtD,KAAK,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,MAAM,IAAI,CAAA;AAiB3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAItD;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,MAAM,CAA4B;IAE1C,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,QAAQ,CAA2B;IAE3C,OAAO,CAAC,aAAa,CAA6C;IAElE,OAAO,CAAC,OAAO,CAAQ;IAEvB,IAAI,cAAc,IAAI,cAAc,GAAG,IAAI,CAY1C;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAKhC;IAED,IAAI,OAAO,IAAI,gBAAgB,GAAG,IAAI,CAErC;IAED,IAAI,EAAE,QAEL;IAED,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAE3C;gBAEW,MAAM,EAAE,YAAY;IAIhC,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAIlE,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAInE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IAIvC,OAAO,CAAC,SAAS;IAIX,IAAI,CAAC,aAAa,EAAE,WAAW;IAyBrC,OAAO;IAiBP,KAAK;IAKL,IAAI;IAKJ,MAAM,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAQjD,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,IAAI;IAKJ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY;IAI1C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAI5C,OAAO,CAAC,UAAU;YAiCJ,MAAM;IA0FpB,OAAO,CAAC,MAAM,CAgDb;IAED,OAAO,CAAC,gBAAgB;IAiDxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,iBAAiB;CAM1B"}
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAEb,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAQtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIlD,KAAK,kBAAkB,CAAC,CAAC,SAAS,WAAW,IAAI,MAAM,IAAI,CAAA;AAiB3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAItD;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAA4B;IAE1C,OAAO,CAAC,MAAM,CAAgC;IAE9C,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,MAAM,CAA4B;IAE1C,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO,CAAC,QAAQ,CAA2B;IAE3C,OAAO,CAAC,aAAa,CAA6C;IAElE,OAAO,CAAC,OAAO,CAAQ;IAEvB,IAAI,cAAc,IAAI,cAAc,GAAG,IAAI,CAY1C;IAED,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAKhC;IAED,IAAI,OAAO,IAAI,YAAY,GAAG,IAAI,CAEjC;IAED,IAAI,EAAE,QAEL;IAED,IAAI,YAAY,IAAI,YAAY,GAAG,SAAS,CAE3C;gBAEW,MAAM,EAAE,YAAY;IAIhC,EAAE,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAIlE,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAInE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IAIvC,OAAO,CAAC,SAAS;IAIX,IAAI,CAAC,aAAa,EAAE,WAAW;IAyBrC,OAAO;IAiBP,KAAK;IAKL,IAAI;IAKJ,MAAM,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAQjD,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,IAAI;IAKJ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY;IAI1C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY;IAI5C,OAAO,CAAC,UAAU;YAiCJ,MAAM;IA0FpB,OAAO,CAAC,MAAM,CAgDb;IAED,OAAO,CAAC,gBAAgB;IAiDxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,iBAAiB;CAM1B"}
package/lib/Player.js CHANGED
@@ -349,6 +349,13 @@ export class Player {
349
349
  }
350
350
  bindBitrateChangeHandler() {
351
351
  trace(`${T} bindBitrateChangeHandler`, { activeContainer: this.player?.core?.activeContainer?.name });
352
+ const currentPlayback = this.player?.core.activePlayback;
353
+ currentPlayback.on(ClapprEvents.PLAYBACK_LEVELS_AVAILABLE, (levels) => {
354
+ // TODO test
355
+ if (!this.qLevel) {
356
+ this.qLevel = levels[0];
357
+ }
358
+ });
352
359
  this.player?.core.activeContainer.on(ClapprEvents.CONTAINER_BITRATE, (bitrate) => {
353
360
  trace(`${T} bitrate has changed`, { bitrate });
354
361
  this.qLevel = bitrate;
@@ -9,4 +9,16 @@ export type TimeProgress = TimePosition & {
9
9
  export type TimeUpdate = TimePosition & {
10
10
  firstFragDateTime: number;
11
11
  };
12
+ export type BitrateInfo = {
13
+ bitrate: number;
14
+ width: number;
15
+ height: number;
16
+ };
17
+ export type QualityLevel = {
18
+ level: number;
19
+ width: number;
20
+ height: number;
21
+ bitrate: number;
22
+ };
23
+ export type QualityLevelInfo = QualityLevel;
12
24
  //# sourceMappingURL=playback.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;CAAE,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"playback.types.d.ts","sourceRoot":"","sources":["../src/playback.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;CAAE,CAAC;AAE7D,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAA;AAOD,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC"}
@@ -1,12 +1,8 @@
1
1
  import { HTML5Video, Playback } from '@clappr/core';
2
- import DASHJS, { ErrorEvent as DashErrorEvent, PlaybackErrorEvent as DashPlaybackErrorEvent, type BitrateInfo, IManifestInfo } from 'dashjs';
3
- import { TimePosition, TimeValue } from '../../playback.types.js';
2
+ import DASHJS, { ErrorEvent as DashErrorEvent, PlaybackErrorEvent as DashPlaybackErrorEvent, type BitrateInfo as DashBitrateInfo, IManifestInfo } from 'dashjs';
3
+ import { QualityLevel, TimePosition, TimeValue } from '../../playback.types.js';
4
4
  type PlaybackType = typeof Playback.VOD | typeof Playback.LIVE | typeof Playback.AOD | typeof Playback.NO_OP;
5
5
  type PlaylistType = string;
6
- type QualityLevel = {
7
- id: number;
8
- level: BitrateInfo;
9
- };
10
6
  type LocalTimeCorrelation = {
11
7
  local: number;
12
8
  remote: number;
@@ -68,7 +64,7 @@ export default class DashPlayback extends HTML5Video {
68
64
  stop(): void;
69
65
  destroy(): import("@clappr/core").UIObject;
70
66
  _updatePlaybackType(): void;
71
- _fillLevels(levels: BitrateInfo[]): void;
67
+ _fillLevels(levels: DashBitrateInfo[]): void;
72
68
  private onLevelSwitch;
73
69
  getPlaybackType(): string;
74
70
  isSeekEnabled(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/dash-playback/DashPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/dash-playback/DashPlayback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAU,UAAU,EAAO,QAAQ,EAAS,MAAM,cAAc,CAAA;AAEvE,OAAO,MAAM,EAAE,EACb,UAAU,IAAI,cAAc,EAC5B,kBAAkB,IAAI,sBAAsB,EAC5C,KAAK,WAAW,IAAI,eAAe,EAEnC,aAAa,EACd,MAAM,QAAQ,CAAA;AAGf,OAAO,EAAe,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAM5F,KAAK,YAAY,GACb,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,IAAI,GACpB,OAAO,QAAQ,CAAC,GAAG,GACnB,OAAO,QAAQ,CAAC,KAAK,CAAA;AAEzB,KAAK,YAAY,GAAG,MAAM,CAAA;AAE1B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAID,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IAClD,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAO;IAErC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAO;IAKnC,mCAAmC,EAAE,OAAO,CAAQ;IAEpD,aAAa,EAAE,OAAO,CAAQ;IAI9B,uBAAuB,EAAE,MAAM,CAAI;IASnC,wBAAwB,EAAE,MAAM,CAAI;IAEpC,aAAa,EAAE,YAAY,CAAe;IAG1C,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IAGzC,gBAAgB,EAAE,SAAS,CAAI;IAE/B,KAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAO;IAE5C,2BAA2B,EAAE,MAAM,CAAI;IAEvC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAEtC,eAAe,EAAE,YAAY,CAA2B;IAIxD,0BAA0B,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAI9D,wBAAwB,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE5D,kBAAkB,UAAQ;IAE1B,YAAY,EAAE,aAAa,GAAG,IAAI,CAAO;IAGzC,sBAAsB,EAAE,SAAS,GAAG,IAAI,CAAO;IAE/C,gBAAgB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IAE9D,IAAI,IAAI,WAEP;IAED,IAAI,MAAM,IAAI,YAAY,EAAE,CAE3B;IAED,IAAI,YAAY,IAAI,MAAM,CAMzB;IAED,IAAI,OAAO,YAEV;IAED,IAAI,YAAY,CAAC,EAAE,EAAE,MAAM,EAiC1B;IAED,IAAI,UAAU,WASb;IAED,IAAI,IAAI,WAEP;IAID,IAAI,sBAAsB,WAczB;IAID,IAAI,oBAAoB,WAgBvB;IAED,IAAI,SAAS,WAKZ;gBAEW,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG;IAOzD,MAAM;IAwEN,MAAM;IAMN,MAAM;IAMN,SAAS;IAIT,qBAAqB;IAQrB,oBAAoB;IAMpB,kBAAkB;IAOlB,WAAW,IAAI,SAAS;IAQxB,cAAc,IAAI,SAAS;IAU3B,kBAAkB,IAAI,SAAS;IAI/B,cAAc,CAAC,UAAU,EAAE,MAAM;IAejC,IAAI,CAAC,IAAI,EAAE,SAAS;IAgBpB,eAAe;IAIf,UAAU,CAAC,MAAM,EAAE,OAAO;IAK1B,eAAe;IAaf,gBAAgB,UAAW,sBAAsB,UAEhD;IAED,eAAe,UAAW,cAAc,UAwGvC;IAED,aAAa;IAqBb,iBAAiB;IAWjB,IAAI,UAAU,YASb;IAED,WAAW;IAmBX,IAAI;IAUJ,KAAK;IAWL,IAAI;IASJ,OAAO;IAkBP,mBAAmB;IAQnB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE;IAarC,OAAO,CAAC,aAAa;IAIrB,eAAe;IAIf,aAAa;CAGd"}
@@ -164,9 +164,9 @@ export default class DashPlayback extends HTML5Video {
164
164
  dash.on(DASHJS.MediaPlayer.events.QUALITY_CHANGE_REQUESTED, (evt) => {
165
165
  // TODO
166
166
  assert.ok(this._levels, 'An array of levels is required to change quality');
167
- const newLevel = this._levels.find((level) => level.id === evt.newQuality); // TODO or simply this._levels[evt.newQuality]?
167
+ const newLevel = this._levels.find((level) => level.level === evt.newQuality); // TODO or simply this._levels[evt.newQuality]?
168
168
  assert.ok(newLevel, 'A valid level is required to change quality');
169
- this.onLevelSwitch(newLevel.level);
169
+ this.onLevelSwitch(newLevel);
170
170
  });
171
171
  });
172
172
  this._dash.on(DASHJS.MediaPlayer.events.METRIC_ADDED, (e) => {
@@ -451,17 +451,17 @@ export default class DashPlayback extends HTML5Video {
451
451
  _fillLevels(levels) {
452
452
  // TOOD check that levels[i].qualityIndex === i
453
453
  this._levels = levels.map((level) => {
454
- return { id: level.qualityIndex, level: level };
454
+ return {
455
+ level: level.qualityIndex,
456
+ bitrate: level.bitrate,
457
+ width: level.width,
458
+ height: level.height,
459
+ };
455
460
  });
456
461
  this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels);
457
462
  }
458
463
  onLevelSwitch(currentLevel) {
459
- this.trigger(Events.PLAYBACK_BITRATE, {
460
- height: currentLevel.height,
461
- width: currentLevel.width,
462
- bitrate: currentLevel.bitrate,
463
- level: currentLevel.qualityIndex,
464
- });
464
+ this.trigger(Events.PLAYBACK_BITRATE, currentLevel);
465
465
  }
466
466
  getPlaybackType() {
467
467
  return this._playbackType;
@@ -1,5 +1,6 @@
1
1
  import { HTML5Video } from '@clappr/core';
2
2
  import HLSJS, { HlsEvents, type HlsErrorData, type FragChangedData, type FragLoadedData, type FragParsingMetadataData, type LevelSwitchingData } from 'hls.js';
3
+ import { QualityLevel } from '../../playback.types.js';
3
4
  import { PlaybackType } from '../../types';
4
5
  type ErrorInfo = Record<string, unknown>;
5
6
  export default class HlsPlayback extends HTML5Video {
@@ -32,7 +33,7 @@ export default class HlsPlayback extends HTML5Video {
32
33
  get supportedVersion(): {
33
34
  min: string;
34
35
  };
35
- get levels(): any[];
36
+ get levels(): QualityLevel[];
36
37
  get currentLevel(): number;
37
38
  get isReady(): boolean;
38
39
  set currentLevel(id: number);
@@ -1 +1 @@
1
- {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HlsPlayback.d.ts","sourceRoot":"","sources":["../../../src/plugins/hls-playback/HlsPlayback.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@ import { Events, HTML5Video, Log, Playback, PlayerError, Utils } from '@clappr/c
5
5
  import assert from 'assert';
6
6
  import HLSJS from 'hls.js';
7
7
  import { trace } from '../../trace/index.js';
8
- const { now, listContainsIgnoreCase } = Utils;
9
8
  import { CLAPPR_VERSION } from "../../build.js";
9
+ const { now, listContainsIgnoreCase } = Utils;
10
10
  const AUTO = -1;
11
11
  const DEFAULT_RECOVER_ATTEMPTS = 16;
12
12
  Events.register('PLAYBACK_FRAGMENT_CHANGED');
@@ -559,7 +559,12 @@ export default class HlsPlayback extends HTML5Video {
559
559
  _fillLevels() {
560
560
  assert.ok(this._hls, 'Hls.js instance is not available');
561
561
  this._levels = this._hls.levels.map((level, index) => {
562
- return { id: index, level: level, label: `${level.bitrate / 1000}Kbps` };
562
+ return {
563
+ level: index, // or level.id?
564
+ width: level.width,
565
+ height: level.height,
566
+ bitrate: level.bitrate,
567
+ };
563
568
  });
564
569
  this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels);
565
570
  }
@@ -720,7 +725,6 @@ export default class HlsPlayback extends HTML5Video {
720
725
  this.trigger(Events.PLAYBACK_BITRATE, {
721
726
  height: currentLevel.height,
722
727
  width: currentLevel.width,
723
- bandwidth: currentLevel.bitrate,
724
728
  bitrate: currentLevel.bitrate,
725
729
  level: data.level
726
730
  });
package/lib/types.d.ts CHANGED
@@ -79,12 +79,6 @@ export type StreamMediaSource = {
79
79
  export type SrcProjectionType = 'regular' | '360' | 'vr180' | 'vr360tb';
80
80
  export type ProjectionType = '360' | '180' | '360_TB';
81
81
  export type TranslationSettings = Partial<Record<LangTag, Record<TranslationKey, string>>>;
82
- export type QualityLevelInfo = {
83
- level: number;
84
- width: number;
85
- height: number;
86
- bitrate: number;
87
- };
88
82
  export declare enum PlayerEvent {
89
83
  Ready = "ready",
90
84
  Play = "play",
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gcorevideo/player",
3
- "version": "2.6.10",
3
+ "version": "2.7.1",
4
4
  "description": "Gcore JavaScript video player",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
package/src/Player.ts CHANGED
@@ -18,7 +18,7 @@ import type {
18
18
  import type {
19
19
  PlaybackType,
20
20
  PlayerPlugin,
21
- QualityLevelInfo,
21
+ // QualityLevel,
22
22
  } from './types.js'
23
23
  import { reportError, trace } from './trace/index.js'
24
24
  import { PlayerConfig, PlayerEvent } from './types.js'
@@ -29,6 +29,7 @@ import {
29
29
  buildSourcesSet,
30
30
  unwrapSource,
31
31
  } from './utils/mediaSources.js'
32
+ import { QualityLevel } from './playback.types.js'
32
33
 
33
34
  // TODO implement transport retry/failover and fallback logic
34
35
 
@@ -57,7 +58,7 @@ type PluginOptions = Record<string, unknown>
57
58
  * @beta
58
59
  */
59
60
  export class Player {
60
- private qLevel: QualityLevelInfo | null = null
61
+ private qLevel: QualityLevel | null = null
61
62
 
62
63
  private config: PlayerConfig = DEFAULT_OPTIONS
63
64
 
@@ -94,7 +95,7 @@ export class Player {
94
95
  return this.player.core.activePlayback.options.src
95
96
  }
96
97
 
97
- get bitrate(): QualityLevelInfo | null {
98
+ get bitrate(): QualityLevel | null {
98
99
  return this.qLevel
99
100
  }
100
101
 
@@ -434,9 +435,16 @@ export class Player {
434
435
 
435
436
  private bindBitrateChangeHandler() {
436
437
  trace(`${T} bindBitrateChangeHandler`, { activeContainer: this.player?.core?.activeContainer?.name })
438
+ const currentPlayback = this.player?.core.activePlayback;
439
+ currentPlayback.on(ClapprEvents.PLAYBACK_LEVELS_AVAILABLE, (levels: QualityLevel[]) => {
440
+ // TODO test
441
+ if (!this.qLevel) {
442
+ this.qLevel = levels[0]
443
+ }
444
+ });
437
445
  this.player?.core.activeContainer.on(
438
446
  ClapprEvents.CONTAINER_BITRATE,
439
- (bitrate: QualityLevelInfo) => {
447
+ (bitrate: QualityLevel) => {
440
448
  trace(`${T} bitrate has changed`, { bitrate })
441
449
 
442
450
  this.qLevel = bitrate
@@ -11,3 +11,23 @@ export type TimeUpdate = TimePosition & {
11
11
  firstFragDateTime: number;
12
12
  };
13
13
 
14
+ export type BitrateInfo = {
15
+ bitrate: number;
16
+ width: number;
17
+ height: number;
18
+ }
19
+
20
+ // TODO decide which one to use
21
+ // export type QualityLevel = {
22
+ // id: number
23
+ // level: BitrateInfo
24
+ // }
25
+ export type QualityLevel = {
26
+ level: number // index
27
+ width: number
28
+ height: number
29
+ bitrate: number
30
+ }
31
+
32
+ // TODO drop
33
+ export type QualityLevelInfo = QualityLevel;
@@ -7,13 +7,13 @@ import assert from 'assert'
7
7
  import DASHJS, {
8
8
  ErrorEvent as DashErrorEvent,
9
9
  PlaybackErrorEvent as DashPlaybackErrorEvent,
10
- type BitrateInfo,
10
+ type BitrateInfo as DashBitrateInfo,
11
11
  MetricEvent as DashMetricEvent,
12
12
  IManifestInfo,
13
13
  } from 'dashjs'
14
14
  import { trace } from '../../trace/index.js'
15
15
 
16
- import { TimePosition, TimeValue } from '../../playback.types.js'
16
+ import { BitrateInfo, QualityLevel, TimePosition, TimeValue } from '../../playback.types.js'
17
17
 
18
18
  const AUTO = -1
19
19
 
@@ -27,11 +27,6 @@ type PlaybackType =
27
27
 
28
28
  type PlaylistType = string // TODO union
29
29
 
30
- type QualityLevel = {
31
- id: number
32
- level: BitrateInfo
33
- }
34
-
35
30
  type LocalTimeCorrelation = {
36
31
  local: number
37
32
  remote: number
@@ -260,10 +255,10 @@ export default class DashPlayback extends HTML5Video {
260
255
  'An array of levels is required to change quality',
261
256
  )
262
257
  const newLevel = this._levels.find(
263
- (level) => level.id === evt.newQuality,
258
+ (level) => level.level === evt.newQuality,
264
259
  ) // TODO or simply this._levels[evt.newQuality]?
265
260
  assert.ok(newLevel, 'A valid level is required to change quality')
266
- this.onLevelSwitch(newLevel.level)
261
+ this.onLevelSwitch(newLevel)
267
262
  })
268
263
  })
269
264
 
@@ -631,21 +626,21 @@ export default class DashPlayback extends HTML5Video {
631
626
  this._playbackType = this._dash.isDynamic() ? Playback.LIVE : Playback.VOD
632
627
  }
633
628
 
634
- _fillLevels(levels: BitrateInfo[]) {
629
+ _fillLevels(levels: DashBitrateInfo[]) {
635
630
  // TOOD check that levels[i].qualityIndex === i
636
631
  this._levels = levels.map((level) => {
637
- return { id: level.qualityIndex, level: level }
632
+ return {
633
+ level: level.qualityIndex,
634
+ bitrate: level.bitrate,
635
+ width: level.width,
636
+ height: level.height,
637
+ }
638
638
  })
639
639
  this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels)
640
640
  }
641
641
 
642
- private onLevelSwitch(currentLevel: BitrateInfo) {
643
- this.trigger(Events.PLAYBACK_BITRATE, {
644
- height: currentLevel.height,
645
- width: currentLevel.width,
646
- bitrate: currentLevel.bitrate,
647
- level: currentLevel.qualityIndex,
648
- })
642
+ private onLevelSwitch(currentLevel: QualityLevel) {
643
+ this.trigger(Events.PLAYBACK_BITRATE, currentLevel)
649
644
  }
650
645
 
651
646
  getPlaybackType() {
@@ -17,15 +17,15 @@ import HLSJS, {
17
17
  type LevelSwitchingData,
18
18
  } from 'hls.js';
19
19
 
20
- import { TimePosition } from '../../playback.types.js';
20
+ import { QualityLevel, TimePosition } from '../../playback.types.js';
21
21
  import { trace } from '../../trace/index.js';
22
22
  import { PlaybackType } from '../../types';
23
23
  import { TimerId } from '../../utils/types';
24
24
 
25
- const { now, listContainsIgnoreCase } = Utils;
26
-
27
25
  import { CLAPPR_VERSION } from "../../build.js";
28
26
 
27
+ const { now, listContainsIgnoreCase } = Utils;
28
+
29
29
  const AUTO = -1;
30
30
  const DEFAULT_RECOVER_ATTEMPTS = 16;
31
31
 
@@ -84,7 +84,7 @@ export default class HlsPlayback extends HTML5Video {
84
84
 
85
85
  private _lastTimeUpdate: TimePosition | null = null;
86
86
 
87
- private _levels: any[] | null = null;
87
+ private _levels: QualityLevel[] | null = null;
88
88
 
89
89
  private _localStartTimeCorrelation: TimeCorrelation | null = null;
90
90
 
@@ -707,7 +707,12 @@ export default class HlsPlayback extends HTML5Video {
707
707
  private _fillLevels() {
708
708
  assert.ok(this._hls, 'Hls.js instance is not available');
709
709
  this._levels = this._hls.levels.map((level, index) => {
710
- return { id: index, level: level, label: `${level.bitrate / 1000}Kbps` };
710
+ return {
711
+ level: index, // or level.id?
712
+ width: level.width,
713
+ height: level.height,
714
+ bitrate: level.bitrate,
715
+ };
711
716
  });
712
717
  this.trigger(Events.PLAYBACK_LEVELS_AVAILABLE, this._levels);
713
718
  }
@@ -878,7 +883,6 @@ export default class HlsPlayback extends HTML5Video {
878
883
  this.trigger(Events.PLAYBACK_BITRATE, {
879
884
  height: currentLevel.height,
880
885
  width: currentLevel.width,
881
- bandwidth: currentLevel.bitrate,
882
886
  bitrate: currentLevel.bitrate,
883
887
  level: data.level
884
888
  });
package/src/types.ts CHANGED
@@ -100,13 +100,6 @@ export type TranslationSettings = Partial<
100
100
  Record<LangTag, Record<TranslationKey, string>>
101
101
  >
102
102
 
103
- export type QualityLevelInfo = {
104
- level: number
105
- width: number
106
- height: number
107
- bitrate: number
108
- }
109
-
110
103
  export enum PlayerEvent {
111
104
  Ready = 'ready',
112
105
  Play = 'play',