@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
@@ -21,6 +21,11 @@ const IMAGE_MIME_TYPES = Object.freeze({
21
21
  tga: "image/x-tga",
22
22
  dds: "image/vnd-ms.dds"
23
23
  });
24
+
25
+ /**
26
+ * Normalizes reader options against their supported defaults for the TGA format
27
+ * reader.
28
+ */
24
29
  function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsImageFormat") {
25
30
  const values = {
26
31
  ...DEFAULT_VALUES,
@@ -31,11 +36,15 @@ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsI
31
36
  values.emit = normalizeEmit(values.emit, values.inputType, readerName);
32
37
  return values;
33
38
  }
39
+
40
+ /** Normalizes the requested input representation for the TGA format reader. */
34
41
  function normalizeInputType(inputType) {
35
42
  if (!inputType) return "";
36
43
  const value = String(inputType).replace(/^\./u, "").toLowerCase();
37
44
  return value === "jpg" ? "jpeg" : value;
38
45
  }
46
+
47
+ /** Normalizes the requested output representation for the TGA format reader. */
39
48
  function normalizeEmit(emit, inputType, readerName) {
40
49
  if (emit === undefined || emit === null) return OUTPUT_RAW;
41
50
  if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;
@@ -43,12 +52,16 @@ function normalizeEmit(emit, inputType, readerName) {
43
52
  if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;
44
53
  throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
45
54
  }
55
+
56
+ /** Returns a byte view over the supplied binary input for the TGA format reader. */
46
57
  function toBytes(input) {
47
58
  if (input instanceof Uint8Array) return input;
48
59
  if (input instanceof ArrayBuffer) return new Uint8Array(input);
49
60
  if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
50
61
  throw new TypeError("Image input must be Uint8Array, ArrayBuffer, or DataView");
51
62
  }
63
+
64
+ /** Inspects input using normalized format options for the TGA format reader. */
52
65
  function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
53
66
  const bytes = toBytes(input);
54
67
  const detected = inspectBytes(bytes);
@@ -64,6 +77,11 @@ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
64
77
  ...detected
65
78
  };
66
79
  }
80
+
81
+ /**
82
+ * Reports whether input is supported under normalized format options for the TGA
83
+ * format reader.
84
+ */
67
85
  function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
68
86
  try {
69
87
  const metadata = inspectWithValues(input, values, expectedType);
@@ -119,6 +137,8 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = ""
119
137
  };
120
138
  }
121
139
  }
140
+
141
+ /** Reads input using normalized format options for the TGA format reader. */
122
142
  function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
123
143
  const bytes = toBytes(input);
124
144
  const metadata = inspectWithValues(bytes, values, expectedType);
@@ -146,6 +166,8 @@ function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
146
166
  error.emit = values.emit;
147
167
  throw error;
148
168
  }
