@carbonenginejs/runtime-resource 0.20.0 → 0.22.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 (306) hide show
  1. package/NOTICE +6 -0
  2. package/dist/CjsResMan.js +1374 -1318
  3. package/dist/CjsResMan.js.map +1 -1
  4. package/dist/format/CjsFormat.js +393 -164
  5. package/dist/format/CjsFormat.js.map +1 -1
  6. package/dist/format/CjsFormatStore.js +315 -0
  7. package/dist/format/CjsFormatStore.js.map +1 -0
  8. package/dist/format/CjsResourceProbe.js +66 -234
  9. package/dist/format/CjsResourceProbe.js.map +1 -1
  10. package/dist/format/payloadContract.js +47 -6
  11. package/dist/format/payloadContract.js.map +1 -1
  12. package/dist/formats/black/CjsBlackFormat.js +23 -6
  13. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  14. package/dist/formats/bnk/CjsBnkFormat.js +122 -120
  15. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  16. package/dist/formats/bnk/core/helpers.js +5 -15
  17. package/dist/formats/bnk/core/helpers.js.map +1 -1
  18. package/dist/formats/cmf/CjsCmfFormat.js +31 -14
  19. package/dist/formats/cmf/CjsCmfFormat.js.map +1 -1
  20. package/dist/formats/dds/CjsDdsFormat.js +29 -19
  21. package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
  22. package/dist/formats/dds/core/helpers.js +4 -5
  23. package/dist/formats/dds/core/helpers.js.map +1 -1
  24. package/dist/formats/dxbc/CjsDxbcFormat.js +15 -13
  25. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  26. package/dist/formats/fbx/CjsFbxFormat.js +27 -19
  27. package/dist/formats/fbx/CjsFbxFormat.js.map +1 -1
  28. package/dist/formats/fbx/core/helpers.js +4 -4
  29. package/dist/formats/fbx/core/helpers.js.map +1 -1
  30. package/dist/formats/flac/CjsFlacFormat.js +19 -17
  31. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  32. package/dist/formats/flac/core/helpers.js +5 -11
  33. package/dist/formats/flac/core/helpers.js.map +1 -1
  34. package/dist/formats/fsd/32/CjsFsd32Format.js +55 -0
  35. package/dist/formats/fsd/32/CjsFsd32Format.js.map +1 -0
  36. package/dist/formats/fsd/32/index.js +2 -0
  37. package/dist/formats/fsd/32/index.js.map +1 -0
  38. package/dist/formats/fsd/64/CjsFsd64Format.js +119 -0
  39. package/dist/formats/fsd/64/CjsFsd64Format.js.map +1 -0
  40. package/dist/formats/fsd/64/core/CjsFsd64Binary.js +393 -0
  41. package/dist/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -0
  42. package/dist/formats/fsd/64/core/CjsFsd64Reader.js +138 -0
  43. package/dist/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -0
  44. package/dist/formats/fsd/64/core/CjsFsd64SchemaDecoder.js +389 -0
  45. package/dist/formats/fsd/64/core/CjsFsd64SchemaDecoder.js.map +1 -0
  46. package/dist/formats/fsd/64/core/CjsFsd64SchemaReader.js +43 -0
  47. package/dist/formats/fsd/64/core/CjsFsd64SchemaReader.js.map +1 -0
  48. package/dist/formats/fsd/64/core/fsd64Records.js +60 -0
  49. package/dist/formats/fsd/64/core/fsd64Records.js.map +1 -0
  50. package/dist/formats/fsd/64/index.js +7 -0
  51. package/dist/formats/fsd/64/index.js.map +1 -0
  52. package/dist/formats/fsd/64/readers/CjsFsd64ReaderSetCharacterStaticData.js +33 -0
  53. package/dist/formats/fsd/64/readers/CjsFsd64ReaderSetCharacterStaticData.js.map +1 -0
  54. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentTypes.js +35 -0
  55. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentTypes.js.map +1 -0
  56. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentsInSpace.js +50 -0
  57. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentsInSpace.js.map +1 -0
  58. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAncestries.js +75 -0
  59. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAncestries.js.map +1 -0
  60. package/dist/formats/fsd/64/readers/CjsFsd64SchemaArchetypes.js +57 -0
  61. package/dist/formats/fsd/64/readers/CjsFsd64SchemaArchetypes.js.map +1 -0
  62. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAudioMetadata.js +201 -0
  63. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAudioMetadata.js.map +1 -0
  64. package/dist/formats/fsd/64/readers/CjsFsd64SchemaBloodlines.js +73 -0
  65. package/dist/formats/fsd/64/readers/CjsFsd64SchemaBloodlines.js.map +1 -0
  66. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCategories.js +53 -0
  67. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCategories.js.map +1 -0
  68. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterAvatarBehaviors.js +44 -0
  69. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterAvatarBehaviors.js.map +1 -0
  70. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorLocations.js +38 -0
  71. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorLocations.js.map +1 -0
  72. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorNames.js +34 -0
  73. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorNames.js.map +1 -0
  74. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterModifierLocations.js +34 -0
  75. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterModifierLocations.js.map +1 -0
  76. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterPortraitResources.js +44 -0
  77. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterPortraitResources.js.map +1 -0
  78. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterResources.js +81 -0
  79. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterResources.js.map +1 -0
  80. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterSculptingLocations.js +34 -0
  81. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterSculptingLocations.js.map +1 -0
  82. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCompressibleTypes.js +41 -0
  83. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCompressibleTypes.js.map +1 -0
  84. package/dist/formats/fsd/64/readers/CjsFsd64SchemaContrabandTypes.js +63 -0
  85. package/dist/formats/fsd/64/readers/CjsFsd64SchemaContrabandTypes.js.map +1 -0
  86. package/dist/formats/fsd/64/readers/CjsFsd64SchemaControlTowerResources.js +76 -0
  87. package/dist/formats/fsd/64/readers/CjsFsd64SchemaControlTowerResources.js.map +1 -0
  88. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationActivities.js +38 -0
  89. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationActivities.js.map +1 -0
  90. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoleGroups.js +74 -0
  91. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoleGroups.js.map +1 -0
  92. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoles.js +59 -0
  93. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoles.js.map +1 -0
  94. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributeCategories.js +46 -0
  95. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributeCategories.js.map +1 -0
  96. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributes.js +133 -0
  97. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributes.js.map +1 -0
  98. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaEffects.js +236 -0
  99. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaEffects.js.map +1 -0
  100. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaUnits.js +60 -0
  101. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaUnits.js.map +1 -0
  102. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDynamicItemAttributes.js +95 -0
  103. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDynamicItemAttributes.js.map +1 -0
  104. package/dist/formats/fsd/64/readers/CjsFsd64SchemaEpicArcs.js +106 -0
  105. package/dist/formats/fsd/64/readers/CjsFsd64SchemaEpicArcs.js.map +1 -0
  106. package/dist/formats/fsd/64/readers/CjsFsd64SchemaExpertSystems.js +86 -0
  107. package/dist/formats/fsd/64/readers/CjsFsd64SchemaExpertSystems.js.map +1 -0
  108. package/dist/formats/fsd/64/readers/CjsFsd64SchemaFactions.js +117 -0
  109. package/dist/formats/fsd/64/readers/CjsFsd64SchemaFactions.js.map +1 -0
  110. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicIds.js +70 -0
  111. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicIds.js.map +1 -0
  112. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicMaterialSets.js +173 -0
  113. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicMaterialSets.js.map +1 -0
  114. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGroups.js +77 -0
  115. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGroups.js.map +1 -0
  116. package/dist/formats/fsd/64/readers/CjsFsd64SchemaIcons.js +62 -0
  117. package/dist/formats/fsd/64/readers/CjsFsd64SchemaIcons.js.map +1 -0
  118. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMarketGroups.js +63 -0
  119. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMarketGroups.js.map +1 -0
  120. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMetaGroups.js +86 -0
  121. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMetaGroups.js.map +1 -0
  122. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporationDivisions.js +72 -0
  123. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporationDivisions.js.map +1 -0
  124. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporations.js +326 -0
  125. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporations.js.map +1 -0
  126. package/dist/formats/fsd/64/readers/CjsFsd64SchemaPaperdolls.js +279 -0
  127. package/dist/formats/fsd/64/readers/CjsFsd64SchemaPaperdolls.js.map +1 -0
  128. package/dist/formats/fsd/64/readers/CjsFsd64SchemaRaces.js +64 -0
  129. package/dist/formats/fsd/64/readers/CjsFsd64SchemaRaces.js.map +1 -0
  130. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchoolMap.js +40 -0
  131. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchoolMap.js.map +1 -0
  132. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchools.js +113 -0
  133. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchools.js.map +1 -0
  134. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkillPlans.js +130 -0
  135. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkillPlans.js.map +1 -0
  136. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentCategories.js +38 -0
  137. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentCategories.js.map +1 -0
  138. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentPointValues.js +45 -0
  139. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentPointValues.js.map +1 -0
  140. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentRarities.js +44 -0
  141. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentRarities.js.map +1 -0
  142. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponents.js +163 -0
  143. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponents.js.map +1 -0
  144. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotCategories.js +37 -0
  145. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotCategories.js.map +1 -0
  146. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotConfigurations.js +77 -0
  147. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotConfigurations.js.map +1 -0
  148. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotNames.js +37 -0
  149. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotNames.js.map +1 -0
  150. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlots.js +74 -0
  151. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlots.js.map +1 -0
  152. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrTierThresholds.js +44 -0
  153. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrTierThresholds.js.map +1 -0
  154. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationOperations.js +120 -0
  155. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationOperations.js.map +1 -0
  156. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationServices.js +49 -0
  157. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationServices.js.map +1 -0
  158. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeDogma.js +73 -0
  159. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeDogma.js.map +1 -0
  160. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeLists.js +122 -0
  161. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeLists.js.map +1 -0
  162. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeMaterials.js +83 -0
  163. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeMaterials.js.map +1 -0
  164. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypes.js +194 -0
  165. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypes.js.map +1 -0
  166. package/dist/formats/fsd/64/readers/index.js +58 -0
  167. package/dist/formats/fsd/64/readers/index.js.map +1 -0
  168. package/dist/formats/fsd/CjsFsdFormat.js +62 -0
  169. package/dist/formats/fsd/CjsFsdFormat.js.map +1 -0
  170. package/dist/formats/fsd/index.js +9 -0
  171. package/dist/formats/fsd/index.js.map +1 -0
  172. package/dist/formats/gif/CjsGifFormat.js +26 -16
  173. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  174. package/dist/formats/gif/core/helpers.js +6 -18
  175. package/dist/formats/gif/core/helpers.js.map +1 -1
  176. package/dist/formats/gltf/CjsGltfFormat.js +25 -13
  177. package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
  178. package/dist/formats/gr2/CjsGr2Format.js +27 -6
  179. package/dist/formats/gr2/CjsGr2Format.js.map +1 -1
  180. package/dist/formats/hlsl/CjsHlslFormat.js +20 -16
  181. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
  182. package/dist/formats/hlsl/core/analysis.js +1 -1
  183. package/dist/formats/index.js +5 -0
  184. package/dist/formats/index.js.map +1 -1
  185. package/dist/formats/jpeg/CjsJpegFormat.js +26 -19
  186. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
  187. package/dist/formats/jpeg/core/helpers.js +6 -15
  188. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  189. package/dist/formats/jpeg/core/jpeg.js +0 -3
  190. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  191. package/dist/formats/mp3/CjsMp3Format.js +19 -19
  192. package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
  193. package/dist/formats/mp3/core/helpers.js +5 -11
  194. package/dist/formats/mp3/core/helpers.js.map +1 -1
  195. package/dist/formats/mp4/CjsMp4Format.js +20 -19
  196. package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
  197. package/dist/formats/mp4/core/helpers.js +6 -15
  198. package/dist/formats/mp4/core/helpers.js.map +1 -1
  199. package/dist/formats/obj/CjsObjFormat.js +25 -12
  200. package/dist/formats/obj/CjsObjFormat.js.map +1 -1
  201. package/dist/formats/ogg/CjsOggFormat.js +26 -17
  202. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  203. package/dist/formats/ogg/core/helpers.js +5 -16
  204. package/dist/formats/ogg/core/helpers.js.map +1 -1
  205. package/dist/formats/pickle/CjsPickleFormat.js +64 -5
  206. package/dist/formats/pickle/CjsPickleFormat.js.map +1 -1
  207. package/dist/formats/png/CjsPngFormat.js +28 -19
  208. package/dist/formats/png/CjsPngFormat.js.map +1 -1
  209. package/dist/formats/png/core/helpers.js +5 -14
  210. package/dist/formats/png/core/helpers.js.map +1 -1
  211. package/dist/formats/red/CjsRedFormat.js +19 -5
  212. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  213. package/dist/formats/schemabound/CjsSchemaBoundFormat.js +48 -38
  214. package/dist/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
  215. package/dist/formats/sqlite/CjsSqliteFormat.js +49 -41
  216. package/dist/formats/sqlite/CjsSqliteFormat.js.map +1 -1
  217. package/dist/formats/static/CjsStaticFormat.js +15 -57
  218. package/dist/formats/static/CjsStaticFormat.js.map +1 -1
  219. package/dist/formats/static/staticContainers.js +6 -6
  220. package/dist/formats/static/staticContainers.js.map +1 -1
  221. package/dist/formats/stl/CjsStlFormat.js +25 -12
  222. package/dist/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/formats/tga/CjsTgaFormat.js +26 -19
  224. package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
  225. package/dist/formats/tga/core/helpers.js +7 -22
  226. package/dist/formats/tga/core/helpers.js.map +1 -1
  227. package/dist/formats/wav/CjsWavFormat.js +26 -19
  228. package/dist/formats/wav/CjsWavFormat.js.map +1 -1
  229. package/dist/formats/wav/core/helpers.js +7 -16
  230. package/dist/formats/wav/core/helpers.js.map +1 -1
  231. package/dist/formats/webgl/CjsWebglFormat.js +11 -13
  232. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
  233. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +31 -1
  234. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  235. package/dist/formats/webgl/core/readGlslEffectContainer.js +8 -8
  236. package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
  237. package/dist/formats/webgpu/CjsWebgpuFormat.js +11 -5
  238. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  239. package/dist/formats/webm/CjsWebmFormat.js +20 -19
  240. package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
  241. package/dist/formats/webm/core/helpers.js +6 -15
  242. package/dist/formats/webm/core/helpers.js.map +1 -1
  243. package/dist/formats/webp/CjsWebpFormat.js +19 -17
  244. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  245. package/dist/formats/webp/core/helpers.js +5 -11
  246. package/dist/formats/webp/core/helpers.js.map +1 -1
  247. package/dist/formats/wem/CjsWemFormat.js +128 -141
  248. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  249. package/dist/formats/wem/core/helpers.js +1 -114
  250. package/dist/formats/wem/core/helpers.js.map +1 -1
  251. package/dist/formats/wem/core/{resolve.js → probeCodecSupport.js} +11 -18
  252. package/dist/formats/wem/core/probeCodecSupport.js.map +1 -0
  253. package/dist/formats/yaml/CjsYamlFormat.js +20 -5
  254. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  255. package/dist/generated/index.js +2 -0
  256. package/dist/generated/index.js.map +1 -0
  257. package/dist/generated/resources/Tr2RaycastGeometryRes.js +34 -0
  258. package/dist/generated/resources/Tr2RaycastGeometryRes.js.map +1 -0
  259. package/dist/generated/resources/index.js +2 -0
  260. package/dist/generated/resources/index.js.map +1 -0
  261. package/dist/index.js +3 -1
  262. package/dist/index.js.map +1 -1
  263. package/dist/resource/CjsResource.js +134 -0
  264. package/dist/resource/CjsResource.js.map +1 -1
  265. package/dist/resource/ResourceRequirement.js +42 -0
  266. package/dist/resource/ResourceRequirement.js.map +1 -0
  267. package/dist/resource/Tr2LightProfileRes.js +2 -1
  268. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  269. package/dist/resource/geometry/TriGeometryRes.js +34 -7
  270. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  271. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +184 -7
  272. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -1
  273. package/dist/resource/geometry/granny/TriGrannyRes.js +20 -8
  274. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -1
  275. package/dist/resource/index.js +1 -0
  276. package/dist/resource/index.js.map +1 -1
  277. package/dist/resource/resourceBoundary.js +24 -1
  278. package/dist/resource/resourceBoundary.js.map +1 -1
  279. package/dist/resource/shader/Tr2EffectRes.js +2 -1
  280. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  281. package/dist/resource/texture/CjsTextureArrayRes.js +2 -1
  282. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  283. package/dist/resource/texture/Tr2ImageRes.js +2 -1
  284. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  285. package/dist/resource/texture/TriTextureRes.js +40 -2
  286. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  287. package/docs/architecture.md +121 -116
  288. package/docs/concepts/format-capabilities.md +90 -0
  289. package/docs/formats/README.md +14 -6
  290. package/docs/formats/fsd.md +104 -0
  291. package/docs/formats/gr2.md +1 -1
  292. package/docs/formats/hlsl/reference/api.md +6 -4
  293. package/docs/formats/provenance.md +18 -0
  294. package/docs/formats/schemabound.md +10 -4
  295. package/docs/formats/static.md +26 -26
  296. package/docs/formats/webgpu/reference/api.md +4 -3
  297. package/docs/reference/classes/core.md +22 -2
  298. package/docs/reference/classes/formats.md +643 -1
  299. package/docs/reference/classes/resources.md +463 -453
  300. package/docs/reference/queues.md +205 -194
  301. package/docs/roadmap.md +14 -18
  302. package/format-notices/fsd/LICENSE +21 -0
  303. package/format-notices/fsd/NOTICE +11 -0
  304. package/package.json +70 -64
  305. package/dist/formats/wem/core/resolve.js.map +0 -1
  306. package/docs/concepts/format-type-resolution.md +0 -79
