@carbonenginejs/runtime-resource 0.9.2 → 0.10.0

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 (324) hide show
  1. package/NOTICE +3 -2
  2. package/README.md +47 -6
  3. package/dist/CjsMotherLode.js +88 -88
  4. package/dist/CjsMotherLode.js.map +1 -1
  5. package/dist/CjsResMan.js +717 -228
  6. package/dist/CjsResMan.js.map +1 -1
  7. package/dist/CjsResManFetchProvider.js +94 -0
  8. package/dist/CjsResManFetchProvider.js.map +1 -0
  9. package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
  10. package/dist/CjsResManWorkQueue.js.map +1 -0
  11. package/dist/format/CjsBlueReader.js +89 -0
  12. package/dist/format/CjsBlueReader.js.map +1 -1
  13. package/dist/format/CjsFormat.js +42 -16
  14. package/dist/format/CjsFormat.js.map +1 -1
  15. package/dist/format/CjsReader.js +4 -0
  16. package/dist/format/CjsReader.js.map +1 -1
  17. package/dist/format/CjsResourceProbe.js +2 -0
  18. package/dist/format/CjsResourceProbe.js.map +1 -1
  19. package/dist/format/payloadContract.js +20 -0
  20. package/dist/format/payloadContract.js.map +1 -1
  21. package/dist/formats/black/CjsBlackFormat.js +15 -1
  22. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  23. package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
  24. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  25. package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
  26. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  27. package/dist/formats/black/core/CjsBlackReader.js +125 -0
  28. package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
  29. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
  30. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  31. package/dist/formats/black/core/helpers.js +17 -0
  32. package/dist/formats/black/core/helpers.js.map +1 -1
  33. package/dist/formats/bnk/CjsBnkFormat.js +8 -0
  34. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  35. package/dist/formats/bnk/core/helpers.js +20 -0
  36. package/dist/formats/bnk/core/helpers.js.map +1 -1
  37. package/dist/formats/bnk/core/musicNodes.js +40 -3
  38. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  39. package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
  40. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
  41. package/dist/formats/cmf/core/binary.js +71 -0
  42. package/dist/formats/cmf/core/binary.js.map +1 -1
  43. package/dist/formats/cmf/core/buffers.js +4 -0
  44. package/dist/formats/cmf/core/buffers.js.map +1 -1
  45. package/dist/formats/cmf/core/helpers.js +31 -0
  46. package/dist/formats/cmf/core/helpers.js.map +1 -1
  47. package/dist/formats/cmf/core/schema.js +10 -0
  48. package/dist/formats/cmf/core/schema.js.map +1 -1
  49. package/dist/formats/cmf/core/shared.js +9 -0
  50. package/dist/formats/cmf/core/shared.js.map +1 -1
  51. package/dist/formats/cmf/core/writer.js +54 -0
  52. package/dist/formats/cmf/core/writer.js.map +1 -1
  53. package/dist/formats/dds/core/bc6h.js +10 -0
  54. package/dist/formats/dds/core/bc6h.js.map +1 -1
  55. package/dist/formats/dds/core/bc7.js +16 -0
  56. package/dist/formats/dds/core/bc7.js.map +1 -1
  57. package/dist/formats/dds/core/helpers.js +47 -0
  58. package/dist/formats/dds/core/helpers.js.map +1 -1
  59. package/dist/formats/fbx/core/helpers.js +21 -0
  60. package/dist/formats/fbx/core/helpers.js.map +1 -1
  61. package/dist/formats/flac/CjsFlacFormat.js +49 -0
  62. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  63. package/dist/formats/flac/core/helpers.js +20 -0
  64. package/dist/formats/flac/core/helpers.js.map +1 -1
  65. package/dist/formats/gif/CjsGifFormat.js +49 -0
  66. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  67. package/dist/formats/gif/core/helpers.js +20 -0
  68. package/dist/formats/gif/core/helpers.js.map +1 -1
  69. package/dist/formats/gltf/core/helpers.js +15 -0
  70. package/dist/formats/gltf/core/helpers.js.map +1 -1
  71. package/dist/formats/gltf/core/parser.js +13 -0
  72. package/dist/formats/gltf/core/parser.js.map +1 -1
  73. package/dist/formats/gltf/core/targets.js +10 -0
  74. package/dist/formats/gltf/core/targets.js.map +1 -1
  75. package/dist/formats/gr2/core/bitknit2.js +2 -0
  76. package/dist/formats/gr2/core/bitknit2.js.map +1 -1
  77. package/dist/formats/gr2/core/helpers.js +20 -0
  78. package/dist/formats/gr2/core/helpers.js.map +1 -1
  79. package/dist/formats/gr2/core/targets.js +10 -0
  80. package/dist/formats/gr2/core/targets.js.map +1 -1
  81. package/dist/formats/jpeg/core/helpers.js +52 -0
  82. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  83. package/dist/formats/jpeg/core/jpeg.js +93 -0
  84. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  85. package/dist/formats/mp3/core/helpers.js +37 -0
  86. package/dist/formats/mp3/core/helpers.js.map +1 -1
  87. package/dist/formats/mp4/core/helpers.js +35 -0
  88. package/dist/formats/mp4/core/helpers.js.map +1 -1
  89. package/dist/formats/ogg/CjsOggFormat.js +49 -0
  90. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  91. package/dist/formats/ogg/core/helpers.js +23 -0
  92. package/dist/formats/ogg/core/helpers.js.map +1 -1
  93. package/dist/formats/ogg/core/vorbis.js +13 -0
  94. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  95. package/dist/formats/png/core/helpers.js +52 -0
  96. package/dist/formats/png/core/helpers.js.map +1 -1
  97. package/dist/formats/red/CjsRedFormat.js +2 -0
  98. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  99. package/dist/formats/red/core/CjsRedReader.js +52 -0
  100. package/dist/formats/red/core/CjsRedReader.js.map +1 -1
  101. package/dist/formats/red/core/helpers.js +19 -0
  102. package/dist/formats/red/core/helpers.js.map +1 -1
  103. package/dist/formats/stl/core/stl.js +8 -0
  104. package/dist/formats/stl/core/stl.js.map +1 -1
  105. package/dist/formats/stl/core/targets.js +10 -0
  106. package/dist/formats/stl/core/targets.js.map +1 -1
  107. package/dist/formats/tga/core/helpers.js +47 -0
  108. package/dist/formats/tga/core/helpers.js.map +1 -1
  109. package/dist/formats/wav/core/helpers.js +37 -0
  110. package/dist/formats/wav/core/helpers.js.map +1 -1
  111. package/dist/formats/webm/core/helpers.js +35 -0
  112. package/dist/formats/webm/core/helpers.js.map +1 -1
  113. package/dist/formats/webp/CjsWebpFormat.js +49 -0
  114. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  115. package/dist/formats/webp/core/helpers.js +23 -0
  116. package/dist/formats/webp/core/helpers.js.map +1 -1
  117. package/dist/formats/wem/CjsWemFormat.js +8 -0
  118. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  119. package/dist/formats/wem/core/bitStream.js +2 -0
  120. package/dist/formats/wem/core/bitStream.js.map +1 -1
  121. package/dist/formats/wem/core/helpers.js +20 -0
  122. package/dist/formats/wem/core/helpers.js.map +1 -1
  123. package/dist/formats/yaml/CjsYamlFormat.js +45 -0
  124. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  125. package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
  126. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  127. package/dist/formats/yaml/core/helpers.js +10 -0
  128. package/dist/formats/yaml/core/helpers.js.map +1 -1
  129. package/dist/index.js +56 -43
  130. package/dist/index.js.map +1 -1
  131. package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
  132. package/dist/resource/CjsResource.js.map +1 -0
  133. package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
  134. package/dist/resource/Tr2LightProfileRes.js.map +1 -0
  135. package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
  136. package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
  137. package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
  138. package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
  139. package/dist/resource/audio/CjsAudioRes.js +213 -0
  140. package/dist/resource/audio/CjsAudioRes.js.map +1 -0
  141. package/dist/resource/audio/index.js +4 -0
  142. package/dist/resource/audio/index.js.map +1 -0
  143. package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
  144. package/dist/resource/geometry/MeshDecalData.js.map +1 -0
  145. package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
  146. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
  147. package/dist/resource/geometry/TriGeometryRes.js +656 -0
  148. package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
  149. package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
  150. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
  151. package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
  152. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
  153. package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
  154. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
  155. package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
  156. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
  157. package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
  158. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
  159. package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
  160. package/dist/resource/geometry/TriJointBinding.js.map +1 -0
  161. package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
  162. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
  163. package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
  164. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
  165. package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
  166. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
  167. package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
  168. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
  169. package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
  170. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
  171. package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
  172. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
  173. package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
  174. package/dist/resource/geometry/granny/enums.js.map +1 -0
  175. package/dist/resource/geometry/granny/index.js +6 -0
  176. package/dist/resource/geometry/granny/index.js.map +1 -0
  177. package/dist/resource/geometry/index.js +17 -0
  178. package/dist/resource/geometry/index.js.map +1 -0
  179. package/dist/resource/index.js +52 -0
  180. package/dist/resource/index.js.map +1 -0
  181. package/dist/resource/resourceBoundary.js +64 -0
  182. package/dist/resource/resourceBoundary.js.map +1 -0
  183. package/dist/resource/shader/Tr2EffectRes.js +420 -0
  184. package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
  185. package/dist/{resources → resource/shader}/Tr2MaterialArea.js +9 -4
  186. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
  187. package/dist/{resources → resource/shader}/Tr2MaterialMesh.js +8 -3
  188. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
  189. package/dist/{resources → resource/shader}/Tr2MaterialRes.js +10 -4
  190. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
  191. package/dist/resource/shader/Tr2Shader.js +250 -0
  192. package/dist/resource/shader/Tr2Shader.js.map +1 -0
  193. package/dist/{resources → resource/shader}/Tr2ShaderPermutation.js +13 -7
  194. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
  195. package/dist/resource/shader/index.js +17 -0
  196. package/dist/resource/shader/index.js.map +1 -0
  197. package/dist/resource/shader/portable.js +33 -0
  198. package/dist/resource/shader/portable.js.map +1 -0
  199. package/dist/resource/shader/portableValidation.js +461 -0
  200. package/dist/resource/shader/portableValidation.js.map +1 -0
  201. package/dist/resource/shader/reflection/Tr2EffectConstant.js +100 -0
  202. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
  203. package/dist/resource/shader/reflection/Tr2EffectDefine.js +34 -0
  204. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
  205. package/dist/resource/shader/reflection/Tr2EffectDescription.js +113 -0
  206. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
  207. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +141 -0
  208. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
  209. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +107 -0
  210. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
  211. package/dist/resource/shader/reflection/Tr2EffectResource.js +90 -0
  212. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
  213. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +235 -0
  214. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
  215. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +71 -0
  216. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
  217. package/dist/resource/shader/reflection/Tr2Pass.js +111 -0
  218. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
  219. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +80 -0
  220. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
  221. package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
  222. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
  223. package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
  224. package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
  225. package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
  226. package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
  227. package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
  228. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
  229. package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
  230. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
  231. package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
  232. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
  233. package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
  234. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
  235. package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
  236. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
  237. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
  238. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
  239. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
  240. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  241. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
  242. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  243. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
  244. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
  245. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
  246. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
  247. package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
  248. package/dist/resource/texture/TriTextureRes.js.map +1 -0
  249. package/dist/resource/texture/index.js +15 -0
  250. package/dist/resource/texture/index.js.map +1 -0
  251. package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
  252. package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
  253. package/dist/worker/CjsResManMainThreadLoader.js +87 -0
  254. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
  255. package/dist/worker/CjsResManWorker.js +217 -0
  256. package/dist/worker/CjsResManWorker.js.map +1 -0
  257. package/dist/worker/CjsResManWorkerLoader.js +434 -0
  258. package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
  259. package/dist/worker/protocol.js +12 -0
  260. package/dist/worker/protocol.js.map +1 -0
  261. package/docs/README.md +16 -3
  262. package/docs/architecture.md +39 -16
  263. package/docs/concepts/resource-lifecycle.md +2 -1
  264. package/docs/formats/README.md +4 -0
  265. package/docs/reference/classes/README.md +6 -4
  266. package/docs/reference/classes/audio.md +30 -0
  267. package/docs/reference/classes/core.md +31 -11
  268. package/docs/reference/classes/resources.md +151 -41
  269. package/docs/reference/classes/texture.md +7 -7
  270. package/docs/reference/motherlode-cache.md +17 -0
  271. package/docs/reference/queues.md +9 -1
  272. package/docs/reference/workers.md +135 -0
  273. package/docs/roadmap.md +27 -1
  274. package/package.json +8 -1
  275. package/dist/CjsResManQueue.js.map +0 -1
  276. package/dist/CjsResource.js.map +0 -1
  277. package/dist/CjsResourceSource.js +0 -68
  278. package/dist/CjsResourceSource.js.map +0 -1
  279. package/dist/resourcePath.js +0 -18
  280. package/dist/resourcePath.js.map +0 -1
  281. package/dist/resourceStates.js +0 -9
  282. package/dist/resourceStates.js.map +0 -1
  283. package/dist/resources/AudioGeometryResData.js.map +0 -1
  284. package/dist/resources/GStateBindingCallbackData.js.map +0 -1
  285. package/dist/resources/MeshDecalData.js.map +0 -1
  286. package/dist/resources/MeshDecalLodData.js.map +0 -1
  287. package/dist/resources/Tr2EffectRes.js +0 -71
  288. package/dist/resources/Tr2EffectRes.js.map +0 -1
  289. package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
  290. package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
  291. package/dist/resources/Tr2ImageRes.js.map +0 -1
  292. package/dist/resources/Tr2LightProfileRes.js.map +0 -1
  293. package/dist/resources/Tr2MaterialArea.js.map +0 -1
  294. package/dist/resources/Tr2MaterialMesh.js.map +0 -1
  295. package/dist/resources/Tr2MaterialRes.js.map +0 -1
  296. package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
  297. package/dist/resources/Tr2TextureLodManager.js.map +0 -1
  298. package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
  299. package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
  300. package/dist/resources/Tr2TexturePipeline.js.map +0 -1
  301. package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
  302. package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
  303. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
  304. package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
  305. package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
  306. package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
  307. package/dist/resources/TriGeometryRes.js +0 -239
  308. package/dist/resources/TriGeometryRes.js.map +0 -1
  309. package/dist/resources/TriGeometryResAreaData.js.map +0 -1
  310. package/dist/resources/TriGeometryResJointData.js.map +0 -1
  311. package/dist/resources/TriGeometryResLodData.js.map +0 -1
  312. package/dist/resources/TriGeometryResMeshData.js.map +0 -1
  313. package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
  314. package/dist/resources/TriGrannyRes.js.map +0 -1
  315. package/dist/resources/TriJointBinding.js.map +0 -1
  316. package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
  317. package/dist/resources/TriRtGeometryConstants.js.map +0 -1
  318. package/dist/resources/TriTextureRes.js.map +0 -1
  319. package/dist/resources/enums.js.map +0 -1
  320. package/dist/resources/resourceBoundary.js +0 -47
  321. package/dist/resources/resourceBoundary.js.map +0 -1
  322. package/dist/resources/texturePipelineBehavior.js.map +0 -1
  323. package/dist/texture/CjsTextureArrayRes.js.map +0 -1
  324. package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
