rx-player 4.5.0-dev.2026031700 → 4.5.0-dev.2026033100

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.
Files changed (222) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/VERSION +1 -1
  3. package/dist/commonjs/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  4. package/dist/commonjs/__GENERATED_CODE/embedded_worker.js +1 -1
  5. package/dist/commonjs/compat/browser_compatibility_types.d.ts +16 -14
  6. package/dist/commonjs/compat/browser_compatibility_types.d.ts.map +1 -1
  7. package/dist/commonjs/compat/browser_compatibility_types.js +7 -4
  8. package/dist/commonjs/compat/browser_version.d.ts +2 -1
  9. package/dist/commonjs/compat/browser_version.d.ts.map +1 -1
  10. package/dist/commonjs/compat/browser_version.js +13 -0
  11. package/dist/commonjs/compat/disable_remote_playback_on_managed_media_source.d.ts.map +1 -1
  12. package/dist/commonjs/compat/disable_remote_playback_on_managed_media_source.js +1 -1
  13. package/dist/commonjs/compat/is_codec_supported.d.ts.map +1 -1
  14. package/dist/commonjs/compat/is_codec_supported.js +4 -3
  15. package/dist/commonjs/compat/should_patch_out_dolby_vision_config_data_from_mp4.d.ts +26 -0
  16. package/dist/commonjs/compat/should_patch_out_dolby_vision_config_data_from_mp4.d.ts.map +1 -0
  17. package/dist/commonjs/compat/should_patch_out_dolby_vision_config_data_from_mp4.js +45 -0
  18. package/dist/commonjs/core/entry/utils.js +3 -3
  19. package/dist/commonjs/core/fetchers/segment/segment_fetcher.d.ts.map +1 -1
  20. package/dist/commonjs/core/fetchers/segment/segment_fetcher.js +2 -1
  21. package/dist/commonjs/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.d.ts.map +1 -1
  22. package/dist/commonjs/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +2 -1
  23. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.d.ts.map +1 -1
  24. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +8 -6
  25. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.d.ts.map +1 -1
  26. package/dist/commonjs/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +4 -3
  27. package/dist/commonjs/initialize_worker.js +1 -1
  28. package/dist/commonjs/main_thread/api/debug/modules/segment_buffer_content.js +3 -3
  29. package/dist/commonjs/main_thread/api/public_api.js +2 -2
  30. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  31. package/dist/commonjs/main_thread/init/utils/update_manifest_codec_support.js +24 -12
  32. package/dist/commonjs/manifest/classes/adaptation.d.ts.map +1 -1
  33. package/dist/commonjs/manifest/classes/adaptation.js +3 -1
  34. package/dist/commonjs/manifest/classes/representation.d.ts +6 -2
  35. package/dist/commonjs/manifest/classes/representation.d.ts.map +1 -1
  36. package/dist/commonjs/manifest/classes/representation.js +45 -23
  37. package/dist/commonjs/manifest/types.d.ts +14 -6
  38. package/dist/commonjs/manifest/types.d.ts.map +1 -1
  39. package/dist/commonjs/manifest/utils.js +4 -4
  40. package/dist/commonjs/mse/main_media_source_interface.d.ts.map +1 -1
  41. package/dist/commonjs/mse/main_media_source_interface.js +3 -2
  42. package/dist/commonjs/mse/worker_media_source_interface.d.ts.map +1 -1
  43. package/dist/commonjs/parsers/containers/isobmff/get_box.d.ts +12 -1
  44. package/dist/commonjs/parsers/containers/isobmff/get_box.d.ts.map +1 -1
  45. package/dist/commonjs/parsers/containers/isobmff/get_box.js +16 -0
  46. package/dist/commonjs/parsers/containers/isobmff/index.d.ts +2 -1
  47. package/dist/commonjs/parsers/containers/isobmff/index.d.ts.map +1 -1
  48. package/dist/commonjs/parsers/containers/isobmff/index.js +3 -1
  49. package/dist/commonjs/parsers/containers/isobmff/remove_dolby_vision_config_data.d.ts +13 -0
  50. package/dist/commonjs/parsers/containers/isobmff/remove_dolby_vision_config_data.d.ts.map +1 -0
  51. package/dist/commonjs/parsers/containers/isobmff/remove_dolby_vision_config_data.js +180 -0
  52. package/dist/commonjs/parsers/manifest/metaplaylist/metaplaylist_parser.js +4 -4
  53. package/dist/commonjs/transports/dash/segment_parser.d.ts.map +1 -1
  54. package/dist/commonjs/transports/dash/segment_parser.js +6 -0
  55. package/dist/commonjs/transports/dash/text_parser.d.ts.map +1 -1
  56. package/dist/commonjs/transports/dash/text_parser.js +5 -1
  57. package/dist/commonjs/transports/local/text_parser.d.ts.map +1 -1
  58. package/dist/commonjs/transports/local/text_parser.js +5 -1
  59. package/dist/commonjs/transports/metaplaylist/pipelines.d.ts.map +1 -1
  60. package/dist/commonjs/transports/metaplaylist/pipelines.js +2 -1
  61. package/dist/commonjs/transports/smooth/pipelines.js +3 -3
  62. package/dist/commonjs/transports/types.d.ts +28 -2
  63. package/dist/commonjs/transports/types.d.ts.map +1 -1
  64. package/dist/commonjs/transports/utils/parse_text_track.d.ts +9 -2
  65. package/dist/commonjs/transports/utils/parse_text_track.d.ts.map +1 -1
  66. package/dist/commonjs/transports/utils/parse_text_track.js +1 -1
  67. package/dist/es2017/__GENERATED_CODE/embedded_worker.d.ts.map +1 -1
  68. package/dist/es2017/__GENERATED_CODE/embedded_worker.js +1 -1
  69. package/dist/es2017/compat/browser_compatibility_types.d.ts +16 -14
  70. package/dist/es2017/compat/browser_compatibility_types.d.ts.map +1 -1
  71. package/dist/es2017/compat/browser_compatibility_types.js +7 -1
  72. package/dist/es2017/compat/browser_version.d.ts +2 -1
  73. package/dist/es2017/compat/browser_version.d.ts.map +1 -1
  74. package/dist/es2017/compat/browser_version.js +13 -1
  75. package/dist/es2017/compat/disable_remote_playback_on_managed_media_source.d.ts.map +1 -1
  76. package/dist/es2017/compat/disable_remote_playback_on_managed_media_source.js +2 -2
  77. package/dist/es2017/compat/is_codec_supported.d.ts.map +1 -1
  78. package/dist/es2017/compat/is_codec_supported.js +2 -1
  79. package/dist/es2017/compat/should_patch_out_dolby_vision_config_data_from_mp4.d.ts +26 -0
  80. package/dist/es2017/compat/should_patch_out_dolby_vision_config_data_from_mp4.d.ts.map +1 -0
  81. package/dist/es2017/compat/should_patch_out_dolby_vision_config_data_from_mp4.js +42 -0
  82. package/dist/es2017/core/entry/utils.js +4 -4
  83. package/dist/es2017/core/fetchers/segment/segment_fetcher.d.ts.map +1 -1
  84. package/dist/es2017/core/fetchers/segment/segment_fetcher.js +2 -1
  85. package/dist/es2017/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.d.ts.map +1 -1
  86. package/dist/es2017/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.js +2 -1
  87. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.d.ts.map +1 -1
  88. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.js +3 -1
  89. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.d.ts.map +1 -1
  90. package/dist/es2017/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.js +2 -1
  91. package/dist/es2017/initialize_worker.js +1 -1
  92. package/dist/es2017/main_thread/api/debug/modules/segment_buffer_content.js +3 -3
  93. package/dist/es2017/main_thread/api/public_api.js +2 -2
  94. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.d.ts.map +1 -1
  95. package/dist/es2017/main_thread/init/utils/update_manifest_codec_support.js +9 -7
  96. package/dist/es2017/manifest/classes/adaptation.d.ts.map +1 -1
  97. package/dist/es2017/manifest/classes/adaptation.js +3 -1
  98. package/dist/es2017/manifest/classes/representation.d.ts +6 -2
  99. package/dist/es2017/manifest/classes/representation.d.ts.map +1 -1
  100. package/dist/es2017/manifest/classes/representation.js +45 -23
  101. package/dist/es2017/manifest/types.d.ts +14 -6
  102. package/dist/es2017/manifest/types.d.ts.map +1 -1
  103. package/dist/es2017/manifest/utils.js +4 -4
  104. package/dist/es2017/mse/main_media_source_interface.d.ts.map +1 -1
  105. package/dist/es2017/mse/main_media_source_interface.js +2 -1
  106. package/dist/es2017/mse/worker_media_source_interface.d.ts.map +1 -1
  107. package/dist/es2017/parsers/containers/isobmff/get_box.d.ts +12 -1
  108. package/dist/es2017/parsers/containers/isobmff/get_box.d.ts.map +1 -1
  109. package/dist/es2017/parsers/containers/isobmff/get_box.js +16 -1
  110. package/dist/es2017/parsers/containers/isobmff/index.d.ts +2 -1
  111. package/dist/es2017/parsers/containers/isobmff/index.d.ts.map +1 -1
  112. package/dist/es2017/parsers/containers/isobmff/index.js +2 -1
  113. package/dist/es2017/parsers/containers/isobmff/remove_dolby_vision_config_data.d.ts +13 -0
  114. package/dist/es2017/parsers/containers/isobmff/remove_dolby_vision_config_data.d.ts.map +1 -0
  115. package/dist/es2017/parsers/containers/isobmff/remove_dolby_vision_config_data.js +155 -0
  116. package/dist/es2017/parsers/manifest/metaplaylist/metaplaylist_parser.js +4 -4
  117. package/dist/es2017/transports/dash/segment_parser.d.ts.map +1 -1
  118. package/dist/es2017/transports/dash/segment_parser.js +7 -1
  119. package/dist/es2017/transports/dash/text_parser.d.ts.map +1 -1
  120. package/dist/es2017/transports/dash/text_parser.js +5 -1
  121. package/dist/es2017/transports/local/text_parser.d.ts.map +1 -1
  122. package/dist/es2017/transports/local/text_parser.js +5 -1
  123. package/dist/es2017/transports/metaplaylist/pipelines.d.ts.map +1 -1
  124. package/dist/es2017/transports/metaplaylist/pipelines.js +2 -1
  125. package/dist/es2017/transports/smooth/pipelines.js +3 -3
  126. package/dist/es2017/transports/types.d.ts +28 -2
  127. package/dist/es2017/transports/types.d.ts.map +1 -1
  128. package/dist/es2017/transports/utils/parse_text_track.d.ts +9 -2
  129. package/dist/es2017/transports/utils/parse_text_track.d.ts.map +1 -1
  130. package/dist/es2017/transports/utils/parse_text_track.js +1 -1
  131. package/dist/worker.js +6 -6
  132. package/eslint.config.mjs +1 -14
  133. package/package.json +1 -1
  134. package/src/__GENERATED_CODE/embedded_worker.ts +1 -1
  135. package/src/compat/__tests__/browser_compatibility_types.test.ts +15 -26
  136. package/src/compat/__tests__/browser_version.test.ts +57 -18
  137. package/src/compat/__tests__/clear_element_src.test.ts +20 -40
  138. package/src/compat/__tests__/is_codec_supported.test.ts +39 -44
  139. package/src/compat/__tests__/is_vtt_cue.test.ts +5 -8
  140. package/src/compat/__tests__/make_vtt_cue.test.ts +20 -31
  141. package/src/compat/__tests__/remove_cue.test.ts +8 -20
  142. package/src/compat/__tests__/should_patch_out_dolby_vision_config_data_from_mp4.test.ts +78 -0
  143. package/src/compat/browser_compatibility_types.ts +8 -1
  144. package/src/compat/browser_version.ts +17 -1
  145. package/src/compat/disable_remote_playback_on_managed_media_source.ts +2 -2
  146. package/src/compat/is_codec_supported.ts +2 -1
  147. package/src/compat/should_patch_out_dolby_vision_config_data_from_mp4.ts +50 -0
  148. package/src/core/adaptive/__tests__/adaptive_representation_selector.test.ts +68 -28
  149. package/src/core/adaptive/__tests__/buffer_based_chooser.test.ts +26 -84
  150. package/src/core/entry/__tests__/utils.test.ts +7 -1
  151. package/src/core/entry/utils.ts +4 -4
  152. package/src/core/fetchers/segment/segment_fetcher.ts +2 -1
  153. package/src/errors/__tests__/format_error.test.ts +23 -24
  154. package/src/experimental/tools/VideoThumbnailLoader/prepare_source_buffer.ts +2 -1
  155. package/src/experimental/tools/mediaCapabilitiesProber/__tests__/probers/mediaDisplayInfos.test.ts +106 -0
  156. package/src/experimental/tools/mediaCapabilitiesProber/probers/__tests__/HDCPPolicy.test.ts +19 -42
  157. package/src/experimental/tools/mediaCapabilitiesProber/probers/__tests__/decodingInfo.test.ts +33 -40
  158. package/src/experimental/tools/mediaCapabilitiesProber/probers/__tests__/defaultCodecsFinder.test.ts +44 -68
  159. package/src/experimental/tools/mediaCapabilitiesProber/probers/__tests__/mediaContentType.test.ts +45 -80
  160. package/src/experimental/tools/mediaCapabilitiesProber/probers/defaultCodecsFinder.ts +3 -1
  161. package/src/experimental/tools/mediaCapabilitiesProber/probers/mediaContentType.ts +2 -1
  162. package/src/features/__tests__/add_features.test.ts +12 -27
  163. package/src/initialize_worker.ts +1 -1
  164. package/src/main_thread/api/__tests__/option_utils.test.ts +38 -67
  165. package/src/main_thread/api/__tests__/public_api.test.ts +56 -138
  166. package/src/main_thread/api/debug/modules/segment_buffer_content.ts +3 -3
  167. package/src/main_thread/api/public_api.ts +2 -2
  168. package/src/main_thread/decrypt/__tests__/__global__/find_key_system.test.ts +46 -28
  169. package/src/main_thread/decrypt/__tests__/__global__/get_license.test.ts +40 -10
  170. package/src/main_thread/decrypt/__tests__/__global__/init_data.test.ts +112 -129
  171. package/src/main_thread/decrypt/__tests__/__global__/media_key_system_access.test.ts +282 -377
  172. package/src/main_thread/decrypt/__tests__/__global__/media_keys.test.ts +70 -63
  173. package/src/main_thread/decrypt/__tests__/__global__/server_certificate.test.ts +73 -54
  174. package/src/main_thread/decrypt/__tests__/__global__/utils.ts +43 -83
  175. package/src/main_thread/decrypt/__tests__/find_key_system.test.ts +36 -17
  176. package/src/main_thread/decrypt/utils/__tests__/clean_old_stored_persistent_info.test.ts +44 -48
  177. package/src/main_thread/init/utils/__tests__/are_same_stream_events.test.ts +7 -22
  178. package/src/main_thread/init/utils/__tests__/refresh_scheduled_events_list.test.ts +3 -6
  179. package/src/main_thread/init/utils/__tests__/update_manifest_codec_support.test.ts +42 -19
  180. package/src/main_thread/init/utils/update_manifest_codec_support.ts +8 -6
  181. package/src/manifest/classes/__tests__/adaptation.test.ts +69 -125
  182. package/src/manifest/classes/__tests__/manifest.test.ts +88 -95
  183. package/src/manifest/classes/__tests__/period.test.ts +167 -117
  184. package/src/manifest/classes/__tests__/representation.test.ts +84 -25
  185. package/src/manifest/classes/__tests__/update_periods.test.ts +96 -225
  186. package/src/manifest/classes/adaptation.ts +4 -1
  187. package/src/manifest/classes/representation.ts +59 -27
  188. package/src/manifest/types.ts +14 -6
  189. package/src/manifest/utils.ts +4 -4
  190. package/src/mse/__tests__/main_media_source_interface.test.ts +3 -1
  191. package/src/mse/__tests__/worker_media_source_interface.test.ts +608 -0
  192. package/src/mse/main_media_source_interface.ts +2 -1
  193. package/src/mse/worker_media_source_interface.ts +2 -2
  194. package/src/parsers/containers/isobmff/__tests__/get_box.test.ts +449 -0
  195. package/src/parsers/containers/isobmff/__tests__/remove_dolby_vision_config_data.test.ts +282 -0
  196. package/src/parsers/containers/isobmff/get_box.ts +17 -0
  197. package/src/parsers/containers/isobmff/index.ts +8 -1
  198. package/src/parsers/containers/isobmff/remove_dolby_vision_config_data.ts +179 -0
  199. package/src/parsers/manifest/dash/common/__tests__/get_clock_offset.test.ts +19 -25
  200. package/src/parsers/manifest/dash/common/__tests__/get_http_utc-timing_url.test.ts +7 -19
  201. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/ContentProtection.test.ts +26 -37
  202. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/Initialization.test.ts +24 -53
  203. package/src/parsers/manifest/dash/js-parser/node_parsers/__tests__/SegmentURL.test.ts +31 -78
  204. package/src/parsers/manifest/metaplaylist/metaplaylist_parser.ts +6 -4
  205. package/src/parsers/manifest/utils/__tests__/update_segment_timeline.test.ts +79 -87
  206. package/src/parsers/texttracks/ttml/__tests__/resolve_styles_inheritance.test.ts +20 -26
  207. package/src/parsers/texttracks/ttml/html/__tests__/__global__/html_ttml_parser.test.ts +2 -7
  208. package/src/parsers/texttracks/webvtt/__tests__/parse_cue_block.test.ts +33 -30
  209. package/src/parsers/texttracks/webvtt/__tests__/parse_style_block.test.ts +33 -100
  210. package/src/parsers/texttracks/webvtt/html/__tests__/convert_payload_to_html.test.ts +16 -18
  211. package/src/parsers/texttracks/webvtt/html/__tests__/parse_webvtt_to_div.test.ts +73 -78
  212. package/src/parsers/texttracks/webvtt/html/__tests__/to_html.test.ts +36 -37
  213. package/src/transports/dash/segment_parser.ts +13 -0
  214. package/src/transports/dash/text_parser.ts +5 -1
  215. package/src/transports/local/text_parser.ts +5 -1
  216. package/src/transports/metaplaylist/pipelines.ts +2 -1
  217. package/src/transports/smooth/isobmff/__tests__/create_boxes.test.ts +150 -127
  218. package/src/transports/smooth/pipelines.ts +3 -3
  219. package/src/transports/types.ts +28 -2
  220. package/src/transports/utils/__tests__/check_isobmff_integrity.test.ts +49 -75
  221. package/src/transports/utils/parse_text_track.ts +10 -3
  222. package/src/utils/__tests__/object_assign.test.ts +2 -2