@@ -1 +1 @@
1
- {"version":3,"file":"jpeg.js","sources":["../../../../../src/formats/jpeg/core/jpeg.js"],"sourcesContent":["const ZIGZAG = [\n 0, 1, 5, 6, 14, 15, 27, 28,\n 2, 4, 7, 13, 16, 26, 29, 42,\n 3, 8, 12, 17, 25, 30, 41, 43,\n 9, 11, 18, 24, 31, 40, 44, 53,\n 10, 19, 23, 32, 39, 45, 52, 54,\n 20, 22, 33, 38, 46, 51, 55, 60,\n 21, 34, 37, 47, 50, 56, 59, 61,\n 35, 36, 48, 49, 57, 58, 62, 63\n];\n\nconst COSINE = Array.from({ length: 8 }, (_, x) =>\n Array.from({ length: 8 }, (_, u) => Math.cos(((2 * x + 1) * u * Math.PI) / 16)));\n\nconst SCALE = Array.from({ length: 8 }, (_, value) => value === 0 ? 1 / Math.sqrt(2) : 1);\n\n/**\n * Decodes baseline JPEG bytes into a normalized RGBA payload for the JPEG format\n * reader.\n */\nexport function decodeJpegToRgba(bytes, metadata = {})\n{\n const decoder = new BaselineJpegDecoder(bytes);\n const image = decoder.decode();\n return {\n payloadType: \"rgba\",\n sourceFormat: \"jpeg\",\n mimeType: \"image/jpeg\",\n containerOnly: false,\n isDecoded: true,\n rgbaDecodeSupported: true,\n width: image.width,\n height: image.height,\n pixelFormat: \"rgba8unorm\",\n data: image.data,\n strideBytes: image.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: \"opaque\",\n metadata: { ...metadata, decoder: \"software-baseline\" }\n };\n}\n\n/**\n * Reports whether JPEG metadata is supported by the software decoder for the\n * JPEG format reader.\n */\nexport function canDecodeJpeg(metadata = {})\n{\n return metadata.sourceFormat === \"jpeg\" &&\n metadata.precision === 8 &&\n metadata.components >= 1 && metadata.components <= 3 &&\n (metadata.marker === 0xc0 || metadata.marker === 0xc1) &&\n metadata.progressive !== true;\n}\n\n/**\n * Pure-JS baseline sequential JPEG decoder that parses markers, quantization\n * and Huffman tables, and entropy-coded scans into RGBA pixels.\n */\nclass BaselineJpegDecoder\n{\n #bytes;\n #offset = 0;\n #quantization = new Map();\n #huffman = new Map();\n #frame = null;\n #scan = null;\n #restartInterval = 0;\n\n /** Creates a BaselineJpegDecoder with caller-provided initial state. */\n constructor(bytes)\n {\n this.#bytes = bytes;\n }\n\n /**\n * Decodes the current baseline JPEG stream into RGBA pixels for the JPEG\n * decoder.\n */\n decode()\n {\n this.readMarker(0xd8);\n while (this.#offset < this.#bytes.length)\n {\n const marker = this.nextMarker();\n if (marker === 0xd9) break;\n if (marker === 0xda)\n {\n this.readScanHeader();\n return this.decodeScan();\n }\n if (marker === 0xdb) this.readQuantizationTables();\n else if (marker === 0xc0 || marker === 0xc1 || marker === 0xc2) this.readFrame(marker);\n else if (marker === 0xc4) this.readHuffmanTables();\n else if (marker === 0xdd) this.readRestartInterval();\n else if (marker >= 0xe0 && marker <= 0xef || marker === 0xfe) this.skipSegment();\n else if (marker === 0xd8 || marker === 0x01 || marker >= 0xd0 && marker <= 0xd7) continue;\n else this.skipSegment();\n }\n throw new Error(\"jpeg: no baseline scan found\");\n }\n\n /**\n * Reads JPEG frame dimensions, sampling, and component metadata for the JPEG\n * decoder.\n */\n readFrame(marker)\n {\n const length = this.readU16();\n const precision = this.readU8();\n const height = this.readU16();\n const width = this.readU16();\n const components = this.readU8();\n if (precision !== 8) throw new Error(`jpeg: unsupported sample precision ${precision}`);\n if (!width || !height || !components || components > 3) throw new Error(\"jpeg: unsupported frame layout\");\n\n const list = [];\n let maxH = 0, maxV = 0;\n for (let i = 0; i < components; i++)\n {\n const id = this.readU8();\n const sampling = this.readU8();\n const component = {\n id,\n h: sampling >>> 4,\n v: sampling & 0x0f,\n quantizationId: this.readU8(),\n dc: 0,\n ac: 0,\n previousDc: 0,\n plane: null,\n planeWidth: 0,\n planeHeight: 0\n };\n if (!component.h || !component.v || component.h > 4 || component.v > 4)\n {\n throw new Error(\"jpeg: unsupported component sampling\");\n }\n maxH = Math.max(maxH, component.h);\n maxV = Math.max(maxV, component.v);\n list.push(component);\n }\n const consumed = 8 + components * 3;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n if (marker === 0xc2) throw new Error(\"jpeg: progressive scans are not supported by the software decoder\");\n this.#frame = { width, height, precision, components: list, maxH, maxV };\n }\n\n /**\n * Reads JPEG quantization tables into natural coefficient order for the JPEG\n * decoder.\n */\n readQuantizationTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const precision = info >>> 4;\n const id = info & 0x0f;\n if (precision > 1) throw new Error(\"jpeg: unsupported 16-bit quantization table\");\n const table = new Uint16Array(64);\n for (let i = 0; i < 64; i++) table[ZIGZAG[i]] = precision ? this.readU16() : this.readU8();\n this.#quantization.set(id, table);\n }\n this.#offset = end;\n }\n\n /**\n * Builds JPEG Huffman lookup tables from their canonical definitions for the\n * JPEG decoder.\n */\n readHuffmanTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const table = new Array(17).fill(null).map(() => []);\n const counts = [];\n for (let length = 1; length <= 16; length++) counts.push(this.readU8());\n let code = 0;\n let valueIndex = 0;\n for (let length = 1; length <= 16; length++)\n {\n for (let i = 0; i < counts[length - 1]; i++)\n {\n table[length].push({ code, value: this.#bytes[this.#offset + valueIndex] });\n valueIndex++;\n code++;\n }\n code <<= 1;\n }\n this.#offset += valueIndex;\n this.#huffman.set(`${info >>> 4}:${info & 0x0f}`, table);\n }\n this.#offset = end;\n }\n\n /**\n * Reads the JPEG restart interval declared by a DRI segment for the JPEG\n * decoder.\n */\n readRestartInterval()\n {\n const length = this.readU16();\n if (length !== 4) throw new Error(\"jpeg: invalid restart interval segment\");\n this.#restartInterval = this.readU16();\n }\n\n /**\n * Reads JPEG scan component and spectral-selection metadata for the JPEG\n * decoder.\n */\n readScanHeader()\n {\n const length = this.readU16();\n const count = this.readU8();\n if (!this.#frame || count !== this.#frame.components.length) throw new Error(\"jpeg: unsupported scan component count\");\n const byId = new Map(this.#frame.components.map(component => [ component.id, component ]));\n for (let i = 0; i < count; i++)\n {\n const id = this.readU8();\n const tables = this.readU8();\n const component = byId.get(id);\n if (!component) throw new Error(`jpeg: scan references unknown component ${id}`);\n component.dc = tables >>> 4;\n component.ac = tables & 0x0f;\n }\n const spectralStart = this.readU8();\n const spectralEnd = this.readU8();\n const successive = this.readU8();\n if (spectralStart !== 0 || spectralEnd !== 63 || successive !== 0)\n {\n throw new Error(\"jpeg: progressive or non-sequential scan is not supported\");\n }\n const consumed = 6 + count * 2;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n this.#scan = { byId };\n }\n\n /**\n * Decodes the current JPEG entropy scan into component planes and RGBA\n * pixels for the JPEG decoder.\n */\n decodeScan()\n {\n const frame = this.#frame;\n const mcuWidth = 8 * frame.maxH;\n const mcuHeight = 8 * frame.maxV;\n const mcuColumns = Math.ceil(frame.width / mcuWidth);\n const mcuRows = Math.ceil(frame.height / mcuHeight);\n for (const component of frame.components)\n {\n component.planeWidth = mcuColumns * component.h * 8;\n component.planeHeight = mcuRows * component.v * 8;\n component.plane = new Uint8Array(component.planeWidth * component.planeHeight);\n }\n\n const reader = new EntropyReader(this.#bytes, this.#offset);\n let mcuIndex = 0;\n for (let row = 0; row < mcuRows; row++)\n {\n for (let column = 0; column < mcuColumns; column++)\n {\n for (const component of frame.components)\n {\n for (let y = 0; y < component.v; y++)\n {\n for (let x = 0; x < component.h; x++)\n {\n const block = this.decodeBlock(reader, component);\n const originX = (column * component.h + x) * 8;\n const originY = (row * component.v + y) * 8;\n writeBlock(component.plane, component.planeWidth, originX, originY, block);\n }\n }\n }\n mcuIndex++;\n if (this.#restartInterval && mcuIndex % this.#restartInterval === 0 && mcuIndex < mcuColumns * mcuRows)\n {\n reader.align();\n reader.consumeRestart();\n for (const component of frame.components) component.previousDc = 0;\n }\n }\n }\n const data = new Uint8Array(frame.width * frame.height * 4);\n for (let y = 0; y < frame.height; y++)\n {\n for (let x = 0; x < frame.width; x++)\n {\n const offset = (y * frame.width + x) * 4;\n if (frame.components.length === 1)\n {\n const value = frame.components[0].plane[y * frame.components[0].planeWidth + x];\n data[offset] = value; data[offset + 1] = value; data[offset + 2] = value;\n }\n else\n {\n const yValue = sampleComponent(frame.components[0], x, y, frame.width, frame.height);\n const cb = sampleComponent(frame.components[1], x, y, frame.width, frame.height) - 128;\n const cr = sampleComponent(frame.components[2], x, y, frame.width, frame.height) - 128;\n data[offset] = clampByte(yValue + 1.402 * cr);\n data[offset + 1] = clampByte(yValue - 0.344136 * cb - 0.714136 * cr);\n data[offset + 2] = clampByte(yValue + 1.772 * cb);\n }\n data[offset + 3] = 255;\n }\n }\n return { width: frame.width, height: frame.height, data };\n }\n\n /**\n * Decodes one JPEG coefficient block through inverse quantization and IDCT\n * for the JPEG decoder.\n */\n decodeBlock(reader, component)\n {\n const quantization = this.#quantization.get(component.quantizationId);\n const dcTable = this.#huffman.get(`0:${component.dc}`);\n const acTable = this.#huffman.get(`1:${component.ac}`);\n if (!quantization || !dcTable || !acTable) throw new Error(\"jpeg: missing quantization or Huffman table\");\n const coefficients = new Int32Array(64);\n const category = decodeHuffman(reader, dcTable);\n const delta = receiveExtend(reader, category);\n component.previousDc += delta;\n coefficients[0] = component.previousDc;\n let index = 1;\n while (index < 64)\n {\n const value = decodeHuffman(reader, acTable);\n if (value === 0) break;\n if (value === 0xf0) { index += 16; continue; }\n index += value >>> 4;\n if (index >= 64) throw new Error(\"jpeg: invalid AC coefficient run\");\n coefficients[ZIGZAG[index]] = receiveExtend(reader, value & 0x0f);\n index++;\n }\n for (let i = 0; i < 64; i++) coefficients[i] *= quantization[i];\n return inverseDct(coefficients);\n }\n\n /**\n * Reads an unsigned 8-bit value from the JPEG byte cursor for the JPEG\n * decoder.\n */\n readU8()\n {\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end of input\");\n return this.#bytes[this.#offset++];\n }\n\n /**\n * Reads an unsigned 16-bit big-endian value from the JPEG byte cursor for\n * the JPEG decoder.\n */\n readU16()\n {\n return (this.readU8() << 8) | this.readU8();\n }\n\n /** Consumes and validates an expected JPEG marker for the JPEG decoder. */\n readMarker(expected = null)\n {\n const marker = this.nextMarker();\n if (expected !== null && marker !== expected) throw new Error(\"jpeg: missing SOI marker\");\n return marker;\n }\n\n /** Scans forward to the next valid JPEG marker byte for the JPEG decoder. */\n nextMarker()\n {\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset++] !== 0xff)\n {\n // Scan forward to the next marker prefix.\n }\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset] === 0xff) this.#offset++;\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end while reading marker\");\n return this.#bytes[this.#offset++];\n }\n\n /**\n * Advances past the payload of an unhandled JPEG segment for the JPEG\n * decoder.\n */\n skipSegment()\n {\n const length = this.readU16();\n if (length < 2 || this.#offset + length - 2 > this.#bytes.length) throw new Error(\"jpeg: invalid segment length\");\n this.#offset += length - 2;\n }\n}\n\n/**\n * Bit-level reader over JPEG entropy-coded data that handles byte stuffing\n * and restart markers for the baseline decoder.\n */\nclass EntropyReader\n{\n #bytes;\n #offset;\n #buffer = 0;\n #bits = 0;\n #marker = null;\n\n /**\n * Creates a EntropyReader over caller-provided JPEG bytes and reader\n * options.\n */\n constructor(bytes, offset)\n {\n this.#bytes = bytes;\n this.#offset = offset;\n }\n\n /** Reads one entropy-coded bit for the JPEG binary reader. */\n readBit()\n {\n if (!this.#bits)\n {\n let value = this.#bytes[this.#offset++];\n if (value === 0xff)\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker !== 0x00) { this.#marker = marker; throw new Error(\"jpeg: unexpected marker in entropy data\"); }\n value = 0xff;\n }\n if (value === undefined) throw new Error(\"jpeg: unexpected end in entropy data\");\n this.#buffer = value;\n this.#bits = 8;\n }\n return (this.#buffer >>> --this.#bits) & 1;\n }\n\n /**\n * Reads the requested number of entropy-coded bits for the JPEG binary\n * reader.\n */\n readBits(count)\n {\n let value = 0;\n for (let i = 0; i < count; i++) value = (value << 1) | this.readBit();\n return value;\n }\n\n /**\n * Aligns the entropy cursor to the next byte boundary for the JPEG binary\n * reader.\n */\n align()\n {\n this.#bits = 0;\n }\n\n /**\n * Consumes and validates the next JPEG restart marker for the JPEG binary\n * reader.\n */\n consumeRestart()\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker < 0xd0 || marker > 0xd7) throw new Error(\"jpeg: missing restart marker\");\n }\n}\n\nfunction decodeHuffman(reader, table)\n{\n let code = 0;\n for (let length = 1; length <= 16; length++)\n {\n code = (code << 1) | reader.readBit();\n const entry = table[length].find(item => item.code === code);\n if (entry) return entry.value;\n }\n throw new Error(\"jpeg: invalid Huffman code\");\n}\n\nfunction receiveExtend(reader, size)\n{\n if (!size) return 0;\n const value = reader.readBits(size);\n const threshold = 1 << (size - 1);\n return value < threshold ? value - ((1 << size) - 1) : value;\n}\n\nfunction inverseDct(coefficients)\n{\n const output = new Uint8Array(64);\n for (let y = 0; y < 8; y++)\n {\n for (let x = 0; x < 8; x++)\n {\n let sum = 0;\n for (let v = 0; v < 8; v++)\n {\n for (let u = 0; u < 8; u++)\n {\n sum += SCALE[u] * SCALE[v] * coefficients[v * 8 + u] * COSINE[x][u] * COSINE[y][v];\n }\n }\n output[y * 8 + x] = clampByte(128 + sum / 4);\n }\n }\n return output;\n}\n\nfunction writeBlock(plane, planeWidth, originX, originY, block)\n{\n for (let y = 0; y < 8; y++)\n {\n const targetY = originY + y;\n if (targetY >= plane.length / planeWidth) continue;\n for (let x = 0; x < 8; x++)\n {\n const targetX = originX + x;\n if (targetX < planeWidth) plane[targetY * planeWidth + targetX] = block[y * 8 + x];\n }\n }\n}\n\nfunction sampleComponent(component, x, y, width, height)\n{\n const sampleX = Math.min(component.planeWidth - 1, Math.floor(x * component.planeWidth / width));\n const sampleY = Math.min(component.planeHeight - 1, Math.floor(y * component.planeHeight / height));\n return component.plane[sampleY * component.planeWidth + sampleX];\n}\n\nfunction clampByte(value)\n{\n return Math.max(0, Math.min(255, Math.round(value)));\n}\n"],"names":["ZIGZAG","COSINE","Array","from","length","_","x","u","Math","cos","PI","SCALE","value","sqrt","decodeJpegToRgba","bytes","metadata","decoder","BaselineJpegDecoder","image","decode","payloadType","sourceFormat","mimeType","containerOnly","isDecoded","rgbaDecodeSupported","width","height","pixelFormat","data","strideBytes","origin","colorSpace","alphaMode","canDecodeJpeg","precision","components","marker","progressive","Map","constructor","readMarker","nextMarker","readScanHeader","decodeScan","readQuantizationTables","readFrame","readHuffmanTables","readRestartInterval","skipSegment","Error","readU16","readU8","list","maxH","maxV","i","id","sampling","component","h","v","quantizationId","dc","ac","previousDc","plane","planeWidth","planeHeight","max","push","consumed","end","info","table","Uint16Array","set","fill","map","counts","code","valueIndex","count","byId","tables","get","spectralStart","spectralEnd","successive","frame","mcuWidth","mcuHeight","mcuColumns","ceil","mcuRows","Uint8Array","reader","EntropyReader","mcuIndex","row","column","y","block","decodeBlock","originX","originY","writeBlock","align","consumeRestart","offset","yValue","sampleComponent","cb","cr","clampByte","quantization","dcTable","acTable","coefficients","Int32Array","category","decodeHuffman","delta","receiveExtend","index","inverseDct","expected","readBit","undefined","readBits","entry","find","item","size","threshold","output","sum","targetY","targetX","sampleX","min","floor","sampleY","round"],"mappings":"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"}
1
+ {"version":3,"file":"jpeg.js","sources":["../../../../../src/formats/jpeg/core/jpeg.js"],"sourcesContent":["const ZIGZAG = [\n 0, 1, 5, 6, 14, 15, 27, 28,\n 2, 4, 7, 13, 16, 26, 29, 42,\n 3, 8, 12, 17, 25, 30, 41, 43,\n 9, 11, 18, 24, 31, 40, 44, 53,\n 10, 19, 23, 32, 39, 45, 52, 54,\n 20, 22, 33, 38, 46, 51, 55, 60,\n 21, 34, 37, 47, 50, 56, 59, 61,\n 35, 36, 48, 49, 57, 58, 62, 63\n];\n\nconst COSINE = Array.from({ length: 8 }, (_, x) =>\n Array.from({ length: 8 }, (_, u) => Math.cos(((2 * x + 1) * u * Math.PI) / 16)));\n\nconst SCALE = Array.from({ length: 8 }, (_, value) => value === 0 ? 1 / Math.sqrt(2) : 1);\n\n/**\n * Decodes baseline JPEG bytes into a normalized RGBA payload for the JPEG format\n * reader.\n */\nexport function decodeJpegToRgba(bytes, metadata = {})\n{\n const decoder = new BaselineJpegDecoder(bytes);\n const image = decoder.decode();\n return {\n payloadType: \"rgba\",\n sourceFormat: \"jpeg\",\n mimeType: \"image/jpeg\",\n width: image.width,\n height: image.height,\n pixelFormat: \"rgba8unorm\",\n data: image.data,\n strideBytes: image.width * 4,\n origin: \"top-left\",\n colorSpace: \"srgb\",\n alphaMode: \"opaque\",\n metadata: { ...metadata, decoder: \"software-baseline\" }\n };\n}\n\n/**\n * Reports whether JPEG metadata is supported by the software decoder for the\n * JPEG format reader.\n */\nexport function canDecodeJpeg(metadata = {})\n{\n return metadata.sourceFormat === \"jpeg\" &&\n metadata.precision === 8 &&\n metadata.components >= 1 && metadata.components <= 3 &&\n (metadata.marker === 0xc0 || metadata.marker === 0xc1) &&\n metadata.progressive !== true;\n}\n\n/**\n * Pure-JS baseline sequential JPEG decoder that parses markers, quantization\n * and Huffman tables, and entropy-coded scans into RGBA pixels.\n */\nclass BaselineJpegDecoder\n{\n #bytes;\n #offset = 0;\n #quantization = new Map();\n #huffman = new Map();\n #frame = null;\n #scan = null;\n #restartInterval = 0;\n\n /** Creates a BaselineJpegDecoder with caller-provided initial state. */\n constructor(bytes)\n {\n this.#bytes = bytes;\n }\n\n /**\n * Decodes the current baseline JPEG stream into RGBA pixels for the JPEG\n * decoder.\n */\n decode()\n {\n this.readMarker(0xd8);\n while (this.#offset < this.#bytes.length)\n {\n const marker = this.nextMarker();\n if (marker === 0xd9) break;\n if (marker === 0xda)\n {\n this.readScanHeader();\n return this.decodeScan();\n }\n if (marker === 0xdb) this.readQuantizationTables();\n else if (marker === 0xc0 || marker === 0xc1 || marker === 0xc2) this.readFrame(marker);\n else if (marker === 0xc4) this.readHuffmanTables();\n else if (marker === 0xdd) this.readRestartInterval();\n else if (marker >= 0xe0 && marker <= 0xef || marker === 0xfe) this.skipSegment();\n else if (marker === 0xd8 || marker === 0x01 || marker >= 0xd0 && marker <= 0xd7) continue;\n else this.skipSegment();\n }\n throw new Error(\"jpeg: no baseline scan found\");\n }\n\n /**\n * Reads JPEG frame dimensions, sampling, and component metadata for the JPEG\n * decoder.\n */\n readFrame(marker)\n {\n const length = this.readU16();\n const precision = this.readU8();\n const height = this.readU16();\n const width = this.readU16();\n const components = this.readU8();\n if (precision !== 8) throw new Error(`jpeg: unsupported sample precision ${precision}`);\n if (!width || !height || !components || components > 3) throw new Error(\"jpeg: unsupported frame layout\");\n\n const list = [];\n let maxH = 0, maxV = 0;\n for (let i = 0; i < components; i++)\n {\n const id = this.readU8();\n const sampling = this.readU8();\n const component = {\n id,\n h: sampling >>> 4,\n v: sampling & 0x0f,\n quantizationId: this.readU8(),\n dc: 0,\n ac: 0,\n previousDc: 0,\n plane: null,\n planeWidth: 0,\n planeHeight: 0\n };\n if (!component.h || !component.v || component.h > 4 || component.v > 4)\n {\n throw new Error(\"jpeg: unsupported component sampling\");\n }\n maxH = Math.max(maxH, component.h);\n maxV = Math.max(maxV, component.v);\n list.push(component);\n }\n const consumed = 8 + components * 3;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n if (marker === 0xc2) throw new Error(\"jpeg: progressive scans are not supported by the software decoder\");\n this.#frame = { width, height, precision, components: list, maxH, maxV };\n }\n\n /**\n * Reads JPEG quantization tables into natural coefficient order for the JPEG\n * decoder.\n */\n readQuantizationTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const precision = info >>> 4;\n const id = info & 0x0f;\n if (precision > 1) throw new Error(\"jpeg: unsupported 16-bit quantization table\");\n const table = new Uint16Array(64);\n for (let i = 0; i < 64; i++) table[ZIGZAG[i]] = precision ? this.readU16() : this.readU8();\n this.#quantization.set(id, table);\n }\n this.#offset = end;\n }\n\n /**\n * Builds JPEG Huffman lookup tables from their canonical definitions for the\n * JPEG decoder.\n */\n readHuffmanTables()\n {\n const end = this.#offset + this.readU16() - 2;\n while (this.#offset < end)\n {\n const info = this.readU8();\n const table = new Array(17).fill(null).map(() => []);\n const counts = [];\n for (let length = 1; length <= 16; length++) counts.push(this.readU8());\n let code = 0;\n let valueIndex = 0;\n for (let length = 1; length <= 16; length++)\n {\n for (let i = 0; i < counts[length - 1]; i++)\n {\n table[length].push({ code, value: this.#bytes[this.#offset + valueIndex] });\n valueIndex++;\n code++;\n }\n code <<= 1;\n }\n this.#offset += valueIndex;\n this.#huffman.set(`${info >>> 4}:${info & 0x0f}`, table);\n }\n this.#offset = end;\n }\n\n /**\n * Reads the JPEG restart interval declared by a DRI segment for the JPEG\n * decoder.\n */\n readRestartInterval()\n {\n const length = this.readU16();\n if (length !== 4) throw new Error(\"jpeg: invalid restart interval segment\");\n this.#restartInterval = this.readU16();\n }\n\n /**\n * Reads JPEG scan component and spectral-selection metadata for the JPEG\n * decoder.\n */\n readScanHeader()\n {\n const length = this.readU16();\n const count = this.readU8();\n if (!this.#frame || count !== this.#frame.components.length) throw new Error(\"jpeg: unsupported scan component count\");\n const byId = new Map(this.#frame.components.map(component => [ component.id, component ]));\n for (let i = 0; i < count; i++)\n {\n const id = this.readU8();\n const tables = this.readU8();\n const component = byId.get(id);\n if (!component) throw new Error(`jpeg: scan references unknown component ${id}`);\n component.dc = tables >>> 4;\n component.ac = tables & 0x0f;\n }\n const spectralStart = this.readU8();\n const spectralEnd = this.readU8();\n const successive = this.readU8();\n if (spectralStart !== 0 || spectralEnd !== 63 || successive !== 0)\n {\n throw new Error(\"jpeg: progressive or non-sequential scan is not supported\");\n }\n const consumed = 6 + count * 2;\n if (length !== consumed) this.#offset += Math.max(0, length - consumed);\n this.#scan = { byId };\n }\n\n /**\n * Decodes the current JPEG entropy scan into component planes and RGBA\n * pixels for the JPEG decoder.\n */\n decodeScan()\n {\n const frame = this.#frame;\n const mcuWidth = 8 * frame.maxH;\n const mcuHeight = 8 * frame.maxV;\n const mcuColumns = Math.ceil(frame.width / mcuWidth);\n const mcuRows = Math.ceil(frame.height / mcuHeight);\n for (const component of frame.components)\n {\n component.planeWidth = mcuColumns * component.h * 8;\n component.planeHeight = mcuRows * component.v * 8;\n component.plane = new Uint8Array(component.planeWidth * component.planeHeight);\n }\n\n const reader = new EntropyReader(this.#bytes, this.#offset);\n let mcuIndex = 0;\n for (let row = 0; row < mcuRows; row++)\n {\n for (let column = 0; column < mcuColumns; column++)\n {\n for (const component of frame.components)\n {\n for (let y = 0; y < component.v; y++)\n {\n for (let x = 0; x < component.h; x++)\n {\n const block = this.decodeBlock(reader, component);\n const originX = (column * component.h + x) * 8;\n const originY = (row * component.v + y) * 8;\n writeBlock(component.plane, component.planeWidth, originX, originY, block);\n }\n }\n }\n mcuIndex++;\n if (this.#restartInterval && mcuIndex % this.#restartInterval === 0 && mcuIndex < mcuColumns * mcuRows)\n {\n reader.align();\n reader.consumeRestart();\n for (const component of frame.components) component.previousDc = 0;\n }\n }\n }\n const data = new Uint8Array(frame.width * frame.height * 4);\n for (let y = 0; y < frame.height; y++)\n {\n for (let x = 0; x < frame.width; x++)\n {\n const offset = (y * frame.width + x) * 4;\n if (frame.components.length === 1)\n {\n const value = frame.components[0].plane[y * frame.components[0].planeWidth + x];\n data[offset] = value; data[offset + 1] = value; data[offset + 2] = value;\n }\n else\n {\n const yValue = sampleComponent(frame.components[0], x, y, frame.width, frame.height);\n const cb = sampleComponent(frame.components[1], x, y, frame.width, frame.height) - 128;\n const cr = sampleComponent(frame.components[2], x, y, frame.width, frame.height) - 128;\n data[offset] = clampByte(yValue + 1.402 * cr);\n data[offset + 1] = clampByte(yValue - 0.344136 * cb - 0.714136 * cr);\n data[offset + 2] = clampByte(yValue + 1.772 * cb);\n }\n data[offset + 3] = 255;\n }\n }\n return { width: frame.width, height: frame.height, data };\n }\n\n /**\n * Decodes one JPEG coefficient block through inverse quantization and IDCT\n * for the JPEG decoder.\n */\n decodeBlock(reader, component)\n {\n const quantization = this.#quantization.get(component.quantizationId);\n const dcTable = this.#huffman.get(`0:${component.dc}`);\n const acTable = this.#huffman.get(`1:${component.ac}`);\n if (!quantization || !dcTable || !acTable) throw new Error(\"jpeg: missing quantization or Huffman table\");\n const coefficients = new Int32Array(64);\n const category = decodeHuffman(reader, dcTable);\n const delta = receiveExtend(reader, category);\n component.previousDc += delta;\n coefficients[0] = component.previousDc;\n let index = 1;\n while (index < 64)\n {\n const value = decodeHuffman(reader, acTable);\n if (value === 0) break;\n if (value === 0xf0) { index += 16; continue; }\n index += value >>> 4;\n if (index >= 64) throw new Error(\"jpeg: invalid AC coefficient run\");\n coefficients[ZIGZAG[index]] = receiveExtend(reader, value & 0x0f);\n index++;\n }\n for (let i = 0; i < 64; i++) coefficients[i] *= quantization[i];\n return inverseDct(coefficients);\n }\n\n /**\n * Reads an unsigned 8-bit value from the JPEG byte cursor for the JPEG\n * decoder.\n */\n readU8()\n {\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end of input\");\n return this.#bytes[this.#offset++];\n }\n\n /**\n * Reads an unsigned 16-bit big-endian value from the JPEG byte cursor for\n * the JPEG decoder.\n */\n readU16()\n {\n return (this.readU8() << 8) | this.readU8();\n }\n\n /** Consumes and validates an expected JPEG marker for the JPEG decoder. */\n readMarker(expected = null)\n {\n const marker = this.nextMarker();\n if (expected !== null && marker !== expected) throw new Error(\"jpeg: missing SOI marker\");\n return marker;\n }\n\n /** Scans forward to the next valid JPEG marker byte for the JPEG decoder. */\n nextMarker()\n {\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset++] !== 0xff)\n {\n // Scan forward to the next marker prefix.\n }\n while (this.#offset < this.#bytes.length && this.#bytes[this.#offset] === 0xff) this.#offset++;\n if (this.#offset >= this.#bytes.length) throw new Error(\"jpeg: unexpected end while reading marker\");\n return this.#bytes[this.#offset++];\n }\n\n /**\n * Advances past the payload of an unhandled JPEG segment for the JPEG\n * decoder.\n */\n skipSegment()\n {\n const length = this.readU16();\n if (length < 2 || this.#offset + length - 2 > this.#bytes.length) throw new Error(\"jpeg: invalid segment length\");\n this.#offset += length - 2;\n }\n}\n\n/**\n * Bit-level reader over JPEG entropy-coded data that handles byte stuffing\n * and restart markers for the baseline decoder.\n */\nclass EntropyReader\n{\n #bytes;\n #offset;\n #buffer = 0;\n #bits = 0;\n #marker = null;\n\n /**\n * Creates a EntropyReader over caller-provided JPEG bytes and reader\n * options.\n */\n constructor(bytes, offset)\n {\n this.#bytes = bytes;\n this.#offset = offset;\n }\n\n /** Reads one entropy-coded bit for the JPEG binary reader. */\n readBit()\n {\n if (!this.#bits)\n {\n let value = this.#bytes[this.#offset++];\n if (value === 0xff)\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker !== 0x00) { this.#marker = marker; throw new Error(\"jpeg: unexpected marker in entropy data\"); }\n value = 0xff;\n }\n if (value === undefined) throw new Error(\"jpeg: unexpected end in entropy data\");\n this.#buffer = value;\n this.#bits = 8;\n }\n return (this.#buffer >>> --this.#bits) & 1;\n }\n\n /**\n * Reads the requested number of entropy-coded bits for the JPEG binary\n * reader.\n */\n readBits(count)\n {\n let value = 0;\n for (let i = 0; i < count; i++) value = (value << 1) | this.readBit();\n return value;\n }\n\n /**\n * Aligns the entropy cursor to the next byte boundary for the JPEG binary\n * reader.\n */\n align()\n {\n this.#bits = 0;\n }\n\n /**\n * Consumes and validates the next JPEG restart marker for the JPEG binary\n * reader.\n */\n consumeRestart()\n {\n while (this.#bytes[this.#offset] === 0xff) this.#offset++;\n const marker = this.#bytes[this.#offset++];\n if (marker < 0xd0 || marker > 0xd7) throw new Error(\"jpeg: missing restart marker\");\n }\n}\n\nfunction decodeHuffman(reader, table)\n{\n let code = 0;\n for (let length = 1; length <= 16; length++)\n {\n code = (code << 1) | reader.readBit();\n const entry = table[length].find(item => item.code === code);\n if (entry) return entry.value;\n }\n throw new Error(\"jpeg: invalid Huffman code\");\n}\n\nfunction receiveExtend(reader, size)\n{\n if (!size) return 0;\n const value = reader.readBits(size);\n const threshold = 1 << (size - 1);\n return value < threshold ? value - ((1 << size) - 1) : value;\n}\n\nfunction inverseDct(coefficients)\n{\n const output = new Uint8Array(64);\n for (let y = 0; y < 8; y++)\n {\n for (let x = 0; x < 8; x++)\n {\n let sum = 0;\n for (let v = 0; v < 8; v++)\n {\n for (let u = 0; u < 8; u++)\n {\n sum += SCALE[u] * SCALE[v] * coefficients[v * 8 + u] * COSINE[x][u] * COSINE[y][v];\n }\n }\n output[y * 8 + x] = clampByte(128 + sum / 4);\n }\n }\n return output;\n}\n\nfunction writeBlock(plane, planeWidth, originX, originY, block)\n{\n for (let y = 0; y < 8; y++)\n {\n const targetY = originY + y;\n if (targetY >= plane.length / planeWidth) continue;\n for (let x = 0; x < 8; x++)\n {\n const targetX = originX + x;\n if (targetX < planeWidth) plane[targetY * planeWidth + targetX] = block[y * 8 + x];\n }\n }\n}\n\nfunction sampleComponent(component, x, y, width, height)\n{\n const sampleX = Math.min(component.planeWidth - 1, Math.floor(x * component.planeWidth / width));\n const sampleY = Math.min(component.planeHeight - 1, Math.floor(y * component.planeHeight / height));\n return component.plane[sampleY * component.planeWidth + sampleX];\n}\n\nfunction clampByte(value)\n{\n return Math.max(0, Math.min(255, Math.round(value)));\n}\n"],"names":["ZIGZAG","COSINE","Array","from","length","_","x","u","Math","cos","PI","SCALE","value","sqrt","decodeJpegToRgba","bytes","metadata","decoder","BaselineJpegDecoder","image","decode","payloadType","sourceFormat","mimeType","width","height","pixelFormat","data","strideBytes","origin","colorSpace","alphaMode","canDecodeJpeg","precision","components","marker","progressive","Map","constructor","readMarker","nextMarker","readScanHeader","decodeScan","readQuantizationTables","readFrame","readHuffmanTables","readRestartInterval","skipSegment","Error","readU16","readU8","list","maxH","maxV","i","id","sampling","component","h","v","quantizationId","dc","ac","previousDc","plane","planeWidth","planeHeight","max","push","consumed","end","info","table","Uint16Array","set","fill","map","counts","code","valueIndex","count","byId","tables","get","spectralStart","spectralEnd","successive","frame","mcuWidth","mcuHeight","mcuColumns","ceil","mcuRows","Uint8Array","reader","EntropyReader","mcuIndex","row","column","y","block","decodeBlock","originX","originY","writeBlock","align","consumeRestart","offset","yValue","sampleComponent","cb","cr","clampByte","quantization","dcTable","acTable","coefficients","Int32Array","category","decodeHuffman","delta","receiveExtend","index","inverseDct","expected","readBit","undefined","readBits","entry","find","item","size","threshold","output","sum","targetY","targetX","sampleX","min","floor","sampleY","round"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isMP3, toBytes, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_PCM, OUTPUT_AUDIO } from './core/helpers.js';
1
+ import { CjsFormat } from '../../format/CjsFormat.js';
2
+ import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, toJsonValue, probeSupportWithValues, isMP3, toBytes, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_PCM, OUTPUT_AUDIO } from './core/helpers.js';
2
3
 