@@ -9,6 +9,11 @@ const DEFAULT_VALUES = Object.freeze({
9
9
  inputType: "ogg",
10
10
  source: ""
11
11
  });
12
+
13
+ /**
14
+ * Normalizes reader options against their supported defaults for the Ogg format
15
+ * reader.
16
+ */
12
17
  function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsOggFormat") {
13
18
  if (!options || typeof options !== "object" || Array.isArray(options)) {
14
19
  throw new TypeError(`${readerName}: options must be an object`);
@@ -27,15 +32,24 @@ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsO
27
32
  }
28
33
  return values;
29
34
  }
35
+
36
+ /** Returns a byte view over the supplied binary input for the Ogg format reader. */
30
37
  function toBytes(input) {
31
38
  if (input instanceof Uint8Array) return input;
32
39
  if (input instanceof ArrayBuffer) return new Uint8Array(input);
33
40
  if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
34
41
  throw new TypeError("OGG input must be Uint8Array, ArrayBuffer, or a view");
35
42
  }
43
+
44
+ /**
45
+ * Reports whether the supplied bytes begin with an Ogg page signature for the
46
+ * Ogg format reader.
47
+ */
36
48
  function isOGG(bytes) {
37
49
  return bytes.byteLength >= 4 && ascii(bytes, 0, 4) === "OggS";
38
50
  }
