carta1 1.1.9 → 1.1.10

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/README.md CHANGED
@@ -1,128 +1,202 @@
1
1
  # Carta1
2
2
 
3
- An ATRAC1 audio codec implementation in JS.
3
+ Carta1 is an ATRAC1 encoder and decoder in JavaScript. It converts PCM WAVE
4
+ audio to Sony's AEA container, decodes AEA back to PCM WAVE, exposes stateful
5
+ frame and stream APIs, and ships browser Web Worker bundles.
4
6
 
5
- ## Features
7
+ ## Supported format
6
8
 
7
- - Pure JavaScript implementation of ATRAC1 codec
8
- - Encoding WAV to AEA (ATRAC1) format
9
- - Decoding AEA to WAV format
10
- - Command-line interface
11
- - Browser-compatible with Web Workers
12
- - Streaming support for large files
9
+ | Property | Support |
10
+ | ------------------ | --------------------------------------------- |
11
+ | Sample rate | 44.1 kHz |
12
+ | Channels | Mono or stereo |
13
+ | Frame size | 512 PCM samples per channel |
14
+ | Encoded sound unit | 212 bytes per channel |
15
+ | Nominal bitrate | About 146 kbps per channel / 292 kbps stereo |
16
+ | Container | AEA |
17
+ | JavaScript PCM | Planar `Float32Array`, normalized `-1` to `1` |
18
+
19
+ Stereo channels are encoded independently and stored as interleaved AEA sound
20
+ units.
13
21
 
14
22
  ## Installation
15
23
 
24
+ Carta1 is an ES module and requires Node.js 20.16 or newer.
25
+
16
26
  ```bash
17
27
  npm install carta1
18
28
  ```
19
29
 
20
- ## CLI Usage
21
-
22
- ### Encoding
30
+ To work from a repository checkout:
23
31
 
24
32
  ```bash
25
- carta1 --encode input.wav output.aea
33
+ npm ci
34
+ npm run check
26
35
  ```
27
36
 
28
- ### Decoding
37
+ ## CLI
38
+
39
+ Run the installed executable directly, or use `npx carta1` from a project that
40
+ depends on Carta1:
29
41
 
30
42
  ```bash
43
+ carta1 --encode input.wav output.aea
31
44
  carta1 --decode input.aea output.wav
32
- ```
33
-
34
- ### Options
35
-
36
- - `-e, --encode` - Encode WAV to AEA
37
- - `-d, --decode` - Decode AEA to WAV
38
- - `-j, --json` - Dump AEA file structure to JSON
39
- - `-q, --quiet` - Suppress all output except errors
40
- - `-f, --force` - Overwrite output file if it exists
41
- - `-t, --title <title>` - Custom title for AEA file metadata (encoding only)
45
+ carta1 --json input.aea structure.json
42
46
 
43
- ## Browser Usage
44
-
45
- ```html
46
- <script src="https://unpkg.com/carta1/dist/carta1-worker.min.js"></script>
47
- <script src="https://unpkg.com/carta1/dist/carta1-worker-interface.min.js"></script>
47
+ npx carta1 --encode input.wav output.aea
48
48
  ```
49
49
 
50
- ```javascript
51
- // Create codec instance
52
- const codec = new Carta1Worker('carta1-worker.min.js')
50
+ The encoder accepts mono or stereo PCM WAVE input. Carta1 is designed for
51
+ 44.1 kHz audio; it warns when the input sample rate differs. Decoding writes
52
+ signed 16-bit PCM WAVE output.
53
+
54
+ | Option | Meaning |
55
+ | --------------------- | ---------------------------------------------------- |
56
+ | `-e, --encode` | Encode PCM WAVE to AEA. |
57
+ | `-d, --decode` | Decode AEA to PCM WAVE. |
58
+ | `-j, --json` | Write AEA metadata and frame structure as JSON. |
59
+ | `-q, --quiet` | Suppress normal output and progress. |
60
+ | `-f, --force` | Overwrite an existing output file. |
61
+ | `-t, --title <title>` | Set the AEA title while encoding. |
62
+ | `-b, --bias <value>` | Set the bit-allocation bias; defaults to `1.0`. |
63
+ | `-m, --modes <modes>` | Fix low, mid, and high block modes, such as `0,0,0`. |
64
+ | `-V, --version` | Print the Carta1 version. |
65
+ | `-h, --help` | Print command help. |
66
+
67
+ Exactly one of `--encode`, `--decode`, and `--json` is required. The input and
68
+ output are positional paths. Existing output is preserved unless `--force` is
69
+ provided.
70
+
71
+ ## JavaScript API
72
+
73
+ ### Complete AEA files
74
+
75
+ Use `encodeAeaPcm()` and `decodeAeaPcm()` when the complete input fits in
76
+ memory:
77
+
78
+ ```js
79
+ import { decodeAeaPcm, encodeAeaPcm } from 'carta1'
80
+
81
+ const aea = await encodeAeaPcm([left, right], {
82
+ allocationBias: 1.0,
83
+ title: 'Example',
84
+ })
85
+ const [decodedLeft, decodedRight] = await decodeAeaPcm(aea)
86
+ ```
53
87
 
54
- // Encode PCM to ATRAC1
55
- const result = await codec.encode(pcmData, options)
88
+ `encodeAeaPcm()` returns a `Uint8Array` containing a complete AEA file.
89
+ `decodeAeaPcm()` accepts AEA bytes or a `Blob` and returns normalized planar
90
+ `Float32Array` channels. A mono input uses `[mono]`. The final partial input
91
+ frame is zero-padded.
56
92
 
57
- // Decode ATRAC1 to PCM
58
- const wavData = await codec.decode(aeaData)
93
+ ### Stateful frames
59
94
 
60
- // Clean up
61
- codec.terminate()
62
- ```
95
+ `encode()` and `decode()` create closures for chronological, complete mono
96
+ frames. Reuse each closure for one stream:
63
97
 
64
- ## API Reference
98
+ ```js
99
+ import { decode, encode, EncoderOptions } from 'carta1'
65
100
 
66
- ### Node.js
101
+ const encodeFrame = encode(new EncoderOptions({ transientThresholdLow: 1.0 }))
102
+ const decodeFrame = decode()
67
103
 
68
- ```javascript
69
- import { encode, decode, AudioProcessor } from 'carta1'
104
+ const encoded = encodeFrame(new Float32Array(512))
105
+ const decoded = decodeFrame(encoded)
106
+ ```
70
107
 
71
- // Encode PCM frames
72
- const encoder = encode(options)
73
- const encodedFrame = encoder(pcmFrame)
108
+ Use separate closures for separate streams and for the left and right channels
109
+ of stereo audio. `AudioProcessor.encodeStream()` and `decodeStream()` handle
110
+ that ownership automatically.
74
111
 
75
- // Decode ATRAC1 frames
76
- const decoder = decode()
77
- const pcmFrame = decoder(encodedFrame)
78
- ```
112
+ ### Encoder options
79
113
 
80
- ### Browser Worker API
114
+ `EncoderOptions` validates these settings:
81
115
 
82
- #### `new Carta1Worker(workerPath)`
116
+ - `transientThresholdLow`, `transientThresholdMid`, and
117
+ `transientThresholdHigh` tune short-block detection per frequency band.
118
+ - `allocationBias` changes how strongly allocation favors louder spectral
119
+ components.
120
+ - `fixedBlockModes` accepts `[low, mid, high]`, where low and mid are `0` or
121
+ `2`, and high is `0` or `3`; this bypasses transient detection.
83
122
 
84
- Create a new codec worker instance.
123
+ ## Browser worker
85
124
 
86
- #### `encode(pcmData, options)`
125
+ The production build writes a worker and an ES module client to `dist/`. Serve
126
+ both from a location allowed by your application's worker and Content Security
127
+ Policy settings:
87
128
 