@@ -29,12 +29,12 @@ class Representation {
29
29
  * @param {string} trackType
30
30
  */
31
31
  constructor(args, trackType, cachedCodecSupport) {
32
- var _a, _b, _c, _d, _e;
32
+ var _a, _b, _c, _d;
33
33
  this.id = args.id;
34
34
  this.uniqueId = generateRepresentationUniqueId();
35
35
  this.shouldBeAvoided = false;
36
36
  this.bitrate = args.bitrate;
37
- this.codecs = [];
37
+ this.baseCodecs = [];
38
38
  this.trackType = trackType;
39
39
  if (args.isSpatialAudio !== undefined) {
40
40
  this.isSpatialAudio = args.isSpatialAudio;
@@ -61,31 +61,44 @@ class Representation {
61
61
  this.index = args.index;
62
62
  const isEncrypted = this.contentProtections !== undefined;
63
63
  if (trackType === "audio" || trackType === "video") {
64
+ /**
65
+ * - `true` -> We found a supported codec linked to this Representation
66
+ * - `false` -> We did not find yet a supported codec linked to this
67
+ * Representation
68
+ * - `undefined` -> The current prefered codec has its support not
69
+ * known yet.
70
+ */
71
+ let foundSupportedCodec = false;
64
72
  // Supplemental codecs are defined as backwards-compatible codecs enhancing
65
73
  // the experience of a base layer codec
66
74
  if (args.supplementalCodecs !== undefined) {
67
- const isSupplementaryCodecSupported = cachedCodecSupport.isSupported((_a = this.mimeType) !== null && _a !== void 0 ? _a : "", (_b = args.supplementalCodecs) !== null && _b !== void 0 ? _b : "", isEncrypted);
68
- if (isSupplementaryCodecSupported !== false) {
69
- this.codecs = [args.supplementalCodecs];
70
- this.isSupported = isSupplementaryCodecSupported;
75
+ this.baseCodecs.push(args.supplementalCodecs);
76
+ foundSupportedCodec = cachedCodecSupport.isSupported((_a = this.mimeType) !== null && _a !== void 0 ? _a : "", (_b = args.supplementalCodecs) !== null && _b !== void 0 ? _b : "", isEncrypted);
77
+ if (foundSupportedCodec === true) {
78
+ log.debug("manifest", "supplementalCodec is supported as per the cache", {
79
+ codec: args.supplementalCodecs,
80
+ });
81
+ this.chosenCodec = args.supplementalCodecs;
71
82
  }
72
83
  }
73
- if (this.isSupported !== true) {
74
- if (this.codecs.length > 0) {
75
- // We couldn't check for support of another supplemental codec.
76
- // Just push that codec without testing support yet, we'll check
77
- // support later.
78
- this.codecs.push((_c = args.codecs) !== null && _c !== void 0 ? _c : "");
79
- }
80
- else {
81
- this.codecs = args.codecs === undefined ? [] : [args.codecs];
82
- this.isSupported = cachedCodecSupport.isSupported((_d = this.mimeType) !== null && _d !== void 0 ? _d : "", (_e = args.codecs) !== null && _e !== void 0 ? _e : "", isEncrypted);
83
- }
84
+ if (args.codecs !== undefined) {
85
+ this.baseCodecs.push(args.codecs);
84
86
  }
87
+ if (foundSupportedCodec === false) {
88
+ foundSupportedCodec = cachedCodecSupport.isSupported((_c = this.mimeType) !== null && _c !== void 0 ? _c : "", (_d = args.codecs) !== null && _d !== void 0 ? _d : "", isEncrypted);
89
+ // Put the generic codec as a fallback anyway if supplemental ones
90
+ // aren't present or supported.
91
+ log.debug("manifest", "codec is supported as per the cache", {
92
+ codec: args.codecs,
93
+ });
94
+ this.chosenCodec = args.codecs;
95
+ }
96
+ this.isSupported = foundSupportedCodec;
85
97
  }
86
98
  else {
87
99
  if (args.codecs !== undefined) {
88
- this.codecs.push(args.codecs);
100
+ this.baseCodecs.push(args.codecs);
101
+ this.chosenCodec = args.codecs;
89
102
  }
90
103
  this.isSupported = true;
91
104
  }
@@ -110,7 +123,7 @@ class Representation {
110
123
  const isEncrypted = this.contentProtections !== undefined;
111
124
  let isSupported = false;
112
125
  const mimeType = (_a = this.mimeType) !== null && _a !== void 0 ? _a : "";
113
- let codecs = (_b = this.codecs) !== null && _b !== void 0 ? _b : [];
126
+ let codecs = (_b = this.baseCodecs) !== null && _b !== void 0 ? _b : [];
114
127
  if (codecs.length === 0) {
115
128
  codecs = [""];
116
129
  }
@@ -118,7 +131,8 @@ class Representation {
118
131
  for (const codec of codecs) {
119
132
  isSupported = cachedCodecSupport.isSupported(mimeType, codec, isEncrypted);
120
133
  if (isSupported === true) {
121
- this.codecs = [codec];
134
+ log.debug("manifest", "codec is found to be supported", { codec });
135
+ this.chosenCodec = codec;
122
136
  break;
123
137
  }
124
138
  if (isSupported === undefined) {
@@ -149,8 +163,15 @@ class Representation {
149
163
  * @returns {string}
150
164
  */
151
165
  getMimeTypeString() {
152
- var _a, _b, _c;
153
- return `${(_a = this.mimeType) !== null && _a !== void 0 ? _a : ""};codecs="${(_c = (_b = this.codecs) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : ""}"`;
166
+ var _a;
167
+ let codec = this.chosenCodec;
168
+ if (codec === undefined) {
169
+ log.warn("manifest", "Asked for mimetype string when codec support is yet unknown, attempting with first known linked codec");
170
+ if (this.baseCodecs !== undefined) {
171
+ codec = this.baseCodecs[0];
172
+ }
173
+ }
174
+ return `${(_a = this.mimeType) !== null && _a !== void 0 ? _a : ""};codecs="${codec !== null && codec !== void 0 ? codec : ""}"`;
154
175
  }
155
176
  /**
156
177
  * Returns encryption initialization data linked to the given DRM's system ID.
@@ -350,7 +371,8 @@ class Representation {
350
371
  id: this.id,
351
372
  uniqueId: this.uniqueId,
352
373
  bitrate: this.bitrate,
353
- codecs: this.codecs,
374
+ baseCodecs: this.baseCodecs,
375
+ chosenCodec: this.chosenCodec,
354
376
  mimeType: this.mimeType,
355
377
  width: this.width,
356
378
  height: this.height,
@@ -403,14 +403,22 @@ export interface IRepresentationMetadata {
403
403
  * In that scenario, we could have an array with two elements:
404
404
  * 1. The Dolby Vision codec
405
405
  * 2. The base HDR10 codec, hopefully with higher device compatibility.
406
+ */
407
+ baseCodecs?: string[];
408
+ /**
409
+ * `baseCodecs` can define multiple codecs linked to this `Representation`,
410
+ * e.g. Dolby Vision retro-compatible to a non-Dolby Vision HEVC-based
411
+ * codec).
412
+ *
413
+ * But on the current device, we'll generally want to announce a unique
414
+ * codec, after checking the one that is supported.
415
+ *
416
+ * This is what `chosenCodecs` is for: the actual codec to rely on.
406
417
  *
407
- * To note that we should aim to have the shorter array possible to always
408
- * expose the actually relied-on codec through the API. The idea could be
409
- * to only have several elements in this Array _BEFORE_ testing for codec
410
- * support on the current device, only to then remove all non-used codecs to
411
- * keep the one actually relied on.
418
+ * Set to `undefined` initially until we know which codec from `baseCodecs`
419
+ * is supported.
412
420
  */
413
- codecs?: string[];
421
+ chosenCodec?: string | undefined;
414
422
  /**
415
423
  * A string describing the mime-type for this Representation.
416
424
  * Examples: audio/mp4, video/webm, application/mp4, text/plain
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/manifest/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/manifest/types.ts"],"names":[],"mappings":"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"}
@@ -215,11 +215,11 @@ export function toVideoTrack(adaptation, filterPlayable) {
215
215
  * @returns {Object}
216
216
  */
217
217
  export function toAudioRepresentation(representation) {
218
- const { id, bitrate, codecs, isSpatialAudio, isSupported, decipherable } = representation;
218
+ const { id, bitrate, chosenCodec, isSpatialAudio, isSupported, decipherable } = representation;
219
219
  return {
220
220
  id,
221
221
  bitrate,
222
- codec: codecs === null || codecs === void 0 ? void 0 : codecs[0],
222
+ codec: chosenCodec,
223
223
  isSpatialAudio,
224
224
  isCodecSupported: isSupported,
225
225
  decipherable,
@@ -230,14 +230,14 @@ export function toAudioRepresentation(representation) {
230
230
  * @returns {Object}
231
231
  */
232
232
  export function toVideoRepresentation(representation) {
233
- const { id, bitrate, frameRate, width, height, codecs, hdrInfo, isSupported, decipherable, contentProtections, } = representation;
233
+ const { id, bitrate, frameRate, width, height, chosenCodec, hdrInfo, isSupported, decipherable, contentProtections, } = representation;
234
234
  return {
235
235
  id,
236
236
  bitrate,
237
237
  frameRate,
238
238
  width,
239
239
  height,
240
- codec: codecs === null || codecs === void 0 ? void 0 : codecs[0],
240
+ codec: chosenCodec,
241
241
  hdrInfo,
242
242
  isCodecSupported: isSupported,
243
243
  decipherable,
@@ -1 +1 @@
1
- {"version":3,"file":"main_media_source_interface.d.ts","sourceRoot":"","sources":["../../../src/mse/main_media_source_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAOzF,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAGlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EAEtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,wBACnB,SAAQ,YAAY,CAAC,2BAA2B,CAChD,YAAW,qBAAqB;IAEhC,iCAAiC;IAC1B,EAAE,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACI,MAAM,EAAE,kBAAkB,CAAC;IAClC,iCAAiC;IAC1B,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAClD,iCAAiC;IAC1B,UAAU,EAAE,UAAU,CAAC;IAC9B;;;;;;;;;;OAUG;IACI,SAAS,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAAe;IACnC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAA6B;IACrD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAuB;IACpD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAElC;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,YAAY;IA8DlE,iCAAiC;IAC1B,eAAe,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,GACZ,yBAAyB;IAO5B,iCAAiC;IAC1B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAItE,iCAAiC;IAC1B,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAI1D,iCAAiC;IAC1B,mBAAmB;IAW1B,iCAAiC;IAC1B,eAAe;IAQtB,iCAAiC;IAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;CAK1C;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,sBAAsB;IACtE,kCAAkC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAClC,+EAA+E;IAC/E,OAAO,CAAC,aAAa,CAAgB;IACrC;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAwB;IAC/C;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA6C;IAEvE;;;;;;OAMG;gBACS,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa;IAkBhF,kCAAkC;IAC3B,YAAY,CACjB,GAAG,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,GAC1D,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB,kCAAkC;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAY5D,kCAAkC;IAC3B,WAAW,IAAI,MAAM,EAAE;IAgB9B,kCAAkC;IAC3B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAa9C,kCAAkC;IAC3B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAShD,OAAO,CAAC,QAAQ;IAyBhB,OAAO,CAAC,YAAY;IAsBpB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,qBAAqB;IAwJ7B,OAAO,CAAC,gBAAgB;CAkFzB"}
1
+ {"version":3,"file":"main_media_source_interface.d.ts","sourceRoot":"","sources":["../../../src/mse/main_media_source_interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAOzF,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAGlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EAEtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,wBACnB,SAAQ,YAAY,CAAC,2BAA2B,CAChD,YAAW,qBAAqB;IAEhC,iCAAiC;IAC1B,EAAE,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACI,MAAM,EAAE,kBAAkB,CAAC;IAClC,iCAAiC;IAC1B,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAClD,iCAAiC;IAC1B,UAAU,EAAE,UAAU,CAAC;IAC9B;;;;;;;;;;OAUG;IACI,SAAS,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,YAAY,CAAe;IACnC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAA6B;IACrD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAuB;IACpD;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAElC;;;;;;OAMG;gBACS,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,UAAU,YAAY;IA+DlE,iCAAiC;IAC1B,eAAe,CACpB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,GACZ,yBAAyB;IAO5B,iCAAiC;IAC1B,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IAItE,iCAAiC;IAC1B,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAI1D,iCAAiC;IAC1B,mBAAmB;IAW1B,iCAAiC;IAC1B,eAAe;IAQtB,iCAAiC;IAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;CAK1C;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,sBAAsB;IACtE,kCAAkC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAClC,+EAA+E;IAC/E,OAAO,CAAC,aAAa,CAAgB;IACrC;;;OAGG;IACH,OAAO,CAAC,eAAe,CAAwB;IAC/C;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA6C;IAEvE;;;;;;OAMG;gBACS,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa;IAkBhF,kCAAkC;IAC3B,YAAY,CACjB,GAAG,IAAI,EAAE,UAAU,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC,GAC1D,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB,kCAAkC;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAY5D,kCAAkC;IAC3B,WAAW,IAAI,MAAM,EAAE;IAgB9B,kCAAkC;IAC3B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAa9C,kCAAkC;IAC3B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAShD,OAAO,CAAC,QAAQ;IAyBhB,OAAO,CAAC,YAAY;IAsBpB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,qBAAqB;IAwJ7B,OAAO,CAAC,gBAAgB;CAkFzB"}
@@ -1,4 +1,4 @@
1
- import { MediaSource_ } from "../compat/browser_compatibility_types";
1
+ import BROWSER_GLOBALS from "../compat/browser_compatibility_types";
2
2
  import tryToChangeSourceBufferType from "../compat/change_source_buffer_type";
3
3
  import { onSourceClose, onSourceEnded, onSourceOpen } from "../compat/event_listeners";
4
4
  import { MediaError, SourceBufferError } from "../errors";
@@ -29,6 +29,7 @@ export default class MainMediaSourceInterface extends EventEmitter {
29
29
  this.id = id;
30
30
  this.sourceBuffers = [];
31
31
  this._canceller = new TaskCanceller("MainMediaSourceInterface");
32
+ const { MediaSource_ } = BROWSER_GLOBALS;
32
33
  if (isNullOrUndefined(MediaSource_)) {
33
34
  throw new MediaError("MEDIA_SOURCE_NOT_SUPPORTED", "No MediaSource Object was found in the current browser.");
34
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker_media_source_interface.d.ts","sourceRoot":"","sources":["../../../src/mse/worker_media_source_interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker_media_source_interface.d.ts","sourceRoot":"","sources":["../../../src/mse/worker_media_source_interface.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,17 @@ declare function getBoxOffsets(buf: Uint8Array, boxName: number): [
85
85
  * @returns {Uint8Array|undefined}
86
86
  */
87
87
  declare function getUuidContent<T extends ArrayBufferLike>(buf: Uint8Array<T>, id1: number, id2: number, id3: number, id4: number): Uint8Array<T> | undefined;
88
+ /**
89
+ * When parsed, the "box type", which announce the name of the box, are in the
90
+ * RxPlayer encoded as unsigned 32 bit integers.
91
+ *
92
+ * When debugging or in logs, the textual fourCC format (e.g. `moov`, `mdat`,
93
+ * `pssh` etc.) is much more readable. Thus this function allows to convert
94
+ * between the two.
95
+ * @param {number} n - The box type as a "number" (32 bit unsigned integer).
96
+ * @returns {string} - its fourCC ASCII correspondance
97
+ */
98
+ declare function boxTypeToFourCC(n: number): string;
88
99
  /**
89
100
  * For the next encountered box, return byte offsets corresponding to:
90
101
  * 1. the starting byte offset for the next box (should always be equal to
@@ -103,5 +114,5 @@ declare function getNextBoxOffsets(buf: Uint8Array): [
103
114
  number,
104
115
  number
105
116
  ] | null;
106
- export { getBox, getBoxContent, getBoxesContent, getBoxOffsets, getChildBox, getNextBoxOffsets, getUuidContent, };
117
+ export { boxTypeToFourCC, getBox, getBoxContent, getBoxesContent, getBoxOffsets, getChildBox, getNextBoxOffsets, getUuidContent, };
107
118
  //# sourceMappingURL=get_box.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_box.d.ts","sourceRoot":"","sources":["../../../../../src/parsers/containers/isobmff/get_box.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;;;GAOG;AACH,iBAAS,WAAW,CAAC,CAAC,SAAS,eAAe,EAC5C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,UAAU,EAAE,MAAM,EAAE,GACnB,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAUtB;AAED;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,CAAC,SAAS,eAAe,EAC9C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,GACd,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAGtB;AAED;;;;;;;GAOG;AACH,iBAAS,eAAe,CAAC,CAAC,SAAS,eAAe,EAChD,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,GACd,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAetB;AAED;;;;;;;GAOG;AACH,iBAAS,MAAM,CAAC,CAAC,SAAS,eAAe,EACvC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,GACd,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAGtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,aAAa,CACpB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,GAEb;IACE,MAAM;IACN,MAAM;IACN,MAAM;CACP,GACD,IAAI,CAsCP;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,cAAc,CAAC,CAAC,SAAS,eAAe,EAC/C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAkC3B;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,iBAAiB,CACxB,GAAG,EAAE,UAAU,GAEb;IACE,CAAC;IACD,MAAM;IACN,MAAM;CACP,GACD,IAAI,CA+BP;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,GACf,CAAC"}
1
+ {"version":3,"file":"get_box.d.ts","sourceRoot":"","sources":["../../../../../src/parsers/containers/isobmff/get_box.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;;;;;;GAOG;AACH,iBAAS,WAAW,CAAC,CAAC,SAAS,eAAe,EAC5C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,UAAU,EAAE,MAAM,EAAE,GACnB,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAUtB;AAED;;;;;;;GAOG;AACH,iBAAS,aAAa,CAAC,CAAC,SAAS,eAAe,EAC9C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,GACd,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAGtB;AAED;;;;;;;GAOG;AACH,iBAAS,eAAe,CAAC,CAAC,SAAS,eAAe,EAChD,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,GACd,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAetB;AAED;;;;;;;GAOG;AACH,iBAAS,MAAM,CAAC,CAAC,SAAS,eAAe,EACvC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,GACd,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAGtB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,aAAa,CACpB,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,MAAM,GAEb;IACE,MAAM;IACN,MAAM;IACN,MAAM;CACP,GACD,IAAI,CAsCP;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,cAAc,CAAC,CAAC,SAAS,eAAe,EAC/C,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAkC3B;AAED;;;;;;;;;GASG;AACH,iBAAS,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,iBAAiB,CACxB,GAAG,EAAE,UAAU,GAEb;IACE,CAAC;IACD,MAAM;IACN,MAAM;CACP,GACD,IAAI,CA+BP;AAED,OAAO,EACL,eAAe,EACf,MAAM,EACN,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,cAAc,GACf,CAAC"}
@@ -178,6 +178,21 @@ function getUuidContent(buf, id1, id2, id3, id4) {
178
178
  }
179
179
  }
180
180
  }
181
+ /**
182
+ * When parsed, the "box type", which announce the name of the box, are in the
183
+ * RxPlayer encoded as unsigned 32 bit integers.
184
+ *
185
+ * When debugging or in logs, the textual fourCC format (e.g. `moov`, `mdat`,
186
+ * `pssh` etc.) is much more readable. Thus this function allows to convert
187
+ * between the two.
188
+ * @param {number} n - The box type as a "number" (32 bit unsigned integer).
189
+ * @returns {string} - its fourCC ASCII correspondance
190
+ */
191
+ function boxTypeToFourCC(n) {
192
+ return [(n >>> 24) & 0xff, (n >>> 16) & 0xff, (n >>> 8) & 0xff, n & 0xff]
193
+ .map((b) => String.fromCharCode(b))
194
+ .join("");
195
+ }
181
196
  /**
182
197
  * For the next encountered box, return byte offsets corresponding to:
183
198
  * 1. the starting byte offset for the next box (should always be equal to
@@ -221,4 +236,4 @@ function getNextBoxOffsets(buf) {
221
236
  }
222
237
  return [0, lastOffset, boxSize];
223
238
  }
224
- export { getBox, getBoxContent, getBoxesContent, getBoxOffsets, getChildBox, getNextBoxOffsets, getUuidContent, };
239
+ export { boxTypeToFourCC, getBox, getBoxContent, getBoxesContent, getBoxOffsets, getChildBox, getNextBoxOffsets, getUuidContent, };
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import extractCompleteChunks, { extractInitSegment } from "./extract_complete_chunks";
17
17
  import findCompleteBox from "./find_complete_box";
18
+ import removeDolbyVisionConfigData from "./remove_dolby_vision_config_data";
18
19
  import takePSSHOut, { getPsshSystemID } from "./take_pssh_out";
19
20
  export { extractInitSegment };
20
21
  export { createBox, createBoxWithChildren } from "./create_box";
@@ -22,5 +23,5 @@ export { getBox, getBoxContent, getNextBoxOffsets, getBoxOffsets, getUuidContent
22
23
  export { getMDAT, getMDIA, getTRAF } from "./read";
23
24
  export type { IEMSG, ISidxSegment } from "./utils";
24
25
  export { getMDHDTimescale, getPlayReadyKIDFromPrivateData, getTrackFragmentDecodeTime, getDurationFromTrun, getSegmentsFromSidx, patchPssh, updateBoxLength, } from "./utils";
25
- export { extractCompleteChunks, findCompleteBox, getPsshSystemID, takePSSHOut };
26
+ export { extractCompleteChunks, findCompleteBox, getPsshSystemID, removeDolbyVisionConfigData, takePSSHOut, };
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/parsers/containers/isobmff/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,qBAAqB,EAAE,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,WAAW,EAAE,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACnD,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/parsers/containers/isobmff/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,qBAAqB,EAAE,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,2BAA2B,MAAM,mCAAmC,CAAC;AAC5E,OAAO,WAAW,EAAE,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACnD,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,SAAS,EACT,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,WAAW,GACZ,CAAC"}
@@ -15,10 +15,11 @@
15
15
  */
16
16
  import extractCompleteChunks, { extractInitSegment } from "./extract_complete_chunks";
17
17
  import findCompleteBox from "./find_complete_box";
18
+ import removeDolbyVisionConfigData from "./remove_dolby_vision_config_data";
18
19
  import takePSSHOut, { getPsshSystemID } from "./take_pssh_out";
19
20
  export { extractInitSegment };
20
21
  export { createBox, createBoxWithChildren } from "./create_box";
21
22
  export { getBox, getBoxContent, getNextBoxOffsets, getBoxOffsets, getUuidContent, } from "./get_box";
22
23
  export { getMDAT, getMDIA, getTRAF } from "./read";
23
24
  export { getMDHDTimescale, getPlayReadyKIDFromPrivateData, getTrackFragmentDecodeTime, getDurationFromTrun, getSegmentsFromSidx, patchPssh, updateBoxLength, } from "./utils";
24
- export { extractCompleteChunks, findCompleteBox, getPsshSystemID, takePSSHOut };
25
+ export { extractCompleteChunks, findCompleteBox, getPsshSystemID, removeDolbyVisionConfigData, takePSSHOut, };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Replace every dvcC/dvvC/dvwC box in an ISOBMFF segment with FREE boxes.
3
+ * Useful to strip Dolby Vision configuration when the decoder cannot handle it.
4
+ *
5
+ * Unlike PSSH (which sits directly under `moov`), DV config boxes are nested
6
+ * deep inside each track: moov > trak > mdia > minf > stbl > stsd > <codec> > dvcC|dvvC|dvwC
7
+ * There may be multiple `trak` boxes, so we walk all of them.
8
+ *
9
+ * @param {Uint8Array} data - the ISOBMFF segment
10
+ * @returns {void}
11
+ */
12
+ export default function removeDolbyVisionConfigData(data: Uint8Array<ArrayBuffer>): void;
13
+ //# sourceMappingURL=remove_dolby_vision_config_data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove_dolby_vision_config_data.d.ts","sourceRoot":"","sources":["../../../../../src/parsers/containers/isobmff/remove_dolby_vision_config_data.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CA6BvF"}
@@ -0,0 +1,155 @@
1
+ import log from "../../../log";
2
+ import { be4toi } from "../../../utils/byte_parsing";
3
+ import { boxTypeToFourCC, getBoxContent, getBoxOffsets } from "./get_box";
4
+ /**
5
+ * Replace every dvcC/dvvC/dvwC box in an ISOBMFF segment with FREE boxes.
6
+ * Useful to strip Dolby Vision configuration when the decoder cannot handle it.
7
+ *
8
+ * Unlike PSSH (which sits directly under `moov`), DV config boxes are nested
9
+ * deep inside each track: moov > trak > mdia > minf > stbl > stsd > <codec> > dvcC|dvvC|dvwC
10
+ * There may be multiple `trak` boxes, so we walk all of them.
11
+ *
12
+ * @param {Uint8Array} data - the ISOBMFF segment
13
+ * @returns {void}
14
+ */
15
+ export default function removeDolbyVisionConfigData(data) {
16
+ const moov = getBoxContent(data, 0x6d6f6f76 /* moov */);
17
+ if (moov === null) {
18
+ return;
19
+ }
20
+ // Walk every trak box inside moov
21
+ let trakStart = 0;
22
+ while (trakStart < moov.length) {
23
+ let trakOffsets;
24
+ try {
25
+ trakOffsets = getBoxOffsets(moov.subarray(trakStart), 0x7472616b /* trak */);
26
+ }
27
+ catch (e) {
28
+ const err = e instanceof Error ? e : "";
29
+ log.warn("isobmff", "Error while iterating trak boxes in ISOBMFF", err);
30
+ return;
31
+ }
32
+ if (trakOffsets === null) {
33
+ break;
34
+ }
35
+ const trak = getBoxContent(moov.subarray(trakStart), 0x7472616b /* trak */);
36
+ if (trak !== null) {
37
+ removeDvcCFromTrak(trak);
38
+ }
39
+ // Advance past this trak box to find the next one
40
+ trakStart += trakOffsets[2];
41
+ }
42
+ }
43
+ /**
44
+ * Walk the stsd box inside a trak and replace any dvcC/dvvC/dvwC boxes
45
+ * with free boxes.
46
+ * @param {Uint8Array} trak - content of a trak box
47
+ */
48
+ function removeDvcCFromTrak(trak) {
49
+ const DV_BOX_TYPES = [
50
+ 0x64766343 /* dvcC */, 0x64767643 /* dvvC */, 0x64767743 /* dvwC */,
51
+ ];
52
+ // Descend: trak > mdia > minf > stbl > stsd
53
+ const mdia = getBoxContent(trak, 0x6d646961 /* mdia */);
54
+ if (mdia === null) {
55
+ return;
56
+ }
57
+ const minf = getBoxContent(mdia, 0x6d696e66 /* minf */);
58
+ if (minf === null) {
59
+ return;
60
+ }
61
+ const stbl = getBoxContent(minf, 0x7374626c /* stbl */);
62
+ if (stbl === null) {
63
+ return;
64
+ }
65
+ const stsd = getBoxContent(stbl, 0x73747364 /* stsd */);
66
+ if (stsd === null) {
67
+ return;
68
+ }
69
+ const stsdChildren = stsd.subarray(8);
70
+ // Each codec box (avc1, hvc1, av01 …) may contain a dvcC/dvvC/dvwC child.
71
+ let codecStart = 0;
72
+ while (codecStart < stsdChildren.length) {
73
+ if (codecStart + 8 > stsdChildren.length) {
74
+ break;
75
+ }
76
+ const codecBoxSize = be4toi(stsdChildren, codecStart);
77
+ const codecBoxType = be4toi(stsdChildren, codecStart + 4);
78
+ if (codecBoxSize < 8 || codecStart + codecBoxSize > stsdChildren.length) {
79
+ break;
80
+ }
81
+ // The codec box is a VisualSampleEntry (or a wrapper like encv/enca).
82
+ // Its layout is: size(4)+type(4)+reserved(6)+data_ref_idx(2) = 16 bytes,
83
+ // then codec-specific fixed fields before child boxes begin.
84
+ // We scan forward from offset 16 (past the mandatory SampleEntry header)
85
+ // looking for the first plausible box boundary, then walk child boxes from
86
+ // there.
87
+ const codecBox = stsdChildren.subarray(codecStart, codecStart + codecBoxSize);
88
+ // Find where children start: scan from offset 16 for a size+fourcc that
89
+ // fits entirely within the box.
90
+ const childrenStart = findNextChildrenStartOffset(codecBox);
91
+ if (childrenStart === null) {
92
+ codecStart += codecBoxSize;
93
+ continue;
94
+ }
95
+ const codecChildren = codecBox.subarray(childrenStart);
96
+ // Now search for and erase DV boxes
97
+ for (const dvBoxType of DV_BOX_TYPES) {
98
+ let dvStart = 0;
99
+ while (dvStart < codecChildren.length) {
100
+ let dvOffsets;
101
+ try {
102
+ dvOffsets = getBoxOffsets(codecChildren.subarray(dvStart), dvBoxType);
103
+ }
104
+ catch (e) {
105
+ const err = e instanceof Error ? e : "";
106
+ log.warn("isobmff", "Error while patching out dvcC/dvvC/dvwC from ISOBMFF", err);
107
+ break;
108
+ }
109
+ if (dvOffsets === null) {
110
+ break;
111
+ }
112
+ if (log.hasLevel("DEBUG")) {
113
+ log.debug("isobmff", `Found '${boxTypeToFourCC(dvBoxType)}' inside '${boxTypeToFourCC(codecBoxType)}', overwriting with 'free'`);
114
+ }
115
+ // Overwrite the 4-byte box type with `free` (0x66726565)
116
+ const typeByteOffset = dvStart + dvOffsets[0] + 4;
117
+ codecChildren[typeByteOffset] = 0x66; /* f */
118
+ codecChildren[typeByteOffset + 1] = 0x72; /* r */
119
+ codecChildren[typeByteOffset + 2] = 0x65; /* e */
120
+ codecChildren[typeByteOffset + 3] = 0x65; /* e */
121
+ // Advance past this box (size of box relative to the current slice)
122
+ dvStart += dvOffsets[2] - dvOffsets[0];
123
+ }
124
+ }
125
+ codecStart += codecBoxSize;
126
+ }
127
+ }
128
+ /**
129
+ * Scan a codec box (VisualSampleEntry or wrapper) to find the byte offset
130
+ * where child boxes begin. We skip the mandatory SampleEntry header (16 bytes)
131
+ * and then look for the first offset whose size+type looks like a valid box
132
+ * that fits within the parent.
133
+ */
134
+ function findNextChildrenStartOffset(box) {
135
+ // SampleEntry header: size(4)+type(4)+reserved(6)+data_ref_idx(2) = 16 bytes minimum.
136
+ // Children can only start after that.
137
+ for (let off = 16; off + 8 <= box.length; off++) {
138
+ const size = be4toi(box, off);
139
+ if (size < 8 || off + size > box.length) {
140
+ continue;
141
+ }
142
+ // Check that the four-byte type is all printable ASCII as a sanity check.
143
+ let allPrint = true;
144
+ for (let i = off + 4; i < off + 8; i++) {
145
+ if (box[i] < 0x20 || box[i] > 0x7e) {
146
+ allPrint = false;
147
+ break;
148
+ }
149
+ }
150
+ if (allPrint) {
151
+ return off;
152
+ }
153
+ }
154
+ return null;
155
+ }
@@ -135,14 +135,14 @@ function createManifest(mplData, manifests, parserOptions) {
135
135
  };
136
136
  const newIndex = new MetaRepresentationIndex(currentRepresentation.index, [contentOffset, contentEnd], content.transport, baseContentMetadata);
137
137
  let supplementalCodecs;
138
- if (currentRepresentation.codecs.length > 1) {
139
- if (currentRepresentation.codecs.length > 2) {
138
+ if (currentRepresentation.baseCodecs.length > 1) {
139
+ if (currentRepresentation.baseCodecs.length > 2) {
140
140
  log.warn("metaplaylist", "MetaPlaylist relying on more than 2 groups of " +
141
141
  "codecs with retro-compatibility");
142
142
  }
143
- supplementalCodecs = currentRepresentation.codecs[0];
143
+ supplementalCodecs = currentRepresentation.baseCodecs[0];
144
144
  }
145
- const codecs = currentRepresentation.codecs[currentRepresentation.codecs.length - 1];
145
+ const codecs = currentRepresentation.baseCodecs[currentRepresentation.baseCodecs.length - 1];
146
146
  representations.push({
147
147
  bitrate: currentRepresentation.bitrate,
148
148
  index: newIndex,
@@ -1 +1 @@
1
- {"version":3,"file":"segment_parser.d.ts","sourceRoot":"","sources":["../../../../src/transports/dash/segment_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH,OAAO,KAAK,EAGV,cAAc,EAGf,MAAM,UAAU,CAAC;AAKlB;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,+BAA+B,CAAC,EACtD,6BAA6B,GAC9B,EAAE;IACD,6BAA6B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD,GAAG,cAAc,CAChB,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,EAC5C,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAC7C,CA6JA"}
1
+ {"version":3,"file":"segment_parser.d.ts","sourceRoot":"","sources":["../../../../src/transports/dash/segment_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiBH,OAAO,KAAK,EAGV,cAAc,EAGf,MAAM,UAAU,CAAC;AAKlB;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,+BAA+B,CAAC,EACtD,6BAA6B,GAC9B,EAAE;IACD,6BAA6B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD,GAAG,cAAc,CAChB,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,EAC5C,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAC7C,CAuKA"}
@@ -13,7 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { getMDHDTimescale, getSegmentsFromSidx, takePSSHOut, } from "../../parsers/containers/isobmff";
16
+ import shouldPatchOutDolbyVisionConfigDataFromMp4 from "../../compat/should_patch_out_dolby_vision_config_data_from_mp4";
17
+ import logger from "../../log";
18
+ import { getMDHDTimescale, getSegmentsFromSidx, takePSSHOut, removeDolbyVisionConfigData, } from "../../parsers/containers/isobmff";
17
19
  import { getKeyIdFromInitSegment, parseEmsgBoxes, } from "../../parsers/containers/isobmff/utils";
18
20
  import { getSegmentsFromCues, getTimeCodeScale } from "../../parsers/containers/matroska";
19
21
  import { toUint8Array } from "../../utils/byte_parsing";
@@ -119,6 +121,10 @@ export default function generateAudioVideoSegmentParser({ __priv_patchLastSegmen
119
121
  segmentList = getSegmentsFromCues(chunkData, 0);
120
122
  }
121
123
  else if (seemsToBeMP4) {
124
+ if (shouldPatchOutDolbyVisionConfigDataFromMp4(context.baseCodecs, context.chosenCodec)) {
125
+ logger.debug("dash", "patching out Dolby Vision metadata from segment");
126
+ removeDolbyVisionConfigData(chunkData);
127
+ }
122
128
  segmentList = getSegmentsFromSidx(chunkData, Array.isArray(indexRange) ? indexRange[0] : 0);
123
129
  // This is a very specific handling for streams we know have a very
124
130
  // specific problem at Canal+: The last reference gives a truncated
@@ -1 +1 @@
1
- {"version":3,"file":"text_parser.d.ts","sourceRoot":"","sources":["../../../../src/transports/dash/text_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAEV,cAAc,EAGd,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAgKlB;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,6BAA6B,GAC9B,EAAE;IACD,6BAA6B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD,GAAG,cAAc,CAChB,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,IAAI,EACrD,qBAAqB,GAAG,IAAI,CAC7B,CA4DA"}
1
+ {"version":3,"file":"text_parser.d.ts","sourceRoot":"","sources":["../../../../src/transports/dash/text_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAEV,cAAc,EAGd,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAoKlB;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,6BAA6B,GAC9B,EAAE;IACD,6BAA6B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD,GAAG,cAAc,CAChB,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,IAAI,EACrD,qBAAqB,GAAG,IAAI,CAC7B,CA4DA"}
@@ -79,7 +79,11 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, context, initTimescale,
79
79
  };
80
80
  }
81
81
  const chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
82
- const chunkData = getISOBMFFEmbeddedTextTrackData(context, chunkBytes, initTimescale, chunkInfos, isChunked);
82
+ const chunkData = getISOBMFFEmbeddedTextTrackData({
83
+ segment: context.segment,
84
+ codecs: context.chosenCodec,
85
+ language: context.language,
86
+ }, chunkBytes, initTimescale, chunkInfos, isChunked);
83
87
  const chunkOffset = (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0;
84
88
  return {
85
89
  segmentType: "media",
@@ -1 +1 @@
1
- {"version":3,"file":"text_parser.d.ts","sourceRoot":"","sources":["../../../../src/transports/local/text_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EACV,wBAAwB,EACxB,eAAe,EACf,6BAA6B,EAC7B,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAiIlB;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,aAAa,EAAE;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EACrE,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,GAAG,SAAS,GAE/B,6BAA6B,CAAC,IAAI,CAAC,GACnC,8BAA8B,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAsC/D"}
1
+ {"version":3,"file":"text_parser.d.ts","sourceRoot":"","sources":["../../../../src/transports/local/text_parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EACV,wBAAwB,EACxB,eAAe,EACf,6BAA6B,EAC7B,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAqIlB;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,aAAa,EAAE;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EACrE,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,GAAG,SAAS,GAE/B,6BAA6B,CAAC,IAAI,CAAC,GACnC,8BAA8B,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAsC/D"}
@@ -57,7 +57,11 @@ function parseISOBMFFEmbeddedTextTrack(data, isChunked, context, initTimescale)
57
57
  };
58
58
  }
59
59
  const chunkInfos = getISOBMFFTimingInfos(chunkBytes, isChunked, segment, initTimescale);
60
- const chunkData = getISOBMFFEmbeddedTextTrackData(context, chunkBytes, initTimescale, chunkInfos, isChunked);
60
+ const chunkData = getISOBMFFEmbeddedTextTrackData({
61
+ segment: context.segment,
62
+ codecs: context.chosenCodec,
63
+ language: context.language,
64
+ }, chunkBytes, initTimescale, chunkInfos, isChunked);
61
65
  const chunkOffset = (_a = segment.timestampOffset) !== null && _a !== void 0 ? _a : 0;
62
66
  return {
63
67
  segmentType: "media",
@@ -1 +1 @@
1
- {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/metaplaylist/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,KAAK,EAiBV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAkElB,MAAM,CAAC,OAAO,WAAW,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAySxE"}
1
+ {"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../../../src/transports/metaplaylist/pipelines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,KAAK,EAiBV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAmElB,MAAM,CAAC,OAAO,WAAW,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAySxE"}