dasha 3.1.4 → 3.1.5

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/lib/dash.js CHANGED
@@ -259,15 +259,33 @@ const parseSegmentsFromTemplate = (
259
259
  };
260
260
 
261
261
  const parseSegmentsFromList = (segmentList, baseUrl) => {
262
- const segmentUrls = segmentList.get('SegmentURL');
262
+ const segmentUrls = segmentList.getAll('SegmentURL');
263
263
  const segments = [];
264
264
  for (const segmentUrl of segmentUrls) {
265
265
  let mediaUrl = segmentUrl.get('media');
266
- if (!mediaUrl) mediaUrl = baseUrl;
267
- else if (!mediaUrl.startsWith('https://'))
266
+ if (!mediaUrl) {
267
+ mediaUrl = baseUrl;
268
+ } else if (!mediaUrl.startsWith('https://')) {
268
269
  mediaUrl = new URL(mediaUrl, baseUrl).toString();
270
+ }
269
271
  segments.push({ url: mediaUrl, range: segmentUrl.get('mediaRange') });
270
272
  }
273
+ const initialization = segmentList.get('Initialization');
274
+ if (initialization) {
275
+ let mediaUrl = initialization.get('sourceURL');
276
+ if (!mediaUrl) {
277
+ mediaUrl = baseUrl;
278
+ } else if (!mediaUrl.startsWith('https://')) {
279
+ mediaUrl = new URL(mediaUrl, baseUrl).toString();
280
+ }
281
+ if (mediaUrl) {
282
+ segments.unshift({
283
+ url: mediaUrl,
284
+ range: initialization.get('range'),
285
+ init: true,
286
+ });
287
+ }
288
+ }
271
289
  return segments;
272
290
  };
273
291
 
@@ -314,8 +332,12 @@ const parseContentProtection = (contentProtections) => {
314
332
  for (const contentProtection of contentProtections) {
315
333
  const id = contentProtection.get('schemeIdUri')?.toLowerCase();
316
334
  const value = contentProtection.get('value');
317
- const pssh = contentProtection.get('cenc:pssh')?.get();
318
- const defaultKeyId = contentProtection.get('cenc:default_KID');
335
+ const pssh =
336
+ contentProtection.get('cenc:pssh')?.get() ||
337
+ contentProtection.get('pssh')?.get();
338
+ const defaultKeyId =
339
+ contentProtection.get('cenc:default_KID') ||
340
+ contentProtection.get('kid')?.get();
319
341
  const data = { id, value, pssh, defaultKeyId };
320
342
  protection[protectionSchemas[id]] = data;
321
343
  }
package/lib/track.js CHANGED
@@ -66,11 +66,11 @@ const createAudioLanguageFilter = (audios) => {
66
66
  }
67
67
  const results = [];
68
68
  const filteredLanguages = [
69
- ...new Set(filtered.map((track) => track.language)),
69
+ ...new Set(filtered.map((track) => `${track.language}:${track.label}`)),
70
70
  ];
71
71
  for (const language of filteredLanguages) {
72
72
  const tracks = filtered
73
- .filter((track) => track.language === language)
73
+ .filter((track) => `${track.language}:${track.label}` === language)
74
74
  .slice(0, maxTracksPerLanguage);
75
75
  results.push(...tracks);
76
76
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dasha",
3
- "version": "3.1.4",
3
+ "version": "3.1.5",
4
4
  "description": "Streaming manifest parser",
5
5
  "files": [
6
6
  "dasha.js",