88
- Encode PCM audio data to ATRAC1 format.
129
+ ```js
130
+ import { Carta1Worker } from '/vendor/carta1-worker-interface.min.js'
89
131
 
90
- #### `decode(aeaData)`
132
+ const codec = new Carta1Worker('/vendor/carta1-worker.min.js')
91
133
 
92
- Decode ATRAC1 data to PCM format.
134
+ const { aeaBlob } = await codec.encode([left, right], {
135
+ allocationBias: 1.0,
136
+ })
137
+ const parsed = await codec.parseAeaBlob(aeaBlob)
138
+ const { wavBlob, info } = await codec.decode({
139
+ aeaData: parsed.frameData,
140
+ info: parsed.info,
141
+ })
142
+ const optionMetadata = await codec.getEncoderOptions()
93
143
 
94
- #### `parseAeaBlob(blob)`
144
+ codec.terminate()
145
+ ```
95
146
 
96
- Parse AEA file blob to extract metadata.
147
+ Always call `terminate()` when the worker is no longer needed. The build also
148
+ produces `dist/carta1.min.js`, a UMD bundle exposing the main JavaScript API as
149
+ the global `Carta1` object.
97
150
 
98
- #### `terminate()`
151
+ ## Compatibility and limitations
99
152
 
100
- Clean up worker resources.
153
+ - Encoding is fixed to the 44.1 kHz ATRAC1 profile described above; Carta1 does
154
+ not resample input.
155
+ - JavaScript APIs use normalized planar PCM. Web Audio channel data already
156
+ follows this convention.
157
+ - Stateful frame APIs must receive frames in order and must not be shared by
158
+ independent streams.
159
+ - AEA stores whole frames rather than an exact source sample count, so a final
160
+ partial frame is represented with zero padding.
161
+ - Browser worker assets must be served from a location permitted by the page's
162
+ worker and Content Security Policy rules.
101
163
 
102
164
  ## Development
103
165
 