169
+
170
+ /** Converts a parsed payload into a JSON-safe value for the TGA format reader. */
149
171
  function toJsonValue(value) {
150
172
  if (value instanceof Uint8Array) {
151
173
  return {
@@ -160,6 +182,11 @@ function toJsonValue(value) {
160
182
  }
161
183
  return value;
162
184
  }
185
+
186
+ /**
187
+ * Inspects the supplied bytes without decoding their payload for the TGA format
188
+ * reader.
189
+ */
163
190
  function inspectBytes(bytes) {
164
191
  if (isPNG(bytes)) return inspectPNG(bytes);
165
192
  if (isJPEG(bytes)) return inspectJPEG(bytes);
@@ -171,15 +198,35 @@ function inspectBytes(bytes) {
171
198
  height: 0
172
199
  };
173
200
  }
201
+
202
+ /**
203
+ * Reports whether the supplied bytes begin with a PNG signature for the TGA
204
+ * format reader.
205
+ */
174
206
  function isPNG(bytes) {
175
207
  return bytes.byteLength >= 24 && bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 && bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;
176
208
  }
209
+
210
+ /**
211
+ * Reports whether the supplied bytes begin with a JPEG signature for the TGA
212
+ * format reader.
213
+ */
177
214
  function isJPEG(bytes) {
178
215
  return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;
179
216
  }
217
+
218
+ /**
219
+ * Reports whether the supplied bytes begin with a DDS signature for the TGA
220
+ * format reader.
221
+ */
180
222
  function isDDS(bytes) {
181
223
  return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;
182
224
  }
225
+
226
+ /**
227
+ * Reports whether the supplied bytes have a supported TGA header for the TGA
228
+ * format reader.
229
+ */
183
230
  function isTGA(bytes) {
184
231
  if (bytes.byteLength < 18) return false;
185
232
  const imageType = bytes[2],
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/tga/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\nconst IMAGE_MIME_TYPES = Object.freeze({\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n tga: \"image/x-tga\",\n dds: \"image/vnd-ms.dds\"\n});\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\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(\"Image input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalize(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canDecodeTga = metadata.sourceFormat === \"tga\" && canDecodeTgaToRgba(metadata);\n let variants;\n if (metadata.sourceFormat === \"tga\")\n {\n variants = [\n {\n kind: \"rgba\",\n payloadType: \"rgba\",\n codec: \"rgba8unorm\",\n supported: canDecodeTga,\n reason: canDecodeTga ? \"\" : \"Only supported true-color, grayscale, and indexed TGA images are decoded to RGBA.\",\n containerOnly: false,\n isDecoded: canDecodeTga,\n rgbaDecodeSupported: canDecodeTga\n },\n rawVariant(metadata, canDecodeTga)\n ];\n }\n else\n {\n variants = [\n rawVariant(metadata, false),\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: false, reason: `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`, containerOnly: false, isDecoded: false, rgbaDecodeSupported: false }\n ];\n }\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some(v => v.supported && v.kind === \"rgba\") ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: variants.find(v => v.supported)?.codec || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\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, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"tga\" && canDecodeTgaToRgba(metadata),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"tga\")\n {\n return decodeTgaToRgba(bytes, metadata);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\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\nexport function inspectBytes(bytes)\n{\n if (isPNG(bytes)) return inspectPNG(bytes);\n if (isJPEG(bytes)) return inspectJPEG(bytes);\n if (isDDS(bytes)) return inspectDDS(bytes);\n if (isTGA(bytes)) return inspectTGA(bytes);\n return { sourceFormat: \"\", width: 0, height: 0 };\n}\n\nexport function isPNG(bytes)\n{\n return bytes.byteLength >= 24 &&\n bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 &&\n bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;\n}\n\nexport function isJPEG(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;\n}\n\nexport function isDDS(bytes)\n{\n return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;\n}\n\nexport function isTGA(bytes)\n{\n if (bytes.byteLength < 18) return false;\n const imageType = bytes[2], width = readU16LE(bytes, 12), height = readU16LE(bytes, 14), bpp = bytes[16];\n return width > 0 && height > 0 && [ 1, 2, 3, 9, 10, 11 ].includes(imageType) && [ 8, 15, 16, 24, 32 ].includes(bpp);\n}\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false\n };\n}\n\nfunction inspectJPEG(bytes)\n{\n let offset = 2;\n while (offset + 9 < bytes.byteLength)\n {\n if (bytes[offset] !== 0xff)\n {\n offset++;\n continue;\n }\n const marker = bytes[offset + 1], length = readU16BE(bytes, offset + 2);\n if ([ 0xc0, 0xc1, 0xc2, 0xc3 ].includes(marker))\n {\n return {\n sourceFormat: \"jpeg\",\n width: readU16BE(bytes, offset + 7),\n height: readU16BE(bytes, offset + 5),\n channels: bytes[offset + 9],\n marker,\n pixelFormat: \"jpeg-ycbcr\",\n isCompressed: true\n };\n }\n offset += Math.max(length + 2, 2);\n }\n return { sourceFormat: \"jpeg\", width: 0, height: 0, channels: 0, pixelFormat: \"jpeg\", isCompressed: true };\n}\n\nfunction inspectDDS(bytes)\n{\n const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\\0+$/u, \"\");\n return {\n sourceFormat: \"dds\",\n width: readU32LE(bytes, 16),\n height: readU32LE(bytes, 12),\n mipCount: Math.max(readU32LE(bytes, 28), 1),\n fourCc,\n textureFormat: fourCc || \"dds-legacy\",\n isCompressed: !!fourCc,\n hasMipMaps: readU32LE(bytes, 28) > 1\n };\n}\n\nfunction inspectTGA(bytes)\n{\n const descriptor = bytes[17];\n const colorMapEntryBytes = Math.ceil(bytes[7] / 8);\n const colorMapBytes = readU16LE(bytes, 5) * colorMapEntryBytes;\n const imageDataOffset = 18 + bytes[0] + colorMapBytes;\n return {\n sourceFormat: \"tga\",\n idLength: bytes[0],\n colorMapType: bytes[1],\n colorMapFirst: readU16LE(bytes, 3),\n colorMapLength: readU16LE(bytes, 5),\n colorMapEntryBits: bytes[7],\n colorMapBytes,\n imageDataOffset,\n imageDataBytes: Math.max(0, bytes.byteLength - imageDataOffset),\n width: readU16LE(bytes, 12),\n height: readU16LE(bytes, 14),\n channels: Math.max(bytes[16] / 8, 1),\n imageType: bytes[2],\n bitsPerPixel: bytes[16],\n descriptor,\n alphaBits: descriptor & 0x0f,\n hasAlpha: bytes[16] === 32 || bytes[16] === 16 || bytes[7] === 32 || bytes[7] === 16,\n origin: getTgaOrigin(descriptor),\n pixelFormat: `tga-${bytes[16]}`,\n isCompressed: [ 9, 10, 11 ].includes(bytes[2])\n };\n}\n\nfunction canDecodeTgaToRgba(metadata)\n{\n const indexed = [ 1, 9 ].includes(metadata.imageType);\n const direct = [ 2, 3, 10, 11 ].includes(metadata.imageType);\n return hasMinimumTgaDataForRgba(metadata) && (\n (direct && metadata.colorMapType === 0 && [ 8, 15, 16, 24, 32 ].includes(metadata.bitsPerPixel)) ||\n (indexed && metadata.colorMapType === 1 && metadata.colorMapLength > 0 &&\n [ 8, 15, 16, 24, 32 ].includes(metadata.colorMapEntryBits) && [ 8, 16 ].includes(metadata.bitsPerPixel))\n );\n}\n\nfunction hasMinimumTgaDataForRgba(metadata)\n{\n if (metadata.byteLength < metadata.imageDataOffset) return false;\n if ([ 9, 10, 11 ].includes(metadata.imageType)) return metadata.imageDataBytes > 0;\n return metadata.imageDataBytes >= metadata.width * metadata.height * Math.ceil(metadata.bitsPerPixel / 8);\n}\n\nfunction decodeTgaToRgba(bytes, metadata)\n{\n if (!canDecodeTgaToRgba(metadata))\n {\n throwUnsupported(metadata, \"Only true-color, grayscale, and indexed TGA images can be decoded to RGBA.\");\n }\n\n const bytesPerPixel = Math.ceil(metadata.bitsPerPixel / 8);\n const palette = metadata.colorMapType === 1 ? readTgaPalette(bytes, metadata) : null;\n const imageOffset = 18 + metadata.idLength + (palette ? metadata.colorMapLength * (metadata.colorMapEntryBits / 8) : 0);\n metadata.palette = palette;\n const pixelCount = metadata.width * metadata.height;\n const rgba = new Uint8Array(pixelCount * 4);\n\n let inputOffset = imageOffset;\n let pixelIndex = 0;\n\n if ([ 1, 2, 3 ].includes(metadata.imageType))\n {\n while (pixelIndex < pixelCount)\n {\n inputOffset = readTgaPixel(bytes, inputOffset, bytesPerPixel, metadata, rgba, pixelIndex++);\n }\n }\n else\n {\n while (pixelIndex < pixelCount)\n {\n const packet = bytes[inputOffset++];\n const count = (packet & 0x7f) + 1;\n if (packet & 0x80)\n {\n const pixel = readTgaPixelBytes(bytes, inputOffset, bytesPerPixel, metadata);\n inputOffset += bytesPerPixel;\n for (let i = 0; i < count && pixelIndex < pixelCount; i++) writeTgaPixel(rgba, pixelIndex++, pixel, metadata);\n }\n else\n {\n for (let i = 0; i < count && pixelIndex < pixelCount; i++)\n {\n inputOffset = readTgaPixel(bytes, inputOffset, bytesPerPixel, metadata, rgba, pixelIndex++);\n }\n }\n }\n }\n\n return {\n payloadType: OUTPUT_RGBA,\n sourceFormat: \"tga\",\n mimeType: \"image/x-tga\",\n containerOnly: false,\n isDecoded: true,\n rgbaDecodeSupported: true,\n width: metadata.width,\n height: metadata.height,\n pixelFormat: \"rgba8unorm\",\n strideBytes: metadata.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: metadata.hasAlpha ? \"straight\" : \"opaque\",\n metadata,\n data: rgba\n };\n}\n\nfunction rawVariant(metadata, canDecode)\n{\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n supported: true,\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"tga\" && canDecode === true\n };\n}\n\nfunction imageMimeType(sourceFormat)\n{\n return IMAGE_MIME_TYPES[sourceFormat] || \"application/octet-stream\";\n}\n\nfunction readTgaPixel(bytes, offset, bytesPerPixel, metadata, rgba, pixelIndex)\n{\n const pixel = readTgaPixelBytes(bytes, offset, bytesPerPixel, metadata);\n writeTgaPixel(rgba, pixelIndex, pixel, metadata);\n return offset + bytesPerPixel;\n}\n\nfunction readTgaPixelBytes(bytes, offset, bytesPerPixel, metadata)\n{\n if (offset + bytesPerPixel > bytes.byteLength) throwUnsupported(metadata, \"TGA pixel data is truncated.\");\n\n if ([ 1, 9 ].includes(metadata.imageType))\n {\n const index = bytesPerPixel === 2 ? readU16LE(bytes, offset) : bytes[offset];\n return metadata.palette[index - metadata.colorMapFirst] || [ 0, 0, 0, 0 ];\n }\n\n if (metadata.imageType === 3 || metadata.imageType === 11)\n {\n const value = bytes[offset];\n return [ value, value, value, bytesPerPixel > 1 ? bytes[offset + 1] : 255 ];\n }\n\n if (bytesPerPixel === 2)\n {\n const value = readU16LE(bytes, offset);\n const r = ((value >>> 10) & 0x1f) * 255 / 31;\n const g = ((value >>> 5) & 0x1f) * 255 / 31;\n const b = (value & 0x1f) * 255 / 31;\n const a = metadata.bitsPerPixel === 15 || (metadata.descriptor & 0x0f) === 0\n ? 255\n : value & 0x8000 ? 255 : 0;\n return [ r, g, b, a ];\n }\n\n return [\n bytes[offset + 2],\n bytes[offset + 1],\n bytes[offset],\n bytesPerPixel === 4 ? bytes[offset + 3] : 255\n ];\n}\n\nfunction readTgaPalette(bytes, metadata)\n{\n const entryBytes = Math.ceil(metadata.colorMapEntryBits / 8);\n const offset = 18 + metadata.idLength;\n const end = offset + metadata.colorMapLength * entryBytes;\n if (end > bytes.byteLength)\n {\n throwUnsupported(metadata, \"TGA color map is truncated.\");\n }\n\n const palette = [];\n for (let i = 0; i < metadata.colorMapLength; i++)\n {\n palette.push(readTgaColor(bytes, offset + i * entryBytes, entryBytes, metadata.colorMapEntryBits));\n }\n return palette;\n}\n\nfunction readTgaColor(bytes, offset, entryBytes, entryBits)\n{\n if (entryBytes === 2)\n {\n const value = readU16LE(bytes, offset);\n return [\n Math.round(((value >>> 10) & 0x1f) * 255 / 31),\n Math.round(((value >>> 5) & 0x1f) * 255 / 31),\n Math.round((value & 0x1f) * 255 / 31),\n entryBits === 16 && (value & 0x8000) ? 255 : entryBits === 16 ? 0 : 255\n ];\n }\n return [\n bytes[offset + 2],\n bytes[offset + 1],\n bytes[offset],\n entryBits === 32 ? bytes[offset + 3] : 255\n ];\n}\n\nfunction writeTgaPixel(rgba, pixelIndex, pixel, metadata)\n{\n const offset = getTgaOutputOffset(metadata, pixelIndex) * 4;\n rgba[offset] = pixel[0];\n rgba[offset + 1] = pixel[1];\n rgba[offset + 2] = pixel[2];\n rgba[offset + 3] = pixel[3];\n}\n\nfunction getTgaOutputOffset(metadata, pixelIndex)\n{\n const xInput = pixelIndex % metadata.width;\n const yInput = Math.floor(pixelIndex / metadata.width);\n const x = metadata.origin.endsWith(\"right\") ? metadata.width - 1 - xInput : xInput;\n const y = metadata.origin.startsWith(\"top\") ? yInput : metadata.height - 1 - yInput;\n return y * metadata.width + x;\n}\n\nfunction getTgaOrigin(descriptor)\n{\n const top = !!(descriptor & 0x20);\n const right = !!(descriptor & 0x10);\n return `${top ? \"top\" : \"bottom\"}-${right ? \"right\" : \"left\"}`;\n}\n\nfunction throwUnsupported(metadata, message)\n{\n const error = new Error(`tga: ${message}`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n}\n\nfunction pngChannels(colorType)\n{\n if (colorType === 0) return 1;\n if (colorType === 2) return 3;\n if (colorType === 3) return 1;\n if (colorType === 4) return 2;\n if (colorType === 6) return 4;\n return 0;\n}\n\nfunction readU16BE(bytes, offset)\n{\n return (bytes[offset] << 8) | bytes[offset + 1];\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction capitalize(value)\n{\n return value ? value[0].toUpperCase() + value.slice(1) : \"Image\";\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","IMAGE_MIME_TYPES","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","detected","inspectBytes","sourceFormat","capitalize","payloadType","mediaTypes","isSupportedWithValues","metadata","canDecodeTga","canDecodeTgaToRgba","variants","kind","codec","supported","reason","containerOnly","isDecoded","rgbaDecodeSupported","rawVariant","toUpperCase","format","some","v","confidence","preferred","find","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","decodeTgaToRgba","Error","code","toJsonValue","Array","isArray","map","output","key","entry","entries","isPNG","inspectPNG","isJPEG","inspectJPEG","isDDS","inspectDDS","isTGA","inspectTGA","width","height","imageType","readU16LE","bpp","colorType","bitDepth","readU32BE","channels","pngChannels","pixelFormat","isCompressed","offset","marker","length","readU16BE","Math","max","fourCc","fromCharCode","readU32LE","mipCount","textureFormat","hasMipMaps","descriptor","colorMapEntryBytes","ceil","colorMapBytes","imageDataOffset","idLength","colorMapType","colorMapFirst","colorMapLength","colorMapEntryBits","imageDataBytes","bitsPerPixel","alphaBits","hasAlpha","origin","getTgaOrigin","indexed","direct","hasMinimumTgaDataForRgba","throwUnsupported","bytesPerPixel","palette","readTgaPalette","imageOffset","pixelCount","rgba","inputOffset","pixelIndex","readTgaPixel","packet","count","pixel","readTgaPixelBytes","i","writeTgaPixel","strideBytes","colorSpace","alphaMode","data","canDecode","index","r","g","b","a","entryBytes","end","push","readTgaColor","entryBits","round","getTgaOutputOffset","xInput","yInput","floor","x","endsWith","y","startsWith","top","right","slice"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/tga/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\nconst IMAGE_MIME_TYPES = Object.freeze({\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n tga: \"image/x-tga\",\n dds: \"image/vnd-ms.dds\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the TGA format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested input representation for the TGA format reader. */\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\n/** Normalizes the requested output representation for the TGA format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the TGA 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(\"Image input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\n/** Inspects input using normalized format options for the TGA format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalize(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the TGA\n * format reader.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canDecodeTga = metadata.sourceFormat === \"tga\" && canDecodeTgaToRgba(metadata);\n let variants;\n if (metadata.sourceFormat === \"tga\")\n {\n variants = [\n {\n kind: \"rgba\",\n payloadType: \"rgba\",\n codec: \"rgba8unorm\",\n supported: canDecodeTga,\n reason: canDecodeTga ? \"\" : \"Only supported true-color, grayscale, and indexed TGA images are decoded to RGBA.\",\n containerOnly: false,\n isDecoded: canDecodeTga,\n rgbaDecodeSupported: canDecodeTga\n },\n rawVariant(metadata, canDecodeTga)\n ];\n }\n else\n {\n variants = [\n rawVariant(metadata, false),\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: false, reason: `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`, containerOnly: false, isDecoded: false, rgbaDecodeSupported: false }\n ];\n }\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some(v => v.supported && v.kind === \"rgba\") ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: variants.find(v => v.supported)?.codec || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\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 TGA format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"tga\" && canDecodeTgaToRgba(metadata),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"tga\")\n {\n return decodeTgaToRgba(bytes, metadata);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\n/** Converts a parsed payload into a JSON-safe value for the TGA format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\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\n/**\n * Inspects the supplied bytes without decoding their payload for the TGA format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isPNG(bytes)) return inspectPNG(bytes);\n if (isJPEG(bytes)) return inspectJPEG(bytes);\n if (isDDS(bytes)) return inspectDDS(bytes);\n if (isTGA(bytes)) return inspectTGA(bytes);\n return { sourceFormat: \"\", width: 0, height: 0 };\n}\n\n/**\n * Reports whether the supplied bytes begin with a PNG signature for the TGA\n * format reader.\n */\nexport function isPNG(bytes)\n{\n return bytes.byteLength >= 24 &&\n bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 &&\n bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;\n}\n\n/**\n * Reports whether the supplied bytes begin with a JPEG signature for the TGA\n * format reader.\n */\nexport function isJPEG(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;\n}\n\n/**\n * Reports whether the supplied bytes begin with a DDS signature for the TGA\n * format reader.\n */\nexport function isDDS(bytes)\n{\n return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;\n}\n\n/**\n * Reports whether the supplied bytes have a supported TGA header for the TGA\n * format reader.\n */\nexport function isTGA(bytes)\n{\n if (bytes.byteLength < 18) return false;\n const imageType = bytes[2], width = readU16LE(bytes, 12), height = readU16LE(bytes, 14), bpp = bytes[16];\n return width > 0 && height > 0 && [ 1, 2, 3, 9, 10, 11 ].includes(imageType) && [ 8, 15, 16, 24, 32 ].includes(bpp);\n}\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false\n };\n}\n\nfunction inspectJPEG(bytes)\n{\n let offset = 2;\n while (offset + 9 < bytes.byteLength)\n {\n if (bytes[offset] !== 0xff)\n {\n offset++;\n continue;\n }\n const marker = bytes[offset + 1], length = readU16BE(bytes, offset + 2);\n if ([ 0xc0, 0xc1, 0xc2, 0xc3 ].includes(marker))\n {\n return {\n sourceFormat: \"jpeg\",\n width: readU16BE(bytes, offset + 7),\n height: readU16BE(bytes, offset + 5),\n channels: bytes[offset + 9],\n marker,\n pixelFormat: \"jpeg-ycbcr\",\n isCompressed: true\n };\n }\n offset += Math.max(length + 2, 2);\n }\n return { sourceFormat: \"jpeg\", width: 0, height: 0, channels: 0, pixelFormat: \"jpeg\", isCompressed: true };\n}\n\nfunction inspectDDS(bytes)\n{\n const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\\0+$/u, \"\");\n return {\n sourceFormat: \"dds\",\n width: readU32LE(bytes, 16),\n height: readU32LE(bytes, 12),\n mipCount: Math.max(readU32LE(bytes, 28), 1),\n fourCc,\n textureFormat: fourCc || \"dds-legacy\",\n isCompressed: !!fourCc,\n hasMipMaps: readU32LE(bytes, 28) > 1\n };\n}\n\nfunction inspectTGA(bytes)\n{\n const descriptor = bytes[17];\n const colorMapEntryBytes = Math.ceil(bytes[7] / 8);\n const colorMapBytes = readU16LE(bytes, 5) * colorMapEntryBytes;\n const imageDataOffset = 18 + bytes[0] + colorMapBytes;\n return {\n sourceFormat: \"tga\",\n idLength: bytes[0],\n colorMapType: bytes[1],\n colorMapFirst: readU16LE(bytes, 3),\n colorMapLength: readU16LE(bytes, 5),\n colorMapEntryBits: bytes[7],\n colorMapBytes,\n imageDataOffset,\n imageDataBytes: Math.max(0, bytes.byteLength - imageDataOffset),\n width: readU16LE(bytes, 12),\n height: readU16LE(bytes, 14),\n channels: Math.max(bytes[16] / 8, 1),\n imageType: bytes[2],\n bitsPerPixel: bytes[16],\n descriptor,\n alphaBits: descriptor & 0x0f,\n hasAlpha: bytes[16] === 32 || bytes[16] === 16 || bytes[7] === 32 || bytes[7] === 16,\n origin: getTgaOrigin(descriptor),\n pixelFormat: `tga-${bytes[16]}`,\n isCompressed: [ 9, 10, 11 ].includes(bytes[2])\n };\n}\n\nfunction canDecodeTgaToRgba(metadata)\n{\n const indexed = [ 1, 9 ].includes(metadata.imageType);\n const direct = [ 2, 3, 10, 11 ].includes(metadata.imageType);\n return hasMinimumTgaDataForRgba(metadata) && (\n (direct && metadata.colorMapType === 0 && [ 8, 15, 16, 24, 32 ].includes(metadata.bitsPerPixel)) ||\n (indexed && metadata.colorMapType === 1 && metadata.colorMapLength > 0 &&\n [ 8, 15, 16, 24, 32 ].includes(metadata.colorMapEntryBits) && [ 8, 16 ].includes(metadata.bitsPerPixel))\n );\n}\n\nfunction hasMinimumTgaDataForRgba(metadata)\n{\n if (metadata.byteLength < metadata.imageDataOffset) return false;\n if ([ 9, 10, 11 ].includes(metadata.imageType)) return metadata.imageDataBytes > 0;\n return metadata.imageDataBytes >= metadata.width * metadata.height * Math.ceil(metadata.bitsPerPixel / 8);\n}\n\nfunction decodeTgaToRgba(bytes, metadata)\n{\n if (!canDecodeTgaToRgba(metadata))\n {\n throwUnsupported(metadata, \"Only true-color, grayscale, and indexed TGA images can be decoded to RGBA.\");\n }\n\n const bytesPerPixel = Math.ceil(metadata.bitsPerPixel / 8);\n const palette = metadata.colorMapType === 1 ? readTgaPalette(bytes, metadata) : null;\n const imageOffset = 18 + metadata.idLength + (palette ? metadata.colorMapLength * (metadata.colorMapEntryBits / 8) : 0);\n metadata.palette = palette;\n const pixelCount = metadata.width * metadata.height;\n const rgba = new Uint8Array(pixelCount * 4);\n\n let inputOffset = imageOffset;\n let pixelIndex = 0;\n\n if ([ 1, 2, 3 ].includes(metadata.imageType))\n {\n while (pixelIndex < pixelCount)\n {\n inputOffset = readTgaPixel(bytes, inputOffset, bytesPerPixel, metadata, rgba, pixelIndex++);\n }\n }\n else\n {\n while (pixelIndex < pixelCount)\n {\n const packet = bytes[inputOffset++];\n const count = (packet & 0x7f) + 1;\n if (packet & 0x80)\n {\n const pixel = readTgaPixelBytes(bytes, inputOffset, bytesPerPixel, metadata);\n inputOffset += bytesPerPixel;\n for (let i = 0; i < count && pixelIndex < pixelCount; i++) writeTgaPixel(rgba, pixelIndex++, pixel, metadata);\n }\n else\n {\n for (let i = 0; i < count && pixelIndex < pixelCount; i++)\n {\n inputOffset = readTgaPixel(bytes, inputOffset, bytesPerPixel, metadata, rgba, pixelIndex++);\n }\n }\n }\n }\n\n return {\n payloadType: OUTPUT_RGBA,\n sourceFormat: \"tga\",\n mimeType: \"image/x-tga\",\n containerOnly: false,\n isDecoded: true,\n rgbaDecodeSupported: true,\n width: metadata.width,\n height: metadata.height,\n pixelFormat: \"rgba8unorm\",\n strideBytes: metadata.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: metadata.hasAlpha ? \"straight\" : \"opaque\",\n metadata,\n data: rgba\n };\n}\n\nfunction rawVariant(metadata, canDecode)\n{\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n supported: true,\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"tga\" && canDecode === true\n };\n}\n\nfunction imageMimeType(sourceFormat)\n{\n return IMAGE_MIME_TYPES[sourceFormat] || \"application/octet-stream\";\n}\n\nfunction readTgaPixel(bytes, offset, bytesPerPixel, metadata, rgba, pixelIndex)\n{\n const pixel = readTgaPixelBytes(bytes, offset, bytesPerPixel, metadata);\n writeTgaPixel(rgba, pixelIndex, pixel, metadata);\n return offset + bytesPerPixel;\n}\n\nfunction readTgaPixelBytes(bytes, offset, bytesPerPixel, metadata)\n{\n if (offset + bytesPerPixel > bytes.byteLength) throwUnsupported(metadata, \"TGA pixel data is truncated.\");\n\n if ([ 1, 9 ].includes(metadata.imageType))\n {\n const index = bytesPerPixel === 2 ? readU16LE(bytes, offset) : bytes[offset];\n return metadata.palette[index - metadata.colorMapFirst] || [ 0, 0, 0, 0 ];\n }\n\n if (metadata.imageType === 3 || metadata.imageType === 11)\n {\n const value = bytes[offset];\n return [ value, value, value, bytesPerPixel > 1 ? bytes[offset + 1] : 255 ];\n }\n\n if (bytesPerPixel === 2)\n {\n const value = readU16LE(bytes, offset);\n const r = ((value >>> 10) & 0x1f) * 255 / 31;\n const g = ((value >>> 5) & 0x1f) * 255 / 31;\n const b = (value & 0x1f) * 255 / 31;\n const a = metadata.bitsPerPixel === 15 || (metadata.descriptor & 0x0f) === 0\n ? 255\n : value & 0x8000 ? 255 : 0;\n return [ r, g, b, a ];\n }\n\n return [\n bytes[offset + 2],\n bytes[offset + 1],\n bytes[offset],\n bytesPerPixel === 4 ? bytes[offset + 3] : 255\n ];\n}\n\nfunction readTgaPalette(bytes, metadata)\n{\n const entryBytes = Math.ceil(metadata.colorMapEntryBits / 8);\n const offset = 18 + metadata.idLength;\n const end = offset + metadata.colorMapLength * entryBytes;\n if (end > bytes.byteLength)\n {\n throwUnsupported(metadata, \"TGA color map is truncated.\");\n }\n\n const palette = [];\n for (let i = 0; i < metadata.colorMapLength; i++)\n {\n palette.push(readTgaColor(bytes, offset + i * entryBytes, entryBytes, metadata.colorMapEntryBits));\n }\n return palette;\n}\n\nfunction readTgaColor(bytes, offset, entryBytes, entryBits)\n{\n if (entryBytes === 2)\n {\n const value = readU16LE(bytes, offset);\n return [\n Math.round(((value >>> 10) & 0x1f) * 255 / 31),\n Math.round(((value >>> 5) & 0x1f) * 255 / 31),\n Math.round((value & 0x1f) * 255 / 31),\n entryBits === 16 && (value & 0x8000) ? 255 : entryBits === 16 ? 0 : 255\n ];\n }\n return [\n bytes[offset + 2],\n bytes[offset + 1],\n bytes[offset],\n entryBits === 32 ? bytes[offset + 3] : 255\n ];\n}\n\nfunction writeTgaPixel(rgba, pixelIndex, pixel, metadata)\n{\n const offset = getTgaOutputOffset(metadata, pixelIndex) * 4;\n rgba[offset] = pixel[0];\n rgba[offset + 1] = pixel[1];\n rgba[offset + 2] = pixel[2];\n rgba[offset + 3] = pixel[3];\n}\n\nfunction getTgaOutputOffset(metadata, pixelIndex)\n{\n const xInput = pixelIndex % metadata.width;\n const yInput = Math.floor(pixelIndex / metadata.width);\n const x = metadata.origin.endsWith(\"right\") ? metadata.width - 1 - xInput : xInput;\n const y = metadata.origin.startsWith(\"top\") ? yInput : metadata.height - 1 - yInput;\n return y * metadata.width + x;\n}\n\nfunction getTgaOrigin(descriptor)\n{\n const top = !!(descriptor & 0x20);\n const right = !!(descriptor & 0x10);\n return `${top ? \"top\" : \"bottom\"}-${right ? \"right\" : \"left\"}`;\n}\n\nfunction throwUnsupported(metadata, message)\n{\n const error = new Error(`tga: ${message}`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n}\n\nfunction pngChannels(colorType)\n{\n if (colorType === 0) return 1;\n if (colorType === 2) return 3;\n if (colorType === 3) return 1;\n if (colorType === 4) return 2;\n if (colorType === 6) return 4;\n return 0;\n}\n\nfunction readU16BE(bytes, offset)\n{\n return (bytes[offset] << 8) | bytes[offset + 1];\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction capitalize(value)\n{\n return value ? value[0].toUpperCase() + value.slice(1) : \"Image\";\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","IMAGE_MIME_TYPES","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","detected","inspectBytes","sourceFormat","capitalize","payloadType","mediaTypes","isSupportedWithValues","metadata","canDecodeTga","canDecodeTgaToRgba","variants","kind","codec","supported","reason","containerOnly","isDecoded","rgbaDecodeSupported","rawVariant","toUpperCase","format","some","v","confidence","preferred","find","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","decodeTgaToRgba","Error","code","toJsonValue","Array","isArray","map","output","key","entry","entries","isPNG","inspectPNG","isJPEG","inspectJPEG","isDDS","inspectDDS","isTGA","inspectTGA","width","height","imageType","readU16LE","bpp","colorType","bitDepth","readU32BE","channels","pngChannels","pixelFormat","isCompressed","offset","marker","length","readU16BE","Math","max","fourCc","fromCharCode","readU32LE","mipCount","textureFormat","hasMipMaps","descriptor","colorMapEntryBytes","ceil","colorMapBytes","imageDataOffset","idLength","colorMapType","colorMapFirst","colorMapLength","colorMapEntryBits","imageDataBytes","bitsPerPixel","alphaBits","hasAlpha","origin","getTgaOrigin","indexed","direct","hasMinimumTgaDataForRgba","throwUnsupported","bytesPerPixel","palette","readTgaPalette","imageOffset","pixelCount","rgba","inputOffset","pixelIndex","readTgaPixel","packet","count","pixel","readTgaPixelBytes","i","writeTgaPixel","strideBytes","colorSpace","alphaMode","data","canDecode","index","r","g","b","a","entryBytes","end","push","readTgaColor","entryBits","round","getTgaOutputOffset","xInput","yInput","floor","x","endsWith","y","startsWith","top","right","slice"],"mappings":"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"}
@@ -11,6 +11,11 @@ const DEBUG_OUTPUTS = Object.freeze({
11
11
  wav: "wavJson",
12
12
  mp3: "mp3Json"
13
13
  });
14
+
15
+ /**
16
+ * Normalizes reader options against their supported defaults for the WAV format
17
+ * reader.
18
+ */
14
19
  function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsAudioFormat") {
15
20
  const values = {
16
21
  ...DEFAULT_VALUES,
@@ -21,9 +26,13 @@ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsA
21
26
  values.emit = normalizeEmit(values.emit, values.inputType, readerName);
22
27
  return values;
23
28
  }
29
+
30
+ /** Normalizes the requested input representation for the WAV format reader. */
24
31
  function normalizeInputType(inputType) {
25
32
  return inputType ? String(inputType).replace(/^\./u, "").toLowerCase() : "";
26
33
  }
34
+
35
+ /** Normalizes the requested output representation for the WAV format reader. */
27
36
  function normalizeEmit(emit, inputType, readerName) {
28
37
  if (emit === undefined || emit === null) return OUTPUT_RAW;
29
38
  if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;
@@ -31,12 +40,16 @@ function normalizeEmit(emit, inputType, readerName) {
31
40
  if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;
32
41
  throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
33
42
  }
43
+
44
+ /** Returns a byte view over the supplied binary input for the WAV format reader. */
34
45
  function toBytes(input) {
35
46
  if (input instanceof Uint8Array) return input;
36
47
  if (input instanceof ArrayBuffer) return new Uint8Array(input);
37
48
  if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
38
49
  throw new TypeError("Audio input must be Uint8Array, ArrayBuffer, or DataView");
39
50
  }
51
+
52
+ /** Inspects input using normalized format options for the WAV format reader. */
40
53
  function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
41
54
  const bytes = toBytes(input);
42
55
  const metadata = inspectBytes(bytes);
@@ -51,6 +64,11 @@ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
51
64
  ...metadata
52
65
  };
53
66
  }
67
+
68
+ /**
69
+ * Reports whether input is supported under normalized format options for the WAV
70
+ * format reader.
71
+ */
54
72
  function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
55
73
  try {
56
74
  const metadata = inspectWithValues(input, values, expectedType);
@@ -98,6 +116,8 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = ""
98
116
  };
99
117
  }
100
118
  }
119
+
120
+ /** Reads input using normalized format options for the WAV format reader. */
101
121
  function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
102
122
  const bytes = toBytes(input);
103
123
  const metadata = inspectWithValues(bytes, values, expectedType);
@@ -127,6 +147,8 @@ function getAudioMimeType(metadata) {
127
147
  if (metadata.sourceFormat === "mp3") return "audio/mpeg";
128
148
  return "audio/wav";
129
149
  }
150
+
151
+ /** Converts a parsed payload into a JSON-safe value for the WAV format reader. */
130
152
  function toJsonValue(value) {
131
153
  if (value instanceof Uint8Array) return {
132
154
  byteLength: value.byteLength
@@ -139,6 +161,11 @@ function toJsonValue(value) {
139
161
  }
140
162
  return value;
141
163
  }
164
+
165
+ /**
166
+ * Inspects the supplied bytes without decoding their payload for the WAV format
167
+ * reader.
168
+ */
142
169
  function inspectBytes(bytes) {
143
170
  if (isWAV(bytes)) return inspectWAV(bytes);
144
171
  if (isMP3(bytes)) return inspectMP3(bytes);
@@ -147,9 +174,19 @@ function inspectBytes(bytes) {
147
174
  audioFormat: ""
148
175
  };
149
176
  }
177
+
178
+ /**
179
+ * Reports whether the supplied bytes have a RIFF/WAVE header for the WAV format
180
+ * reader.
181
+ */
150
182
  function isWAV(bytes) {
151
183
  return bytes.byteLength >= 12 && fourCc(bytes, 0) === "RIFF" && fourCc(bytes, 8) === "WAVE";
152
184
  }
185
+
186
+ /**
187
+ * Reports whether the supplied bytes have a supported MP3 header for the WAV
188
+ * format reader.
189
+ */
153
190
  function isMP3(bytes) {
154
191
  return bytes.byteLength >= 3 && (fourCc(bytes, 0, 3) === "ID3" || bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0);
155
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/wav/core/helpers.js"],"sourcesContent":["export const OUTPUT_AUDIO = \"audio\";\nexport const OUTPUT_PCM = \"pcm\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n wav: \"wavJson\",\n mp3: \"mp3Json\"\n});\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsAudioFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\nexport function normalizeInputType(inputType)\n{\n return inputType ? String(inputType).replace(/^\\./u, \"\").toLowerCase() : \"\";\n}\n\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_AUDIO, OUTPUT_PCM, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\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(\"Audio input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectBytes(bytes);\n if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsAudioFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n sourceFormat: expectedType || values.inputType || metadata.sourceFormat,\n ...metadata\n };\n}\n\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canEmitPcm = metadata.sourceFormat === \"wav\" && canEmitWavPcm(metadata);\n const mimeType = getAudioMimeType(metadata);\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (canEmitPcm ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: canEmitPcm ? \"pcm\" : \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized audio format.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.audioFormat || metadata.sourceFormat,\n mimeType,\n supported: true,\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: canEmitPcm\n },\n {\n kind: \"pcm\",\n codec: metadata.sampleFormat || \"pcm\",\n supported: canEmitPcm,\n payloadType: canEmitPcm ? \"pcm\" : \"pcm\",\n reason: canEmitPcm ? \"\" : \"Only WAV PCM/IEEE-float data chunks can be emitted as PCM.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\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, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: getAudioMimeType(metadata),\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: metadata.sourceFormat === \"wav\" && canEmitWavPcm(metadata),\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\n if ((values.emit === OUTPUT_PCM || values.emit === OUTPUT_AUDIO) && metadata.sourceFormat === \"wav\")\n {\n return readWavPcm(bytes, metadata, values.emit);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction getAudioMimeType(metadata)\n{\n if (metadata.sourceFormat === \"mp3\") return \"audio/mpeg\";\n return \"audio/wav\";\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\nexport function inspectBytes(bytes)\n{\n if (isWAV(bytes)) return inspectWAV(bytes);\n if (isMP3(bytes)) return inspectMP3(bytes);\n return { sourceFormat: \"\", audioFormat: \"\" };\n}\n\nexport function isWAV(bytes)\n{\n return bytes.byteLength >= 12 && fourCc(bytes, 0) === \"RIFF\" && fourCc(bytes, 8) === \"WAVE\";\n}\n\nexport function isMP3(bytes)\n{\n return bytes.byteLength >= 3 &&\n (fourCc(bytes, 0, 3) === \"ID3\" || (bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0));\n}\n\nfunction inspectWAV(bytes)\n{\n let offset = 12;\n const info = {\n sourceFormat: \"wav\",\n audioFormat: \"wav\",\n sampleRate: 0,\n channels: 0,\n bitsPerSample: 0,\n byteRate: 0,\n blockAlign: 0,\n dataOffset: 0,\n dataBytes: 0,\n containerFormatTag: 0,\n validBitsPerSample: 0,\n channelMask: 0,\n channelLayout: \"unspecified\",\n durationSeconds: 0\n };\n while (offset + 8 <= bytes.byteLength)\n {\n const id = fourCc(bytes, offset), size = readU32LE(bytes, offset + 4), dataOffset = offset + 8;\n if (id === \"fmt \" && dataOffset + 16 <= bytes.byteLength)\n {\n const containerFormatTag = readU16LE(bytes, dataOffset);\n info.containerFormatTag = containerFormatTag;\n info.formatTag = containerFormatTag;\n info.channels = readU16LE(bytes, dataOffset + 2);\n info.sampleRate = readU32LE(bytes, dataOffset + 4);\n info.byteRate = readU32LE(bytes, dataOffset + 8);\n info.blockAlign = readU16LE(bytes, dataOffset + 12);\n info.bitsPerSample = readU16LE(bytes, dataOffset + 14);\n info.validBitsPerSample = info.bitsPerSample;\n if (containerFormatTag === 0xfffe && size >= 40 && dataOffset + 40 <= bytes.byteLength)\n {\n info.validBitsPerSample = readU16LE(bytes, dataOffset + 18) || info.bitsPerSample;\n info.channelMask = readU32LE(bytes, dataOffset + 20);\n info.subFormatTag = readU16LE(bytes, dataOffset + 24);\n info.formatTag = info.subFormatTag;\n info.channelLayout = channelLayoutFromMask(info.channelMask, info.channels);\n }\n info.sampleFormat = wavSampleFormat(info.formatTag, info.bitsPerSample);\n }\n if (id === \"data\")\n {\n info.dataOffset = dataOffset;\n info.dataBytes = size;\n }\n offset = dataOffset + size + (size & 1);\n }\n info.frameCount = info.blockAlign ? Math.floor(info.dataBytes / info.blockAlign) : 0;\n info.durationSeconds = info.sampleRate ? info.frameCount / info.sampleRate : 0;\n return info;\n}\n\nfunction inspectMP3(bytes)\n{\n return {\n sourceFormat: \"mp3\",\n audioFormat: \"mp3\",\n hasId3: fourCc(bytes, 0, 3) === \"ID3\"\n };\n}\n\nfunction fourCc(bytes, offset, length = 4)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i] || 0);\n return value;\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction canEmitWavPcm(metadata)\n{\n return metadata.dataOffset > 0 &&\n [ 1, 3 ].includes(metadata.formatTag) &&\n metadata.channels > 0 &&\n metadata.sampleRate > 0 &&\n isSupportedWavSampleWidth(metadata);\n}\n\nfunction readWavPcm(bytes, metadata, emit)\n{\n if (!canEmitWavPcm(metadata))\n {\n const error = new Error(\"wav: only PCM and IEEE-float WAV data chunks can be emitted as PCM\");\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n }\n\n const end = metadata.dataOffset + metadata.dataBytes;\n if (end > bytes.byteLength)\n {\n const error = new Error(\"wav: data chunk is truncated\");\n error.code = \"CJS_FORMAT_TRUNCATED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n }\n\n const data = decodeWavSamples(bytes, metadata, end);\n\n return {\n payloadType: emit === OUTPUT_AUDIO ? OUTPUT_AUDIO : OUTPUT_PCM,\n sourceFormat: \"wav\",\n containerOnly: false,\n isDecoded: true,\n pcmDecodeSupported: true,\n audioFormat: metadata.sampleFormat,\n sampleFormat: metadata.sampleFormat,\n sampleRate: metadata.sampleRate,\n channels: metadata.channels,\n interleaving: \"interleaved\",\n channelLayout: metadata.channelLayout || \"unspecified\",\n bitsPerSample: metadata.bitsPerSample,\n blockAlign: metadata.blockAlign,\n frameCount: metadata.frameCount,\n durationSeconds: metadata.sampleRate ? metadata.frameCount / metadata.sampleRate : 0,\n metadata,\n data\n };\n}\n\nfunction decodeWavSamples(bytes, metadata, end)\n{\n const bytesPerSample = metadata.bitsPerSample / 8;\n if (!Number.isInteger(bytesPerSample) || bytesPerSample <= 0 || metadata.dataBytes % bytesPerSample !== 0)\n {\n const error = new Error(`wav: unsupported sample width ${metadata.bitsPerSample}`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n }\n\n const sampleCount = metadata.dataBytes / bytesPerSample;\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n if (metadata.formatTag === 1)\n {\n if (metadata.bitsPerSample === 8) return Uint8Array.from(bytes.subarray(metadata.dataOffset, end));\n if (metadata.bitsPerSample === 16)\n {\n const data = new Int16Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getInt16(metadata.dataOffset + i * 2, true);\n return data;\n }\n if (metadata.bitsPerSample === 24)\n {\n const data = new Int32Array(sampleCount);\n for (let i = 0; i < sampleCount; i++)\n {\n const offset = metadata.dataOffset + i * 3;\n let value = view.getUint8(offset) | (view.getUint8(offset + 1) << 8) | (view.getUint8(offset + 2) << 16);\n if (value & 0x800000) value |= 0xff000000;\n data[i] = value;\n }\n return data;\n }\n if (metadata.bitsPerSample === 32)\n {\n const data = new Int32Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getInt32(metadata.dataOffset + i * 4, true);\n return data;\n }\n }\n if (metadata.formatTag === 3 && metadata.bitsPerSample === 32)\n {\n const data = new Float32Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getFloat32(metadata.dataOffset + i * 4, true);\n return data;\n }\n if (metadata.formatTag === 3 && metadata.bitsPerSample === 64)\n {\n const data = new Float64Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getFloat64(metadata.dataOffset + i * 8, true);\n return data;\n }\n\n const error = new Error(`wav: unsupported ${metadata.sampleFormat} sample data`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n}\n\nfunction isSupportedWavSampleWidth(metadata)\n{\n if (metadata.formatTag === 1) return [ 8, 16, 24, 32 ].includes(metadata.bitsPerSample);\n if (metadata.formatTag === 3) return [ 32, 64 ].includes(metadata.bitsPerSample);\n return false;\n}\n\nfunction wavSampleFormat(formatTag, bitsPerSample)\n{\n if (formatTag === 3) return `float${bitsPerSample}`;\n if (formatTag === 1) return `pcm${bitsPerSample}`;\n return `wav-format-${formatTag}`;\n}\n\nfunction channelLayoutFromMask(mask, channels)\n{\n const names = [\n [ 0x001, \"front-left\" ], [ 0x002, \"front-right\" ], [ 0x004, \"front-center\" ],\n [ 0x008, \"low-frequency\" ], [ 0x010, \"back-left\" ], [ 0x020, \"back-right\" ],\n [ 0x040, \"front-left-of-center\" ], [ 0x080, \"front-right-of-center\" ], [ 0x100, \"back-center\" ],\n [ 0x200, \"side-left\" ], [ 0x400, \"side-right\" ], [ 0x800, \"top-center\" ],\n [ 0x1000, \"top-front-left\" ], [ 0x2000, \"top-front-center\" ], [ 0x4000, \"top-front-right\" ],\n [ 0x8000, \"top-back-left\" ], [ 0x10000, \"top-back-center\" ], [ 0x20000, \"top-back-right\" ]\n ];\n const layout = names.filter(([ bit ]) => mask & bit).map(([ , name ]) => name);\n return layout.length === channels ? layout : layout.length ? layout : \"unspecified\";\n}\n"],"names":["OUTPUT_AUDIO","OUTPUT_PCM","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","wav","mp3","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","metadata","inspectBytes","sourceFormat","payloadType","mediaTypes","isSupportedWithValues","canEmitPcm","canEmitWavPcm","mimeType","getAudioMimeType","format","supported","confidence","preferred","reason","variants","kind","codec","audioFormat","containerOnly","isDecoded","pcmDecodeSupported","sampleFormat","warnings","errors","error","message","readWithValues","readWavPcm","Error","code","toJsonValue","value","Array","isArray","map","output","key","entry","entries","isWAV","inspectWAV","isMP3","inspectMP3","fourCc","offset","info","sampleRate","channels","bitsPerSample","byteRate","blockAlign","dataOffset","dataBytes","containerFormatTag","validBitsPerSample","channelMask","channelLayout","durationSeconds","id","size","readU32LE","readU16LE","formatTag","subFormatTag","channelLayoutFromMask","wavSampleFormat","frameCount","Math","floor","hasId3","length","i","fromCharCode","isSupportedWavSampleWidth","end","data","decodeWavSamples","interleaving","bytesPerSample","Number","isInteger","sampleCount","view","DataView","from","subarray","Int16Array","getInt16","Int32Array","getUint8","getInt32","Float32Array","getFloat32","Float64Array","getFloat64","mask","names","layout","filter","bit","name"],"mappings":"AAAO,MAAMA,YAAY,GAAG;AACrB,MAAMC,UAAU,GAAG;AACnB,MAAMC,UAAU,GAAG;AACnB,MAAMC,WAAW,GAAG;MAEdC,cAAc,GAAGC,MAAM,CAACC,MAAM,CAAC;AACxCC,EAAAA,IAAI,EAAEL,UAAU;AAChBM,EAAAA,SAAS,EAAE,EAAE;AACbC,EAAAA,MAAM,EAAE;AACZ,CAAC;AAED,MAAMC,aAAa,GAAGL,MAAM,CAACC,MAAM,CAAC;AAChCK,EAAAA,GAAG,EAAE,SAAS;AACdC,EAAAA,GAAG,EAAE;AACT,CAAC,CAAC;AAEK,SAASC,eAAeA,CAACC,IAAI,GAAGV,cAAc,EAAEW,OAAO,GAAG,EAAE,EAAEC,UAAU,GAAG,gBAAgB,EAClG;AACI,EAAA,MAAMC,MAAM,GAAG;AAAE,IAAA,GAAGb,cAAc;AAAE,IAAA,IAAIU,IAAI,IAAI,EAAE,CAAC;IAAE,IAAIC,OAAO,IAAI,EAAE;GAAG;EACzEE,MAAM,CAACT,SAAS,GAAGU,kBAAkB,CAACD,MAAM,CAACT,SAAS,CAAC;AACvDS,EAAAA,MAAM,CAACV,IAAI,GAAGY,aAAa,CAACF,MAAM,CAACV,IAAI,EAAEU,MAAM,CAACT,SAAS,EAAEQ,UAAU,CAAC;AACtE,EAAA,OAAOC,MAAM;AACjB;AAEO,SAASC,kBAAkBA,CAACV,SAAS,EAC5C;AACI,EAAA,OAAOA,SAAS,GAAGY,MAAM,CAACZ,SAAS,CAAC,CAACa,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACC,WAAW,EAAE,GAAG,EAAE;AAC/E;AAEO,SAASH,aAAaA,CAACZ,IAAI,EAAEC,SAAS,EAAEQ,UAAU,EACzD;EACI,IAAIT,IAAI,KAAKgB,SAAS,IAAIhB,IAAI,KAAK,IAAI,EAAE,OAAOL,UAAU;AAC1D,EAAA,IAAIK,IAAI,KAAKJ,WAAW,IAAIK,SAAS,EAAE,OAAOE,aAAa,CAACF,SAAS,CAAC,IAAIL,WAAW;AACrF,EAAA,IAAI,CAAEH,YAAY,EAAEC,UAAU,EAAEC,UAAU,EAAEC,WAAW,CAAE,CAACqB,QAAQ,CAACjB,IAAI,CAAC,EAAE,OAAOA,IAAI;AACrF,EAAA,IAAIF,MAAM,CAACY,MAAM,CAACP,aAAa,CAAC,CAACc,QAAQ,CAACjB,IAAI,CAAC,EAAE,OAAOA,IAAI;AAC5D,EAAA,MAAM,IAAIkB,SAAS,CAAC,CAAA,EAAGT,UAAU,CAAA,qBAAA,EAAwBU,IAAI,CAACC,SAAS,CAACpB,IAAI,CAAC,EAAE,CAAC;AACpF;AAEO,SAASqB,OAAOA,CAACC,KAAK,EAC7B;AACI,EAAA,IAAIA,KAAK,YAAYC,UAAU,EAAE,OAAOD,KAAK;EAC7C,IAAIA,KAAK,YAAYE,WAAW,EAAE,OAAO,IAAID,UAAU,CAACD,KAAK,CAAC;EAC9D,IAAIE,WAAW,CAACC,MAAM,CAACH,KAAK,CAAC,EAAE,OAAO,IAAIC,UAAU,CAACD,KAAK,CAACI,MAAM,EAAEJ,KAAK,CAACK,UAAU,EAAEL,KAAK,CAACM,UAAU,CAAC;AACtG,EAAA,MAAM,IAAIV,SAAS,CAAC,0DAA0D,CAAC;AACnF;AAEO,SAASW,iBAAiBA,CAACP,KAAK,EAAEZ,MAAM,GAAGb,cAAc,EAAEiC,YAAY,GAAG,EAAE,EACnF;AACI,EAAA,MAAMC,KAAK,GAAGV,OAAO,CAACC,KAAK,CAAC;AAC5B,EAAA,MAAMU,QAAQ,GAAGC,YAAY,CAACF,KAAK,CAAC;EACpC,IAAID,YAAY,IAAIE,QAAQ,CAACE,YAAY,IAAIF,QAAQ,CAACE,YAAY,KAAKJ,YAAY,EACnF;IACI,MAAM,IAAIZ,SAAS,CAAC,CAAA,yBAAA,EAA4BY,YAAY,SAASE,QAAQ,CAACE,YAAY,CAAA,CAAE,CAAC;AACjG,EAAA;EACA,OAAO;AACHC,IAAAA,WAAW,EAAE,OAAO;IACpBC,UAAU,EAAE,CAAE,OAAO,CAAE;IACvBR,UAAU,EAAEG,KAAK,CAACH,UAAU;IAC5BM,YAAY,EAAEJ,YAAY,IAAIpB,MAAM,CAACT,SAAS,IAAI+B,QAAQ,CAACE,YAAY;IACvE,GAAGF;GACN;AACL;AAEO,SAASK,qBAAqBA,CAACf,KAAK,EAAEZ,MAAM,GAAGb,cAAc,EAAEiC,YAAY,GAAG,EAAE,EACvF;EACI,IACA;IACI,MAAME,QAAQ,GAAGH,iBAAiB,CAACP,KAAK,EAAEZ,MAAM,EAAEoB,YAAY,CAAC;IAC/D,MAAMQ,UAAU,GAAGN,QAAQ,CAACE,YAAY,KAAK,KAAK,IAAIK,aAAa,CAACP,QAAQ,CAAC;AAC7E,IAAA,MAAMQ,QAAQ,GAAGC,gBAAgB,CAACT,QAAQ,CAAC;IAC3C,OAAO;MACHU,MAAM,EAAEV,QAAQ,CAACE,YAAY;AAC7BhC,MAAAA,MAAM,EAAEQ,MAAM,CAACR,MAAM,IAAI,QAAQ;MACjCyC,SAAS,EAAEX,QAAQ,CAACE,YAAY,GAAII,UAAU,GAAG,MAAM,GAAG,SAAS,GAAI,MAAM;AAC7EM,MAAAA,UAAU,EAAEZ,QAAQ,CAACE,YAAY,GAAG,CAAC,GAAG,CAAC;AACzCW,MAAAA,SAAS,EAAEP,UAAU,GAAG,KAAK,GAAG,EAAE;AAClCQ,MAAAA,MAAM,EAAEd,QAAQ,CAACE,YAAY,GAAG,8BAA8B,GAAG,4BAA4B;MAC7FF,QAAQ;AACRe,MAAAA,QAAQ,EAAE,CACN;AACIC,QAAAA,IAAI,EAAE,KAAK;AACXb,QAAAA,WAAW,EAAE,KAAK;AAClBc,QAAAA,KAAK,EAAEjB,QAAQ,CAACkB,WAAW,IAAIlB,QAAQ,CAACE,YAAY;QACpDM,QAAQ;AACRG,QAAAA,SAAS,EAAE,IAAI;AACfQ,QAAAA,aAAa,EAAE,IAAI;AACnBC,QAAAA,SAAS,EAAE,KAAK;AAChBC,QAAAA,kBAAkB,EAAEf;AACxB,OAAC,EACD;AACIU,QAAAA,IAAI,EAAE,KAAK;AACXC,QAAAA,KAAK,EAAEjB,QAAQ,CAACsB,YAAY,IAAI,KAAK;AACrCX,QAAAA,SAAS,EAAEL,UAAU;AACrBH,QAAAA,WAAW,EAAEG,UAAU,GAAG,KAAK,GAAG,KAAK;AACvCQ,QAAAA,MAAM,EAAER,UAAU,GAAG,EAAE,GAAG;AAC9B,OAAC,CACJ;AACDiB,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,MAAM,EAAE;KACX;EACL,CAAC,CACD,OAAOC,KAAK,EACZ;IACI,OAAO;AACHf,MAAAA,MAAM,EAAEZ,YAAY,IAAIpB,MAAM,CAACT,SAAS,IAAI,EAAE;AAC9CC,MAAAA,MAAM,EAAEQ,MAAM,CAACR,MAAM,IAAI,QAAQ;AACjCyC,MAAAA,SAAS,EAAE,MAAM;AACjBC,MAAAA,UAAU,EAAE,CAAC;AACbC,MAAAA,SAAS,EAAE,EAAE;MACbC,MAAM,EAAEW,KAAK,CAACC,OAAO;AACrB1B,MAAAA,QAAQ,EAAE,IAAI;AACde,MAAAA,QAAQ,EAAE,EAAE;AACZQ,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,MAAM,EAAE,CAAEC,KAAK,CAACC,OAAO;KAC1B;AACL,EAAA;AACJ;AAEO,SAASC,cAAcA,CAACrC,KAAK,EAAEZ,MAAM,GAAGb,cAAc,EAAEiC,YAAY,GAAG,EAAE,EAChF;AACI,EAAA,MAAMC,KAAK,GAAGV,OAAO,CAACC,KAAK,CAAC;EAC5B,MAAMU,QAAQ,GAAGH,iBAAiB,CAACE,KAAK,EAAErB,MAAM,EAAEoB,YAAY,CAAC;AAC/D,EAAA,IAAIpB,MAAM,CAACV,IAAI,KAAKL,UAAU,EAC9B;IACI,OAAO;AACHwC,MAAAA,WAAW,EAAE,KAAK;MAClBD,YAAY,EAAEF,QAAQ,CAACE,YAAY;AACnCM,MAAAA,QAAQ,EAAEC,gBAAgB,CAACT,QAAQ,CAAC;AACpCmB,MAAAA,aAAa,EAAE,IAAI;AACnBC,MAAAA,SAAS,EAAE,KAAK;MAChBC,kBAAkB,EAAErB,QAAQ,CAACE,YAAY,KAAK,KAAK,IAAIK,aAAa,CAACP,QAAQ,CAAC;MAC9EA,QAAQ;AACRD,MAAAA;KACH;AACL,EAAA;AACA,EAAA,IAAIrB,MAAM,CAACV,IAAI,KAAKJ,WAAW,IAAIc,MAAM,CAACV,IAAI,KAAKG,aAAa,CAAC6B,QAAQ,CAACE,YAAY,CAAC,EAAE,OAAOF,QAAQ;AACxG,EAAA,IAAI,CAACtB,MAAM,CAACV,IAAI,KAAKN,UAAU,IAAIgB,MAAM,CAACV,IAAI,KAAKP,YAAY,KAAKuC,QAAQ,CAACE,YAAY,KAAK,KAAK,EACnG;IACI,OAAO0B,UAAU,CAAC7B,KAAK,EAAEC,QAAQ,EAAEtB,MAAM,CAACV,IAAI,CAAC;AACnD,EAAA;AAEA,EAAA,MAAMyD,KAAK,GAAG,IAAII,KAAK,CAAC,CAAA,EAAG7B,QAAQ,CAACE,YAAY,CAAA,QAAA,EAAWxB,MAAM,CAACV,IAAI,0BAA0B,CAAC;EACjGyD,KAAK,CAACK,IAAI,GAAG,mCAAmC;AAChDL,EAAAA,KAAK,CAACvB,YAAY,GAAGF,QAAQ,CAACE,YAAY;AAC1CuB,EAAAA,KAAK,CAACzD,IAAI,GAAGU,MAAM,CAACV,IAAI;AACxB,EAAA,MAAMyD,KAAK;AACf;AAEA,SAAShB,gBAAgBA,CAACT,QAAQ,EAClC;AACI,EAAA,IAAIA,QAAQ,CAACE,YAAY,KAAK,KAAK,EAAE,OAAO,YAAY;AACxD,EAAA,OAAO,WAAW;AACtB;AAEO,SAAS6B,WAAWA,CAACC,KAAK,EACjC;AACI,EAAA,IAAIA,KAAK,YAAYzC,UAAU,EAAE,OAAO;IAAEK,UAAU,EAAEoC,KAAK,CAACpC;GAAY;AACxE,EAAA,IAAIqC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE,OAAOA,KAAK,CAACG,GAAG,CAACJ,WAAW,CAAC;AACvD,EAAA,IAAIC,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EACtC;IACI,MAAMI,MAAM,GAAG,EAAE;IACjB,KAAK,MAAM,CAAEC,GAAG,EAAEC,KAAK,CAAE,IAAIxE,MAAM,CAACyE,OAAO,CAACP,KAAK,CAAC,EAAEI,MAAM,CAACC,GAAG,CAAC,GAAGN,WAAW,CAACO,KAAK,CAAC;AACpF,IAAA,OAAOF,MAAM;AACjB,EAAA;AACA,EAAA,OAAOJ,KAAK;AAChB;AAEO,SAAS/B,YAAYA,CAACF,KAAK,EAClC;EACI,IAAIyC,KAAK,CAACzC,KAAK,CAAC,EAAE,OAAO0C,UAAU,CAAC1C,KAAK,CAAC;EAC1C,IAAI2C,KAAK,CAAC3C,KAAK,CAAC,EAAE,OAAO4C,UAAU,CAAC5C,KAAK,CAAC;EAC1C,OAAO;AAAEG,IAAAA,YAAY,EAAE,EAAE;AAAEgB,IAAAA,WAAW,EAAE;GAAI;AAChD;AAEO,SAASsB,KAAKA,CAACzC,KAAK,EAC3B;EACI,OAAOA,KAAK,CAACH,UAAU,IAAI,EAAE,IAAIgD,MAAM,CAAC7C,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI6C,MAAM,CAAC7C,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM;AAC/F;AAEO,SAAS2C,KAAKA,CAAC3C,KAAK,EAC3B;AACI,EAAA,OAAOA,KAAK,CAACH,UAAU,IAAI,CAAC,KACvBgD,MAAM,CAAC7C,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAKA,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAACA,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAK,CAAC;AAC5F;AAEA,SAAS0C,UAAUA,CAAC1C,KAAK,EACzB;EACI,IAAI8C,MAAM,GAAG,EAAE;AACf,EAAA,MAAMC,IAAI,GAAG;AACT5C,IAAAA,YAAY,EAAE,KAAK;AACnBgB,IAAAA,WAAW,EAAE,KAAK;AAClB6B,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,QAAQ,EAAE,CAAC;AACXC,IAAAA,aAAa,EAAE,CAAC;AAChBC,IAAAA,QAAQ,EAAE,CAAC;AACXC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,kBAAkB,EAAE,CAAC;AACrBC,IAAAA,kBAAkB,EAAE,CAAC;AACrBC,IAAAA,WAAW,EAAE,CAAC;AACdC,IAAAA,aAAa,EAAE,aAAa;AAC5BC,IAAAA,eAAe,EAAE;GACpB;AACD,EAAA,OAAOb,MAAM,GAAG,CAAC,IAAI9C,KAAK,CAACH,UAAU,EACrC;AACI,IAAA,MAAM+D,EAAE,GAAGf,MAAM,CAAC7C,KAAK,EAAE8C,MAAM,CAAC;MAAEe,IAAI,GAAGC,SAAS,CAAC9D,KAAK,EAAE8C,MAAM,GAAG,CAAC,CAAC;MAAEO,UAAU,GAAGP,MAAM,GAAG,CAAC;IAC9F,IAAIc,EAAE,KAAK,MAAM,IAAIP,UAAU,GAAG,EAAE,IAAIrD,KAAK,CAACH,UAAU,EACxD;AACI,MAAA,MAAM0D,kBAAkB,GAAGQ,SAAS,CAAC/D,KAAK,EAAEqD,UAAU,CAAC;MACvDN,IAAI,CAACQ,kBAAkB,GAAGA,kBAAkB;MAC5CR,IAAI,CAACiB,SAAS,GAAGT,kBAAkB;MACnCR,IAAI,CAACE,QAAQ,GAAGc,SAAS,CAAC/D,KAAK,EAAEqD,UAAU,GAAG,CAAC,CAAC;MAChDN,IAAI,CAACC,UAAU,GAAGc,SAAS,CAAC9D,KAAK,EAAEqD,UAAU,GAAG,CAAC,CAAC;MAClDN,IAAI,CAACI,QAAQ,GAAGW,SAAS,CAAC9D,KAAK,EAAEqD,UAAU,GAAG,CAAC,CAAC;MAChDN,IAAI,CAACK,UAAU,GAAGW,SAAS,CAAC/D,KAAK,EAAEqD,UAAU,GAAG,EAAE,CAAC;MACnDN,IAAI,CAACG,aAAa,GAAGa,SAAS,CAAC/D,KAAK,EAAEqD,UAAU,GAAG,EAAE,CAAC;AACtDN,MAAAA,IAAI,CAACS,kBAAkB,GAAGT,IAAI,CAACG,aAAa;AAC5C,MAAA,IAAIK,kBAAkB,KAAK,MAAM,IAAIM,IAAI,IAAI,EAAE,IAAIR,UAAU,GAAG,EAAE,IAAIrD,KAAK,CAACH,UAAU,EACtF;AACIkD,QAAAA,IAAI,CAACS,kBAAkB,GAAGO,SAAS,CAAC/D,KAAK,EAAEqD,UAAU,GAAG,EAAE,CAAC,IAAIN,IAAI,CAACG,aAAa;QACjFH,IAAI,CAACU,WAAW,GAAGK,SAAS,CAAC9D,KAAK,EAAEqD,UAAU,GAAG,EAAE,CAAC;QACpDN,IAAI,CAACkB,YAAY,GAAGF,SAAS,CAAC/D,KAAK,EAAEqD,UAAU,GAAG,EAAE,CAAC;AACrDN,QAAAA,IAAI,CAACiB,SAAS,GAAGjB,IAAI,CAACkB,YAAY;AAClClB,QAAAA,IAAI,CAACW,aAAa,GAAGQ,qBAAqB,CAACnB,IAAI,CAACU,WAAW,EAAEV,IAAI,CAACE,QAAQ,CAAC;AAC/E,MAAA;AACAF,MAAAA,IAAI,CAACxB,YAAY,GAAG4C,eAAe,CAACpB,IAAI,CAACiB,SAAS,EAAEjB,IAAI,CAACG,aAAa,CAAC;AAC3E,IAAA;IACA,IAAIU,EAAE,KAAK,MAAM,EACjB;MACIb,IAAI,CAACM,UAAU,GAAGA,UAAU;MAC5BN,IAAI,CAACO,SAAS,GAAGO,IAAI;AACzB,IAAA;IACAf,MAAM,GAAGO,UAAU,GAAGQ,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC;AAC3C,EAAA;EACAd,IAAI,CAACqB,UAAU,GAAGrB,IAAI,CAACK,UAAU,GAAGiB,IAAI,CAACC,KAAK,CAACvB,IAAI,CAACO,SAAS,GAAGP,IAAI,CAACK,UAAU,CAAC,GAAG,CAAC;AACpFL,EAAAA,IAAI,CAACY,eAAe,GAAGZ,IAAI,CAACC,UAAU,GAAGD,IAAI,CAACqB,UAAU,GAAGrB,IAAI,CAACC,UAAU,GAAG,CAAC;AAC9E,EAAA,OAAOD,IAAI;AACf;AAEA,SAASH,UAAUA,CAAC5C,KAAK,EACzB;EACI,OAAO;AACHG,IAAAA,YAAY,EAAE,KAAK;AACnBgB,IAAAA,WAAW,EAAE,KAAK;IAClBoD,MAAM,EAAE1B,MAAM,CAAC7C,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK;GACnC;AACL;AAEA,SAAS6C,MAAMA,CAAC7C,KAAK,EAAE8C,MAAM,EAAE0B,MAAM,GAAG,CAAC,EACzC;EACI,IAAIvC,KAAK,GAAG,EAAE;EACd,KAAK,IAAIwC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,EAAEC,CAAC,EAAE,EAAExC,KAAK,IAAInD,MAAM,CAAC4F,YAAY,CAAC1E,KAAK,CAAC8C,MAAM,GAAG2B,CAAC,CAAC,IAAI,CAAC,CAAC;AACrF,EAAA,OAAOxC,KAAK;AAChB;AAEA,SAAS8B,SAASA,CAAC/D,KAAK,EAAE8C,MAAM,EAChC;AACI,EAAA,OAAO9C,KAAK,CAAC8C,MAAM,CAAC,GAAI9C,KAAK,CAAC8C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE;AACnD;AAEA,SAASgB,SAASA,CAAC9D,KAAK,EAAE8C,MAAM,EAChC;AACI,EAAA,OAAO,CAAC9C,KAAK,CAAC8C,MAAM,CAAC,GAAI9C,KAAK,CAAC8C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAI9C,KAAK,CAAC8C,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,GAAI9C,KAAK,CAAC8C,MAAM,GAAG,CAAC,CAAC,GAAG,SAAU,MAAM,CAAC;AACzH;AAEA,SAAStC,aAAaA,CAACP,QAAQ,EAC/B;AACI,EAAA,OAAOA,QAAQ,CAACoD,UAAU,GAAG,CAAC,IAC1B,CAAE,CAAC,EAAE,CAAC,CAAE,CAACnE,QAAQ,CAACe,QAAQ,CAAC+D,SAAS,CAAC,IACrC/D,QAAQ,CAACgD,QAAQ,GAAG,CAAC,IACrBhD,QAAQ,CAAC+C,UAAU,GAAG,CAAC,IACvB2B,yBAAyB,CAAC1E,QAAQ,CAAC;AAC3C;AAEA,SAAS4B,UAAUA,CAAC7B,KAAK,EAAEC,QAAQ,EAAEhC,IAAI,EACzC;AACI,EAAA,IAAI,CAACuC,aAAa,CAACP,QAAQ,CAAC,EAC5B;AACI,IAAA,MAAMyB,KAAK,GAAG,IAAII,KAAK,CAAC,oEAAoE,CAAC;IAC7FJ,KAAK,CAACK,IAAI,GAAG,iCAAiC;AAC9CL,IAAAA,KAAK,CAACvB,YAAY,GAAGF,QAAQ,CAACE,YAAY;AAC1C,IAAA,MAAMuB,KAAK;AACf,EAAA;EAEA,MAAMkD,GAAG,GAAG3E,QAAQ,CAACoD,UAAU,GAAGpD,QAAQ,CAACqD,SAAS;AACpD,EAAA,IAAIsB,GAAG,GAAG5E,KAAK,CAACH,UAAU,EAC1B;AACI,IAAA,MAAM6B,KAAK,GAAG,IAAII,KAAK,CAAC,8BAA8B,CAAC;IACvDJ,KAAK,CAACK,IAAI,GAAG,sBAAsB;AACnCL,IAAAA,KAAK,CAACvB,YAAY,GAAGF,QAAQ,CAACE,YAAY;AAC1C,IAAA,MAAMuB,KAAK;AACf,EAAA;EAEA,MAAMmD,IAAI,GAAGC,gBAAgB,CAAC9E,KAAK,EAAEC,QAAQ,EAAE2E,GAAG,CAAC;EAEnD,OAAO;AACHxE,IAAAA,WAAW,EAAEnC,IAAI,KAAKP,YAAY,GAAGA,YAAY,GAAGC,UAAU;AAC9DwC,IAAAA,YAAY,EAAE,KAAK;AACnBiB,IAAAA,aAAa,EAAE,KAAK;AACpBC,IAAAA,SAAS,EAAE,IAAI;AACfC,IAAAA,kBAAkB,EAAE,IAAI;IACxBH,WAAW,EAAElB,QAAQ,CAACsB,YAAY;IAClCA,YAAY,EAAEtB,QAAQ,CAACsB,YAAY;IACnCyB,UAAU,EAAE/C,QAAQ,CAAC+C,UAAU;IAC/BC,QAAQ,EAAEhD,QAAQ,CAACgD,QAAQ;AAC3B8B,IAAAA,YAAY,EAAE,aAAa;AAC3BrB,IAAAA,aAAa,EAAEzD,QAAQ,CAACyD,aAAa,IAAI,aAAa;IACtDR,aAAa,EAAEjD,QAAQ,CAACiD,aAAa;IACrCE,UAAU,EAAEnD,QAAQ,CAACmD,UAAU;IAC/BgB,UAAU,EAAEnE,QAAQ,CAACmE,UAAU;AAC/BT,IAAAA,eAAe,EAAE1D,QAAQ,CAAC+C,UAAU,GAAG/C,QAAQ,CAACmE,UAAU,GAAGnE,QAAQ,CAAC+C,UAAU,GAAG,CAAC;IACpF/C,QAAQ;AACR4E,IAAAA;GACH;AACL;AAEA,SAASC,gBAAgBA,CAAC9E,KAAK,EAAEC,QAAQ,EAAE2E,GAAG,EAC9C;AACI,EAAA,MAAMI,cAAc,GAAG/E,QAAQ,CAACiD,aAAa,GAAG,CAAC;AACjD,EAAA,IAAI,CAAC+B,MAAM,CAACC,SAAS,CAACF,cAAc,CAAC,IAAIA,cAAc,IAAI,CAAC,IAAI/E,QAAQ,CAACqD,SAAS,GAAG0B,cAAc,KAAK,CAAC,EACzG;IACI,MAAMtD,KAAK,GAAG,IAAII,KAAK,CAAC,iCAAiC7B,QAAQ,CAACiD,aAAa,CAAA,CAAE,CAAC;IAClFxB,KAAK,CAACK,IAAI,GAAG,iCAAiC;AAC9CL,IAAAA,KAAK,CAACvB,YAAY,GAAGF,QAAQ,CAACE,YAAY;AAC1C,IAAA,MAAMuB,KAAK;AACf,EAAA;AAEA,EAAA,MAAMyD,WAAW,GAAGlF,QAAQ,CAACqD,SAAS,GAAG0B,cAAc;AACvD,EAAA,MAAMI,IAAI,GAAG,IAAIC,QAAQ,CAACrF,KAAK,CAACL,MAAM,EAAEK,KAAK,CAACJ,UAAU,EAAEI,KAAK,CAACH,UAAU,CAAC;AAC3E,EAAA,IAAII,QAAQ,CAAC+D,SAAS,KAAK,CAAC,EAC5B;IACI,IAAI/D,QAAQ,CAACiD,aAAa,KAAK,CAAC,EAAE,OAAO1D,UAAU,CAAC8F,IAAI,CAACtF,KAAK,CAACuF,QAAQ,CAACtF,QAAQ,CAACoD,UAAU,EAAEuB,GAAG,CAAC,CAAC;AAClG,IAAA,IAAI3E,QAAQ,CAACiD,aAAa,KAAK,EAAE,EACjC;AACI,MAAA,MAAM2B,IAAI,GAAG,IAAIW,UAAU,CAACL,WAAW,CAAC;AACxC,MAAA,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,WAAW,EAAEV,CAAC,EAAE,EAAEI,IAAI,CAACJ,CAAC,CAAC,GAAGW,IAAI,CAACK,QAAQ,CAACxF,QAAQ,CAACoD,UAAU,GAAGoB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAChG,MAAA,OAAOI,IAAI;AACf,IAAA;AACA,IAAA,IAAI5E,QAAQ,CAACiD,aAAa,KAAK,EAAE,EACjC;AACI,MAAA,MAAM2B,IAAI,GAAG,IAAIa,UAAU,CAACP,WAAW,CAAC;MACxC,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,WAAW,EAAEV,CAAC,EAAE,EACpC;QACI,MAAM3B,MAAM,GAAG7C,QAAQ,CAACoD,UAAU,GAAGoB,CAAC,GAAG,CAAC;AAC1C,QAAA,IAAIxC,KAAK,GAAGmD,IAAI,CAACO,QAAQ,CAAC7C,MAAM,CAAC,GAAIsC,IAAI,CAACO,QAAQ,CAAC7C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAIsC,IAAI,CAACO,QAAQ,CAAC7C,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG;AACxG,QAAA,IAAIb,KAAK,GAAG,QAAQ,EAAEA,KAAK,IAAI,UAAU;AACzC4C,QAAAA,IAAI,CAACJ,CAAC,CAAC,GAAGxC,KAAK;AACnB,MAAA;AACA,MAAA,OAAO4C,IAAI;AACf,IAAA;AACA,IAAA,IAAI5E,QAAQ,CAACiD,aAAa,KAAK,EAAE,EACjC;AACI,MAAA,MAAM2B,IAAI,GAAG,IAAIa,UAAU,CAACP,WAAW,CAAC;AACxC,MAAA,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,WAAW,EAAEV,CAAC,EAAE,EAAEI,IAAI,CAACJ,CAAC,CAAC,GAAGW,IAAI,CAACQ,QAAQ,CAAC3F,QAAQ,CAACoD,UAAU,GAAGoB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAChG,MAAA,OAAOI,IAAI;AACf,IAAA;AACJ,EAAA;EACA,IAAI5E,QAAQ,CAAC+D,SAAS,KAAK,CAAC,IAAI/D,QAAQ,CAACiD,aAAa,KAAK,EAAE,EAC7D;AACI,IAAA,MAAM2B,IAAI,GAAG,IAAIgB,YAAY,CAACV,WAAW,CAAC;AAC1C,IAAA,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,WAAW,EAAEV,CAAC,EAAE,EAAEI,IAAI,CAACJ,CAAC,CAAC,GAAGW,IAAI,CAACU,UAAU,CAAC7F,QAAQ,CAACoD,UAAU,GAAGoB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAClG,IAAA,OAAOI,IAAI;AACf,EAAA;EACA,IAAI5E,QAAQ,CAAC+D,SAAS,KAAK,CAAC,IAAI/D,QAAQ,CAACiD,aAAa,KAAK,EAAE,EAC7D;AACI,IAAA,MAAM2B,IAAI,GAAG,IAAIkB,YAAY,CAACZ,WAAW,CAAC;AAC1C,IAAA,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGU,WAAW,EAAEV,CAAC,EAAE,EAAEI,IAAI,CAACJ,CAAC,CAAC,GAAGW,IAAI,CAACY,UAAU,CAAC/F,QAAQ,CAACoD,UAAU,GAAGoB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAClG,IAAA,OAAOI,IAAI;AACf,EAAA;EAEA,MAAMnD,KAAK,GAAG,IAAII,KAAK,CAAC,oBAAoB7B,QAAQ,CAACsB,YAAY,CAAA,YAAA,CAAc,CAAC;EAChFG,KAAK,CAACK,IAAI,GAAG,iCAAiC;AAC9CL,EAAAA,KAAK,CAACvB,YAAY,GAAGF,QAAQ,CAACE,YAAY;AAC1C,EAAA,MAAMuB,KAAK;AACf;AAEA,SAASiD,yBAAyBA,CAAC1E,QAAQ,EAC3C;EACI,IAAIA,QAAQ,CAAC+D,SAAS,KAAK,CAAC,EAAE,OAAO,CAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC9E,QAAQ,CAACe,QAAQ,CAACiD,aAAa,CAAC;AACvF,EAAA,IAAIjD,QAAQ,CAAC+D,SAAS,KAAK,CAAC,EAAE,OAAO,CAAE,EAAE,EAAE,EAAE,CAAE,CAAC9E,QAAQ,CAACe,QAAQ,CAACiD,aAAa,CAAC;AAChF,EAAA,OAAO,KAAK;AAChB;AAEA,SAASiB,eAAeA,CAACH,SAAS,EAAEd,aAAa,EACjD;AACI,EAAA,IAAIc,SAAS,KAAK,CAAC,EAAE,OAAO,CAAA,KAAA,EAAQd,aAAa,CAAA,CAAE;AACnD,EAAA,IAAIc,SAAS,KAAK,CAAC,EAAE,OAAO,CAAA,GAAA,EAAMd,aAAa,CAAA,CAAE;EACjD,OAAO,CAAA,WAAA,EAAcc,SAAS,CAAA,CAAE;AACpC;AAEA,SAASE,qBAAqBA,CAAC+B,IAAI,EAAEhD,QAAQ,EAC7C;EACI,MAAMiD,KAAK,GAAG,CACV,CAAE,KAAK,EAAE,YAAY,CAAE,EAAE,CAAE,KAAK,EAAE,aAAa,CAAE,EAAE,CAAE,KAAK,EAAE,cAAc,CAAE,EAC5E,CAAE,KAAK,EAAE,eAAe,CAAE,EAAE,CAAE,KAAK,EAAE,WAAW,CAAE,EAAE,CAAE,KAAK,EAAE,YAAY,CAAE,EAC3E,CAAE,KAAK,EAAE,sBAAsB,CAAE,EAAE,CAAE,KAAK,EAAE,uBAAuB,CAAE,EAAE,CAAE,KAAK,EAAE,aAAa,CAAE,EAC/F,CAAE,KAAK,EAAE,WAAW,CAAE,EAAE,CAAE,KAAK,EAAE,YAAY,CAAE,EAAE,CAAE,KAAK,EAAE,YAAY,CAAE,EACxE,CAAE,MAAM,EAAE,gBAAgB,CAAE,EAAE,CAAE,MAAM,EAAE,kBAAkB,CAAE,EAAE,CAAE,MAAM,EAAE,iBAAiB,CAAE,EAC3F,CAAE,MAAM,EAAE,eAAe,CAAE,EAAE,CAAE,OAAO,EAAE,iBAAiB,CAAE,EAAE,CAAE,OAAO,EAAE,gBAAgB,CAAE,CAC7F;EACD,MAAMC,MAAM,GAAGD,KAAK,CAACE,MAAM,CAAC,CAAC,CAAEC,GAAG,CAAE,KAAKJ,IAAI,GAAGI,GAAG,CAAC,CAACjE,GAAG,CAAC,CAAC,GAAIkE,IAAI,CAAE,KAAKA,IAAI,CAAC;AAC9E,EAAA,OAAOH,MAAM,CAAC3B,MAAM,KAAKvB,QAAQ,GAAGkD,MAAM,GAAGA,MAAM,CAAC3B,MAAM,GAAG2B,MAAM,GAAG,aAAa;AACvF;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/wav/core/helpers.js"],"sourcesContent":["export const OUTPUT_AUDIO = \"audio\";\nexport const OUTPUT_PCM = \"pcm\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n wav: \"wavJson\",\n mp3: \"mp3Json\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the WAV format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsAudioFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested input representation for the WAV format reader. */\nexport function normalizeInputType(inputType)\n{\n return inputType ? String(inputType).replace(/^\\./u, \"\").toLowerCase() : \"\";\n}\n\n/** Normalizes the requested output representation for the WAV format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_AUDIO, OUTPUT_PCM, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the WAV 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(\"Audio input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\n/** Inspects input using normalized format options for the WAV format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectBytes(bytes);\n if (expectedType && metadata.sourceFormat && metadata.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsAudioFormat: expected ${expectedType}, got ${metadata.sourceFormat}`);\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n sourceFormat: expectedType || values.inputType || metadata.sourceFormat,\n ...metadata\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the WAV\n * format reader.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canEmitPcm = metadata.sourceFormat === \"wav\" && canEmitWavPcm(metadata);\n const mimeType = getAudioMimeType(metadata);\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (canEmitPcm ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: canEmitPcm ? \"pcm\" : \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized audio format.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.audioFormat || metadata.sourceFormat,\n mimeType,\n supported: true,\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: canEmitPcm\n },\n {\n kind: \"pcm\",\n codec: metadata.sampleFormat || \"pcm\",\n supported: canEmitPcm,\n payloadType: canEmitPcm ? \"pcm\" : \"pcm\",\n reason: canEmitPcm ? \"\" : \"Only WAV PCM/IEEE-float data chunks can be emitted as PCM.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\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 WAV format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: getAudioMimeType(metadata),\n containerOnly: true,\n isDecoded: false,\n pcmDecodeSupported: metadata.sourceFormat === \"wav\" && canEmitWavPcm(metadata),\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\n if ((values.emit === OUTPUT_PCM || values.emit === OUTPUT_AUDIO) && metadata.sourceFormat === \"wav\")\n {\n return readWavPcm(bytes, metadata, values.emit);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction getAudioMimeType(metadata)\n{\n if (metadata.sourceFormat === \"mp3\") return \"audio/mpeg\";\n return \"audio/wav\";\n}\n\n/** Converts a parsed payload into a JSON-safe value for the WAV 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\n/**\n * Inspects the supplied bytes without decoding their payload for the WAV format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isWAV(bytes)) return inspectWAV(bytes);\n if (isMP3(bytes)) return inspectMP3(bytes);\n return { sourceFormat: \"\", audioFormat: \"\" };\n}\n\n/**\n * Reports whether the supplied bytes have a RIFF/WAVE header for the WAV format\n * reader.\n */\nexport function isWAV(bytes)\n{\n return bytes.byteLength >= 12 && fourCc(bytes, 0) === \"RIFF\" && fourCc(bytes, 8) === \"WAVE\";\n}\n\n/**\n * Reports whether the supplied bytes have a supported MP3 header for the WAV\n * format reader.\n */\nexport function isMP3(bytes)\n{\n return bytes.byteLength >= 3 &&\n (fourCc(bytes, 0, 3) === \"ID3\" || (bytes[0] === 0xff && (bytes[1] & 0xe0) === 0xe0));\n}\n\nfunction inspectWAV(bytes)\n{\n let offset = 12;\n const info = {\n sourceFormat: \"wav\",\n audioFormat: \"wav\",\n sampleRate: 0,\n channels: 0,\n bitsPerSample: 0,\n byteRate: 0,\n blockAlign: 0,\n dataOffset: 0,\n dataBytes: 0,\n containerFormatTag: 0,\n validBitsPerSample: 0,\n channelMask: 0,\n channelLayout: \"unspecified\",\n durationSeconds: 0\n };\n while (offset + 8 <= bytes.byteLength)\n {\n const id = fourCc(bytes, offset), size = readU32LE(bytes, offset + 4), dataOffset = offset + 8;\n if (id === \"fmt \" && dataOffset + 16 <= bytes.byteLength)\n {\n const containerFormatTag = readU16LE(bytes, dataOffset);\n info.containerFormatTag = containerFormatTag;\n info.formatTag = containerFormatTag;\n info.channels = readU16LE(bytes, dataOffset + 2);\n info.sampleRate = readU32LE(bytes, dataOffset + 4);\n info.byteRate = readU32LE(bytes, dataOffset + 8);\n info.blockAlign = readU16LE(bytes, dataOffset + 12);\n info.bitsPerSample = readU16LE(bytes, dataOffset + 14);\n info.validBitsPerSample = info.bitsPerSample;\n if (containerFormatTag === 0xfffe && size >= 40 && dataOffset + 40 <= bytes.byteLength)\n {\n info.validBitsPerSample = readU16LE(bytes, dataOffset + 18) || info.bitsPerSample;\n info.channelMask = readU32LE(bytes, dataOffset + 20);\n info.subFormatTag = readU16LE(bytes, dataOffset + 24);\n info.formatTag = info.subFormatTag;\n info.channelLayout = channelLayoutFromMask(info.channelMask, info.channels);\n }\n info.sampleFormat = wavSampleFormat(info.formatTag, info.bitsPerSample);\n }\n if (id === \"data\")\n {\n info.dataOffset = dataOffset;\n info.dataBytes = size;\n }\n offset = dataOffset + size + (size & 1);\n }\n info.frameCount = info.blockAlign ? Math.floor(info.dataBytes / info.blockAlign) : 0;\n info.durationSeconds = info.sampleRate ? info.frameCount / info.sampleRate : 0;\n return info;\n}\n\nfunction inspectMP3(bytes)\n{\n return {\n sourceFormat: \"mp3\",\n audioFormat: \"mp3\",\n hasId3: fourCc(bytes, 0, 3) === \"ID3\"\n };\n}\n\nfunction fourCc(bytes, offset, length = 4)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i] || 0);\n return value;\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction canEmitWavPcm(metadata)\n{\n return metadata.dataOffset > 0 &&\n [ 1, 3 ].includes(metadata.formatTag) &&\n metadata.channels > 0 &&\n metadata.sampleRate > 0 &&\n isSupportedWavSampleWidth(metadata);\n}\n\nfunction readWavPcm(bytes, metadata, emit)\n{\n if (!canEmitWavPcm(metadata))\n {\n const error = new Error(\"wav: only PCM and IEEE-float WAV data chunks can be emitted as PCM\");\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n }\n\n const end = metadata.dataOffset + metadata.dataBytes;\n if (end > bytes.byteLength)\n {\n const error = new Error(\"wav: data chunk is truncated\");\n error.code = \"CJS_FORMAT_TRUNCATED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n }\n\n const data = decodeWavSamples(bytes, metadata, end);\n\n return {\n payloadType: emit === OUTPUT_AUDIO ? OUTPUT_AUDIO : OUTPUT_PCM,\n sourceFormat: \"wav\",\n containerOnly: false,\n isDecoded: true,\n pcmDecodeSupported: true,\n audioFormat: metadata.sampleFormat,\n sampleFormat: metadata.sampleFormat,\n sampleRate: metadata.sampleRate,\n channels: metadata.channels,\n interleaving: \"interleaved\",\n channelLayout: metadata.channelLayout || \"unspecified\",\n bitsPerSample: metadata.bitsPerSample,\n blockAlign: metadata.blockAlign,\n frameCount: metadata.frameCount,\n durationSeconds: metadata.sampleRate ? metadata.frameCount / metadata.sampleRate : 0,\n metadata,\n data\n };\n}\n\nfunction decodeWavSamples(bytes, metadata, end)\n{\n const bytesPerSample = metadata.bitsPerSample / 8;\n if (!Number.isInteger(bytesPerSample) || bytesPerSample <= 0 || metadata.dataBytes % bytesPerSample !== 0)\n {\n const error = new Error(`wav: unsupported sample width ${metadata.bitsPerSample}`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n }\n\n const sampleCount = metadata.dataBytes / bytesPerSample;\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n if (metadata.formatTag === 1)\n {\n if (metadata.bitsPerSample === 8) return Uint8Array.from(bytes.subarray(metadata.dataOffset, end));\n if (metadata.bitsPerSample === 16)\n {\n const data = new Int16Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getInt16(metadata.dataOffset + i * 2, true);\n return data;\n }\n if (metadata.bitsPerSample === 24)\n {\n const data = new Int32Array(sampleCount);\n for (let i = 0; i < sampleCount; i++)\n {\n const offset = metadata.dataOffset + i * 3;\n let value = view.getUint8(offset) | (view.getUint8(offset + 1) << 8) | (view.getUint8(offset + 2) << 16);\n if (value & 0x800000) value |= 0xff000000;\n data[i] = value;\n }\n return data;\n }\n if (metadata.bitsPerSample === 32)\n {\n const data = new Int32Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getInt32(metadata.dataOffset + i * 4, true);\n return data;\n }\n }\n if (metadata.formatTag === 3 && metadata.bitsPerSample === 32)\n {\n const data = new Float32Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getFloat32(metadata.dataOffset + i * 4, true);\n return data;\n }\n if (metadata.formatTag === 3 && metadata.bitsPerSample === 64)\n {\n const data = new Float64Array(sampleCount);\n for (let i = 0; i < sampleCount; i++) data[i] = view.getFloat64(metadata.dataOffset + i * 8, true);\n return data;\n }\n\n const error = new Error(`wav: unsupported ${metadata.sampleFormat} sample data`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_SUPPORTED\";\n error.sourceFormat = metadata.sourceFormat;\n throw error;\n}\n\nfunction isSupportedWavSampleWidth(metadata)\n{\n if (metadata.formatTag === 1) return [ 8, 16, 24, 32 ].includes(metadata.bitsPerSample);\n if (metadata.formatTag === 3) return [ 32, 64 ].includes(metadata.bitsPerSample);\n return false;\n}\n\nfunction wavSampleFormat(formatTag, bitsPerSample)\n{\n if (formatTag === 3) return `float${bitsPerSample}`;\n if (formatTag === 1) return `pcm${bitsPerSample}`;\n return `wav-format-${formatTag}`;\n}\n\nfunction channelLayoutFromMask(mask, channels)\n{\n const names = [\n [ 0x001, \"front-left\" ], [ 0x002, \"front-right\" ], [ 0x004, \"front-center\" ],\n [ 0x008, \"low-frequency\" ], [ 0x010, \"back-left\" ], [ 0x020, \"back-right\" ],\n [ 0x040, \"front-left-of-center\" ], [ 0x080, \"front-right-of-center\" ], [ 0x100, \"back-center\" ],\n [ 0x200, \"side-left\" ], [ 0x400, \"side-right\" ], [ 0x800, \"top-center\" ],\n [ 0x1000, \"top-front-left\" ], [ 0x2000, \"top-front-center\" ], [ 0x4000, \"top-front-right\" ],\n [ 0x8000, \"top-back-left\" ], [ 0x10000, \"top-back-center\" ], [ 0x20000, \"top-back-right\" ]\n ];\n const layout = names.filter(([ bit ]) => mask & bit).map(([ , name ]) => name);\n return layout.length === channels ? layout : layout.length ? layout : \"unspecified\";\n}\n"],"names":["OUTPUT_AUDIO","OUTPUT_PCM","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","wav","mp3","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","metadata","inspectBytes","sourceFormat","payloadType","mediaTypes","isSupportedWithValues","canEmitPcm","canEmitWavPcm","mimeType","getAudioMimeType","format","supported","confidence","preferred","reason","variants","kind","codec","audioFormat","containerOnly","isDecoded","pcmDecodeSupported","sampleFormat","warnings","errors","error","message","readWithValues","readWavPcm","Error","code","toJsonValue","value","Array","isArray","map","output","key","entry","entries","isWAV","inspectWAV","isMP3","inspectMP3","fourCc","offset","info","sampleRate","channels","bitsPerSample","byteRate","blockAlign","dataOffset","dataBytes","containerFormatTag","validBitsPerSample","channelMask","channelLayout","durationSeconds","id","size","readU32LE","readU16LE","formatTag","subFormatTag","channelLayoutFromMask","wavSampleFormat","frameCount","Math","floor","hasId3","length","i","fromCharCode","isSupportedWavSampleWidth","end","data","decodeWavSamples","interleaving","bytesPerSample","Number","isInteger","sampleCount","view","DataView","from","subarray","Int16Array","getInt16","Int32Array","getUint8","getInt32","Float32Array","getFloat32","Float64Array","getFloat64","mask","names","layout","filter","bit","name"],"mappings":"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"}