@carbonenginejs/runtime-resource 0.7.0 → 0.8.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.
- package/FORMAT-PROVENANCE.md +155 -144
- package/LICENSE +21 -21
- package/NOTICE +29 -29
- package/README.md +11 -0
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3005 -3005
- package/dist/CjsResManQueue.js +214 -214
- package/dist/CjsResource.js +566 -566
- package/dist/CjsResourceSource.js +59 -59
- package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -153
- package/dist/format/CjsBlueReader.js +269 -269
- package/dist/format/CjsFormat.js +192 -192
- package/dist/format/CjsReader.js +18 -18
- package/dist/format/CjsResourceProbe.js +277 -277
- package/dist/format/payloadContract.js +173 -173
- package/dist/formats/black/CjsBlackFormat.js +278 -278
- package/dist/formats/black/core/CjsBlackBinaryReader.js +153 -153
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +382 -382
- package/dist/formats/black/core/CjsBlackReader.js +639 -639
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +433 -433
- package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +182 -182
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +125 -125
- package/dist/formats/bnk/core/graph.js +140 -140
- package/dist/formats/bnk/core/helpers.js +409 -409
- package/dist/formats/bnk/core/musicNodes.js +489 -489
- package/dist/formats/bnk/core/soundbanksInfo.js +246 -246
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +118 -118
- package/dist/formats/cmf/core/buffers.js +233 -233
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +287 -287
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +364 -364
- package/dist/formats/cmf/core/shared.js +268 -268
- package/dist/formats/cmf/core/writer.js +517 -517
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +193 -193
- package/dist/formats/dds/core/bc6h.js +288 -0
- package/dist/formats/dds/core/bc6h.js.map +1 -0
- package/dist/formats/dds/core/bc7.js +251 -0
- package/dist/formats/dds/core/bc7.js.map +1 -0
- package/dist/formats/dds/core/helpers.js +815 -812
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3901 -3901
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +87 -87
- package/dist/formats/flac/core/helpers.js +295 -295
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +87 -87
- package/dist/formats/gif/core/helpers.js +360 -360
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +290 -290
- package/dist/formats/gltf/core/helpers.js +292 -292
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +666 -666
- package/dist/formats/gltf/core/targets.js +163 -163
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/index.js +23 -23
- package/dist/formats/jpeg/CjsJpegFormat.js +206 -206
- package/dist/formats/jpeg/core/helpers.js +350 -350
- package/dist/formats/jpeg/core/jpeg.js +377 -377
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +192 -192
- package/dist/formats/mp3/core/helpers.js +338 -338
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +191 -191
- package/dist/formats/mp4/core/helpers.js +449 -449
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +253 -253
- package/dist/formats/obj/core/helpers.js +573 -573
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +88 -88
- package/dist/formats/ogg/core/helpers.js +387 -387
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +999 -999
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/png/CjsPngFormat.js +195 -195
- package/dist/formats/png/core/helpers.js +583 -583
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +261 -261
- package/dist/formats/red/core/CjsRedReader.js +194 -194
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +139 -139
- package/dist/formats/red/core/redGraph.js +68 -68
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +365 -365
- package/dist/formats/stl/core/helpers.js +261 -261
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +629 -629
- package/dist/formats/stl/core/targets.js +163 -163
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +192 -192
- package/dist/formats/tga/core/helpers.js +446 -446
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +192 -192
- package/dist/formats/wav/core/helpers.js +328 -328
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +191 -191
- package/dist/formats/webm/core/helpers.js +537 -537
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +86 -86
- package/dist/formats/webp/core/helpers.js +214 -214
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +241 -241
- package/dist/formats/wem/core/bitStream.js +259 -259
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +417 -417
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +83 -83
- package/dist/formats/yaml/core/CjsYamlReader.js +305 -305
- package/dist/formats/yaml/core/helpers.js +160 -160
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +48 -48
- package/dist/resourcePath.js +18 -18
- package/dist/resourceStates.js +9 -9
- package/dist/resources/AudioGeometryResData.js +47 -47
- package/dist/resources/GStateBindingCallbackData.js +31 -31
- package/dist/resources/MeshDecalData.js +37 -37
- package/dist/resources/MeshDecalLodData.js +34 -34
- package/dist/resources/Tr2EffectRes.js +71 -71
- package/dist/resources/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resources/Tr2GrannyStateRes.js +44 -44
- package/dist/resources/Tr2ImageRes.js +114 -114
- package/dist/resources/Tr2LightProfileRes.js +40 -40
- package/dist/resources/Tr2MaterialArea.js +34 -34
- package/dist/resources/Tr2MaterialMesh.js +31 -31
- package/dist/resources/Tr2MaterialRes.js +34 -34
- package/dist/resources/Tr2ShaderPermutation.js +43 -43
- package/dist/resources/Tr2TextureLodManager.js +80 -80
- package/dist/resources/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resources/Tr2TexturePackChannel.js +37 -37
- package/dist/resources/Tr2TexturePipeline.js +52 -52
- package/dist/resources/Tr2TexturePipelineParams.js +34 -34
- package/dist/resources/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resources/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resources/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resources/TriGeometryRes.js +239 -216
- package/dist/resources/TriGeometryRes.js.map +1 -1
- package/dist/resources/TriGeometryResAreaData.js +59 -59
- package/dist/resources/TriGeometryResJointData.js +38 -38
- package/dist/resources/TriGeometryResLodData.js +88 -88
- package/dist/resources/TriGeometryResMeshData.js +63 -63
- package/dist/resources/TriGeometryResSkeletonData.js +34 -34
- package/dist/resources/TriGrannyRes.js +43 -43
- package/dist/resources/TriJointBinding.js +38 -38
- package/dist/resources/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resources/TriRtGeometryConstants.js +88 -88
- package/dist/resources/TriTextureRes.js +304 -304
- package/dist/resources/enums.js +18 -18
- package/dist/resources/resourceBoundary.js +47 -47
- package/dist/resources/texturePipelineBehavior.js +308 -308
- package/dist/texture/CjsTextureArrayRes.js +406 -406
- package/dist/texture/CjsTextureParameterProxy.js +133 -133
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +20 -20
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +2 -2
- package/resource-lifecycle.md +679 -679
|
@@ -1,241 +1,241 @@
|
|
|
1
|
-
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isWEM, toBytes, OUTPUT_OGG, OUTPUT_PCM, OUTPUT_WEM_JSON, OUTPUT_JSON, OUTPUT_RAW, WEM_CODEC_NAMES } from './core/helpers.js';
|
|
2
|
-
import { resolveTypeWithValues } from './core/resolve.js';
|
|
3
|
-
|
|
4
|
-
const FORMAT_NAME = "CjsWemFormat";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Reader for Audiokinetic Wwise media (.wem) containers.
|
|
8
|
-
*
|
|
9
|
-
* Inspection identifies the codec, channel/rate layout, and Vorbis duration
|
|
10
|
-
* without decoding audio data. Read emits the container bytes untouched;
|
|
11
|
-
* decode/transcode targets are deliberately out of scope for this reader.
|
|
12
|
-
*/
|
|
13
|
-
class CjsWemFormat {
|
|
14
|
-
#values = DEFAULT_VALUES;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Create a reusable wem format profile.
|
|
18
|
-
*
|
|
19
|
-
* @param {object} [options] Default read/inspect options.
|
|
20
|
-
*/
|
|
21
|
-
constructor(options = {}) {
|
|
22
|
-
this.SetValues(options);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Merge options into this profile.
|
|
27
|
-
*
|
|
28
|
-
* @param {object} [options] Values to merge.
|
|
29
|
-
* @returns {CjsWemFormat} This format profile.
|
|
30
|
-
*/
|
|
31
|
-
SetValues(options = {}) {
|
|
32
|
-
this.#values = normalizeValues(this.#values, options, FORMAT_NAME);
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Get normalized profile values with optional per-call overrides.
|
|
38
|
-
*
|
|
39
|
-
* @param {object} [options] Per-call values.
|
|
40
|
-
* @returns {object} Normalized read values.
|
|
41
|
-
*/
|
|
42
|
-
GetValues(options = {}) {
|
|
43
|
-
return normalizeValues(this.#values, options, FORMAT_NAME);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Read wem bytes with this profile.
|
|
48
|
-
*
|
|
49
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
50
|
-
* @param {object} [options] Per-call values.
|
|
51
|
-
* @returns {object} GPU-free raw/debug payload for the selected emit target.
|
|
52
|
-
*/
|
|
53
|
-
Read(input, options = {}) {
|
|
54
|
-
return readWithValues(input, this.GetValues(options));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Read wem bytes asynchronously with this profile.
|
|
59
|
-
*
|
|
60
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
61
|
-
* @param {object} [options] Per-call values.
|
|
62
|
-
* @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.
|
|
63
|
-
*/
|
|
64
|
-
async ReadAsync(input, options = {}) {
|
|
65
|
-
return this.Read(input, options);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Inspect wem bytes without decoding audio data.
|
|
70
|
-
*
|
|
71
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
72
|
-
* @param {object} [options] Per-call values.
|
|
73
|
-
* @returns {object} Wwise container metadata.
|
|
74
|
-
*/
|
|
75
|
-
Inspect(input, options = {}) {
|
|
76
|
-
return inspectWithValues(input, this.GetValues(options));
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Report whether wem input and requested output variants are supported.
|
|
81
|
-
*
|
|
82
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
83
|
-
* @param {object} [options] Per-call values.
|
|
84
|
-
* @returns {object} Support/probe report.
|
|
85
|
-
*/
|
|
86
|
-
IsSupported(input, options = {}) {
|
|
87
|
-
return isSupportedWithValues(input, this.GetValues(options));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Convert format output into JSON-compatible debug data.
|
|
92
|
-
*
|
|
93
|
-
* @param {any} value Format output.
|
|
94
|
-
* @returns {any} JSON-compatible value.
|
|
95
|
-
*/
|
|
96
|
-
ToJSON(value) {
|
|
97
|
-
return toJsonValue(value);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* One-shot wem read.
|
|
102
|
-
*
|
|
103
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
104
|
-
* @param {object} [options] Read options.
|
|
105
|
-
* @returns {object} GPU-free raw/debug payload for the selected emit target.
|
|
106
|
-
*/
|
|
107
|
-
static read(input, options = {}) {
|
|
108
|
-
return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* One-shot asynchronous wem read.
|
|
113
|
-
*
|
|
114
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
115
|
-
* @param {object} [options] Read options.
|
|
116
|
-
* @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.
|
|
117
|
-
*/
|
|
118
|
-
static async readAsync(input, options = {}) {
|
|
119
|
-
return CjsWemFormat.read(input, options);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* One-shot wem inspection.
|
|
124
|
-
*
|
|
125
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
126
|
-
* @param {object} [options] Inspect options.
|
|
127
|
-
* @returns {object} Wwise container metadata.
|
|
128
|
-
*/
|
|
129
|
-
static inspect(input, options = {}) {
|
|
130
|
-
return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* One-shot wem support probe.
|
|
135
|
-
*
|
|
136
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
137
|
-
* @param {object} [options] Probe options.
|
|
138
|
-
* @returns {object} Support/probe report.
|
|
139
|
-
*/
|
|
140
|
-
static isSupported(input, options = {}) {
|
|
141
|
-
return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Content-verified codec/route resolution (kb §5 resolveType seam).
|
|
146
|
-
*
|
|
147
|
-
* Where `isSupported` trusts the fmt tag, this validates the declared
|
|
148
|
-
* codec against the container's actual structure (Vorbis sidecar,
|
|
149
|
-
* PTADPCM frame layout, PCM size consistency - bounded, no audio
|
|
150
|
-
* decode) and tries the other codecs when the declaration fails.
|
|
151
|
-
* The report carries `verified: true`, `preferred` = `ogg`/`pcm`/`raw`,
|
|
152
|
-
* and declared/resolved/mismatch evidence in `metadata`.
|
|
153
|
-
*
|
|
154
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
155
|
-
* @param {object} [options] Probe options.
|
|
156
|
-
* @returns {Promise<object>} Content-verified probe report.
|
|
157
|
-
*/
|
|
158
|
-
static async resolveType(input, options = {}) {
|
|
159
|
-
return resolveTypeWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Convert format output into JSON-compatible debug data.
|
|
164
|
-
*
|
|
165
|
-
* @param {any} value Format output.
|
|
166
|
-
* @returns {any} JSON-compatible value.
|
|
167
|
-
*/
|
|
168
|
-
static toJSON(value) {
|
|
169
|
-
return toJsonValue(value);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Test whether bytes look like a Wwise media container.
|
|
174
|
-
*
|
|
175
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Candidate wem bytes.
|
|
176
|
-
* @returns {boolean} True when RIFF/RIFX WAVE signatures are present.
|
|
177
|
-
*/
|
|
178
|
-
static isWEM(input) {
|
|
179
|
-
try {
|
|
180
|
-
return isWEM(toBytes(input));
|
|
181
|
-
} catch {
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Repack Wwise Vorbis wem bytes into a standard Ogg Vorbis stream.
|
|
188
|
-
*
|
|
189
|
-
* Lossless container transform (no audio decode/re-encode); output plays
|
|
190
|
-
* natively where Ogg Vorbis is supported. Equivalent to
|
|
191
|
-
* `read(input, { emit: "ogg" })`.
|
|
192
|
-
*
|
|
193
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
194
|
-
* @param {object} [options] Options, including a `codebooks` override.
|
|
195
|
-
* @returns {object} Ogg payload with bytes, timing, and loop metadata.
|
|
196
|
-
*/
|
|
197
|
-
static toOgg(input, options = {}) {
|
|
198
|
-
return CjsWemFormat.read(input, {
|
|
199
|
-
...options,
|
|
200
|
-
emit: OUTPUT_OGG
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Decode wem audio data to per-channel float32 PCM (AudioBuffer-ready).
|
|
206
|
-
*
|
|
207
|
-
* Covers Wwise PTADPCM (0x8311) and uncompressed 16-bit PCM. Wwise Vorbis
|
|
208
|
-
* is not decoded here - repack it with `toOgg()` instead. Equivalent to
|
|
209
|
-
* `read(input, { emit: "pcm" })`.
|
|
210
|
-
*
|
|
211
|
-
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
212
|
-
* @param {object} [options] Read options.
|
|
213
|
-
* @returns {object} PCM payload with channelData, sample rate, and timing.
|
|
214
|
-
*/
|
|
215
|
-
static toPcm(input, options = {}) {
|
|
216
|
-
return CjsWemFormat.read(input, {
|
|
217
|
-
...options,
|
|
218
|
-
emit: OUTPUT_PCM
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Emit targets for this format (canonical frozen enum).
|
|
224
|
-
*/
|
|
225
|
-
static Output = Object.freeze({
|
|
226
|
-
RAW: OUTPUT_RAW,
|
|
227
|
-
JSON: OUTPUT_JSON,
|
|
228
|
-
WEM_JSON: OUTPUT_WEM_JSON,
|
|
229
|
-
OGG: OUTPUT_OGG,
|
|
230
|
-
PCM: OUTPUT_PCM
|
|
231
|
-
});
|
|
232
|
-
static CODEC_NAMES = WEM_CODEC_NAMES;
|
|
233
|
-
static type = Object.freeze(["audio"]);
|
|
234
|
-
static mediaTypes = Object.freeze(["audio"]);
|
|
235
|
-
static inputTypes = Object.freeze(["wem"]);
|
|
236
|
-
static outputTypes = Object.freeze([OUTPUT_RAW, OUTPUT_OGG, OUTPUT_PCM]);
|
|
237
|
-
static debugOutputTypes = Object.freeze([OUTPUT_WEM_JSON, OUTPUT_RAW]);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
export { CjsWemFormat };
|
|
241
|
-
//# sourceMappingURL=CjsWemFormat.js.map
|
|
1
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isWEM, toBytes, OUTPUT_OGG, OUTPUT_PCM, OUTPUT_WEM_JSON, OUTPUT_JSON, OUTPUT_RAW, WEM_CODEC_NAMES } from './core/helpers.js';
|
|
2
|
+
import { resolveTypeWithValues } from './core/resolve.js';
|
|
3
|
+
|
|
4
|
+
const FORMAT_NAME = "CjsWemFormat";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Reader for Audiokinetic Wwise media (.wem) containers.
|
|
8
|
+
*
|
|
9
|
+
* Inspection identifies the codec, channel/rate layout, and Vorbis duration
|
|
10
|
+
* without decoding audio data. Read emits the container bytes untouched;
|
|
11
|
+
* decode/transcode targets are deliberately out of scope for this reader.
|
|
12
|
+
*/
|
|
13
|
+
class CjsWemFormat {
|
|
14
|
+
#values = DEFAULT_VALUES;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Create a reusable wem format profile.
|
|
18
|
+
*
|
|
19
|
+
* @param {object} [options] Default read/inspect options.
|
|
20
|
+
*/
|
|
21
|
+
constructor(options = {}) {
|
|
22
|
+
this.SetValues(options);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Merge options into this profile.
|
|
27
|
+
*
|
|
28
|
+
* @param {object} [options] Values to merge.
|
|
29
|
+
* @returns {CjsWemFormat} This format profile.
|
|
30
|
+
*/
|
|
31
|
+
SetValues(options = {}) {
|
|
32
|
+
this.#values = normalizeValues(this.#values, options, FORMAT_NAME);
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Get normalized profile values with optional per-call overrides.
|
|
38
|
+
*
|
|
39
|
+
* @param {object} [options] Per-call values.
|
|
40
|
+
* @returns {object} Normalized read values.
|
|
41
|
+
*/
|
|
42
|
+
GetValues(options = {}) {
|
|
43
|
+
return normalizeValues(this.#values, options, FORMAT_NAME);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Read wem bytes with this profile.
|
|
48
|
+
*
|
|
49
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
50
|
+
* @param {object} [options] Per-call values.
|
|
51
|
+
* @returns {object} GPU-free raw/debug payload for the selected emit target.
|
|
52
|
+
*/
|
|
53
|
+
Read(input, options = {}) {
|
|
54
|
+
return readWithValues(input, this.GetValues(options));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Read wem bytes asynchronously with this profile.
|
|
59
|
+
*
|
|
60
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
61
|
+
* @param {object} [options] Per-call values.
|
|
62
|
+
* @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.
|
|
63
|
+
*/
|
|
64
|
+
async ReadAsync(input, options = {}) {
|
|
65
|
+
return this.Read(input, options);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Inspect wem bytes without decoding audio data.
|
|
70
|
+
*
|
|
71
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
72
|
+
* @param {object} [options] Per-call values.
|
|
73
|
+
* @returns {object} Wwise container metadata.
|
|
74
|
+
*/
|
|
75
|
+
Inspect(input, options = {}) {
|
|
76
|
+
return inspectWithValues(input, this.GetValues(options));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Report whether wem input and requested output variants are supported.
|
|
81
|
+
*
|
|
82
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
83
|
+
* @param {object} [options] Per-call values.
|
|
84
|
+
* @returns {object} Support/probe report.
|
|
85
|
+
*/
|
|
86
|
+
IsSupported(input, options = {}) {
|
|
87
|
+
return isSupportedWithValues(input, this.GetValues(options));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Convert format output into JSON-compatible debug data.
|
|
92
|
+
*
|
|
93
|
+
* @param {any} value Format output.
|
|
94
|
+
* @returns {any} JSON-compatible value.
|
|
95
|
+
*/
|
|
96
|
+
ToJSON(value) {
|
|
97
|
+
return toJsonValue(value);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* One-shot wem read.
|
|
102
|
+
*
|
|
103
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
104
|
+
* @param {object} [options] Read options.
|
|
105
|
+
* @returns {object} GPU-free raw/debug payload for the selected emit target.
|
|
106
|
+
*/
|
|
107
|
+
static read(input, options = {}) {
|
|
108
|
+
return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* One-shot asynchronous wem read.
|
|
113
|
+
*
|
|
114
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
115
|
+
* @param {object} [options] Read options.
|
|
116
|
+
* @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.
|
|
117
|
+
*/
|
|
118
|
+
static async readAsync(input, options = {}) {
|
|
119
|
+
return CjsWemFormat.read(input, options);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* One-shot wem inspection.
|
|
124
|
+
*
|
|
125
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
126
|
+
* @param {object} [options] Inspect options.
|
|
127
|
+
* @returns {object} Wwise container metadata.
|
|
128
|
+
*/
|
|
129
|
+
static inspect(input, options = {}) {
|
|
130
|
+
return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* One-shot wem support probe.
|
|
135
|
+
*
|
|
136
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
137
|
+
* @param {object} [options] Probe options.
|
|
138
|
+
* @returns {object} Support/probe report.
|
|
139
|
+
*/
|
|
140
|
+
static isSupported(input, options = {}) {
|
|
141
|
+
return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Content-verified codec/route resolution (kb §5 resolveType seam).
|
|
146
|
+
*
|
|
147
|
+
* Where `isSupported` trusts the fmt tag, this validates the declared
|
|
148
|
+
* codec against the container's actual structure (Vorbis sidecar,
|
|
149
|
+
* PTADPCM frame layout, PCM size consistency - bounded, no audio
|
|
150
|
+
* decode) and tries the other codecs when the declaration fails.
|
|
151
|
+
* The report carries `verified: true`, `preferred` = `ogg`/`pcm`/`raw`,
|
|
152
|
+
* and declared/resolved/mismatch evidence in `metadata`.
|
|
153
|
+
*
|
|
154
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
155
|
+
* @param {object} [options] Probe options.
|
|
156
|
+
* @returns {Promise<object>} Content-verified probe report.
|
|
157
|
+
*/
|
|
158
|
+
static async resolveType(input, options = {}) {
|
|
159
|
+
return resolveTypeWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Convert format output into JSON-compatible debug data.
|
|
164
|
+
*
|
|
165
|
+
* @param {any} value Format output.
|
|
166
|
+
* @returns {any} JSON-compatible value.
|
|
167
|
+
*/
|
|
168
|
+
static toJSON(value) {
|
|
169
|
+
return toJsonValue(value);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Test whether bytes look like a Wwise media container.
|
|
174
|
+
*
|
|
175
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Candidate wem bytes.
|
|
176
|
+
* @returns {boolean} True when RIFF/RIFX WAVE signatures are present.
|
|
177
|
+
*/
|
|
178
|
+
static isWEM(input) {
|
|
179
|
+
try {
|
|
180
|
+
return isWEM(toBytes(input));
|
|
181
|
+
} catch {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Repack Wwise Vorbis wem bytes into a standard Ogg Vorbis stream.
|
|
188
|
+
*
|
|
189
|
+
* Lossless container transform (no audio decode/re-encode); output plays
|
|
190
|
+
* natively where Ogg Vorbis is supported. Equivalent to
|
|
191
|
+
* `read(input, { emit: "ogg" })`.
|
|
192
|
+
*
|
|
193
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
194
|
+
* @param {object} [options] Options, including a `codebooks` override.
|
|
195
|
+
* @returns {object} Ogg payload with bytes, timing, and loop metadata.
|
|
196
|
+
*/
|
|
197
|
+
static toOgg(input, options = {}) {
|
|
198
|
+
return CjsWemFormat.read(input, {
|
|
199
|
+
...options,
|
|
200
|
+
emit: OUTPUT_OGG
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Decode wem audio data to per-channel float32 PCM (AudioBuffer-ready).
|
|
206
|
+
*
|
|
207
|
+
* Covers Wwise PTADPCM (0x8311) and uncompressed 16-bit PCM. Wwise Vorbis
|
|
208
|
+
* is not decoded here - repack it with `toOgg()` instead. Equivalent to
|
|
209
|
+
* `read(input, { emit: "pcm" })`.
|
|
210
|
+
*
|
|
211
|
+
* @param {Uint8Array|ArrayBuffer|DataView} input Wem bytes.
|
|
212
|
+
* @param {object} [options] Read options.
|
|
213
|
+
* @returns {object} PCM payload with channelData, sample rate, and timing.
|
|
214
|
+
*/
|
|
215
|
+
static toPcm(input, options = {}) {
|
|
216
|
+
return CjsWemFormat.read(input, {
|
|
217
|
+
...options,
|
|
218
|
+
emit: OUTPUT_PCM
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Emit targets for this format (canonical frozen enum).
|
|
224
|
+
*/
|
|
225
|
+
static Output = Object.freeze({
|
|
226
|
+
RAW: OUTPUT_RAW,
|
|
227
|
+
JSON: OUTPUT_JSON,
|
|
228
|
+
WEM_JSON: OUTPUT_WEM_JSON,
|
|
229
|
+
OGG: OUTPUT_OGG,
|
|
230
|
+
PCM: OUTPUT_PCM
|
|
231
|
+
});
|
|
232
|
+
static CODEC_NAMES = WEM_CODEC_NAMES;
|
|
233
|
+
static type = Object.freeze(["audio"]);
|
|
234
|
+
static mediaTypes = Object.freeze(["audio"]);
|
|
235
|
+
static inputTypes = Object.freeze(["wem"]);
|
|
236
|
+
static outputTypes = Object.freeze([OUTPUT_RAW, OUTPUT_OGG, OUTPUT_PCM]);
|
|
237
|
+
static debugOutputTypes = Object.freeze([OUTPUT_WEM_JSON, OUTPUT_RAW]);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export { CjsWemFormat };
|
|
241
|
+
//# sourceMappingURL=CjsWemFormat.js.map
|