3
4
  const FORMAT_NAME = "CjsMp3Format";
4
5
 
@@ -6,7 +7,7 @@ const FORMAT_NAME = "CjsMp3Format";
6
7
  * MP3 audio format profile that inspects frame and tag metadata and emits
7
8
  * raw container bytes or debug JSON, with PCM decoding not implemented.
8
9
  */
9
- class CjsMp3Format {
10
+ class CjsMp3Format extends CjsFormat {
10
11
  #values = DEFAULT_VALUES;
11
12
 
12
13
  /**
@@ -15,6 +16,7 @@ class CjsMp3Format {
15
16
  * @param {object} [options] Default read/inspect options.
16
17
  */
17
18
  constructor(options = {}) {
19
+ super();
18
20
  this.SetValues(options);
19
21
  }
20
22
 
@@ -78,17 +80,6 @@ class CjsMp3Format {
78
80
  return inspectWithValues(input, this.GetValues(options), "mp3");
79
81
  }
80
82
 
81
- /**
82
- * Report whether MP3 input and requested output variants are supported.
83
- *
84
- * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.
85
- * @param {object} [options] Per-call values.
86
- * @returns {object} Support/probe report.
87
- */
88
- IsSupported(input, options = {}) {
89
- return isSupportedWithValues(input, this.GetValues(options), "mp3");
90
- }
91
-
92
83
  /**
93
84
  * Convert format output into JSON-compatible debug data.
94
85
  *
@@ -145,8 +136,8 @@ class CjsMp3Format {
145
136
  * @param {object} [options] Probe options.
146
137
  * @returns {object} Support/probe report.
147
138
  */
148
- static isSupported(input, options = {}) {
149
- return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, {
139
+ static probeSupport(input, options = {}) {
140
+ return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, {
150
141
  inputType: "mp3",
151
142
  ...options
152
143
  }, FORMAT_NAME), "mp3");
@@ -186,11 +177,20 @@ class CjsMp3Format {
186
177
  JSON: OUTPUT_JSON
187
178
  });
188
179
  static OUTPUT_MP3_JSON = "mp3Json";
189
- static type = Object.freeze(["audio"]);
180
+ static id = "mp3";
190
181
  static mediaTypes = Object.freeze(["audio"]);
191
- static inputTypes = Object.freeze(["mp3"]);
192
- static outputTypes = Object.freeze([]);
193
- static debugOutputTypes = Object.freeze(["mp3Json", OUTPUT_RAW]);
182
+ static outputs = CjsFormat.defineOutputs({
183
+ mp3Json: {
184
+ role: "debug",
185
+ probes: ["mp3Json", "raw"]
186
+ },
187
+ raw: {
188
+ role: "debug",
189
+ default: true,
190
+ passthrough: true
191
+ }
192
+ });
193
+ static extensions = Object.freeze([".mp3"]);
194
194
  }
195
195
 
196
196
  export { CjsMp3Format };
@@ -1 +1 @@
1
- {"version":3,"file":"CjsMp3Format.js","sources":["../../../../src/formats/mp3/CjsMp3Format.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isMP3,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp3Format\";\n\n/**\n * MP3 audio format profile that inspects frame and tag metadata and emits\n * raw container bytes or debug JSON, with PCM decoding not implemented.\n */\nexport class CjsMp3Format\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP3 format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsMp3Format} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP3 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Read MP3 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect MP3 bytes without decoding audio frames.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP3 header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Report whether MP3 input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot asynchronous MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsMp3Format.read(input, options);\n }\n\n /**\n * One-shot MP3 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP3 header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot MP3 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like an MP3 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP3 bytes.\n * @returns {boolean} True when ID3 or MPEG frame sync is present.\n */\n static isMP3(input)\n {\n try\n {\n return isMP3(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n AUDIO: OUTPUT_AUDIO,\n PCM: OUTPUT_PCM,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_MP3_JSON = \"mp3Json\";\n static type = Object.freeze([ \"audio\" ]);\n static mediaTypes = Object.freeze([ \"audio\" ]);\n static inputTypes = Object.freeze([ \"mp3\" ]);\n static outputTypes = Object.freeze([]);\n static debugOutputTypes = Object.freeze([ \"mp3Json\", OUTPUT_RAW ]);\n}\n\nexport default CjsMp3Format;\n"],"names":["FORMAT_NAME","CjsMp3Format","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isMP3","toBytes","Output","Object","freeze","AUDIO","OUTPUT_AUDIO","PCM","OUTPUT_PCM","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_MP3_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
1
+ {"version":3,"file":"CjsMp3Format.js","sources":["../../../../src/formats/mp3/CjsMp3Format.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isMP3,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsMp3Format\";\n\n/**\n * MP3 audio format profile that inspects frame and tag metadata and emits\n * raw container bytes or debug JSON, with PCM decoding not implemented.\n */\nexport class CjsMp3Format extends CjsFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable MP3 format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsMp3Format} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"mp3\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read MP3 bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Read MP3 bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect MP3 bytes without decoding audio frames.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} MP3 header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot asynchronous MP3 read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsMp3Format.read(input, options);\n }\n\n /**\n * One-shot MP3 inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} MP3 header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * One-shot MP3 support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input MP3 bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static probeSupport(input, options = {})\n {\n return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"mp3\", ...options }, FORMAT_NAME), \"mp3\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like an MP3 file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate MP3 bytes.\n * @returns {boolean} True when ID3 or MPEG frame sync is present.\n */\n static isMP3(input)\n {\n try\n {\n return isMP3(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n AUDIO: OUTPUT_AUDIO,\n PCM: OUTPUT_PCM,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_MP3_JSON = \"mp3Json\";\n static id = \"mp3\";\n static mediaTypes = Object.freeze([ \"audio\" ]);\n static outputs = CjsFormat.defineOutputs({\n mp3Json: { role: \"debug\", probes: [ \"mp3Json\", \"raw\" ] },\n raw: { role: \"debug\", default: true, passthrough: true }\n });\n static extensions = Object.freeze([ \".mp3\" ]);\n}\n\nexport default CjsMp3Format;\n"],"names":["FORMAT_NAME","CjsMp3Format","CjsFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","probeSupport","probeSupportWithValues","toJSON","isMP3","toBytes","Output","Object","freeze","AUDIO","OUTPUT_AUDIO","PCM","OUTPUT_PCM","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_MP3_JSON","id","mediaTypes","outputs","defineOutputs","mp3Json","role","probes","raw","default","passthrough","extensions"],"mappings":"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"}
@@ -69,7 +69,7 @@ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
69
69
  * Reports whether input is supported under normalized format options for the MP3
70
70
  * format reader.
71
71
  */
72
- function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
72
+ function probeSupportWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
73
73
  try {
74
74
  const metadata = inspectWithValues(input, values, expectedType);
75
75
  const mimeType = getAudioMimeType(metadata);
@@ -78,10 +78,7 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = ""
78
78
  payloadType: "raw",
79
79
  codec: metadata.audioFormat || metadata.sourceFormat,
80
80
  mimeType,
81
- supported: true,
82
- containerOnly: true,
83
- isDecoded: false,
84
- pcmDecodeSupported: false
81
+ supported: true
85
82
  }, {
86
83
  kind: "pcm",
87
84
  payloadType: "pcm",
@@ -94,7 +91,7 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = ""
94
91
  source: values.source || "buffer",
95
92
  supported: metadata.sourceFormat ? "partial" : "none",
96
93
  confidence: metadata.sourceFormat ? 1 : 0,
97
- preferred: variants.find(variant => variant.supported)?.codec || "",
94
+ preferredOutput: variants.find(variant => variant.supported)?.kind || "",
98
95
  reason: metadata.sourceFormat ? "Container/header recognized." : "Unrecognized audio format.",
99
96
  metadata,
100
97
  variants,
@@ -107,7 +104,7 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = ""
107
104
  source: values.source || "buffer",
108
105
  supported: "none",
109
106
  confidence: 0,
110
- preferred: "",
107
+ preferredOutput: "",
111
108
  reason: error.message,
112
109
  metadata: null,
113
110
  variants: [],
@@ -126,9 +123,6 @@ function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
126
123
  payloadType: "raw",
127
124
  sourceFormat: metadata.sourceFormat,
128
125
  mimeType: getAudioMimeType(metadata),
129
- containerOnly: true,
130
- isDecoded: false,
131
- pcmDecodeSupported: false,
132
126
  metadata,
133
127
  bytes
134
128
  };
@@ -371,5 +365,5 @@ function readU32BE(bytes, offset) {
371
365
  return bytes[offset] * 0x1000000 + (bytes[offset + 1] << 16 | bytes[offset + 2] << 8 | bytes[offset + 3]) >>> 0;
372
366
  }
373
367
 
374
- export { DEFAULT_VALUES, OUTPUT_AUDIO, OUTPUT_JSON, OUTPUT_PCM, OUTPUT_RAW, inspectBytes, inspectWithValues, isMP3, isSupportedWithValues, isWAV, normalizeEmit, normalizeInputType, normalizeValues, readWithValues, toBytes, toJsonValue };
368
+ export { DEFAULT_VALUES, OUTPUT_AUDIO, OUTPUT_JSON, OUTPUT_PCM, OUTPUT_RAW, inspectBytes, inspectWithValues, isMP3, isWAV, normalizeEmit, normalizeInputType, normalizeValues, probeSupportWithValues, readWithValues, toBytes, toJsonValue };
375
369
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/mp3/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 MP3 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 MP3 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 MP3 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 MP3 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 MP3 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 MP3\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 mimeType = getAudioMimeType(metadata);\n const 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: false\n },\n { kind: \"pcm\", payloadType: \"pcm\", codec: \"pcm\", supported: false, reason: \"MP3 PCM decode/output is not implemented yet.\" }\n ];\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? \"partial\" : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: variants.find((variant) => variant.supported)?.codec || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized audio 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 MP3 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: false,\n metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\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 === \"wav\") return \"audio/wav\";\n return \"audio/mpeg\";\n}\n\n/** Converts a parsed payload into a JSON-safe value for the MP3 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 MP3 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 MP3 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 MP3\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 = { sourceFormat: \"wav\", audioFormat: \"wav\", sampleRate: 0, channels: 0, bitsPerSample: 0, dataBytes: 0 };\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 info.formatTag = readU16LE(bytes, dataOffset);\n info.channels = readU16LE(bytes, dataOffset + 2);\n info.sampleRate = readU32LE(bytes, dataOffset + 4);\n info.bitsPerSample = readU16LE(bytes, dataOffset + 14);\n }\n if (id === \"data\") info.dataBytes = size;\n offset = dataOffset + size + (size & 1);\n }\n return info;\n}\n\nfunction inspectMP3(bytes)\n{\n const frame = readMp3FrameHeader(bytes, findMp3FrameOffset(bytes));\n const id3 = readId3Header(bytes);\n const info = {\n sourceFormat: \"mp3\",\n audioFormat: \"mp3\",\n hasId3: !!id3,\n id3Version: id3?.version || 0,\n id3Revision: id3?.revision || 0,\n id3Flags: id3?.flags || 0,\n id3Size: id3?.size || 0,\n firstFrameOffset: frame?.offset || 0,\n version: frame?.version || \"\",\n layer: frame?.layer || \"\",\n bitrateKbps: frame?.bitrateKbps || 0,\n sampleRate: frame?.sampleRate || 0,\n channels: frame?.channels || 0,\n samplesPerFrame: frame?.samplesPerFrame || 0,\n frameLength: frame?.frameLength || 0,\n frameCount: 0,\n durationSeconds: 0,\n declaredFrameCount: 0,\n declaredByteCount: 0,\n vbrHeader: \"\",\n encoderDelay: 0,\n encoderPadding: 0\n };\n\n if (frame)\n {\n const vbr = readVbrHeader(bytes, frame);\n if (vbr)\n {\n info.declaredFrameCount = vbr.frameCount;\n info.declaredByteCount = vbr.byteCount;\n info.vbrHeader = vbr.kind;\n info.encoderDelay = vbr.encoderDelay;\n info.encoderPadding = vbr.encoderPadding;\n }\n let offset = frame.offset;\n while (offset + 4 <= bytes.byteLength && info.frameCount < 1000000)\n {\n const next = readMp3FrameHeader(bytes, offset);\n if (!next || next.frameLength <= 0) break;\n info.frameCount++;\n offset += next.frameLength;\n }\n const frameCount = info.declaredFrameCount || info.frameCount;\n const trimmedSamples = Math.max(0, frameCount * info.samplesPerFrame - info.encoderDelay - info.encoderPadding);\n info.durationSeconds = info.sampleRate ? trimmedSamples / info.sampleRate : 0;\n }\n\n return info;\n}\n\nfunction readId3Header(bytes)\n{\n if (bytes.byteLength < 10 || fourCc(bytes, 0, 3) !== \"ID3\") return null;\n return {\n version: bytes[3],\n revision: bytes[4],\n flags: bytes[5],\n size: (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9]\n };\n}\n\nfunction readVbrHeader(bytes, frame)\n{\n const sideInfoLength = frame.version === \"mpeg1\"\n ? frame.channels === 1 ? 17 : 32\n : frame.channels === 1 ? 9 : 17;\n const xingOffset = frame.offset + 4 + sideInfoLength;\n for (const kind of [ \"Xing\", \"Info\" ])\n {\n if (fourCc(bytes, xingOffset, 4) !== kind) continue;\n const flags = readU32BE(bytes, xingOffset + 4);\n const frameCount = (flags & 1) !== 0 ? readU32BE(bytes, xingOffset + 8) : 0;\n const byteCount = (flags & 2) !== 0 ? readU32BE(bytes, xingOffset + 12) : 0;\n const gapless = readLameGapless(bytes, xingOffset + 8 + ((flags & 1) !== 0 ? 4 : 0) + ((flags & 2) !== 0 ? 4 : 0) + ((flags & 4) !== 0 ? 100 : 0));\n return { kind, frameCount, byteCount, ...gapless };\n }\n\n const vbriOffset = frame.offset + 36;\n if (fourCc(bytes, vbriOffset, 4) === \"VBRI\")\n {\n return {\n kind: \"VBRI\",\n frameCount: readU32BE(bytes, vbriOffset + 14),\n byteCount: readU32BE(bytes, vbriOffset + 10),\n encoderDelay: 0,\n encoderPadding: 0\n };\n }\n\n return null;\n}\n\nfunction readLameGapless(bytes, searchStart)\n{\n const end = Math.min(bytes.byteLength - 3, searchStart + 160);\n for (let offset = searchStart; offset < end; offset++)\n {\n if (fourCc(bytes, offset, 4) !== \"LAME\") continue;\n const value = (bytes[offset + 0x15] << 16) | (bytes[offset + 0x16] << 8) | bytes[offset + 0x17];\n return {\n encoderDelay: (value >>> 12) & 0xfff,\n encoderPadding: value & 0xfff\n };\n }\n return { encoderDelay: 0, encoderPadding: 0 };\n}\n\nfunction findMp3FrameOffset(bytes)\n{\n let offset = 0;\n if (fourCc(bytes, 0, 3) === \"ID3\" && bytes.byteLength >= 10)\n {\n const size = (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9];\n offset = 10 + size + (bytes[5] & 0x10 ? 10 : 0);\n }\n for (; offset + 4 <= bytes.byteLength; offset++)\n {\n if (readMp3FrameHeader(bytes, offset)) return offset;\n }\n return -1;\n}\n\nfunction readMp3FrameHeader(bytes, offset)\n{\n if (offset < 0 || offset + 4 > bytes.byteLength) return null;\n const header = ((bytes[offset] << 24) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n if (((header & 0xffe00000) >>> 0) !== 0xffe00000) return null;\n\n const versionBits = (header >>> 19) & 3;\n const layerBits = (header >>> 17) & 3;\n const bitrateIndex = (header >>> 12) & 0xf;\n const sampleRateIndex = (header >>> 10) & 3;\n const padding = (header >>> 9) & 1;\n const channelMode = (header >>> 6) & 3;\n if (versionBits === 1 || layerBits !== 1 || bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3)\n {\n return null;\n }\n\n const version = versionBits === 3 ? \"mpeg1\" : versionBits === 2 ? \"mpeg2\" : \"mpeg2.5\";\n const bitrateTable = version === \"mpeg1\"\n ? [ 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 ]\n : [ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 ];\n const sampleRateTable = version === \"mpeg1\"\n ? [ 44100, 48000, 32000 ]\n : version === \"mpeg2\" ? [ 22050, 24000, 16000 ] : [ 11025, 12000, 8000 ];\n const bitrateKbps = bitrateTable[bitrateIndex];\n const sampleRate = sampleRateTable[sampleRateIndex];\n const samplesPerFrame = version === \"mpeg1\" ? 1152 : 576;\n const frameLength = Math.floor((version === \"mpeg1\" ? 144000 : 72000) * bitrateKbps / sampleRate) + padding;\n if (offset + frameLength > bytes.byteLength) return null;\n\n return {\n offset,\n version,\n layer: \"layer3\",\n bitrateKbps,\n sampleRate,\n channels: channelMode === 3 ? 1 : 2,\n samplesPerFrame,\n frameLength\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 readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\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","mimeType","getAudioMimeType","variants","kind","codec","audioFormat","supported","containerOnly","isDecoded","pcmDecodeSupported","reason","format","confidence","preferred","find","variant","warnings","errors","error","message","readWithValues","Error","code","toJsonValue","value","Array","isArray","map","output","key","entry","entries","isWAV","inspectWAV","isMP3","inspectMP3","fourCc","offset","info","sampleRate","channels","bitsPerSample","dataBytes","id","size","readU32LE","dataOffset","formatTag","readU16LE","frame","readMp3FrameHeader","findMp3FrameOffset","id3","readId3Header","hasId3","id3Version","version","id3Revision","revision","id3Flags","flags","id3Size","firstFrameOffset","layer","bitrateKbps","samplesPerFrame","frameLength","frameCount","durationSeconds","declaredFrameCount","declaredByteCount","vbrHeader","encoderDelay","encoderPadding","vbr","readVbrHeader","byteCount","next","trimmedSamples","Math","max","sideInfoLength","xingOffset","readU32BE","gapless","readLameGapless","vbriOffset","searchStart","end","min","header","versionBits","layerBits","bitrateIndex","sampleRateIndex","padding","channelMode","bitrateTable","sampleRateTable","floor","length","i","fromCharCode"],"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;;AAEF;AACA;AACA;AACA;AACO,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;;AAEA;AACO,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;;AAEA;AACO,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;;AAEA;AACO,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;;AAEA;AACO,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;;AAEA;AACA;AACA;AACA;AACO,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;AAC/D,IAAA,MAAMQ,QAAQ,GAAGC,gBAAgB,CAACP,QAAQ,CAAC;IAC3C,MAAMQ,QAAQ,GAAG,CACb;AACIC,MAAAA,IAAI,EAAE,KAAK;AACXN,MAAAA,WAAW,EAAE,KAAK;AAClBO,MAAAA,KAAK,EAAEV,QAAQ,CAACW,WAAW,IAAIX,QAAQ,CAACE,YAAY;MACpDI,QAAQ;AACRM,MAAAA,SAAS,EAAE,IAAI;AACfC,MAAAA,aAAa,EAAE,IAAI;AACnBC,MAAAA,SAAS,EAAE,KAAK;AAChBC,MAAAA,kBAAkB,EAAE;AACxB,KAAC,EACD;AAAEN,MAAAA,IAAI,EAAE,KAAK;AAAEN,MAAAA,WAAW,EAAE,KAAK;AAAEO,MAAAA,KAAK,EAAE,KAAK;AAAEE,MAAAA,SAAS,EAAE,KAAK;AAAEI,MAAAA,MAAM,EAAE;AAAgD,KAAC,CAC/H;IACD,OAAO;MACHC,MAAM,EAAEjB,QAAQ,CAACE,YAAY;AAC7BhC,MAAAA,MAAM,EAAEQ,MAAM,CAACR,MAAM,IAAI,QAAQ;AACjC0C,MAAAA,SAAS,EAAEZ,QAAQ,CAACE,YAAY,GAAG,SAAS,GAAG,MAAM;AACrDgB,MAAAA,UAAU,EAAElB,QAAQ,CAACE,YAAY,GAAG,CAAC,GAAG,CAAC;AACzCiB,MAAAA,SAAS,EAAEX,QAAQ,CAACY,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACT,SAAS,CAAC,EAAEF,KAAK,IAAI,EAAE;AACrEM,MAAAA,MAAM,EAAEhB,QAAQ,CAACE,YAAY,GAAG,8BAA8B,GAAG,4BAA4B;MAC7FF,QAAQ;MACRQ,QAAQ;AACRc,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,MAAM,EAAE;KACX;EACL,CAAC,CACD,OAAOC,KAAK,EACZ;IACI,OAAO;AACHP,MAAAA,MAAM,EAAEnB,YAAY,IAAIpB,MAAM,CAACT,SAAS,IAAI,EAAE;AAC9CC,MAAAA,MAAM,EAAEQ,MAAM,CAACR,MAAM,IAAI,QAAQ;AACjC0C,MAAAA,SAAS,EAAE,MAAM;AACjBM,MAAAA,UAAU,EAAE,CAAC;AACbC,MAAAA,SAAS,EAAE,EAAE;MACbH,MAAM,EAAEQ,KAAK,CAACC,OAAO;AACrBzB,MAAAA,QAAQ,EAAE,IAAI;AACdQ,MAAAA,QAAQ,EAAE,EAAE;AACZc,MAAAA,QAAQ,EAAE,EAAE;AACZC,MAAAA,MAAM,EAAE,CAAEC,KAAK,CAACC,OAAO;KAC1B;AACL,EAAA;AACJ;;AAEA;AACO,SAASC,cAAcA,CAACpC,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;AACnCI,MAAAA,QAAQ,EAAEC,gBAAgB,CAACP,QAAQ,CAAC;AACpCa,MAAAA,aAAa,EAAE,IAAI;AACnBC,MAAAA,SAAS,EAAE,KAAK;AAChBC,MAAAA,kBAAkB,EAAE,KAAK;MACzBf,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;AAExG,EAAA,MAAMwB,KAAK,GAAG,IAAIG,KAAK,CAAC,CAAA,EAAG3B,QAAQ,CAACE,YAAY,CAAA,QAAA,EAAWxB,MAAM,CAACV,IAAI,0BAA0B,CAAC;EACjGwD,KAAK,CAACI,IAAI,GAAG,mCAAmC;AAChDJ,EAAAA,KAAK,CAACtB,YAAY,GAAGF,QAAQ,CAACE,YAAY;AAC1CsB,EAAAA,KAAK,CAACxD,IAAI,GAAGU,MAAM,CAACV,IAAI;AACxB,EAAA,MAAMwD,KAAK;AACf;AAEA,SAASjB,gBAAgBA,CAACP,QAAQ,EAClC;AACI,EAAA,IAAIA,QAAQ,CAACE,YAAY,KAAK,KAAK,EAAE,OAAO,WAAW;AACvD,EAAA,OAAO,YAAY;AACvB;;AAEA;AACO,SAAS2B,WAAWA,CAACC,KAAK,EACjC;AACI,EAAA,IAAIA,KAAK,YAAYvC,UAAU,EAAE,OAAO;IAAEK,UAAU,EAAEkC,KAAK,CAAClC;GAAY;AACxE,EAAA,IAAImC,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,IAAItE,MAAM,CAACuE,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;;AAEA;AACA;AACA;AACA;AACO,SAAS7B,YAAYA,CAACF,KAAK,EAClC;EACI,IAAIuC,KAAK,CAACvC,KAAK,CAAC,EAAE,OAAOwC,UAAU,CAACxC,KAAK,CAAC;EAC1C,IAAIyC,KAAK,CAACzC,KAAK,CAAC,EAAE,OAAO0C,UAAU,CAAC1C,KAAK,CAAC;EAC1C,OAAO;AAAEG,IAAAA,YAAY,EAAE,EAAE;AAAES,IAAAA,WAAW,EAAE;GAAI;AAChD;;AAEA;AACA;AACA;AACA;AACO,SAAS2B,KAAKA,CAACvC,KAAK,EAC3B;EACI,OAAOA,KAAK,CAACH,UAAU,IAAI,EAAE,IAAI8C,MAAM,CAAC3C,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI2C,MAAM,CAAC3C,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM;AAC/F;;AAEA;AACA;AACA;AACA;AACO,SAASyC,KAAKA,CAACzC,KAAK,EAC3B;AACI,EAAA,OAAOA,KAAK,CAACH,UAAU,IAAI,CAAC,KACvB8C,MAAM,CAAC3C,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,SAASwC,UAAUA,CAACxC,KAAK,EACzB;EACI,IAAI4C,MAAM,GAAG,EAAE;AACf,EAAA,MAAMC,IAAI,GAAG;AAAE1C,IAAAA,YAAY,EAAE,KAAK;AAAES,IAAAA,WAAW,EAAE,KAAK;AAAEkC,IAAAA,UAAU,EAAE,CAAC;AAAEC,IAAAA,QAAQ,EAAE,CAAC;AAAEC,IAAAA,aAAa,EAAE,CAAC;AAAEC,IAAAA,SAAS,EAAE;GAAG;AACpH,EAAA,OAAOL,MAAM,GAAG,CAAC,IAAI5C,KAAK,CAACH,UAAU,EACrC;AACI,IAAA,MAAMqD,EAAE,GAAGP,MAAM,CAAC3C,KAAK,EAAE4C,MAAM,CAAC;MAAEO,IAAI,GAAGC,SAAS,CAACpD,KAAK,EAAE4C,MAAM,GAAG,CAAC,CAAC;MAAES,UAAU,GAAGT,MAAM,GAAG,CAAC;IAC9F,IAAIM,EAAE,KAAK,MAAM,IAAIG,UAAU,GAAG,EAAE,IAAIrD,KAAK,CAACH,UAAU,EACxD;MACIgD,IAAI,CAACS,SAAS,GAAGC,SAAS,CAACvD,KAAK,EAAEqD,UAAU,CAAC;MAC7CR,IAAI,CAACE,QAAQ,GAAGQ,SAAS,CAACvD,KAAK,EAAEqD,UAAU,GAAG,CAAC,CAAC;MAChDR,IAAI,CAACC,UAAU,GAAGM,SAAS,CAACpD,KAAK,EAAEqD,UAAU,GAAG,CAAC,CAAC;MAClDR,IAAI,CAACG,aAAa,GAAGO,SAAS,CAACvD,KAAK,EAAEqD,UAAU,GAAG,EAAE,CAAC;AAC1D,IAAA;IACA,IAAIH,EAAE,KAAK,MAAM,EAAEL,IAAI,CAACI,SAAS,GAAGE,IAAI;IACxCP,MAAM,GAAGS,UAAU,GAAGF,IAAI,IAAIA,IAAI,GAAG,CAAC,CAAC;AAC3C,EAAA;AACA,EAAA,OAAON,IAAI;AACf;AAEA,SAASH,UAAUA,CAAC1C,KAAK,EACzB;EACI,MAAMwD,KAAK,GAAGC,kBAAkB,CAACzD,KAAK,EAAE0D,kBAAkB,CAAC1D,KAAK,CAAC,CAAC;AAClE,EAAA,MAAM2D,GAAG,GAAGC,aAAa,CAAC5D,KAAK,CAAC;AAChC,EAAA,MAAM6C,IAAI,GAAG;AACT1C,IAAAA,YAAY,EAAE,KAAK;AACnBS,IAAAA,WAAW,EAAE,KAAK;IAClBiD,MAAM,EAAE,CAAC,CAACF,GAAG;AACbG,IAAAA,UAAU,EAAEH,GAAG,EAAEI,OAAO,IAAI,CAAC;AAC7BC,IAAAA,WAAW,EAAEL,GAAG,EAAEM,QAAQ,IAAI,CAAC;AAC/BC,IAAAA,QAAQ,EAAEP,GAAG,EAAEQ,KAAK,IAAI,CAAC;AACzBC,IAAAA,OAAO,EAAET,GAAG,EAAER,IAAI,IAAI,CAAC;AACvBkB,IAAAA,gBAAgB,EAAEb,KAAK,EAAEZ,MAAM,IAAI,CAAC;AACpCmB,IAAAA,OAAO,EAAEP,KAAK,EAAEO,OAAO,IAAI,EAAE;AAC7BO,IAAAA,KAAK,EAAEd,KAAK,EAAEc,KAAK,IAAI,EAAE;AACzBC,IAAAA,WAAW,EAAEf,KAAK,EAAEe,WAAW,IAAI,CAAC;AACpCzB,IAAAA,UAAU,EAAEU,KAAK,EAAEV,UAAU,IAAI,CAAC;AAClCC,IAAAA,QAAQ,EAAES,KAAK,EAAET,QAAQ,IAAI,CAAC;AAC9ByB,IAAAA,eAAe,EAAEhB,KAAK,EAAEgB,eAAe,IAAI,CAAC;AAC5CC,IAAAA,WAAW,EAAEjB,KAAK,EAAEiB,WAAW,IAAI,CAAC;AACpCC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,eAAe,EAAE,CAAC;AAClBC,IAAAA,kBAAkB,EAAE,CAAC;AACrBC,IAAAA,iBAAiB,EAAE,CAAC;AACpBC,IAAAA,SAAS,EAAE,EAAE;AACbC,IAAAA,YAAY,EAAE,CAAC;AACfC,IAAAA,cAAc,EAAE;GACnB;AAED,EAAA,IAAIxB,KAAK,EACT;AACI,IAAA,MAAMyB,GAAG,GAAGC,aAAa,CAAClF,KAAK,EAAEwD,KAAK,CAAC;AACvC,IAAA,IAAIyB,GAAG,EACP;AACIpC,MAAAA,IAAI,CAAC+B,kBAAkB,GAAGK,GAAG,CAACP,UAAU;AACxC7B,MAAAA,IAAI,CAACgC,iBAAiB,GAAGI,GAAG,CAACE,SAAS;AACtCtC,MAAAA,IAAI,CAACiC,SAAS,GAAGG,GAAG,CAACvE,IAAI;AACzBmC,MAAAA,IAAI,CAACkC,YAAY,GAAGE,GAAG,CAACF,YAAY;AACpClC,MAAAA,IAAI,CAACmC,cAAc,GAAGC,GAAG,CAACD,cAAc;AAC5C,IAAA;AACA,IAAA,IAAIpC,MAAM,GAAGY,KAAK,CAACZ,MAAM;AACzB,IAAA,OAAOA,MAAM,GAAG,CAAC,IAAI5C,KAAK,CAACH,UAAU,IAAIgD,IAAI,CAAC6B,UAAU,GAAG,OAAO,EAClE;AACI,MAAA,MAAMU,IAAI,GAAG3B,kBAAkB,CAACzD,KAAK,EAAE4C,MAAM,CAAC;MAC9C,IAAI,CAACwC,IAAI,IAAIA,IAAI,CAACX,WAAW,IAAI,CAAC,EAAE;MACpC5B,IAAI,CAAC6B,UAAU,EAAE;MACjB9B,MAAM,IAAIwC,IAAI,CAACX,WAAW;AAC9B,IAAA;IACA,MAAMC,UAAU,GAAG7B,IAAI,CAAC+B,kBAAkB,IAAI/B,IAAI,CAAC6B,UAAU;IAC7D,MAAMW,cAAc,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEb,UAAU,GAAG7B,IAAI,CAAC2B,eAAe,GAAG3B,IAAI,CAACkC,YAAY,GAAGlC,IAAI,CAACmC,cAAc,CAAC;AAC/GnC,IAAAA,IAAI,CAAC8B,eAAe,GAAG9B,IAAI,CAACC,UAAU,GAAGuC,cAAc,GAAGxC,IAAI,CAACC,UAAU,GAAG,CAAC;AACjF,EAAA;AAEA,EAAA,OAAOD,IAAI;AACf;AAEA,SAASe,aAAaA,CAAC5D,KAAK,EAC5B;AACI,EAAA,IAAIA,KAAK,CAACH,UAAU,GAAG,EAAE,IAAI8C,MAAM,CAAC3C,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,OAAO,IAAI;EACvE,OAAO;AACH+D,IAAAA,OAAO,EAAE/D,KAAK,CAAC,CAAC,CAAC;AACjBiE,IAAAA,QAAQ,EAAEjE,KAAK,CAAC,CAAC,CAAC;AAClBmE,IAAAA,KAAK,EAAEnE,KAAK,CAAC,CAAC,CAAC;IACfmD,IAAI,EAAGnD,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAKA,KAAK,CAAC,CAAC,CAAC,IAAI,EAAG,GAAIA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAE,GAAGA,KAAK,CAAC,CAAC;GACxE;AACL;AAEA,SAASkF,aAAaA,CAAClF,KAAK,EAAEwD,KAAK,EACnC;EACI,MAAMgC,cAAc,GAAGhC,KAAK,CAACO,OAAO,KAAK,OAAO,GAC1CP,KAAK,CAACT,QAAQ,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAC9BS,KAAK,CAACT,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;EACnC,MAAM0C,UAAU,GAAGjC,KAAK,CAACZ,MAAM,GAAG,CAAC,GAAG4C,cAAc;EACpD,KAAK,MAAM9E,IAAI,IAAI,CAAE,MAAM,EAAE,MAAM,CAAE,EACrC;IACI,IAAIiC,MAAM,CAAC3C,KAAK,EAAEyF,UAAU,EAAE,CAAC,CAAC,KAAK/E,IAAI,EAAE;IAC3C,MAAMyD,KAAK,GAAGuB,SAAS,CAAC1F,KAAK,EAAEyF,UAAU,GAAG,CAAC,CAAC;AAC9C,IAAA,MAAMf,UAAU,GAAG,CAACP,KAAK,GAAG,CAAC,MAAM,CAAC,GAAGuB,SAAS,CAAC1F,KAAK,EAAEyF,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;AAC3E,IAAA,MAAMN,SAAS,GAAG,CAAChB,KAAK,GAAG,CAAC,MAAM,CAAC,GAAGuB,SAAS,CAAC1F,KAAK,EAAEyF,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC;IAC3E,MAAME,OAAO,GAAGC,eAAe,CAAC5F,KAAK,EAAEyF,UAAU,GAAG,CAAC,IAAI,CAACtB,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAACA,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAACA,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IAClJ,OAAO;MAAEzD,IAAI;MAAEgE,UAAU;MAAES,SAAS;MAAE,GAAGQ;KAAS;AACtD,EAAA;AAEA,EAAA,MAAME,UAAU,GAAGrC,KAAK,CAACZ,MAAM,GAAG,EAAE;EACpC,IAAID,MAAM,CAAC3C,KAAK,EAAE6F,UAAU,EAAE,CAAC,CAAC,KAAK,MAAM,EAC3C;IACI,OAAO;AACHnF,MAAAA,IAAI,EAAE,MAAM;MACZgE,UAAU,EAAEgB,SAAS,CAAC1F,KAAK,EAAE6F,UAAU,GAAG,EAAE,CAAC;MAC7CV,SAAS,EAAEO,SAAS,CAAC1F,KAAK,EAAE6F,UAAU,GAAG,EAAE,CAAC;AAC5Cd,MAAAA,YAAY,EAAE,CAAC;AACfC,MAAAA,cAAc,EAAE;KACnB;AACL,EAAA;AAEA,EAAA,OAAO,IAAI;AACf;AAEA,SAASY,eAAeA,CAAC5F,KAAK,EAAE8F,WAAW,EAC3C;AACI,EAAA,MAAMC,GAAG,GAAGT,IAAI,CAACU,GAAG,CAAChG,KAAK,CAACH,UAAU,GAAG,CAAC,EAAEiG,WAAW,GAAG,GAAG,CAAC;EAC7D,KAAK,IAAIlD,MAAM,GAAGkD,WAAW,EAAElD,MAAM,GAAGmD,GAAG,EAAEnD,MAAM,EAAE,EACrD;IACI,IAAID,MAAM,CAAC3C,KAAK,EAAE4C,MAAM,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;IACzC,MAAMb,KAAK,GAAI/B,KAAK,CAAC4C,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAK5C,KAAK,CAAC4C,MAAM,GAAG,IAAI,CAAC,IAAI,CAAE,GAAG5C,KAAK,CAAC4C,MAAM,GAAG,IAAI,CAAC;IAC/F,OAAO;AACHmC,MAAAA,YAAY,EAAGhD,KAAK,KAAK,EAAE,GAAI,KAAK;MACpCiD,cAAc,EAAEjD,KAAK,GAAG;KAC3B;AACL,EAAA;EACA,OAAO;AAAEgD,IAAAA,YAAY,EAAE,CAAC;AAAEC,IAAAA,cAAc,EAAE;GAAG;AACjD;AAEA,SAAStB,kBAAkBA,CAAC1D,KAAK,EACjC;EACI,IAAI4C,MAAM,GAAG,CAAC;AACd,EAAA,IAAID,MAAM,CAAC3C,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAIA,KAAK,CAACH,UAAU,IAAI,EAAE,EAC3D;IACI,MAAMsD,IAAI,GAAInD,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,GAAKA,KAAK,CAAC,CAAC,CAAC,IAAI,EAAG,GAAIA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAE,GAAGA,KAAK,CAAC,CAAC,CAAC;AAC7E4C,IAAAA,MAAM,GAAG,EAAE,GAAGO,IAAI,IAAInD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,EAAA;EACA,OAAO4C,MAAM,GAAG,CAAC,IAAI5C,KAAK,CAACH,UAAU,EAAE+C,MAAM,EAAE,EAC/C;IACI,IAAIa,kBAAkB,CAACzD,KAAK,EAAE4C,MAAM,CAAC,EAAE,OAAOA,MAAM;AACxD,EAAA;AACA,EAAA,OAAO,EAAE;AACb;AAEA,SAASa,kBAAkBA,CAACzD,KAAK,EAAE4C,MAAM,EACzC;AACI,EAAA,IAAIA,MAAM,GAAG,CAAC,IAAIA,MAAM,GAAG,CAAC,GAAG5C,KAAK,CAACH,UAAU,EAAE,OAAO,IAAI;AAC5D,EAAA,MAAMoG,MAAM,GAAG,CAAEjG,KAAK,CAAC4C,MAAM,CAAC,IAAI,EAAE,GAAK5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,GAAI5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAG5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;EACvH,IAAK,CAACqD,MAAM,GAAG,UAAU,MAAM,CAAC,KAAM,UAAU,EAAE,OAAO,IAAI;AAE7D,EAAA,MAAMC,WAAW,GAAID,MAAM,KAAK,EAAE,GAAI,CAAC;AACvC,EAAA,MAAME,SAAS,GAAIF,MAAM,KAAK,EAAE,GAAI,CAAC;AACrC,EAAA,MAAMG,YAAY,GAAIH,MAAM,KAAK,EAAE,GAAI,GAAG;AAC1C,EAAA,MAAMI,eAAe,GAAIJ,MAAM,KAAK,EAAE,GAAI,CAAC;AAC3C,EAAA,MAAMK,OAAO,GAAIL,MAAM,KAAK,CAAC,GAAI,CAAC;AAClC,EAAA,MAAMM,WAAW,GAAIN,MAAM,KAAK,CAAC,GAAI,CAAC;AACtC,EAAA,IAAIC,WAAW,KAAK,CAAC,IAAIC,SAAS,KAAK,CAAC,IAAIC,YAAY,KAAK,CAAC,IAAIA,YAAY,KAAK,EAAE,IAAIC,eAAe,KAAK,CAAC,EAC9G;AACI,IAAA,OAAO,IAAI;AACf,EAAA;AAEA,EAAA,MAAMtC,OAAO,GAAGmC,WAAW,KAAK,CAAC,GAAG,OAAO,GAAGA,WAAW,KAAK,CAAC,GAAG,OAAO,GAAG,SAAS;AACrF,EAAA,MAAMM,YAAY,GAAGzC,OAAO,KAAK,OAAO,GAClC,CAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,GACpE,CAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE;AACtE,EAAA,MAAM0C,eAAe,GAAG1C,OAAO,KAAK,OAAO,GACrC,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,GACvBA,OAAO,KAAK,OAAO,GAAG,CAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE,GAAG,CAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAE;AAC5E,EAAA,MAAMQ,WAAW,GAAGiC,YAAY,CAACJ,YAAY,CAAC;AAC9C,EAAA,MAAMtD,UAAU,GAAG2D,eAAe,CAACJ,eAAe,CAAC;EACnD,MAAM7B,eAAe,GAAGT,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG,GAAG;EACxD,MAAMU,WAAW,GAAGa,IAAI,CAACoB,KAAK,CAAC,CAAC3C,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG,KAAK,IAAIQ,WAAW,GAAGzB,UAAU,CAAC,GAAGwD,OAAO;EAC3G,IAAI1D,MAAM,GAAG6B,WAAW,GAAGzE,KAAK,CAACH,UAAU,EAAE,OAAO,IAAI;EAExD,OAAO;IACH+C,MAAM;IACNmB,OAAO;AACPO,IAAAA,KAAK,EAAE,QAAQ;IACfC,WAAW;IACXzB,UAAU;AACVC,IAAAA,QAAQ,EAAEwD,WAAW,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC/B,eAAe;AACfC,IAAAA;GACH;AACL;AAEA,SAAS9B,MAAMA,CAAC3C,KAAK,EAAE4C,MAAM,EAAE+D,MAAM,GAAG,CAAC,EACzC;EACI,IAAI5E,KAAK,GAAG,EAAE;EACd,KAAK,IAAI6E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,EAAEC,CAAC,EAAE,EAAE7E,KAAK,IAAIjD,MAAM,CAAC+H,YAAY,CAAC7G,KAAK,CAAC4C,MAAM,GAAGgE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrF,EAAA,OAAO7E,KAAK;AAChB;AAEA,SAASwB,SAASA,CAACvD,KAAK,EAAE4C,MAAM,EAChC;AACI,EAAA,OAAO5C,KAAK,CAAC4C,MAAM,CAAC,GAAI5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE;AACnD;AAEA,SAASQ,SAASA,CAACpD,KAAK,EAAE4C,MAAM,EAChC;AACI,EAAA,OAAO,CAAC5C,KAAK,CAAC4C,MAAM,CAAC,GAAI5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAI5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,GAAI5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,GAAG,SAAU,MAAM,CAAC;AACzH;AAEA,SAAS8C,SAASA,CAAC1F,KAAK,EAAE4C,MAAM,EAChC;AACI,EAAA,OAAS5C,KAAK,CAAC4C,MAAM,CAAC,GAAG,SAAS,IAAM5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,GAAK5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GAAG5C,KAAK,CAAC4C,MAAM,GAAG,CAAC,CAAC,CAAC,KAAM,CAAC;AAC3H;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../src/formats/mp3/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 MP3 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 MP3 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 MP3 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 MP3 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 MP3 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 MP3\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const mimeType = getAudioMimeType(metadata);\n const variants = [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.audioFormat || metadata.sourceFormat,\n mimeType,\n supported: true,\n },\n { kind: \"pcm\", payloadType: \"pcm\", codec: \"pcm\", supported: false, reason: \"MP3 PCM decode/output is not implemented yet.\" }\n ];\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? \"partial\" : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferredOutput: variants.find((variant) => variant.supported)?.kind || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized audio 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 preferredOutput: \"\",\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 MP3 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 metadata,\n bytes\n };\n }\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat]) return metadata;\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 === \"wav\") return \"audio/wav\";\n return \"audio/mpeg\";\n}\n\n/** Converts a parsed payload into a JSON-safe value for the MP3 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 MP3 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 MP3 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 MP3\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 = { sourceFormat: \"wav\", audioFormat: \"wav\", sampleRate: 0, channels: 0, bitsPerSample: 0, dataBytes: 0 };\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 info.formatTag = readU16LE(bytes, dataOffset);\n info.channels = readU16LE(bytes, dataOffset + 2);\n info.sampleRate = readU32LE(bytes, dataOffset + 4);\n info.bitsPerSample = readU16LE(bytes, dataOffset + 14);\n }\n if (id === \"data\") info.dataBytes = size;\n offset = dataOffset + size + (size & 1);\n }\n return info;\n}\n\nfunction inspectMP3(bytes)\n{\n const frame = readMp3FrameHeader(bytes, findMp3FrameOffset(bytes));\n const id3 = readId3Header(bytes);\n const info = {\n sourceFormat: \"mp3\",\n audioFormat: \"mp3\",\n hasId3: !!id3,\n id3Version: id3?.version || 0,\n id3Revision: id3?.revision || 0,\n id3Flags: id3?.flags || 0,\n id3Size: id3?.size || 0,\n firstFrameOffset: frame?.offset || 0,\n version: frame?.version || \"\",\n layer: frame?.layer || \"\",\n bitrateKbps: frame?.bitrateKbps || 0,\n sampleRate: frame?.sampleRate || 0,\n channels: frame?.channels || 0,\n samplesPerFrame: frame?.samplesPerFrame || 0,\n frameLength: frame?.frameLength || 0,\n frameCount: 0,\n durationSeconds: 0,\n declaredFrameCount: 0,\n declaredByteCount: 0,\n vbrHeader: \"\",\n encoderDelay: 0,\n encoderPadding: 0\n };\n\n if (frame)\n {\n const vbr = readVbrHeader(bytes, frame);\n if (vbr)\n {\n info.declaredFrameCount = vbr.frameCount;\n info.declaredByteCount = vbr.byteCount;\n info.vbrHeader = vbr.kind;\n info.encoderDelay = vbr.encoderDelay;\n info.encoderPadding = vbr.encoderPadding;\n }\n let offset = frame.offset;\n while (offset + 4 <= bytes.byteLength && info.frameCount < 1000000)\n {\n const next = readMp3FrameHeader(bytes, offset);\n if (!next || next.frameLength <= 0) break;\n info.frameCount++;\n offset += next.frameLength;\n }\n const frameCount = info.declaredFrameCount || info.frameCount;\n const trimmedSamples = Math.max(0, frameCount * info.samplesPerFrame - info.encoderDelay - info.encoderPadding);\n info.durationSeconds = info.sampleRate ? trimmedSamples / info.sampleRate : 0;\n }\n\n return info;\n}\n\nfunction readId3Header(bytes)\n{\n if (bytes.byteLength < 10 || fourCc(bytes, 0, 3) !== \"ID3\") return null;\n return {\n version: bytes[3],\n revision: bytes[4],\n flags: bytes[5],\n size: (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9]\n };\n}\n\nfunction readVbrHeader(bytes, frame)\n{\n const sideInfoLength = frame.version === \"mpeg1\"\n ? frame.channels === 1 ? 17 : 32\n : frame.channels === 1 ? 9 : 17;\n const xingOffset = frame.offset + 4 + sideInfoLength;\n for (const kind of [ \"Xing\", \"Info\" ])\n {\n if (fourCc(bytes, xingOffset, 4) !== kind) continue;\n const flags = readU32BE(bytes, xingOffset + 4);\n const frameCount = (flags & 1) !== 0 ? readU32BE(bytes, xingOffset + 8) : 0;\n const byteCount = (flags & 2) !== 0 ? readU32BE(bytes, xingOffset + 12) : 0;\n const gapless = readLameGapless(bytes, xingOffset + 8 + ((flags & 1) !== 0 ? 4 : 0) + ((flags & 2) !== 0 ? 4 : 0) + ((flags & 4) !== 0 ? 100 : 0));\n return { kind, frameCount, byteCount, ...gapless };\n }\n\n const vbriOffset = frame.offset + 36;\n if (fourCc(bytes, vbriOffset, 4) === \"VBRI\")\n {\n return {\n kind: \"VBRI\",\n frameCount: readU32BE(bytes, vbriOffset + 14),\n byteCount: readU32BE(bytes, vbriOffset + 10),\n encoderDelay: 0,\n encoderPadding: 0\n };\n }\n\n return null;\n}\n\nfunction readLameGapless(bytes, searchStart)\n{\n const end = Math.min(bytes.byteLength - 3, searchStart + 160);\n for (let offset = searchStart; offset < end; offset++)\n {\n if (fourCc(bytes, offset, 4) !== \"LAME\") continue;\n const value = (bytes[offset + 0x15] << 16) | (bytes[offset + 0x16] << 8) | bytes[offset + 0x17];\n return {\n encoderDelay: (value >>> 12) & 0xfff,\n encoderPadding: value & 0xfff\n };\n }\n return { encoderDelay: 0, encoderPadding: 0 };\n}\n\nfunction findMp3FrameOffset(bytes)\n{\n let offset = 0;\n if (fourCc(bytes, 0, 3) === \"ID3\" && bytes.byteLength >= 10)\n {\n const size = (bytes[6] << 21) | (bytes[7] << 14) | (bytes[8] << 7) | bytes[9];\n offset = 10 + size + (bytes[5] & 0x10 ? 10 : 0);\n }\n for (; offset + 4 <= bytes.byteLength; offset++)\n {\n if (readMp3FrameHeader(bytes, offset)) return offset;\n }\n return -1;\n}\n\nfunction readMp3FrameHeader(bytes, offset)\n{\n if (offset < 0 || offset + 4 > bytes.byteLength) return null;\n const header = ((bytes[offset] << 24) | (bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3]) >>> 0;\n if (((header & 0xffe00000) >>> 0) !== 0xffe00000) return null;\n\n const versionBits = (header >>> 19) & 3;\n const layerBits = (header >>> 17) & 3;\n const bitrateIndex = (header >>> 12) & 0xf;\n const sampleRateIndex = (header >>> 10) & 3;\n const padding = (header >>> 9) & 1;\n const channelMode = (header >>> 6) & 3;\n if (versionBits === 1 || layerBits !== 1 || bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3)\n {\n return null;\n }\n\n const version = versionBits === 3 ? \"mpeg1\" : versionBits === 2 ? \"mpeg2\" : \"mpeg2.5\";\n const bitrateTable = version === \"mpeg1\"\n ? [ 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 ]\n : [ 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 ];\n const sampleRateTable = version === \"mpeg1\"\n ? [ 44100, 48000, 32000 ]\n : version === \"mpeg2\" ? [ 22050, 24000, 16000 ] : [ 11025, 12000, 8000 ];\n const bitrateKbps = bitrateTable[bitrateIndex];\n const sampleRate = sampleRateTable[sampleRateIndex];\n const samplesPerFrame = version === \"mpeg1\" ? 1152 : 576;\n const frameLength = Math.floor((version === \"mpeg1\" ? 144000 : 72000) * bitrateKbps / sampleRate) + padding;\n if (offset + frameLength > bytes.byteLength) return null;\n\n return {\n offset,\n version,\n layer: \"layer3\",\n bitrateKbps,\n sampleRate,\n channels: channelMode === 3 ? 1 : 2,\n samplesPerFrame,\n frameLength\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 readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\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","probeSupportWithValues","mimeType","getAudioMimeType","variants","kind","codec","audioFormat","supported","reason","format","confidence","preferredOutput","find","variant","warnings","errors","error","message","readWithValues","Error","code","toJsonValue","value","Array","isArray","map","output","key","entry","entries","isWAV","inspectWAV","isMP3","inspectMP3","fourCc","offset","info","sampleRate","channels","bitsPerSample","dataBytes","id","size","readU32LE","dataOffset","formatTag","readU16LE","frame","readMp3FrameHeader","findMp3FrameOffset","id3","readId3Header","hasId3","id3Version","version","id3Revision","revision","id3Flags","flags","id3Size","firstFrameOffset","layer","bitrateKbps","samplesPerFrame","frameLength","frameCount","durationSeconds","declaredFrameCount","declaredByteCount","vbrHeader","encoderDelay","encoderPadding","vbr","readVbrHeader","byteCount","next","trimmedSamples","Math","max","sideInfoLength","xingOffset","readU32BE","gapless","readLameGapless","vbriOffset","searchStart","end","min","header","versionBits","layerBits","bitrateIndex","sampleRateIndex","padding","channelMode","bitrateTable","sampleRateTable","floor","length","i","fromCharCode"],"mappings":"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"}