Skip to content

Commit 6e2effe

Browse files
authored
Merge pull request #112 from eshaz/typescript-fixes
Typescript Fixes
2 parents 88a3ad1 + afae32d commit 6e2effe

File tree

8 files changed

+87
-23
lines changed

8 files changed

+87
-23
lines changed

package-lock.json

Lines changed: 6 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ogg-opus-decoder/package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ogg-opus-decoder/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ogg-opus-decoder",
3-
"version": "1.6.13",
3+
"version": "1.6.14",
44
"description": "Web Assembly streaming Ogg Opus decoder",
55
"type": "module",
66
"main": "./index.js",
@@ -55,6 +55,6 @@
5555
"dependencies": {
5656
"@wasm-audio-decoders/common": "9.0.5",
5757
"codec-parser": "2.5.0",
58-
"opus-decoder": "0.7.6"
58+
"opus-decoder": "0.7.7"
5959
}
6060
}

src/opus-decoder/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ Class that decodes Opus frames asynchronously within a web worker. Decoding is p
185185
```javascript
186186
const decoder = new OpusDecoderWebWorker({
187187
forceStereo: false,
188+
sampleRate: 48000,
188189
channels: 2,
189190
streamCount: 1,
190191
coupledStreamCount: 1,

src/opus-decoder/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/opus-decoder/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "opus-decoder",
3-
"version": "0.7.6",
3+
"version": "0.7.7",
44
"description": "Web Assembly streaming Opus decoder",
55
"type": "module",
66
"main": "./index.js",

src/opus-decoder/types.d.ts

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,28 @@
11
import { DecodeError } from "@wasm-audio-decoders/common";
22

3-
export interface OpusDecodedAudio {
3+
export type OpusDecoderDefaultSampleRate = 48000;
4+
export type OpusDecoderSampleRate =
5+
| 8000
6+
| 12000
7+
| 16000
8+
| 24000
9+
| OpusDecoderDefaultSampleRate;
10+
11+
export interface OpusDecodedAudio<
12+
SampleRate extends OpusDecoderSampleRate = OpusDecoderDefaultSampleRate,
13+
> {
414
channelData: Float32Array[];
515
samplesDecoded: number;
6-
sampleRate: 48000;
16+
sampleRate: SampleRate;
717
errors: DecodeError[];
818
}
919

10-
export class OpusDecoder {
20+
export class OpusDecoder<
21+
SampleRate extends OpusDecoderSampleRate | undefined = undefined,
22+
> {
1123
constructor(options?: {
1224
forceStereo?: boolean;
25+
sampleRate?: SampleRate;
1326
preSkip?: number;
1427
channels?: number;
1528
streamCount?: number;
@@ -19,13 +32,24 @@ export class OpusDecoder {
1932
ready: Promise<void>;
2033
reset: () => Promise<void>;
2134
free: () => void;
22-
decodeFrame: (opusFrame: Uint8Array) => OpusDecodedAudio;
23-
decodeFrames: (opusFrames: Uint8Array[]) => OpusDecodedAudio;
35+
decodeFrame: (
36+
opusFrame: Uint8Array,
37+
) => OpusDecodedAudio<
38+
SampleRate extends undefined ? OpusDecoderDefaultSampleRate : SampleRate
39+
>;
40+
decodeFrames: (
41+
opusFrames: Uint8Array[],
42+
) => OpusDecodedAudio<
43+
SampleRate extends undefined ? OpusDecoderDefaultSampleRate : SampleRate
44+
>;
2445
}
2546

26-
export class OpusDecoderWebWorker {
47+
export class OpusDecoderWebWorker<
48+
SampleRate extends OpusDecoderSampleRate | undefined = undefined,
49+
> {
2750
constructor(options?: {
2851
forceStereo?: boolean;
52+
sampleRate?: SampleRate;
2953
preSkip?: number;
3054
channels?: number;
3155
streamCount?: number;
@@ -35,8 +59,20 @@ export class OpusDecoderWebWorker {
3559
ready: Promise<void>;
3660
reset: () => Promise<void>;
3761
free: () => Promise<void>;
38-
decodeFrame: (opusFrame: Uint8Array) => Promise<OpusDecodedAudio>;
39-
decodeFrames: (opusFrames: Uint8Array[]) => Promise<OpusDecodedAudio>;
62+
decodeFrame: (
63+
opusFrame: Uint8Array,
64+
) => Promise<
65+
OpusDecodedAudio<
66+
SampleRate extends undefined ? OpusDecoderDefaultSampleRate : SampleRate
67+
>
68+
>;
69+
decodeFrames: (
70+
opusFrames: Uint8Array[],
71+
) => Promise<
72+
OpusDecodedAudio<
73+
SampleRate extends undefined ? OpusDecoderDefaultSampleRate : SampleRate
74+
>
75+
>;
4076
}
4177

4278
export { DecodeError };

test/wasm-audio-decoders.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,31 @@ const oggOpusDecoder: OggOpusDecoder = new OggOpusDecoder();
4242
const oggOpusDecoderWebWorker: OggOpusDecoderWebWorker =
4343
new OggOpusDecoderWebWorker();
4444

45+
// test opus decoder sample rates
46+
const opusDecoder8000 = new OpusDecoder({
47+
sampleRate: 8000,
48+
});
49+
const opusDecoderWebWorker8000 = new OpusDecoderWebWorker({
50+
sampleRate: 8000,
51+
});
52+
53+
const opusDecoderDecode8000 = opusDecoder8000.decodeFrame(fakeData);
54+
const opusDecoderDecodeSampleRate8000: number =
55+
opusDecoderDecode8000.sampleRate;
56+
57+
let opusDecoder12000: OpusDecoder<12000>;
58+
opusDecoder12000 = new OpusDecoder({
59+
sampleRate: 12000,
60+
});
61+
let opusDecoderWebWorker12000: OpusDecoderWebWorker<12000>;
62+
opusDecoderWebWorker12000 = new OpusDecoderWebWorker({
63+
sampleRate: 12000,
64+
});
65+
66+
const opusDecoderDecode12000 = opusDecoder12000.decodeFrame(fakeData);
67+
const opusDecoderDecodeSampleRate12000: number =
68+
opusDecoderDecode12000.sampleRate;
69+
4570
const flacDecoder: FLACDecoder = new FLACDecoder();
4671
const flacDecoderWebWorker: FLACDecoderWebWorker = new FLACDecoderWebWorker();
4772

0 commit comments

Comments
 (0)