104
- ```bash
105
- # Install dependencies
106
- npm install
107
-
108
- # Run tests
109
- npm test
166
+ Implementation concerns are split without hiding the top-level pipeline:
110
167
 
111
- # Build minified versions
112
- npm run build
168
+ | Path | Responsibility |
169
+ | ------------------- | --------------------------------------------------- |
170
+ | `codec/pipeline/` | Ordered encoder and decoder stage composition. |
171
+ | `codec/analysis/` | Transient analysis and encoder decisions. |
172
+ | `codec/coding/` | Bit allocation and quantization. |
173
+ | `codec/transforms/` | FFT, QMF, MDCT, and inverse transforms. |
174
+ | `codec/io/` | Bitstreams, AEA serialization, and stream adapters. |
175
+ | `codec/core/` | Constants, options, and reusable buffer ownership. |
176
+ | `codec/browser/` | Web Worker implementation and client. |
177
+ | `bin/` | Command-line boundary. |
178
+ | `tests/` | Unit, serialization, and pipeline tests. |
113
179
 
114
- # Lint code
115
- npm run lint
180
+ Common commands are:
116
181
 
117
- # Format code
118
- npm run format
182
+ ```bash
183
+ npm test # Run the test suite once
184
+ npm run test:watch # Re-run tests while editing
185
+ npm run lint # Check JavaScript and formatting
186
+ npm run format # Apply repository formatting
187
+ npm run build # Build the three browser bundles
188
+ npm run check # Run lint, tests, and the production build
119
189
  ```
120
190
 
121
- ## Acknowledgements
191
+ Run `npm run check` before submitting a change. Pull requests and pushes run
192
+ the same gate in CI.
122
193
 
123
- This project would not have been possible without:
194
+ ## Acknowledgements
124
195
 
125
- - [**AtracDEnc**](https://github.com/dcherednik/atracdenc) by [Daniel Cherednik](https://github.com/dcherednik) - The reference ATRAC implementation that provided invaluable insights into the codec's inner workings and served as the primary source for understanding the ATRAC1 format specification.
196
+ This project would not have been possible without
197
+ [AtracDEnc](https://github.com/dcherednik/atracdenc) by
198
+ [Daniel Cherednik](https://github.com/dcherednik), the reference ATRAC
199
+ implementation used to understand the ATRAC1 format and codec behavior.
126
200
 
127
201
  ## License
128
202
 
package/codec/index.js CHANGED
@@ -14,7 +14,7 @@ import { qmfAnalysisStage, mdctStage } from './pipeline/encoder.js'
14
14
  import { pipe } from './utils.js'
15
15
  import { BufferPool } from './core/buffers.js'
16
16
  import { EncoderOptions } from './core/options.js'
17
- import { AudioProcessor } from './io/processor.js'
17
+ import { AudioProcessor, decodeAeaPcm, encodeAeaPcm } from './io/processor.js'
18
18
  import { FFT } from './transforms/fft.js'
19
19
  import {
20
20
  WORD_LENGTH_BITS,
@@ -37,6 +37,8 @@ export {
37
37
  BufferPool,
38
38
  EncoderOptions,
39
39
  AudioProcessor,
40
+ decodeAeaPcm,
41
+ encodeAeaPcm,
40
42
  FFT,
41
43
  WORD_LENGTH_BITS,
42
44
  SPECS_PER_BFU,
@@ -52,7 +52,7 @@ export function unpackBits(buffer, bitPosition, bitCount) {
52
52
  let bitOffset = bitPosition % 8
53
53
  let value = 0
54
54
 
55
- for (let bitsRead = 0; bitsRead < bitCount && byteIndex < buffer.length; ) {
55
+ for (let bitsRead = 0; bitsRead < bitCount && byteIndex < buffer.length;) {
56
56
  const bitsAvailable = 8 - bitOffset
57
57
  const bitsToRead = Math.min(bitCount - bitsRead, bitsAvailable)
58
58
 
@@ -35,6 +35,27 @@ import { serializeFrame, deserializeFrame, AeaFile } from './serialization.js'
35
35
  * Audio processing utility class providing high-level encoding and decoding operations
36
36
  */
37
37
  export class AudioProcessor {
38
+ /**
39
+ * Encode complete planar PCM buffers into an AEA byte image.
40
+ *
41
+ * @param {Float32Array[]} channels One or two normalized PCM channels.
42
+ * @param {Object} [options] Encoder and AEA metadata options.
43
+ * @returns {Promise<Uint8Array>} Complete AEA byte image.
44
+ */
45
+ static encodeAeaPcm(channels, options = {}) {
46
+ return encodeAeaPcm(channels, options)
47
+ }
48
+
49
+ /**
50
+ * Decode a complete AEA byte image into planar PCM buffers.
51
+ *
52
+ * @param {Uint8Array|ArrayBuffer|Blob} input Complete AEA image.
53
+ * @returns {Promise<Float32Array[]>} Decoded normalized PCM channels.
54
+ */
55
+ static decodeAeaPcm(input) {
56
+ return decodeAeaPcm(input)
57
+ }
58
+
38
59
  /**
39
60
  * Encodes a stream of audio frames to ATRAC1 format
40
61
  * @param {AsyncIterable<Float32Array>|AsyncIterable<[Float32Array, Float32Array]>} audioFrames - Audio frame stream
@@ -556,3 +577,95 @@ export class AudioProcessor {
556
577
  }
557
578
  }
558
579
  }
580
+
581
+ /**
582
+ * Encode complete planar PCM buffers into an AEA byte image.
583
+ *
584
+ * Encoding options are accepted directly alongside the optional AEA `title`.
585
+ * The final partial PCM frame is zero-padded.
586
+ *
587
+ * @param {Float32Array[]} channels One or two normalized PCM channels.
588
+ * @param {Object} [options] Encoder and AEA metadata options.
589
+ * @param {string} [options.title] AEA title.
590
+ * @param {number} [options.transientThresholdLow] Low-band threshold.
591
+ * @param {number} [options.transientThresholdMid] Mid-band threshold.
592
+ * @param {number} [options.transientThresholdHigh] High-band threshold.
593
+ * @param {number} [options.allocationBias] Bit-allocation bias.
594
+ * @param {number[]} [options.fixedBlockModes] Fixed low, mid, and high modes.
595
+ * @returns {Promise<Uint8Array>} Complete AEA byte image.
596
+ */
597
+ export async function encodeAeaPcm(channels, options = {}) {
598
+ if (
599
+ !Array.isArray(channels) ||
600
+ (channels.length !== 1 && channels.length !== 2) ||
601
+ channels.some((channel) => !(channel instanceof Float32Array))
602
+ ) {
603
+ throw new TypeError('ATRAC1 encoding requires one or two Float32 channels')
604
+ }
605
+
606
+ const { title = 'encoded by carta1', ...encoderValues } = options
607
+ const frames = AudioProcessor.frameBufferToFrames(channels)
608
+ const encodedFrames = AudioProcessor.encodeStream(frames, {
609
+ channelCount: channels.length,
610
+ encoderOptions: new EncoderOptions(encoderValues),
611
+ })
612
+ const blob = await AudioProcessor.createAeaBlob(encodedFrames, {
613
+ title,
614
+ channelCount: channels.length,
615
+ })
616
+ return new Uint8Array(await blob.arrayBuffer())
617
+ }
618
+
619
+ /**
620
+ * Decode a complete AEA byte image into planar normalized PCM buffers.
621
+ *
622
+ * AEA does not retain the exact source sample count, so returned channels
623
+ * include any zero padding from the final encoded frame.
624
+ *
625
+ * @param {Uint8Array|ArrayBuffer|Blob} input Complete AEA image.
626
+ * @returns {Promise<Float32Array[]>} Decoded normalized PCM channels.
627
+ */
628
+ export async function decodeAeaPcm(input) {
629
+ let blob
630
+ if (input instanceof Blob) {
631
+ blob = input
632
+ } else if (input instanceof Uint8Array || input instanceof ArrayBuffer) {
633
+ blob = new Blob([input])
634
+ } else {
635
+ throw new TypeError('ATRAC1 decoding requires AEA bytes or a Blob')
636
+ }
637
+
638
+ const { info, frameData } = await AudioProcessor.parseAeaBlob(blob)
639
+ const frames = AudioProcessor.deserializedFrameStream(frameData)
640
+ const decodedFrames = await AudioProcessor.collectFrames(
641
+ AudioProcessor.decodeStream(frames, {
642
+ channelCount: info.channelCount,
643
+ })
644
+ )
645
+
646
+ if (info.channelCount === 1) {
647
+ return [joinChannelFrames(decodedFrames)]
648
+ }
649
+
650
+ return [
651
+ joinChannelFrames(decodedFrames.map(([left]) => left)),
652
+ joinChannelFrames(decodedFrames.map(([, right]) => right)),
653
+ ]
654
+ }
655
+
656
+ /**
657
+ * Join complete PCM frames into one channel buffer.
658
+ *
659
+ * @param {Float32Array[]} frames PCM frames for one channel.
660
+ * @returns {Float32Array} Contiguous PCM channel.
661
+ */
662
+ function joinChannelFrames(frames) {
663
+ const sampleCount = frames.reduce((total, frame) => total + frame.length, 0)
664
+ const channel = new Float32Array(sampleCount)
665
+ let offset = 0
666
+ for (const frame of frames) {
667
+ channel.set(frame, offset)
668
+ offset += frame.length
669
+ }
670
+ return channel
671
+ }
@@ -1,2 +1,2 @@
1
- var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function n(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function u(r,n,i,a){var u=n&&n.prototype instanceof f?n:f,s=Object.create(u.prototype);return o(s,"_invoke",function(r,n,o){var i,a,u,f=0,s=o||[],l=!1,y={p:0,n:0,v:e,a:b,f:b.bind(e,4),d:function(t,r){return i=t,a=0,u=e,y.n=r,c}};function b(r,n){for(a=r,u=n,t=0;!l&&f&&!o&&t<s.length;t++){var o,i=s[t],b=y.p,p=i[2];r>3?(o=p===n)&&(u=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=b&&((o=r<2&&b<i[1])?(a=0,y.v=n,y.n=i[1]):b<p&&(o=r<3||i[0]>n||n>p)&&(i[4]=r,i[5]=n,y.n=p,a=0))}if(o||r>1)return c;throw l=!0,n}return function(o,s,p){if(f>1)throw TypeError("Generator is already running");for(l&&1===s&&b(s,p),a=s,u=p;(t=a<2?e:u)||!l;){i||(a?a<3?(a>1&&(y.n=-1),b(a,u)):y.n=u:y.v=u);try{if(f=2,i){if(a||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,a<2&&(a=0)}else 1===a&&(t=i.return)&&t.call(i),a<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((t=(l=y.n<0)?u:r.call(n,y))!==c)break}catch(t){i=e,a=1,u=t}finally{f=1}}return{value:t,done:l}}}(r,i,a),!0),s}var c={};function f(){}function s(){}function l(){}t=Object.getPrototypeOf;var y=[][i]?t(t([][i]())):(o(t={},i,function(){return this}),t),b=l.prototype=f.prototype=Object.create(y);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,o(e,a,"GeneratorFunction")),e.prototype=Object.create(b),e}return s.prototype=l,o(b,"constructor",l),o(l,"constructor",s),s.displayName="GeneratorFunction",o(l,a,"GeneratorFunction"),o(b),o(b,a,"Generator"),o(b,i,function(){return this}),o(b,"toString",function(){return"[object Generator]"}),(n=function(){return{w:u,m:p}})()}function o(e,t,r,n){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}o=function(e,t,r,n){if(t)i?i(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r;else{var a=function(t,r){o(e,t,function(e){return this._invoke(t,r,e)})};a("next",0),a("throw",1),a("return",2)}},o(e,t,r,n)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach(function(t){u(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t,r){return(t=p(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t,r,n,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function f(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){c(i,n,o,a,u,"next",e)}function u(e){c(i,n,o,a,u,"throw",e)}a(void 0)})}}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==t);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if(e){if("string"==typeof e)return y(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function b(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,p(n.key),n)}}function p(e){var t=function(e,t){if("object"!=r(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==r(t)?t:t+""}e.d(t,{A:()=>h,v:()=>v});var v=function(){return e=function e(){var t=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"carta1-worker.min.js";!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.worker=new Worker(r),this.nextJobId=1,this.jobs=new Map,this.worker.onmessage=function(e){var r=e.data,n=r.jobId,o=r.error,i=r.result;if(n)if(t.jobs.has(n)){var a=t.jobs.get(n),u=a.resolve,c=a.reject;t.jobs.delete(n),o?c(new Error(o)):i?u(i):c(new Error("Worker returned no result"))}else console.warn("Received result for unknown job:",n);else console.warn("Received message without jobId:",e.data)},this.worker.onerror=function(e){console.error("Worker crashed:",e);var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=l(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(t.jobs);try{for(n.s();!(r=n.n()).done;)(0,s(r.value,2)[1].reject)(new Error("Worker crashed: "+e.message))}catch(e){n.e(e)}finally{n.f()}t.jobs.clear()}},t=[{key:"encode",value:(c=f(n().m(function e(t){var r,o,i=this,u=arguments;return n().w(function(e){for(;;)if(0===e.n)return r=u.length>1&&void 0!==u[1]?u[1]:{},o=this.nextJobId++,e.a(2,new Promise(function(e,n){i.jobs.set(o,{resolve:e,reject:n});try{var u=a({},r);i.worker.postMessage({jobId:o,type:"encode",pcmData:t,options:u})}catch(e){i.jobs.delete(o),n(e)}}))},e,this)})),function(e){return c.apply(this,arguments)})},{key:"decode",value:(u=f(n().m(function e(t){var r,o=this;return n().w(function(e){for(;;)if(0===e.n)return r=this.nextJobId++,e.a(2,new Promise(function(e,n){o.jobs.set(r,{resolve:e,reject:n});try{o.worker.postMessage({jobId:r,type:"decode",aea:t})}catch(e){o.jobs.delete(r),n(e)}}))},e,this)})),function(e){return u.apply(this,arguments)})},{key:"parseAeaBlob",value:(i=f(n().m(function e(t){var r,o=this;return n().w(function(e){for(;;)if(0===e.n)return r=this.nextJobId++,e.a(2,new Promise(function(e,n){o.jobs.set(r,{resolve:e,reject:n});try{o.worker.postMessage({jobId:r,type:"parseAea",blob:t})}catch(e){o.jobs.delete(r),n(e)}}))},e,this)})),function(e){return i.apply(this,arguments)})},{key:"getEncoderOptions",value:(o=f(n().m(function e(){var t,r=this;return n().w(function(e){for(;;)if(0===e.n)return t=this.nextJobId++,e.a(2,new Promise(function(e,n){r.jobs.set(t,{resolve:e,reject:n});try{r.worker.postMessage({jobId:t,type:"getEncoderOptions"})}catch(e){r.jobs.delete(t),n(e)}}))},e,this)})),function(){return o.apply(this,arguments)})},{key:"terminate",value:function(){this.worker&&(this.worker.terminate(),this.worker=null),this.jobs.clear()}}],t&&b(e.prototype,t),r&&b(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,r,o,i,u,c}();const h=v,d=t.v,j=t.A;export{d as Carta1Worker,j as default};
1
+ const e={d:(t,r)=>{if(Array.isArray(r))for(var n=0;n<r.length;){var o=r[n++],i=r[n++];e.o(t,o)?0===i&&n++:0===i?Object.defineProperty(t,o,{enumerable:!0,value:r[n++]}):Object.defineProperty(t,o,{enumerable:!0,get:i})}else for(var o in r)e.o(r,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};let t={};function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function n(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function u(r,n,i,a){var u=n&&n.prototype instanceof f?n:f,s=Object.create(u.prototype);return o(s,"_invoke",function(r,n,o){var i,a,u,f=0,s=o||[],l=!1,y={p:0,n:0,v:e,a:b,f:b.bind(e,4),d:function(t,r){return i=t,a=0,u=e,y.n=r,c}};function b(r,n){for(a=r,u=n,t=0;!l&&f&&!o&&t<s.length;t++){var o,i=s[t],b=y.p,p=i[2];r>3?(o=p===n)&&(u=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=b&&((o=r<2&&b<i[1])?(a=0,y.v=n,y.n=i[1]):b<p&&(o=r<3||i[0]>n||n>p)&&(i[4]=r,i[5]=n,y.n=p,a=0))}if(o||r>1)return c;throw l=!0,n}return function(o,s,p){if(f>1)throw TypeError("Generator is already running");for(l&&1===s&&b(s,p),a=s,u=p;(t=a<2?e:u)||!l;){i||(a?a<3?(a>1&&(y.n=-1),b(a,u)):y.n=u:y.v=u);try{if(f=2,i){if(a||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,a<2&&(a=0)}else 1===a&&(t=i.return)&&t.call(i),a<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((t=(l=y.n<0)?u:r.call(n,y))!==c)break}catch(t){i=e,a=1,u=t}finally{f=1}}return{value:t,done:l}}}(r,i,a),!0),s}var c={};function f(){}function s(){}function l(){}t=Object.getPrototypeOf;var y=[][i]?t(t([][i]())):(o(t={},i,function(){return this}),t),b=l.prototype=f.prototype=Object.create(y);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,o(e,a,"GeneratorFunction")),e.prototype=Object.create(b),e}return s.prototype=l,o(b,"constructor",l),o(l,"constructor",s),s.displayName="GeneratorFunction",o(l,a,"GeneratorFunction"),o(b),o(b,a,"Generator"),o(b,i,function(){return this}),o(b,"toString",function(){return"[object Generator]"}),(n=function(){return{w:u,m:p}})()}function o(e,t,r,n){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}o=function(e,t,r,n){function a(t,r){o(e,t,function(e){return this._invoke(t,r,e)})}t?i?i(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(a("next",0),a("throw",1),a("return",2))},o(e,t,r,n)}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach(function(t){u(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t,r){return(t=p(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function c(e,t,r,n,o,i,a){try{var u=e[i](a),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function f(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){c(i,n,o,a,u,"next",e)}function u(e){c(i,n,o,a,u,"throw",e)}a(void 0)})}}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,f=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==t);c=!0);}catch(e){f=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(f)throw o}}return u}}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){if(e){if("string"==typeof e)return y(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(e,t):void 0}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function b(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,p(n.key),n)}}function p(e){var t=function(e,t){if("object"!=r(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==r(t)?t:t+""}e.d(t,{v:()=>v});var v=function(){return e=function e(){var t=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"carta1-worker.min.js";!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.worker=new Worker(r),this.nextJobId=1,this.jobs=new Map,this.worker.onmessage=function(e){var r=e.data,n=r.jobId,o=r.error,i=r.result;if(n)if(t.jobs.has(n)){var a=t.jobs.get(n),u=a.resolve,c=a.reject;t.jobs.delete(n),o?c(new Error(o)):i?u(i):c(new Error("Worker returned no result"))}else console.warn("Received result for unknown job:",n);else console.warn("Received message without jobId:",e.data)},this.worker.onerror=function(e){console.error("Worker crashed:",e);var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=l(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw i}}}}(t.jobs);try{for(n.s();!(r=n.n()).done;)(0,s(r.value,2)[1].reject)(new Error("Worker crashed: "+e.message))}catch(e){n.e(e)}finally{n.f()}t.jobs.clear()}},t=[{key:"encode",value:(c=f(n().m(function e(t){var r,o,i=this,u=arguments;return n().w(function(e){for(;;)if(0===e.n)return r=u.length>1&&void 0!==u[1]?u[1]:{},o=this.nextJobId++,e.a(2,new Promise(function(e,n){i.jobs.set(o,{resolve:e,reject:n});try{var u=a({},r);i.worker.postMessage({jobId:o,type:"encode",pcmData:t,options:u})}catch(e){i.jobs.delete(o),n(e)}}))},e,this)})),function(e){return c.apply(this,arguments)})},{key:"decode",value:(u=f(n().m(function e(t){var r,o=this;return n().w(function(e){for(;;)if(0===e.n)return r=this.nextJobId++,e.a(2,new Promise(function(e,n){o.jobs.set(r,{resolve:e,reject:n});try{o.worker.postMessage({jobId:r,type:"decode",aea:t})}catch(e){o.jobs.delete(r),n(e)}}))},e,this)})),function(e){return u.apply(this,arguments)})},{key:"parseAeaBlob",value:(i=f(n().m(function e(t){var r,o=this;return n().w(function(e){for(;;)if(0===e.n)return r=this.nextJobId++,e.a(2,new Promise(function(e,n){o.jobs.set(r,{resolve:e,reject:n});try{o.worker.postMessage({jobId:r,type:"parseAea",blob:t})}catch(e){o.jobs.delete(r),n(e)}}))},e,this)})),function(e){return i.apply(this,arguments)})},{key:"getEncoderOptions",value:(o=f(n().m(function e(){var t,r=this;return n().w(function(e){for(;;)if(0===e.n)return t=this.nextJobId++,e.a(2,new Promise(function(e,n){r.jobs.set(t,{resolve:e,reject:n});try{r.worker.postMessage({jobId:t,type:"getEncoderOptions"})}catch(e){r.jobs.delete(t),n(e)}}))},e,this)})),function(){return o.apply(this,arguments)})},{key:"terminate",value:function(){this.worker&&(this.worker.terminate(),this.worker=null),this.jobs.clear()}}],t&&b(e.prototype,t),r&&b(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,r,o,i,u,c}();const h=v;e.d(t,["A",0,h]);const d=t.A;export{v as Carta1Worker,d as default};
2
2
  //# sourceMappingURL=carta1-worker-interface.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"carta1-worker-interface.min.js","mappings":"AACA,IAAIA,EAAsB,CCA1BA,EAAwB,CAACC,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EH,EAAwB,CAACS,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,I,0ZCClF,IAAAI,EAAAC,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAf,EAAAY,EAAAI,aAAA,yBAAAC,EAAAL,EAAAE,EAAAd,EAAAiB,GAAA,IAAAC,EAAAJ,GAAAA,EAAAP,qBAAAY,EAAAL,EAAAK,EAAAC,EAAAnB,OAAAoB,OAAAH,EAAAX,WAAA,OAAAe,EAAAF,EAAA,mBAAAR,EAAAE,EAAAd,GAAA,IAAAiB,EAAAC,EAAAE,EAAAG,EAAA,EAAAC,EAAAxB,GAAA,GAAAyB,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAAV,EAAA,EAAAa,EAAAjB,EAAAkB,EAAAC,EAAAN,EAAAM,EAAAC,KAAApB,EAAA,GAAAmB,EAAA,SAAAlB,EAAAC,GAAA,OAAAK,EAAAN,EAAAO,EAAA,EAAAE,EAAAV,EAAAgB,EAAAZ,EAAAF,EAAAgB,CAAA,YAAAC,EAAAjB,EAAAE,GAAA,IAAAI,EAAAN,EAAAQ,EAAAN,EAAAH,EAAA,GAAAc,GAAAF,IAAAvB,GAAAW,EAAAa,EAAAO,OAAApB,IAAA,KAAAX,EAAAiB,EAAAO,EAAAb,GAAAkB,EAAAH,EAAAF,EAAAQ,EAAAf,EAAA,GAAAL,EAAA,GAAAZ,EAAAgC,IAAAlB,KAAAM,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAAP,GAAAO,EAAA,IAAAY,KAAA7B,EAAAY,EAAA,GAAAiB,EAAAZ,EAAA,KAAAC,EAAA,EAAAQ,EAAAC,EAAAb,EAAAY,EAAAZ,EAAAG,EAAA,IAAAY,EAAAG,IAAAhC,EAAAY,EAAA,GAAAK,EAAA,GAAAH,GAAAA,EAAAkB,KAAAf,EAAA,GAAAL,EAAAK,EAAA,GAAAH,EAAAY,EAAAZ,EAAAkB,EAAAd,EAAA,OAAAlB,GAAAY,EAAA,SAAAgB,EAAA,MAAAH,GAAA,EAAAX,CAAA,iBAAAd,EAAAwB,EAAAQ,GAAA,GAAAT,EAAA,QAAAU,UAAA,oCAAAR,GAAA,IAAAD,GAAAK,EAAAL,EAAAQ,GAAAd,EAAAM,EAAAJ,EAAAY,GAAArB,EAAAO,EAAA,EAAAR,EAAAU,KAAAK,GAAA,CAAAR,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAQ,EAAAZ,GAAA,GAAAe,EAAAX,EAAAE,IAAAM,EAAAZ,EAAAM,EAAAM,EAAAC,EAAAP,GAAA,OAAAG,EAAA,EAAAN,EAAA,IAAAC,IAAAlB,EAAA,QAAAW,EAAAM,EAAAjB,GAAA,MAAAW,EAAAA,EAAAF,KAAAQ,EAAAG,IAAA,MAAAa,UAAA,wCAAAtB,EAAAuB,KAAA,OAAAvB,EAAAS,EAAAT,EAAAwB,MAAAjB,EAAA,IAAAA,EAAA,YAAAA,IAAAP,EAAAM,EAAA,SAAAN,EAAAF,KAAAQ,GAAAC,EAAA,IAAAE,EAAAa,UAAA,oCAAAjC,EAAA,YAAAkB,EAAA,GAAAD,EAAAP,CAAA,UAAAC,GAAAc,EAAAC,EAAAZ,EAAA,GAAAM,EAAAR,EAAAH,KAAAK,EAAAY,MAAAE,EAAA,YAAAjB,GAAAM,EAAAP,EAAAQ,EAAA,EAAAE,EAAAT,CAAA,SAAAY,EAAA,UAAAY,MAAAxB,EAAAuB,KAAAT,EAAA,GAAAb,EAAAZ,EAAAiB,IAAA,GAAAG,CAAA,KAAAQ,EAAA,YAAAT,IAAA,UAAAiB,IAAA,UAAAC,IAAA,CAAA1B,EAAAV,OAAAqC,eAAA,IAAApB,EAAA,GAAAJ,GAAAH,EAAAA,EAAA,GAAAG,QAAAQ,EAAAX,EAAA,GAAAG,EAAA,yBAAAH,GAAAS,EAAAiB,EAAA9B,UAAAY,EAAAZ,UAAAN,OAAAoB,OAAAH,GAAA,SAAAK,EAAAb,GAAA,OAAAT,OAAAsC,eAAAtC,OAAAsC,eAAA7B,EAAA2B,IAAA3B,EAAA8B,UAAAH,EAAAf,EAAAZ,EAAAV,EAAA,sBAAAU,EAAAH,UAAAN,OAAAoB,OAAAD,GAAAV,CAAA,QAAA0B,EAAA7B,UAAA8B,EAAAf,EAAAF,EAAA,cAAAiB,GAAAf,EAAAe,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAnB,EAAAe,EAAArC,EAAA,qBAAAsB,EAAAF,GAAAE,EAAAF,EAAApB,EAAA,aAAAsB,EAAAF,EAAAN,EAAA,yBAAAQ,EAAAF,EAAA,oDAAAsB,EAAA,kBAAAC,EAAA1B,EAAA2B,EAAArB,EAAA,cAAAD,EAAAZ,EAAAE,EAAAE,EAAAH,GAAA,IAAAM,EAAAhB,OAAAC,eAAA,IAAAe,EAAA,gBAAAP,GAAAO,EAAA,EAAAK,EAAA,SAAAZ,EAAAE,EAAAE,EAAAH,GAAA,GAAAC,EAAAK,EAAAA,EAAAP,EAAAE,EAAA,CAAAuB,MAAArB,EAAAX,YAAAQ,EAAAkC,cAAAlC,EAAAmC,UAAAnC,IAAAD,EAAAE,GAAAE,MAAA,KAAAd,EAAA,SAAAY,EAAAE,GAAAQ,EAAAZ,EAAAE,EAAA,SAAAF,GAAA,YAAAqC,QAAAnC,EAAAE,EAAAJ,EAAA,IAAAV,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAsB,EAAAZ,EAAAE,EAAAE,EAAAH,EAAA,UAAAqC,EAAAtC,EAAAE,GAAA,IAAAD,EAAAV,OAAAgD,KAAAvC,GAAA,GAAAT,OAAAiD,sBAAA,KAAAlD,EAAAC,OAAAiD,sBAAAxC,GAAAE,IAAAZ,EAAAA,EAAAmD,OAAA,SAAAvC,GAAA,OAAAX,OAAAmD,yBAAA1C,EAAAE,GAAAT,UAAA,IAAAQ,EAAA0C,KAAAC,MAAA3C,EAAAX,EAAA,QAAAW,CAAA,UAAA4C,EAAA7C,GAAA,QAAAE,EAAA,EAAAA,EAAA4C,UAAAzB,OAAAnB,IAAA,KAAAD,EAAA,MAAA6C,UAAA5C,GAAA4C,UAAA5C,GAAA,GAAAA,EAAA,EAAAoC,EAAA/C,OAAAU,IAAA,GAAA8C,QAAA,SAAA7C,GAAA8C,EAAAhD,EAAAE,EAAAD,EAAAC,GAAA,GAAAX,OAAA0D,0BAAA1D,OAAA2D,iBAAAlD,EAAAT,OAAA0D,0BAAAhD,IAAAqC,EAAA/C,OAAAU,IAAA8C,QAAA,SAAA7C,GAAAX,OAAAC,eAAAQ,EAAAE,EAAAX,OAAAmD,yBAAAzC,EAAAC,GAAA,UAAAF,CAAA,UAAAgD,EAAAhD,EAAAE,EAAAD,GAAA,OAAAC,EAAAiD,EAAAjD,MAAAF,EAAAT,OAAAC,eAAAQ,EAAAE,EAAA,CAAAuB,MAAAxB,EAAAR,YAAA,EAAA0C,cAAA,EAAAC,UAAA,IAAApC,EAAAE,GAAAD,EAAAD,CAAA,UAAAoD,EAAAhD,EAAAH,EAAAD,EAAAE,EAAAZ,EAAA4B,EAAAV,GAAA,QAAAD,EAAAH,EAAAc,GAAAV,GAAAE,EAAAH,EAAAkB,KAAA,OAAArB,GAAA,YAAAJ,EAAAI,EAAA,CAAAG,EAAAiB,KAAAvB,EAAAS,GAAA2C,QAAAC,QAAA5C,GAAA6C,KAAArD,EAAAZ,EAAA,UAAAkE,EAAApD,GAAA,sBAAAH,EAAA,KAAAD,EAAA8C,UAAA,WAAAO,QAAA,SAAAnD,EAAAZ,GAAA,IAAA4B,EAAAd,EAAAwC,MAAA3C,EAAAD,GAAA,SAAAyD,EAAArD,GAAAgD,EAAAlC,EAAAhB,EAAAZ,EAAAmE,EAAAC,EAAA,OAAAtD,EAAA,UAAAsD,EAAAtD,GAAAgD,EAAAlC,EAAAhB,EAAAZ,EAAAmE,EAAAC,EAAA,QAAAtD,EAAA,CAAAqD,OAAA,eAAAE,EAAAzD,EAAAF,GAAA,gBAAAE,GAAA,GAAA0D,MAAAC,QAAA3D,GAAA,OAAAA,CAAA,CAAA4D,CAAA5D,IAAA,SAAAA,EAAAoB,GAAA,IAAArB,EAAA,MAAAC,EAAA,yBAAAC,QAAAD,EAAAC,OAAAE,WAAAH,EAAA,uBAAAD,EAAA,KAAAD,EAAAI,EAAAG,EAAAG,EAAAQ,EAAA,GAAAL,GAAA,EAAAvB,GAAA,SAAAiB,GAAAN,EAAAA,EAAAF,KAAAG,IAAA6D,KAAA,IAAAzC,EAAA,IAAA/B,OAAAU,KAAAA,EAAA,OAAAY,GAAA,cAAAA,GAAAb,EAAAO,EAAAR,KAAAE,IAAAuB,QAAAN,EAAAyB,KAAA3C,EAAAyB,OAAAP,EAAAG,SAAAC,GAAAT,GAAA,UAAAX,GAAAZ,GAAA,EAAAc,EAAAF,CAAA,iBAAAW,GAAA,MAAAZ,EAAA,SAAAS,EAAAT,EAAA,SAAAV,OAAAmB,KAAAA,GAAA,kBAAApB,EAAA,MAAAc,CAAA,SAAAc,CAAA,EAAA8C,CAAA9D,EAAAF,IAAAiE,EAAA/D,EAAAF,IAAA,qBAAAuB,UAAA,6IAAA2C,EAAA,UAAAD,EAAA/D,EAAAgB,GAAA,GAAAhB,EAAA,qBAAAA,EAAA,OAAAiE,EAAAjE,EAAAgB,GAAA,IAAAjB,EAAA,GAAAmE,SAAArE,KAAAG,GAAAmE,MAAA,uBAAApE,GAAAC,EAAAoE,cAAArE,EAAAC,EAAAoE,YAAAC,MAAA,QAAAtE,GAAA,QAAAA,EAAA2D,MAAAY,KAAAtE,GAAA,cAAAD,GAAA,2CAAAwE,KAAAxE,GAAAkE,EAAAjE,EAAAgB,QAAA,YAAAiD,EAAAjE,EAAAgB,IAAA,MAAAA,GAAAA,EAAAhB,EAAAmB,UAAAH,EAAAhB,EAAAmB,QAAA,QAAArB,EAAA,EAAAI,EAAAwD,MAAA1C,GAAAlB,EAAAkB,EAAAlB,IAAAI,EAAAJ,GAAAE,EAAAF,GAAA,OAAAI,CAAA,UAAAsE,EAAA1E,EAAAE,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAAmB,OAAApB,IAAA,KAAAX,EAAAY,EAAAD,GAAAX,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAA6C,cAAA,YAAA7C,IAAAA,EAAA8C,UAAA,GAAA7C,OAAAC,eAAAQ,EAAAmD,EAAA7D,EAAAD,KAAAC,EAAA,WAAA6D,EAAAlD,GAAA,IAAAM,EAAA,SAAAN,EAAAC,GAAA,aAAAyE,EAAA1E,KAAAA,EAAA,OAAAA,EAAA,IAAAD,EAAAC,EAAAE,OAAAyE,aAAA,YAAA5E,EAAA,KAAAO,EAAAP,EAAAD,KAAAE,EAAAC,GAAA,wBAAAyE,EAAApE,GAAA,OAAAA,EAAA,UAAAgB,UAAA,kEAAArB,EAAA2E,OAAAC,QAAA7E,EAAA,CAAA8E,CAAA9E,EAAA,0BAAA0E,EAAApE,GAAAA,EAAAA,EAAA,G,yBADA,IAgBMyE,EAAY,WA+ChB,OA9DFhF,EAqBE,SAAAgF,IAAiD,IAAAC,EAAA,KAArCC,EAAUpC,UAAAzB,OAAA,QAAA8D,IAAArC,UAAA,GAAAA,UAAA,GAAG,wBArB3B,SAAA5B,EAAAd,GAAA,KAAAc,aAAAd,GAAA,UAAAmB,UAAA,qCAqBiD6D,CAAA,KAAAJ,GAC7CK,KAAKC,OAAS,IAAIC,OAAOL,GACzBG,KAAKG,UAAY,EACjBH,KAAKI,KAAO,IAAIC,IAGhBL,KAAKC,OAAOK,UAAY,SAAC3F,GACvB,IAAA4F,EAAiC5F,EAAE6F,KAA3BC,EAAKF,EAALE,MAAOC,EAAKH,EAALG,MAAOC,EAAMJ,EAANI,OAEtB,GAAKF,EAKL,GAAIb,EAAKQ,KAAKQ,IAAIH,GAAQ,CACxB,IAAAI,EAA4BjB,EAAKQ,KAAK/F,IAAIoG,GAAlCxC,EAAO4C,EAAP5C,QAAS6C,EAAMD,EAANC,OACjBlB,EAAKQ,KAAI,OAAQK,GAEbC,EACFI,EAAO,IAAIC,MAAML,IACRC,EACT1C,EAAQ0C,GAERG,EAAO,IAAIC,MAAM,6BAErB,MACEC,QAAQC,KAAK,mCAAoCR,QAhBjDO,QAAQC,KAAK,kCAAmCtG,EAAE6F,KAkBtD,EAGAR,KAAKC,OAAOiB,QAAU,SAACR,GACrBM,QAAQN,MAAM,kBAAmBA,GACjC,IACsCS,EADtCC,EAtDN,SAAAvG,EAAAF,GAAA,IAAAC,EAAA,oBAAAE,QAAAD,EAAAC,OAAAE,WAAAH,EAAA,kBAAAD,EAAA,IAAA2D,MAAAC,QAAA3D,KAAAD,EAAAgE,EAAA/D,KAAAF,GAAAE,GAAA,iBAAAA,EAAAmB,OAAA,CAAApB,IAAAC,EAAAD,GAAA,IAAAyG,EAAA,EAAAC,EAAA,oBAAAC,EAAAD,EAAAvG,EAAA,kBAAAsG,GAAAxG,EAAAmB,OAAA,CAAAG,MAAA,IAAAA,MAAA,EAAAC,MAAAvB,EAAAwG,KAAA,EAAA1G,EAAA,SAAAE,GAAA,MAAAA,CAAA,EAAAW,EAAA8F,EAAA,WAAApF,UAAA,6IAAAjC,EAAA4B,GAAA,EAAAR,GAAA,SAAAkG,EAAA,WAAA3G,EAAAA,EAAAF,KAAAG,EAAA,EAAAE,EAAA,eAAAF,EAAAD,EAAA8D,OAAA,OAAA7C,EAAAhB,EAAAsB,KAAAtB,CAAA,EAAAF,EAAA,SAAAE,GAAAQ,GAAA,EAAApB,EAAAY,CAAA,EAAAW,EAAA,eAAAK,GAAA,MAAAjB,EAAA,QAAAA,EAAA,oBAAAS,EAAA,MAAApB,CAAA,IAsDMuH,CAC6B5B,EAAKQ,MAAI,IAAtC,IAAAgB,EAAAG,MAAAJ,EAAAC,EAAArG,KAAAoB,OACE2E,EADsCxC,EAAA6C,EAAA/E,MAAA,GAAlB,GAAN0E,QACP,IAAIC,MAAM,mBAAqBL,EAAMe,SAC7C,OAAAC,GAAAN,EAAAzG,EAAA+G,EAAA,SAAAN,EAAA5F,GAAA,CACDoE,EAAKQ,KAAKuB,OACZ,CACF,EA5DF9G,EA8DE,EAAAb,IAAA,SAAAoC,OAAAwF,EAAAzD,EAAAxB,IAAAE,EAcA,SAAAgF,EAAaC,GAAO,IAAAC,EAAAtB,EAAAuB,EAAA,KAAAC,EAAAxE,UAAA,OAAAd,IAAAC,EAAA,SAAAsF,GAAA,cAAAA,EAAAnH,EACY,OADVgH,EAAOE,EAAAjG,OAAA,QAAA8D,IAAAmC,EAAA,GAAAA,EAAA,GAAG,CAAC,EACzBxB,EAAQT,KAAKG,YAAW+B,EAAArG,EAAA,EACvB,IAAImC,QAAQ,SAACC,EAAS6C,GAC3BkB,EAAK5B,KAAK+B,IAAI1B,EAAO,CAAExC,QAAAA,EAAS6C,OAAAA,IAChC,IAEE,IAAMsB,EAAY5E,EAAA,GAAQuE,GAC1BC,EAAK/B,OAAOoC,YAAY,CACtB5B,MAAAA,EACA6B,KAAM,SACNR,QAAAA,EACAC,QAASK,GAEb,CAAE,MAAO1B,GACPsB,EAAK5B,KAAI,OAAQK,GACjBK,EAAOJ,EACT,CACF,GAAE,EAAAmB,EAAA,SACH,SAlBWU,GAAA,OAAAX,EAAArE,MAAC,KAADE,UAAA,IAoBZ,CAAAzD,IAAA,SAAAoC,OAAAoG,EAAArE,EAAAxB,IAAAE,EAWA,SAAA4F,EAAaC,GAAG,IAAAjC,EAAAkC,EAAA,YAAAhG,IAAAC,EAAA,SAAAgG,GAAA,cAAAA,EAAA7H,EACgB,OAAxB0F,EAAQT,KAAKG,YAAWyC,EAAA/G,EAAA,EACvB,IAAImC,QAAQ,SAACC,EAAS6C,GAC3B6B,EAAKvC,KAAK+B,IAAI1B,EAAO,CAAExC,QAAAA,EAAS6C,OAAAA,IAChC,IACE6B,EAAK1C,OAAOoC,YAAY,CAAE5B,MAAAA,EAAO6B,KAAM,SAAUI,IAAAA,GACnD,CAAE,MAAOhC,GACPiC,EAAKvC,KAAI,OAAQK,GACjBK,EAAOJ,EACT,CACF,GAAE,EAAA+B,EAAA,SACH,SAXWI,GAAA,OAAAL,EAAAjF,MAAC,KAADE,UAAA,IAaZ,CAAAzD,IAAA,eAAAoC,OAAA0G,EAAA3E,EAAAxB,IAAAE,EASA,SAAAkG,EAAmBC,GAAI,IAAAvC,EAAAwC,EAAA,YAAAtG,IAAAC,EAAA,SAAAsG,GAAA,cAAAA,EAAAnI,EACS,OAAxB0F,EAAQT,KAAKG,YAAW+C,EAAArH,EAAA,EACvB,IAAImC,QAAQ,SAACC,EAAS6C,GAC3BmC,EAAK7C,KAAK+B,IAAI1B,EAAO,CAAExC,QAAAA,EAAS6C,OAAAA,IAChC,IACEmC,EAAKhD,OAAOoC,YAAY,CAAE5B,MAAAA,EAAO6B,KAAM,WAAYU,KAAAA,GACrD,CAAE,MAAOtC,GACPuC,EAAK7C,KAAI,OAAQK,GACjBK,EAAOJ,EACT,CACF,GAAE,EAAAqC,EAAA,SACH,SAXiBI,GAAA,OAAAL,EAAAvF,MAAC,KAADE,UAAA,IAalB,CAAAzD,IAAA,oBAAAoC,OAAAgH,EAAAjF,EAAAxB,IAAAE,EAKA,SAAAwG,IAAA,IAAA5C,EAAA6C,EAAA,YAAA3G,IAAAC,EAAA,SAAA2G,GAAA,cAAAA,EAAAxI,EACgC,OAAxB0F,EAAQT,KAAKG,YAAWoD,EAAA1H,EAAA,EACvB,IAAImC,QAAQ,SAACC,EAAS6C,GAC3BwC,EAAKlD,KAAK+B,IAAI1B,EAAO,CAAExC,QAAAA,EAAS6C,OAAAA,IAChC,IACEwC,EAAKrD,OAAOoC,YAAY,CAAE5B,MAAAA,EAAO6B,KAAM,qBACzC,CAAE,MAAO5B,GACP4C,EAAKlD,KAAI,OAAQK,GACjBK,EAAOJ,EACT,CACF,GAAE,EAAA2C,EAAA,SACH,WAXsB,OAAAD,EAAA7F,MAAC,KAADE,UAAA,IAavB,CAAAzD,IAAA,YAAAoC,MAKA,WACM4D,KAAKC,SACPD,KAAKC,OAAOuD,YACZxD,KAAKC,OAAS,MAEhBD,KAAKI,KAAKuB,OACZ,IA3KF9G,GAAAwE,EAAA1E,EAAAH,UAAAK,GAAAD,GAAAyE,EAAA1E,EAAAC,GAAAV,OAAAC,eAAAQ,EAAA,aAAAoC,UAAA,IAAApC,EAAA,IAAAA,EAAAE,EAAAD,EA8IEwI,EAtBAN,EAxBAN,EAlCAZ,CA6GC,CA5Je,GA+JlB,U","sources":["webpack://carta1/webpack/bootstrap","webpack://carta1/webpack/runtime/define property getters","webpack://carta1/webpack/runtime/hasOwnProperty shorthand","webpack://carta1/./codec/browser/interface.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * Carta1 Worker Interface - Client-side API\n *\n * Provides a clean async interface for encoding and decoding ATRAC1 audio\n * using Web Workers for non-blocking operation.\n *\n * Usage:\n * const codec = new Carta1Worker('carta1-worker.min.js')\n * const result = await codec.encode(pcmData, options)\n * codec.terminate()\n *\n * The worker path can be customized to match your deployment:\n * new Carta1Worker('/js/carta1-worker.min.js')\n * new Carta1Worker('https://cdn.example.com/carta1-worker.min.js')\n */\n\nclass Carta1Worker {\n /**\n * Create a new ATRAC1 codec worker\n *\n * @param {string} [workerPath='atrac1-worker.min.js'] - Path to the worker script\n */\n constructor(workerPath = 'carta1-worker.min.js') {\n this.worker = new Worker(workerPath)\n this.nextJobId = 1\n this.jobs = new Map()\n\n // Handle worker responses\n this.worker.onmessage = (e) => {\n const { jobId, error, result } = e.data\n\n if (!jobId) {\n console.warn('Received message without jobId:', e.data)\n return\n }\n\n if (this.jobs.has(jobId)) {\n const { resolve, reject } = this.jobs.get(jobId)\n this.jobs.delete(jobId)\n\n if (error) {\n reject(new Error(error))\n } else if (result) {\n resolve(result)\n } else {\n reject(new Error('Worker returned no result'))\n }\n } else {\n console.warn('Received result for unknown job:', jobId)\n }\n }\n\n // Handle worker errors\n this.worker.onerror = (error) => {\n console.error('Worker crashed:', error)\n // Reject all pending jobs\n for (const [, { reject }] of this.jobs) {\n reject(new Error('Worker crashed: ' + error.message))\n }\n this.jobs.clear()\n }\n }\n\n /**\n * Encode PCM audio to ATRAC1 format\n *\n * @param {Float32Array|Array<Float32Array>} pcmData - PCM audio data\n * - Mono: Float32Array\n * - Stereo: [left, right] Float32Arrays\n * @param {Object} [options={}] - Encoder options\n * @param {number} [options.transientThresholdLow] - Low band transient threshold\n * @param {number} [options.transientThresholdMid] - Mid band transient threshold\n * @param {number} [options.transientThresholdHigh] - High band transient threshold\n * @returns {Promise<Object>} Encoding result\n * @returns {Blob} returns.aeaBlob - ATRAC1 encoded audio blob\n * @returns {Object} returns.shortBlockData - Short block frame indices\n */\n async encode(pcmData, options = {}) {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n // Ensure plain object for serialization\n const plainOptions = { ...options }\n this.worker.postMessage({\n jobId,\n type: 'encode',\n pcmData,\n options: plainOptions,\n })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Decode ATRAC1 audio to PCM WAV format\n *\n * @param {Object} aea - ATRAC1 audio data\n * @param {Uint8Array} aea.header - AEA file header\n * @param {Array} aea.aeaData - Encoded frame data\n * @param {Object} [aea.info] - Optional metadata\n * @returns {Promise<Object>} Decoding result\n * @returns {Blob} returns.wavBlob - Decoded WAV audio blob\n * @returns {Object} returns.info - Audio metadata (channels, sample rate)\n */\n async decode(aea) {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n this.worker.postMessage({ jobId, type: 'decode', aea })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Parse AEA file blob to extract metadata and frame data\n *\n * @param {Blob} blob - AEA file blob\n * @returns {Promise<Object>} Parsed AEA data\n * @returns {Uint8Array} returns.header - AEA file header\n * @returns {Array} returns.aeaData - Encoded frame data\n * @returns {Object} returns.info - Metadata (title, channels, frames)\n */\n async parseAeaBlob(blob) {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n this.worker.postMessage({ jobId, type: 'parseAea', blob })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Get default encoder options metadata\n *\n * @returns {Promise<Object>} Default encoder options\n */\n async getEncoderOptions() {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n this.worker.postMessage({ jobId, type: 'getEncoderOptions' })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Terminate the worker and clean up resources\n *\n * Call this when done using the codec to free memory\n */\n terminate() {\n if (this.worker) {\n this.worker.terminate()\n this.worker = null\n }\n this.jobs.clear()\n }\n}\n\nexport default Carta1Worker\nexport { Carta1Worker }\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","e","t","r","Symbol","n","iterator","toStringTag","i","c","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","configurable","writable","_invoke","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_slicedToArray","Array","isArray","_arrayWithHoles","next","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","from","test","_defineProperties","_typeof","toPrimitive","String","Number","_toPrimitive","Carta1Worker","_this","workerPath","undefined","_classCallCheck","this","worker","Worker","nextJobId","jobs","Map","onmessage","_e$data","data","jobId","error","result","has","_this$jobs$get","reject","Error","console","warn","onerror","_step","_iterator","_n","F","s","_createForOfIteratorHelper","message","err","clear","_encode","_callee","pcmData","options","_this2","_args","_context","set","plainOptions","postMessage","type","_x","_decode","_callee2","aea","_this3","_context2","_x2","_parseAeaBlob","_callee3","blob","_this4","_context3","_x3","_getEncoderOptions","_callee4","_this5","_context4","terminate"],"sourceRoot":""}
1
+ {"version":3,"file":"carta1-worker-interface.min.js","mappings":"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","sources":["webpack://carta1/webpack/bootstrap","webpack://carta1/webpack/runtime/define property getters","webpack://carta1/webpack/runtime/hasOwnProperty shorthand","webpack://carta1/./codec/browser/interface.js"],"sourcesContent":["// The require scope\nconst __webpack_require__ = {};\n\n","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * Carta1 Worker Interface - Client-side API\n *\n * Provides a clean async interface for encoding and decoding ATRAC1 audio\n * using Web Workers for non-blocking operation.\n *\n * Usage:\n * const codec = new Carta1Worker('carta1-worker.min.js')\n * const result = await codec.encode(pcmData, options)\n * codec.terminate()\n *\n * The worker path can be customized to match your deployment:\n * new Carta1Worker('/js/carta1-worker.min.js')\n * new Carta1Worker('https://cdn.example.com/carta1-worker.min.js')\n */\n\nclass Carta1Worker {\n /**\n * Create a new ATRAC1 codec worker\n *\n * @param {string} [workerPath='atrac1-worker.min.js'] - Path to the worker script\n */\n constructor(workerPath = 'carta1-worker.min.js') {\n this.worker = new Worker(workerPath)\n this.nextJobId = 1\n this.jobs = new Map()\n\n // Handle worker responses\n this.worker.onmessage = (e) => {\n const { jobId, error, result } = e.data\n\n if (!jobId) {\n console.warn('Received message without jobId:', e.data)\n return\n }\n\n if (this.jobs.has(jobId)) {\n const { resolve, reject } = this.jobs.get(jobId)\n this.jobs.delete(jobId)\n\n if (error) {\n reject(new Error(error))\n } else if (result) {\n resolve(result)\n } else {\n reject(new Error('Worker returned no result'))\n }\n } else {\n console.warn('Received result for unknown job:', jobId)\n }\n }\n\n // Handle worker errors\n this.worker.onerror = (error) => {\n console.error('Worker crashed:', error)\n // Reject all pending jobs\n for (const [, { reject }] of this.jobs) {\n reject(new Error('Worker crashed: ' + error.message))\n }\n this.jobs.clear()\n }\n }\n\n /**\n * Encode PCM audio to ATRAC1 format\n *\n * @param {Float32Array|Array<Float32Array>} pcmData - PCM audio data\n * - Mono: Float32Array\n * - Stereo: [left, right] Float32Arrays\n * @param {Object} [options={}] - Encoder options\n * @param {number} [options.transientThresholdLow] - Low band transient threshold\n * @param {number} [options.transientThresholdMid] - Mid band transient threshold\n * @param {number} [options.transientThresholdHigh] - High band transient threshold\n * @returns {Promise<Object>} Encoding result\n * @returns {Blob} returns.aeaBlob - ATRAC1 encoded audio blob\n * @returns {Object} returns.shortBlockData - Short block frame indices\n */\n async encode(pcmData, options = {}) {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n // Ensure plain object for serialization\n const plainOptions = { ...options }\n this.worker.postMessage({\n jobId,\n type: 'encode',\n pcmData,\n options: plainOptions,\n })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Decode ATRAC1 audio to PCM WAV format\n *\n * @param {Object} aea - ATRAC1 audio data\n * @param {Uint8Array} aea.header - AEA file header\n * @param {Array} aea.aeaData - Encoded frame data\n * @param {Object} [aea.info] - Optional metadata\n * @returns {Promise<Object>} Decoding result\n * @returns {Blob} returns.wavBlob - Decoded WAV audio blob\n * @returns {Object} returns.info - Audio metadata (channels, sample rate)\n */\n async decode(aea) {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n this.worker.postMessage({ jobId, type: 'decode', aea })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Parse AEA file blob to extract metadata and frame data\n *\n * @param {Blob} blob - AEA file blob\n * @returns {Promise<Object>} Parsed AEA data\n * @returns {Uint8Array} returns.header - AEA file header\n * @returns {Array} returns.aeaData - Encoded frame data\n * @returns {Object} returns.info - Metadata (title, channels, frames)\n */\n async parseAeaBlob(blob) {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n this.worker.postMessage({ jobId, type: 'parseAea', blob })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Get default encoder options metadata\n *\n * @returns {Promise<Object>} Default encoder options\n */\n async getEncoderOptions() {\n const jobId = this.nextJobId++\n return new Promise((resolve, reject) => {\n this.jobs.set(jobId, { resolve, reject })\n try {\n this.worker.postMessage({ jobId, type: 'getEncoderOptions' })\n } catch (error) {\n this.jobs.delete(jobId)\n reject(error)\n }\n })\n }\n\n /**\n * Terminate the worker and clean up resources\n *\n * Call this when done using the codec to free memory\n */\n terminate() {\n if (this.worker) {\n this.worker.terminate()\n this.worker = null\n }\n this.jobs.clear()\n }\n}\n\nexport default Carta1Worker\nexport { Carta1Worker }\n"],"names":["__webpack_require__","exports","definition","Array","isArray","i","length","key","binding","o","Object","defineProperty","enumerable","value","get","obj","prop","prototype","hasOwnProperty","call","e","t","r","Symbol","n","iterator","toStringTag","c","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","this","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_slicedToArray","_arrayWithHoles","next","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","from","test","_defineProperties","_typeof","toPrimitive","String","Number","_toPrimitive","Carta1Worker","_this","workerPath","undefined","_classCallCheck","worker","Worker","nextJobId","jobs","Map","onmessage","_e$data","data","jobId","error","result","has","_this$jobs$get","reject","Error","console","warn","onerror","_step","_iterator","_n","F","s","_createForOfIteratorHelper","message","err","clear","_encode","_callee","pcmData","options","_this2","_args","_context","set","plainOptions","postMessage","type","_x","_decode","_callee2","aea","_this3","_context2","_x2","_parseAeaBlob","_callee3","blob","_this4","_context3","_x3","_getEncoderOptions","_callee4","_this5","_context4","terminate","__WEBPACK_DEFAULT_EXPORT__"],"sourceRoot":""}