51
+
52
+ /** Inspects input using normalized format options for the Ogg format reader. */
39
53
  function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "ogg") {
40
54
  const bytes = toBytes(input);
41
55
  if (!isOGG(bytes)) throw new TypeError("CjsOggFormat: input is not an Ogg container");
@@ -49,6 +63,11 @@ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "ogg")
49
63
  source: values.source || "buffer"
50
64
  };
51
65
  }
66
+
67
+ /**
68
+ * Reports whether input is supported under normalized format options for the Ogg
69
+ * format reader.
70
+ */
52
71
  function isSupportedWithValues(input, values = DEFAULT_VALUES) {
53
72
  try {
54
73
  const metadata = inspectWithValues(input, values);
@@ -107,6 +126,8 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES) {
107
126
  };
108
127
  }
109
128
  }
129
+
130
+ /** Reads input using normalized format options for the Ogg format reader. */
110
131
  function readWithValues(input, values = DEFAULT_VALUES) {
111
132
  const bytes = toBytes(input);
112
133
  const metadata = inspectWithValues(bytes, values);
@@ -164,6 +185,8 @@ function readWithValues(input, values = DEFAULT_VALUES) {
164
185
  error.code = "CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED";
165
186
  throw error;
166
187
  }
188
+
189
+ /** Converts a parsed payload into a JSON-safe value for the Ogg format reader. */
167
190
  function toJsonValue(value) {
168
191
  if (value instanceof Uint8Array) return {
169
192
  byteLength: value.byteLength
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/ogg/core/helpers.js"],"sourcesContent":["import { decodeVorbis } from \"./vorbis.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_PCM = \"pcm\";\nexport const OUTPUT_AUDIO = \"audio\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"ogg\",\n source: \"\"\n});\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsOggFormat\")\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n const allowed = new Set([ \"emit\", \"inputType\", \"source\" ]);\n for (const key of Object.keys(options))\n {\n if (!allowed.has(key)) throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...options };\n if (![ OUTPUT_RAW, OUTPUT_JSON, \"oggJson\", \"audio\", \"pcm\" ].includes(values.emit))\n {\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(values.emit)}`);\n }\n return values;\n}\n\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"OGG input must be Uint8Array, ArrayBuffer, or a view\");\n}\n\nexport function isOGG(bytes)\n{\n return bytes.byteLength >= 4 && ascii(bytes, 0, 4) === \"OggS\";\n}\n\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"ogg\")\n{\n const bytes = toBytes(input);\n if (!isOGG(bytes)) throw new TypeError(\"CjsOggFormat: input is not an Ogg container\");\n const metadata = inspectOgg(bytes);\n if (expectedType && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsOggFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return { ...metadata, byteLength: bytes.byteLength, source: values.source || \"buffer\" };\n}\n\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const mimeType = getOggMimeType(metadata);\n const variants = [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"ogg\",\n mimeType,\n supported: true,\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: false,\n frameDecodeSupported: false\n },\n {\n kind: \"pcm\",\n payloadType: \"pcm\",\n codec: metadata.codec === \"vorbis\" ? \"float32\" : \"pcm\",\n supported: metadata.codec === \"vorbis\",\n reason: metadata.codec === \"vorbis\" ? \"\" : \"Only Ogg Vorbis PCM decode is implemented.\"\n }\n ];\n if (metadata.mediaType === \"video\")\n {\n variants.push({\n kind: \"decoded\",\n payloadType: \"video-frame\",\n codec: \"frames\",\n supported: false,\n reason: \"OGG Theora frame decode is not implemented yet.\"\n });\n }\n const pcmSupported = metadata.codec === \"vorbis\";\n return {\n format: \"ogg\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferred: pcmSupported ? \"pcm\" : (metadata.sourceFormat ? \"ogg\" : \"\"),\n reason: pcmSupported\n ? \"Ogg Vorbis recognized; PCM decode is supported.\"\n : \"Ogg pages and codec headers are recognized; raw Ogg passthrough is available.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"ogg\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: \"ogg\",\n mimeType: getOggMimeType(metadata),\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: false,\n frameDecodeSupported: false,\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === \"oggJson\") return metadata;\n if (values.emit === OUTPUT_PCM || values.emit === OUTPUT_AUDIO)\n {\n if (metadata.codec !== \"vorbis\")\n {\n const error = new Error(`ogg: PCM decode supports Vorbis only (found ${metadata.codec})`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n throw error;\n }\n const decoded = decodeVorbis(bytes);\n const data = new Float32Array(decoded.sampleCount * decoded.channels);\n for (let channel = 0; channel < decoded.channels; channel++)\n {\n const samples = decoded.channelData[channel];\n for (let i = 0; i < decoded.sampleCount; i++)\n {\n data[i * decoded.channels + channel] = samples[i];\n }\n }\n return {\n payloadType: values.emit === OUTPUT_AUDIO ? OUTPUT_AUDIO : OUTPUT_PCM,\n sourceFormat: \"ogg\",\n codec: \"vorbis\",\n containerOnly: false,\n isDecoded: true,\n pcmDecodeSupported: true,\n audioFormat: \"float32\",\n sampleFormat: \"float32\",\n sampleRate: decoded.sampleRate,\n channels: decoded.channels,\n interleaving: \"interleaved\",\n frameCount: decoded.sampleCount,\n durationSeconds: decoded.sampleRate ? decoded.sampleCount / decoded.sampleRate : 0,\n vendor: decoded.vendor,\n comments: decoded.comments,\n loop: decoded.loop,\n channelData: decoded.channelData,\n metadata,\n data\n };\n }\n const error = new Error(`ogg: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n throw error;\n}\n\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array) return { byteLength: value.byteLength };\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nfunction getOggMimeType(metadata)\n{\n if (metadata.mediaType === \"video\") return \"video/ogg\";\n if (metadata.mediaType === \"audio\") return \"audio/ogg\";\n return \"application/ogg\";\n}\n\nfunction inspectOgg(bytes)\n{\n const streams = new Map();\n let offset = 0;\n let pageCount = 0;\n while (offset + 27 <= bytes.byteLength)\n {\n if (ascii(bytes, offset, 4) !== \"OggS\") throw new Error(`ogg: invalid page at byte ${offset}`);\n const version = bytes[offset + 4];\n if (version !== 0) throw new Error(`ogg: unsupported stream version ${version}`);\n const headerType = bytes[offset + 5];\n if (headerType & 0xf8) throw new Error(`ogg: reserved header flags at byte ${offset}`);\n const granulePosition = readU64LE(bytes, offset + 6);\n const serial = readU32LE(bytes, offset + 14);\n const sequence = readU32LE(bytes, offset + 18);\n const segmentCount = bytes[offset + 26];\n const tableOffset = offset + 27;\n const payloadOffset = tableOffset + segmentCount;\n if (payloadOffset > bytes.byteLength) throw new Error(\"ogg: truncated segment table\");\n let payloadLength = 0;\n for (let i = 0; i < segmentCount; i++) payloadLength += bytes[tableOffset + i];\n if (payloadOffset + payloadLength > bytes.byteLength) throw new Error(\"ogg: truncated page payload\");\n const pageLength = 27 + segmentCount + payloadLength;\n const expectedChecksum = readU32LE(bytes, offset + 22);\n if (computeOggCrc(bytes, offset, pageLength) !== expectedChecksum)\n {\n throw new Error(`ogg: page checksum mismatch at byte ${offset}`);\n }\n const stream = streams.get(serial) || {\n serial,\n pages: 0,\n firstPacket: [],\n packetBytes: 0,\n firstPacketComplete: false,\n packetOpen: false,\n codec: \"\",\n mediaType: \"unknown\",\n payloadBytes: 0\n };\n const continued = !!(headerType & 0x01);\n if (stream.pages === 0 && !(headerType & 0x02)) throw new Error(`ogg: first page of stream ${serial} is missing BOS`);\n if (stream.pages === 0 && continued) throw new Error(`ogg: first page of stream ${serial} is marked continued`);\n if (stream.eosSeen) throw new Error(`ogg: page follows EOS for stream ${serial}`);\n if (stream.pages > 0 && continued !== stream.packetOpen)\n {\n throw new Error(`ogg: continued-page state mismatch for stream ${serial}`);\n }\n if ((headerType & 0x02) && stream.pages !== 0) throw new Error(`ogg: BOS page is not first for stream ${serial}`);\n if (stream.lastSequence !== undefined && sequence !== stream.lastSequence + 1)\n {\n throw new Error(`ogg: page sequence mismatch for stream ${serial}`);\n }\n if (stream.pages === 0)\n {\n stream.firstSequence = sequence;\n stream.firstGranulePosition = granulePosition;\n stream.bos = !!(headerType & 0x02);\n }\n stream.pages++;\n stream.payloadBytes += payloadLength;\n collectFirstPacket(stream, bytes, payloadOffset, tableOffset, segmentCount);\n if ((headerType & 0x04) && stream.packetOpen) throw new Error(`ogg: EOS page leaves a packet continued for stream ${serial}`);\n stream.lastGranulePosition = granulePosition;\n stream.granulePosition = granulePosition;\n stream.lastSequence = sequence;\n stream.eos = !!(headerType & 0x04);\n stream.eosSeen = stream.eos;\n streams.set(serial, stream);\n pageCount++;\n offset = payloadOffset + payloadLength;\n }\n if (offset !== bytes.byteLength) throw new Error(`ogg: truncated trailing page at byte ${offset}`);\n if (!pageCount) throw new Error(\"ogg: no pages found\");\n const tracks = Array.from(streams.values()).map(stream => decodeCodec(stream));\n const primary = tracks.find(track => track.mediaType !== \"unknown\") || tracks[0];\n return {\n payloadType: primary?.mediaType === \"video\" ? \"video\" : primary?.mediaType === \"audio\" ? \"audio\" : \"container\",\n mediaTypes: tracks.map(track => track.mediaType),\n sourceFormat: \"ogg\",\n pageCount,\n streamCount: tracks.length,\n codec: primary?.codec || \"ogg\",\n mediaType: primary?.mediaType || \"unknown\",\n tracks\n };\n}\n\nfunction computeOggCrc(bytes, offset, length)\n{\n let crc = 0;\n for (let i = 0; i < length; i++)\n {\n const relative = i;\n const value = relative >= 22 && relative < 26 ? 0 : bytes[offset + relative];\n crc ^= value << 24;\n for (let bit = 0; bit < 8; bit++)\n {\n crc = (crc & 0x80000000) ? ((crc << 1) ^ 0x04c11db7) : (crc << 1);\n }\n }\n return crc >>> 0;\n}\n\nfunction collectFirstPacket(stream, bytes, payloadOffset, tableOffset, segmentCount)\n{\n let cursor = payloadOffset;\n let lastLength = 0;\n for (let i = 0; i < segmentCount; i++)\n {\n const length = bytes[tableOffset + i];\n if (!stream.firstPacketComplete && stream.packetBytes < 64)\n {\n const copyLength = Math.min(length, 64 - stream.packetBytes);\n stream.firstPacket.push(...bytes.subarray(cursor, cursor + copyLength));\n stream.packetBytes += copyLength;\n }\n cursor += length;\n lastLength = length;\n if (length < 255)\n {\n if (!stream.firstPacketComplete) stream.firstPacketComplete = true;\n }\n }\n stream.packetOpen = segmentCount > 0 && lastLength === 255;\n}\n\nfunction decodeCodec(stream)\n{\n const packet = Uint8Array.from(stream.firstPacket);\n if (matches(packet, [ 1, 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73 ]))\n {\n if (packet.length < 30) throw new Error(`ogg: truncated Vorbis identification header for stream ${stream.serial}`);\n if (readU32LE(packet, 7) !== 0 || !packet[11] || !readU32LE(packet, 12))\n {\n throw new Error(`ogg: invalid Vorbis identification header for stream ${stream.serial}`);\n }\n stream.codec = \"vorbis\";\n stream.mediaType = \"audio\";\n stream.channels = packet[11] || 0;\n stream.sampleRate = readU32LE(packet, 12);\n stream.bitrateMaximum = readS32LE(packet, 16);\n stream.bitrateNominal = readS32LE(packet, 20);\n stream.bitrateMinimum = readS32LE(packet, 24);\n addAudioTiming(stream, 0);\n }\n else if (matches(packet, [ 0x4f, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64 ]))\n {\n if (packet.length < 19 || packet[8] !== 1 || !packet[9] || (packet[18] && packet.length < 21 + packet[9]))\n {\n throw new Error(`ogg: invalid OpusHead packet for stream ${stream.serial}`);\n }\n stream.codec = \"opus\";\n stream.mediaType = \"audio\";\n stream.channels = packet[9] || 0;\n stream.preSkip = readU16LE(packet, 10);\n stream.inputSampleRate = readU32LE(packet, 12);\n stream.sampleRate = 48000;\n stream.outputGain = readS16LE(packet, 16);\n stream.mappingFamily = packet[18] || 0;\n addAudioTiming(stream, stream.preSkip);\n }\n else if (matches(packet, [ 0x80, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x61 ]))\n {\n if (packet.length < 42) throw new Error(`ogg: truncated Theora identification header for stream ${stream.serial}`);\n stream.codec = \"theora\";\n stream.mediaType = \"video\";\n stream.frameWidth = readU16BE(packet, 10) * 16;\n stream.frameHeight = readU16BE(packet, 12) * 16;\n stream.width = readU24BE(packet, 14);\n stream.height = readU24BE(packet, 17);\n stream.frameRateNumerator = readU32BE(packet, 22);\n stream.frameRateDenominator = readU32BE(packet, 26);\n stream.frameRate = stream.frameRateDenominator\n ? stream.frameRateNumerator / stream.frameRateDenominator\n : 0;\n stream.pixelAspectNumerator = readU24BE(packet, 30);\n stream.pixelAspectDenominator = readU24BE(packet, 33);\n stream.pixelAspectRatio = stream.pixelAspectDenominator\n ? stream.pixelAspectNumerator / stream.pixelAspectDenominator\n : 0;\n stream.colorSpace = packet[36] || 0;\n }\n delete stream.firstPacket;\n delete stream.packetBytes;\n delete stream.firstPacketComplete;\n delete stream.packetOpen;\n return stream;\n}\n\nfunction addAudioTiming(stream, preSkip)\n{\n stream.granulePosition = stream.lastGranulePosition;\n const granule = typeof stream.lastGranulePosition === \"number\"\n ? stream.lastGranulePosition\n : typeof stream.lastGranulePosition === \"string\" && /^\\d+$/u.test(stream.lastGranulePosition)\n ? Number(stream.lastGranulePosition)\n : null;\n if (granule === null || !Number.isSafeInteger(granule)) return;\n stream.durationSamples = Math.max(0, granule - preSkip);\n stream.durationSeconds = stream.sampleRate ? stream.durationSamples / stream.sampleRate : 0;\n}\n\nfunction matches(bytes, signature)\n{\n return signature.every((value, index) => bytes[index] === value);\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction readU16LE(bytes, offset)\n{\n return (bytes[offset] || 0) | ((bytes[offset + 1] || 0) << 8);\n}\n\nfunction readU16BE(bytes, offset)\n{\n return ((bytes[offset] || 0) << 8) | (bytes[offset + 1] || 0);\n}\n\nfunction readU24BE(bytes, offset)\n{\n return ((bytes[offset] || 0) * 0x10000) + ((bytes[offset + 1] || 0) << 8) + (bytes[offset + 2] || 0);\n}\n\nfunction readS16LE(bytes, offset)\n{\n const value = readU16LE(bytes, offset);\n return value & 0x8000 ? value - 0x10000 : value;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return ((bytes[offset] || 0) | ((bytes[offset + 1] || 0) << 8) | ((bytes[offset + 2] || 0) << 16) | ((bytes[offset + 3] || 0) * 0x1000000)) >>> 0;\n}\n\nfunction readU32BE(bytes, offset)\n{\n return (((bytes[offset] || 0) * 0x1000000) + ((bytes[offset + 1] || 0) << 16) + ((bytes[offset + 2] || 0) << 8) + (bytes[offset + 3] || 0)) >>> 0;\n}\n\nfunction readS32LE(bytes, offset)\n{\n return readU32LE(bytes, offset) | 0;\n}\n\nfunction readU64LE(bytes, offset)\n{\n let value = 0n;\n for (let i = 7; i >= 0; i--) value = (value << 8n) | BigInt(bytes[offset + i] || 0);\n if (value === 0xffffffffffffffffn) return null;\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : value.toString();\n}\n"],"names":["OUTPUT_RAW","OUTPUT_JSON","OUTPUT_PCM","OUTPUT_AUDIO","DEFAULT_VALUES","Object","freeze","emit","inputType","source","normalizeValues","base","options","readerName","Array","isArray","TypeError","allowed","Set","key","keys","has","JSON","stringify","values","includes","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","isOGG","bytes","ascii","inspectWithValues","expectedType","metadata","inspectOgg","sourceFormat","isSupportedWithValues","mimeType","getOggMimeType","variants","kind","payloadType","codec","supported","containerOnly","isDecoded","pcmDecodeSupported","frameDecodeSupported","reason","mediaType","push","pcmSupported","format","confidence","preferred","warnings","errors","error","message","readWithValues","Error","code","decoded","decodeVorbis","data","Float32Array","sampleCount","channels","channel","samples","channelData","i","audioFormat","sampleFormat","sampleRate","interleaving","frameCount","durationSeconds","vendor","comments","loop","toJsonValue","value","map","output","entry","entries","streams","Map","offset","pageCount","version","headerType","granulePosition","readU64LE","serial","readU32LE","sequence","segmentCount","tableOffset","payloadOffset","payloadLength","pageLength","expectedChecksum","computeOggCrc","stream","get","pages","firstPacket","packetBytes","firstPacketComplete","packetOpen","payloadBytes","continued","eosSeen","lastSequence","undefined","firstSequence","firstGranulePosition","bos","collectFirstPacket","lastGranulePosition","eos","set","tracks","from","decodeCodec","primary","find","track","mediaTypes","streamCount","length","crc","relative","bit","cursor","lastLength","copyLength","Math","min","subarray","packet","matches","bitrateMaximum","readS32LE","bitrateNominal","bitrateMinimum","addAudioTiming","preSkip","readU16LE","inputSampleRate","outputGain","readS16LE","mappingFamily","frameWidth","readU16BE","frameHeight","width","readU24BE","height","frameRateNumerator","readU32BE","frameRateDenominator","frameRate","pixelAspectNumerator","pixelAspectDenominator","pixelAspectRatio","colorSpace","granule","test","Number","isSafeInteger","durationSamples","max","signature","every","index","String","fromCharCode","BigInt","MAX_SAFE_INTEGER","toString"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/ogg/core/helpers.js"],"sourcesContent":["import { decodeVorbis } from \"./vorbis.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_PCM = \"pcm\";\nexport const OUTPUT_AUDIO = \"audio\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"ogg\",\n source: \"\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the Ogg format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsOggFormat\")\n{\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n const allowed = new Set([ \"emit\", \"inputType\", \"source\" ]);\n for (const key of Object.keys(options))\n {\n if (!allowed.has(key)) throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...options };\n if (![ OUTPUT_RAW, OUTPUT_JSON, \"oggJson\", \"audio\", \"pcm\" ].includes(values.emit))\n {\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(values.emit)}`);\n }\n return values;\n}\n\n/** Returns a byte view over the supplied binary input for the Ogg format reader. */\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"OGG input must be Uint8Array, ArrayBuffer, or a view\");\n}\n\n/**\n * Reports whether the supplied bytes begin with an Ogg page signature for the\n * Ogg format reader.\n */\nexport function isOGG(bytes)\n{\n return bytes.byteLength >= 4 && ascii(bytes, 0, 4) === \"OggS\";\n}\n\n/** Inspects input using normalized format options for the Ogg format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"ogg\")\n{\n const bytes = toBytes(input);\n if (!isOGG(bytes)) throw new TypeError(\"CjsOggFormat: input is not an Ogg container\");\n const metadata = inspectOgg(bytes);\n if (expectedType && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsOggFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return { ...metadata, byteLength: bytes.byteLength, source: values.source || \"buffer\" };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the Ogg\n * format reader.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const mimeType = getOggMimeType(metadata);\n const variants = [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"ogg\",\n mimeType,\n supported: true,\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: false,\n frameDecodeSupported: false\n },\n {\n kind: \"pcm\",\n payloadType: \"pcm\",\n codec: metadata.codec === \"vorbis\" ? \"float32\" : \"pcm\",\n supported: metadata.codec === \"vorbis\",\n reason: metadata.codec === \"vorbis\" ? \"\" : \"Only Ogg Vorbis PCM decode is implemented.\"\n }\n ];\n if (metadata.mediaType === \"video\")\n {\n variants.push({\n kind: \"decoded\",\n payloadType: \"video-frame\",\n codec: \"frames\",\n supported: false,\n reason: \"OGG Theora frame decode is not implemented yet.\"\n });\n }\n const pcmSupported = metadata.codec === \"vorbis\";\n return {\n format: \"ogg\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferred: pcmSupported ? \"pcm\" : (metadata.sourceFormat ? \"ogg\" : \"\"),\n reason: pcmSupported\n ? \"Ogg Vorbis recognized; PCM decode is supported.\"\n : \"Ogg pages and codec headers are recognized; raw Ogg passthrough is available.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"ogg\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the Ogg format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: \"ogg\",\n mimeType: getOggMimeType(metadata),\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: false,\n frameDecodeSupported: false,\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === \"oggJson\") return metadata;\n if (values.emit === OUTPUT_PCM || values.emit === OUTPUT_AUDIO)\n {\n if (metadata.codec !== \"vorbis\")\n {\n const error = new Error(`ogg: PCM decode supports Vorbis only (found ${metadata.codec})`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n throw error;\n }\n const decoded = decodeVorbis(bytes);\n const data = new Float32Array(decoded.sampleCount * decoded.channels);\n for (let channel = 0; channel < decoded.channels; channel++)\n {\n const samples = decoded.channelData[channel];\n for (let i = 0; i < decoded.sampleCount; i++)\n {\n data[i * decoded.channels + channel] = samples[i];\n }\n }\n return {\n payloadType: values.emit === OUTPUT_AUDIO ? OUTPUT_AUDIO : OUTPUT_PCM,\n sourceFormat: \"ogg\",\n codec: \"vorbis\",\n containerOnly: false,\n isDecoded: true,\n pcmDecodeSupported: true,\n audioFormat: \"float32\",\n sampleFormat: \"float32\",\n sampleRate: decoded.sampleRate,\n channels: decoded.channels,\n interleaving: \"interleaved\",\n frameCount: decoded.sampleCount,\n durationSeconds: decoded.sampleRate ? decoded.sampleCount / decoded.sampleRate : 0,\n vendor: decoded.vendor,\n comments: decoded.comments,\n loop: decoded.loop,\n channelData: decoded.channelData,\n metadata,\n data\n };\n }\n const error = new Error(`ogg: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n throw error;\n}\n\n/** Converts a parsed payload into a JSON-safe value for the Ogg format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array) return { byteLength: value.byteLength };\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nfunction getOggMimeType(metadata)\n{\n if (metadata.mediaType === \"video\") return \"video/ogg\";\n if (metadata.mediaType === \"audio\") return \"audio/ogg\";\n return \"application/ogg\";\n}\n\nfunction inspectOgg(bytes)\n{\n const streams = new Map();\n let offset = 0;\n let pageCount = 0;\n while (offset + 27 <= bytes.byteLength)\n {\n if (ascii(bytes, offset, 4) !== \"OggS\") throw new Error(`ogg: invalid page at byte ${offset}`);\n const version = bytes[offset + 4];\n if (version !== 0) throw new Error(`ogg: unsupported stream version ${version}`);\n const headerType = bytes[offset + 5];\n if (headerType & 0xf8) throw new Error(`ogg: reserved header flags at byte ${offset}`);\n const granulePosition = readU64LE(bytes, offset + 6);\n const serial = readU32LE(bytes, offset + 14);\n const sequence = readU32LE(bytes, offset + 18);\n const segmentCount = bytes[offset + 26];\n const tableOffset = offset + 27;\n const payloadOffset = tableOffset + segmentCount;\n if (payloadOffset > bytes.byteLength) throw new Error(\"ogg: truncated segment table\");\n let payloadLength = 0;\n for (let i = 0; i < segmentCount; i++) payloadLength += bytes[tableOffset + i];\n if (payloadOffset + payloadLength > bytes.byteLength) throw new Error(\"ogg: truncated page payload\");\n const pageLength = 27 + segmentCount + payloadLength;\n const expectedChecksum = readU32LE(bytes, offset + 22);\n if (computeOggCrc(bytes, offset, pageLength) !== expectedChecksum)\n {\n throw new Error(`ogg: page checksum mismatch at byte ${offset}`);\n }\n const stream = streams.get(serial) || {\n serial,\n pages: 0,\n firstPacket: [],\n packetBytes: 0,\n firstPacketComplete: false,\n packetOpen: false,\n codec: \"\",\n mediaType: \"unknown\",\n payloadBytes: 0\n };\n const continued = !!(headerType & 0x01);\n if (stream.pages === 0 && !(headerType & 0x02)) throw new Error(`ogg: first page of stream ${serial} is missing BOS`);\n if (stream.pages === 0 && continued) throw new Error(`ogg: first page of stream ${serial} is marked continued`);\n if (stream.eosSeen) throw new Error(`ogg: page follows EOS for stream ${serial}`);\n if (stream.pages > 0 && continued !== stream.packetOpen)\n {\n throw new Error(`ogg: continued-page state mismatch for stream ${serial}`);\n }\n if ((headerType & 0x02) && stream.pages !== 0) throw new Error(`ogg: BOS page is not first for stream ${serial}`);\n if (stream.lastSequence !== undefined && sequence !== stream.lastSequence + 1)\n {\n throw new Error(`ogg: page sequence mismatch for stream ${serial}`);\n }\n if (stream.pages === 0)\n {\n stream.firstSequence = sequence;\n stream.firstGranulePosition = granulePosition;\n stream.bos = !!(headerType & 0x02);\n }\n stream.pages++;\n stream.payloadBytes += payloadLength;\n collectFirstPacket(stream, bytes, payloadOffset, tableOffset, segmentCount);\n if ((headerType & 0x04) && stream.packetOpen) throw new Error(`ogg: EOS page leaves a packet continued for stream ${serial}`);\n stream.lastGranulePosition = granulePosition;\n stream.granulePosition = granulePosition;\n stream.lastSequence = sequence;\n stream.eos = !!(headerType & 0x04);\n stream.eosSeen = stream.eos;\n streams.set(serial, stream);\n pageCount++;\n offset = payloadOffset + payloadLength;\n }\n if (offset !== bytes.byteLength) throw new Error(`ogg: truncated trailing page at byte ${offset}`);\n if (!pageCount) throw new Error(\"ogg: no pages found\");\n const tracks = Array.from(streams.values()).map(stream => decodeCodec(stream));\n const primary = tracks.find(track => track.mediaType !== \"unknown\") || tracks[0];\n return {\n payloadType: primary?.mediaType === \"video\" ? \"video\" : primary?.mediaType === \"audio\" ? \"audio\" : \"container\",\n mediaTypes: tracks.map(track => track.mediaType),\n sourceFormat: \"ogg\",\n pageCount,\n streamCount: tracks.length,\n codec: primary?.codec || \"ogg\",\n mediaType: primary?.mediaType || \"unknown\",\n tracks\n };\n}\n\nfunction computeOggCrc(bytes, offset, length)\n{\n let crc = 0;\n for (let i = 0; i < length; i++)\n {\n const relative = i;\n const value = relative >= 22 && relative < 26 ? 0 : bytes[offset + relative];\n crc ^= value << 24;\n for (let bit = 0; bit < 8; bit++)\n {\n crc = (crc & 0x80000000) ? ((crc << 1) ^ 0x04c11db7) : (crc << 1);\n }\n }\n return crc >>> 0;\n}\n\nfunction collectFirstPacket(stream, bytes, payloadOffset, tableOffset, segmentCount)\n{\n let cursor = payloadOffset;\n let lastLength = 0;\n for (let i = 0; i < segmentCount; i++)\n {\n const length = bytes[tableOffset + i];\n if (!stream.firstPacketComplete && stream.packetBytes < 64)\n {\n const copyLength = Math.min(length, 64 - stream.packetBytes);\n stream.firstPacket.push(...bytes.subarray(cursor, cursor + copyLength));\n stream.packetBytes += copyLength;\n }\n cursor += length;\n lastLength = length;\n if (length < 255)\n {\n if (!stream.firstPacketComplete) stream.firstPacketComplete = true;\n }\n }\n stream.packetOpen = segmentCount > 0 && lastLength === 255;\n}\n\nfunction decodeCodec(stream)\n{\n const packet = Uint8Array.from(stream.firstPacket);\n if (matches(packet, [ 1, 0x76, 0x6f, 0x72, 0x62, 0x69, 0x73 ]))\n {\n if (packet.length < 30) throw new Error(`ogg: truncated Vorbis identification header for stream ${stream.serial}`);\n if (readU32LE(packet, 7) !== 0 || !packet[11] || !readU32LE(packet, 12))\n {\n throw new Error(`ogg: invalid Vorbis identification header for stream ${stream.serial}`);\n }\n stream.codec = \"vorbis\";\n stream.mediaType = \"audio\";\n stream.channels = packet[11] || 0;\n stream.sampleRate = readU32LE(packet, 12);\n stream.bitrateMaximum = readS32LE(packet, 16);\n stream.bitrateNominal = readS32LE(packet, 20);\n stream.bitrateMinimum = readS32LE(packet, 24);\n addAudioTiming(stream, 0);\n }\n else if (matches(packet, [ 0x4f, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64 ]))\n {\n if (packet.length < 19 || packet[8] !== 1 || !packet[9] || (packet[18] && packet.length < 21 + packet[9]))\n {\n throw new Error(`ogg: invalid OpusHead packet for stream ${stream.serial}`);\n }\n stream.codec = \"opus\";\n stream.mediaType = \"audio\";\n stream.channels = packet[9] || 0;\n stream.preSkip = readU16LE(packet, 10);\n stream.inputSampleRate = readU32LE(packet, 12);\n stream.sampleRate = 48000;\n stream.outputGain = readS16LE(packet, 16);\n stream.mappingFamily = packet[18] || 0;\n addAudioTiming(stream, stream.preSkip);\n }\n else if (matches(packet, [ 0x80, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x61 ]))\n {\n if (packet.length < 42) throw new Error(`ogg: truncated Theora identification header for stream ${stream.serial}`);\n stream.codec = \"theora\";\n stream.mediaType = \"video\";\n stream.frameWidth = readU16BE(packet, 10) * 16;\n stream.frameHeight = readU16BE(packet, 12) * 16;\n stream.width = readU24BE(packet, 14);\n stream.height = readU24BE(packet, 17);\n stream.frameRateNumerator = readU32BE(packet, 22);\n stream.frameRateDenominator = readU32BE(packet, 26);\n stream.frameRate = stream.frameRateDenominator\n ? stream.frameRateNumerator / stream.frameRateDenominator\n : 0;\n stream.pixelAspectNumerator = readU24BE(packet, 30);\n stream.pixelAspectDenominator = readU24BE(packet, 33);\n stream.pixelAspectRatio = stream.pixelAspectDenominator\n ? stream.pixelAspectNumerator / stream.pixelAspectDenominator\n : 0;\n stream.colorSpace = packet[36] || 0;\n }\n delete stream.firstPacket;\n delete stream.packetBytes;\n delete stream.firstPacketComplete;\n delete stream.packetOpen;\n return stream;\n}\n\nfunction addAudioTiming(stream, preSkip)\n{\n stream.granulePosition = stream.lastGranulePosition;\n const granule = typeof stream.lastGranulePosition === \"number\"\n ? stream.lastGranulePosition\n : typeof stream.lastGranulePosition === \"string\" && /^\\d+$/u.test(stream.lastGranulePosition)\n ? Number(stream.lastGranulePosition)\n : null;\n if (granule === null || !Number.isSafeInteger(granule)) return;\n stream.durationSamples = Math.max(0, granule - preSkip);\n stream.durationSeconds = stream.sampleRate ? stream.durationSamples / stream.sampleRate : 0;\n}\n\nfunction matches(bytes, signature)\n{\n return signature.every((value, index) => bytes[index] === value);\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction readU16LE(bytes, offset)\n{\n return (bytes[offset] || 0) | ((bytes[offset + 1] || 0) << 8);\n}\n\nfunction readU16BE(bytes, offset)\n{\n return ((bytes[offset] || 0) << 8) | (bytes[offset + 1] || 0);\n}\n\nfunction readU24BE(bytes, offset)\n{\n return ((bytes[offset] || 0) * 0x10000) + ((bytes[offset + 1] || 0) << 8) + (bytes[offset + 2] || 0);\n}\n\nfunction readS16LE(bytes, offset)\n{\n const value = readU16LE(bytes, offset);\n return value & 0x8000 ? value - 0x10000 : value;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return ((bytes[offset] || 0) | ((bytes[offset + 1] || 0) << 8) | ((bytes[offset + 2] || 0) << 16) | ((bytes[offset + 3] || 0) * 0x1000000)) >>> 0;\n}\n\nfunction readU32BE(bytes, offset)\n{\n return (((bytes[offset] || 0) * 0x1000000) + ((bytes[offset + 1] || 0) << 16) + ((bytes[offset + 2] || 0) << 8) + (bytes[offset + 3] || 0)) >>> 0;\n}\n\nfunction readS32LE(bytes, offset)\n{\n return readU32LE(bytes, offset) | 0;\n}\n\nfunction readU64LE(bytes, offset)\n{\n let value = 0n;\n for (let i = 7; i >= 0; i--) value = (value << 8n) | BigInt(bytes[offset + i] || 0);\n if (value === 0xffffffffffffffffn) return null;\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : value.toString();\n}\n"],"names":["OUTPUT_RAW","OUTPUT_JSON","OUTPUT_PCM","OUTPUT_AUDIO","DEFAULT_VALUES","Object","freeze","emit","inputType","source","normalizeValues","base","options","readerName","Array","isArray","TypeError","allowed","Set","key","keys","has","JSON","stringify","values","includes","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","isOGG","bytes","ascii","inspectWithValues","expectedType","metadata","inspectOgg","sourceFormat","isSupportedWithValues","mimeType","getOggMimeType","variants","kind","payloadType","codec","supported","containerOnly","isDecoded","pcmDecodeSupported","frameDecodeSupported","reason","mediaType","push","pcmSupported","format","confidence","preferred","warnings","errors","error","message","readWithValues","Error","code","decoded","decodeVorbis","data","Float32Array","sampleCount","channels","channel","samples","channelData","i","audioFormat","sampleFormat","sampleRate","interleaving","frameCount","durationSeconds","vendor","comments","loop","toJsonValue","value","map","output","entry","entries","streams","Map","offset","pageCount","version","headerType","granulePosition","readU64LE","serial","readU32LE","sequence","segmentCount","tableOffset","payloadOffset","payloadLength","pageLength","expectedChecksum","computeOggCrc","stream","get","pages","firstPacket","packetBytes","firstPacketComplete","packetOpen","payloadBytes","continued","eosSeen","lastSequence","undefined","firstSequence","firstGranulePosition","bos","collectFirstPacket","lastGranulePosition","eos","set","tracks","from","decodeCodec","primary","find","track","mediaTypes","streamCount","length","crc","relative","bit","cursor","lastLength","copyLength","Math","min","subarray","packet","matches","bitrateMaximum","readS32LE","bitrateNominal","bitrateMinimum","addAudioTiming","preSkip","readU16LE","inputSampleRate","outputGain","readS16LE","mappingFamily","frameWidth","readU16BE","frameHeight","width","readU24BE","height","frameRateNumerator","readU32BE","frameRateDenominator","frameRate","pixelAspectNumerator","pixelAspectDenominator","pixelAspectRatio","colorSpace","granule","test","Number","isSafeInteger","durationSamples","max","signature","every","index","String","fromCharCode","BigInt","MAX_SAFE_INTEGER","toString"],"mappings":"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"}
@@ -63,6 +63,7 @@ function lookup1Values(entries, dimensions) {
63
63
  * `eop` instead of throwing (end-of-packet is a defined decode condition).
64
64
  */
65
65
  class PacketReader {
66
+ /** Creates a PacketReader over caller-provided Ogg bytes and reader options. */
66
67
  constructor(bytes) {
67
68
  this.bytes = bytes;
68
69
  this.position = 0;
@@ -70,6 +71,8 @@ class PacketReader {
70
71
  this.bitsLeft = 0;
71
72
  this.eop = false;
72
73
  }
74
+
75
+ /** Reads bits from the current Ogg binary reader. */
73
76
  readBits(count) {
74
77
  let value = 0;
75
78
  for (let i = 0; i < count; i++) {
@@ -94,6 +97,7 @@ class PacketReader {
94
97
  * scalar and vector packet decoding.
95
98
  */
96
99
  class Codebook {
100
+ /** Creates a Codebook with caller-provided initial state. */
97
101
  constructor() {
98
102
  this.dimensions = 0;
99
103
  this.entries = 0;
@@ -105,6 +109,11 @@ class Codebook {
105
109
  this.treeNodes = null;
106
110
  this.maxLength = 0;
107
111
  }
112
+
113
+ /**
114
+ * Builds the canonical Vorbis Huffman decode tree for this codebook for the
115
+ * Ogg decoder.
116
+ */
108
117
  buildHuffman(lengths) {
109
118
  const available = new Uint32Array(33);
110
119
  this.fastTable = new Int32Array(FAST_SIZE).fill(-1);
@@ -162,6 +171,8 @@ class Codebook {
162
171
  }
163
172
  this.treeNodes = nodes;
164
173
  }
174
+
175
+ /** Decodes the Ogg input into a normalized Ogg decoder result. */
165
176
  decode(reader) {
166
177
  // fast path: peek up to FAST_BITS without consuming
167
178
  let peek = 0;
@@ -206,6 +217,8 @@ class Codebook {
206
217
  }
207
218
  throw decodeError("huffman walk exceeded max code length");
208
219
  }
220
+
221
+ /** Reconstructs one vector-quantized codebook component for the Ogg decoder. */
209
222
  vqValue(symbol, element) {
210
223
  if (this.lookupType === 1) {
211
224
  let index = symbol;