-
Notifications
You must be signed in to change notification settings - Fork 31
/
api.d.ts
89 lines (69 loc) · 2.2 KB
/
api.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/// <reference path="typings/es6-promise.d.ts" />
interface IAudioInfo {
sampling_rate: number;
num_of_channels: number;
}
interface IAudioBuffer {
timestamp: number;
samples: Float32Array;
transferable: boolean;
}
interface IAudioReader {
/*
* Arguments:
* buffer_samples_per_ch: readで読み込むチャンネルあたりのサンプル数を指定.
* IAudioReaderの実装により実際にはbuffer_sizeに近い値になる場合がある
*/
open(buffer_samples_per_ch: number, params: any): Promise<IAudioInfo>;
read(): Promise<IAudioBuffer>;
close();
in_flight: boolean;
}
interface IPlayer {
// 再生バッファが足りない時に発生するイベント
onneedbuffer: { (): void };
/* 初期化
*
* Arguments:
* sampling_rate, num_of_channels: サンプリングレート / チャンネル数
* period_samples: onneedbufferで書き込むサイズ(チャンネルあたりのサンプル数)
* delay_periods: 再生開始に必要な最小ピリオド数
* buffer_periods: リングバッファのサイズ
*/
init(sampling_rate: number, num_of_channels: number,
period_samples: number, delay_periods: number, buffer_periods: number): Promise<any>;
// リングバッファにサンプルを書き込む
enqueue(buf: IAudioBuffer): Promise<any>;
// 再生開始
start(): void;
// 再生停止
stop(): void;
// 破棄
close(): void;
// 実際のサンプリングレートを取得
getActualSamplingRate(): number;
getBufferStatus(): IPlayerBufferStatus;
}
interface IPlayerBufferStatus {
delay: number,
available: number,
capacity: number,
}
interface IAudioEncoderConfig extends IAudioInfo {
params: any
}
interface Packet {
data: ArrayBuffer;
}
interface IResult {
status: number,
reason?: string,
}
interface IAudioEncoder {
setup(cfg: IAudioEncoderConfig): Promise<Array<Packet>>;
encode(data: IAudioBuffer): Promise<Array<Packet>>;
}
interface IAudioDecoder {
setup(cfg: any, packets: Array<Packet>): Promise<IAudioInfo>;
decode(packet: Packet): Promise<IAudioBuffer>;
}