@ariaflowagents/livekit-plugin-transport-sip 0.9.10 → 0.9.12
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/dist/audio_input.d.ts +6 -5
- package/dist/audio_input.js +9 -7
- package/dist/audio_output.d.ts +0 -1
- package/dist/audio_output.js +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +0 -1
- package/dist/native_bridge.d.ts +0 -1
- package/dist/native_bridge.js +0 -1
- package/dist/rtp/jitter_buffer.d.ts +0 -1
- package/dist/rtp/jitter_buffer.js +0 -1
- package/dist/rtp/rtp_packet.d.ts +0 -1
- package/dist/rtp/rtp_packet.js +0 -1
- package/dist/rtp/rtp_session.d.ts +0 -1
- package/dist/rtp/rtp_session.js +0 -1
- package/dist/sdp_g711.d.ts +0 -1
- package/dist/sdp_g711.js +0 -1
- package/dist/server.d.ts +86 -13
- package/dist/server.js +202 -33
- package/dist/sip_signaling.d.ts +0 -1
- package/dist/sip_signaling.js +0 -1
- package/dist/text_output.d.ts +0 -1
- package/dist/text_output.js +0 -1
- package/dist/transport_adapter.d.ts +9 -2
- package/dist/transport_adapter.js +9 -9
- package/dist/types.d.ts +0 -1
- package/dist/types.js +0 -1
- package/package.json +12 -12
- package/dist/audio_input.d.ts.map +0 -1
- package/dist/audio_input.js.map +0 -1
- package/dist/audio_output.d.ts.map +0 -1
- package/dist/audio_output.js.map +0 -1
- package/dist/codec/g711.d.ts +0 -17
- package/dist/codec/g711.d.ts.map +0 -1
- package/dist/codec/g711.js +0 -123
- package/dist/codec/g711.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/jssip_signaling.d.ts +0 -76
- package/dist/jssip_signaling.d.ts.map +0 -1
- package/dist/jssip_signaling.js +0 -255
- package/dist/jssip_signaling.js.map +0 -1
- package/dist/native_bridge.d.ts.map +0 -1
- package/dist/native_bridge.js.map +0 -1
- package/dist/rtp/jitter_buffer.d.ts.map +0 -1
- package/dist/rtp/jitter_buffer.js.map +0 -1
- package/dist/rtp/rtp_packet.d.ts.map +0 -1
- package/dist/rtp/rtp_packet.js.map +0 -1
- package/dist/rtp/rtp_session.d.ts.map +0 -1
- package/dist/rtp/rtp_session.js.map +0 -1
- package/dist/sdp_g711.d.ts.map +0 -1
- package/dist/sdp_g711.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/sip_signaling.d.ts.map +0 -1
- package/dist/sip_signaling.js.map +0 -1
- package/dist/text_output.d.ts.map +0 -1
- package/dist/text_output.js.map +0 -1
- package/dist/transport_adapter.d.ts.map +0 -1
- package/dist/transport_adapter.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
|
@@ -3,32 +3,33 @@ import { SIPAudioInput } from './audio_input.js';
|
|
|
3
3
|
import { SIPAudioOutput } from './audio_output.js';
|
|
4
4
|
import { SIPTextOutput } from './text_output.js';
|
|
5
5
|
export class SIPTransportAdapter extends TransportAdapter {
|
|
6
|
-
rtpSession;
|
|
7
6
|
id;
|
|
8
7
|
audioInput;
|
|
9
8
|
audioOutput;
|
|
10
9
|
textOutput;
|
|
11
10
|
config;
|
|
11
|
+
_rtpSession;
|
|
12
12
|
_isOpen = true;
|
|
13
13
|
constructor(rtpSession, codec, options) {
|
|
14
14
|
super();
|
|
15
|
-
this.
|
|
15
|
+
this._rtpSession = rtpSession;
|
|
16
16
|
this.id = options.id;
|
|
17
17
|
const packetDurationMs = options.packetDurationMs ?? 20;
|
|
18
|
-
|
|
19
|
-
// Report the actual output rate so AriaFlowVoiceSession forwards
|
|
20
|
-
// the correct sample rate to the STT engine.
|
|
21
|
-
const outputSampleRate = 16000;
|
|
18
|
+
const outputSampleRate = options.outputSampleRate ?? 24000;
|
|
22
19
|
this.config = {
|
|
23
20
|
sampleRate: outputSampleRate,
|
|
24
21
|
numChannels: codec.channels,
|
|
25
22
|
encoding: codec.name === 'PCMU' ? 'mulaw' : 'alaw',
|
|
26
23
|
samplesPerChannel: (outputSampleRate * packetDurationMs) / 1000,
|
|
27
24
|
};
|
|
28
|
-
this.audioInput = new SIPAudioInput(rtpSession, codec.sampleRate, codec.channels);
|
|
25
|
+
this.audioInput = new SIPAudioInput(rtpSession, codec.sampleRate, codec.channels, outputSampleRate);
|
|
29
26
|
this.audioOutput = new SIPAudioOutput(rtpSession, codec.sampleRate, packetDurationMs);
|
|
30
27
|
this.textOutput = new SIPTextOutput();
|
|
31
28
|
}
|
|
29
|
+
/** The underlying RTP session (for native bridge access). */
|
|
30
|
+
get rtpSession() {
|
|
31
|
+
return this._rtpSession;
|
|
32
|
+
}
|
|
32
33
|
get isOpen() {
|
|
33
34
|
return this._isOpen;
|
|
34
35
|
}
|
|
@@ -38,7 +39,6 @@ export class SIPTransportAdapter extends TransportAdapter {
|
|
|
38
39
|
this._isOpen = false;
|
|
39
40
|
await this.audioInput.close();
|
|
40
41
|
await this.audioOutput.close();
|
|
41
|
-
this.
|
|
42
|
+
this._rtpSession.close();
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
//# sourceMappingURL=transport_adapter.js.map
|
package/dist/types.d.ts
CHANGED
package/dist/types.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ariaflowagents/livekit-plugin-transport-sip",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.12",
|
|
4
4
|
"description": "SIP/RTP transport adapter for LiveKit Agents. Run voice agents over traditional telephony with G.711 codec support.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,23 +14,23 @@
|
|
|
14
14
|
"files": [
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
|
-
"scripts": {
|
|
18
|
-
"build": "tsc",
|
|
19
|
-
"clean": "rm -rf dist",
|
|
20
|
-
"typecheck": "tsc --noEmit",
|
|
21
|
-
"test": "bun test test",
|
|
22
|
-
"test:typecheck": "tsc -p test/tsconfig.json --noEmit"
|
|
23
|
-
},
|
|
24
17
|
"dependencies": {
|
|
25
18
|
"node.js-sip": "^1.0.9"
|
|
26
19
|
},
|
|
27
20
|
"peerDependencies": {
|
|
28
|
-
"@
|
|
29
|
-
"@livekit
|
|
21
|
+
"@livekit/agents": ">=1.0.0",
|
|
22
|
+
"@ariaflowagents/livekit-plugin": "0.9.12"
|
|
30
23
|
},
|
|
31
24
|
"devDependencies": {
|
|
32
25
|
"@types/node": "^22.10.0",
|
|
33
26
|
"typescript": "^5.5.0"
|
|
34
27
|
},
|
|
35
|
-
"license": "Apache-2.0"
|
|
36
|
-
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc",
|
|
31
|
+
"clean": "rm -rf dist",
|
|
32
|
+
"typecheck": "tsc --noEmit",
|
|
33
|
+
"test": "bun test test",
|
|
34
|
+
"test:typecheck": "tsc -p test/tsconfig.json --noEmit"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audio_input.d.ts","sourceRoot":"","sources":["../src/audio_input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD;;;;;;;;;GASG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAOzC,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,MAAM,CAAwD;IACtE,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAqD;gBAG5D,UAAU,EAAE,UAAU,EAC9B,UAAU,GAAE,MAAwB,EACpC,WAAW,GAAE,MAAU;IASzB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IAiBf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
|
package/dist/audio_input.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audio_input.js","sourceRoot":"","sources":["../src/audio_input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAOjC;IANF,MAAM,GAAmD,IAAI,CAAC;IAC9D,MAAM,GAAY,KAAK,CAAC;IACxB,WAAW,CAAS;IACpB,SAAS,GAAG,eAAe,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEtE,YACU,UAAsB,EAC9B,aAAqB,eAAe,EACpC,cAAsB,CAAC;QAEvB,KAAK,EAAE,CAAC;QAJA,eAAU,GAAV,UAAU,CAAY;QAK9B,KAAK,UAAU,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,WAAW;QACjB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,eAAe,EAAc,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAe,EAAE,EAAE;YAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAExC,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,GAAG,EACH,eAAe,EACf,IAAI,CAAC,WAAW,EAChB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAC9B,CAAC;YAEF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,sDAAsD;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audio_output.d.ts","sourceRoot":"","sources":["../src/audio_output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAW3C,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAqD;gBAG5D,UAAU,EAAE,UAAU,EAC9B,UAAU,GAAE,MAAwB,EACpC,gBAAgB,GAAE,MAAW;IAOzB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD,OAAO,CAAC,cAAc;IAwDtB,OAAO,CAAC,aAAa;IAOrB,KAAK,IAAI,IAAI;IAmBb,WAAW,IAAI,IAAI;IAiBb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
|
package/dist/audio_output.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audio_output.js","sourceRoot":"","sources":["../src/audio_output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAGhF,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,cAAe,SAAQ,WAAW;IAWnC;IAVF,SAAS,GAAiB,EAAE,CAAC;IAC7B,SAAS,GAA0C,IAAI,CAAC;IACxD,kBAAkB,GAAW,CAAC,CAAC;IAC/B,OAAO,GAAY,KAAK,CAAC;IACzB,MAAM,GAAY,KAAK,CAAC;IACxB,gBAAgB,CAAS;IACzB,gBAAgB,CAAS;IACzB,SAAS,GAAG,eAAe,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEtE,YACU,UAAsB,EAC9B,aAAqB,eAAe,EACpC,mBAA2B,EAAE;QAE7B,KAAK,CAAC,UAAU,CAAC,CAAC;QAJV,eAAU,GAAV,UAAU,CAAY;QAK9B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAiB;QAClC,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QAED,kEAAkE;QAClE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,IAAI,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,uCAAuC;YACvC,OACE,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB;gBAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EACzB,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;gBACrC,WAAW,GAAG,MAAM,CAAC;YACvB,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAChD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC3D,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAEvD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,CAAC;YACnD,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,aAAa,EAAE,CAAC;gBAErB,wDAAwD;gBACxD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBACrD,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAClC,IAAI,CAAC,kBAAkB,IAAI,WAAW,CAAC,MAAM,CAAC;oBAC9C,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC;gBAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU;oBACtC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU;oBAC3C,CAAC,CAAC,CAAC,CAAC;gBAEN,IAAI,CAAC,kBAAkB,CAAC;oBACtB,gBAAgB,EAAE,gBAAgB;oBAClC,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;gBAEH,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,gDAAgD;QAChD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,kBAAkB,CAAC;gBACtB,gBAAgB,EAAE,CAAC;gBACnB,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,WAAW;QACT,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU;YACtC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU;YAC3C,CAAC,CAAC,CAAC,CAAC;QAEN,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC,kBAAkB,CAAC;YACtB,gBAAgB,EAAE,gBAAgB;YAClC,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;CACF"}
|
package/dist/codec/g711.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* G.711 mu-law and A-law codec implementation.
|
|
3
|
-
*
|
|
4
|
-
* Converts between 16-bit signed linear PCM (AudioFrame format) and
|
|
5
|
-
* 8-bit compressed telephony audio. Stateless per-sample operation.
|
|
6
|
-
*/
|
|
7
|
-
export interface Codec {
|
|
8
|
-
readonly name: string;
|
|
9
|
-
readonly payloadType: number;
|
|
10
|
-
readonly sampleRate: number;
|
|
11
|
-
readonly channels: number;
|
|
12
|
-
decode(input: Uint8Array): Int16Array;
|
|
13
|
-
encode(input: Int16Array): Uint8Array;
|
|
14
|
-
}
|
|
15
|
-
export declare const PCMU: Codec;
|
|
16
|
-
export declare const PCMA: Codec;
|
|
17
|
-
//# sourceMappingURL=g711.d.ts.map
|
package/dist/codec/g711.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"g711.d.ts","sourceRoot":"","sources":["../../src/codec/g711.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwFH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;CACvC;AAED,eAAO,MAAM,IAAI,EAAE,KAqBlB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAqBlB,CAAC"}
|
package/dist/codec/g711.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* G.711 mu-law and A-law codec implementation.
|
|
3
|
-
*
|
|
4
|
-
* Converts between 16-bit signed linear PCM (AudioFrame format) and
|
|
5
|
-
* 8-bit compressed telephony audio. Stateless per-sample operation.
|
|
6
|
-
*/
|
|
7
|
-
// --- mu-law ---
|
|
8
|
-
const MULAW_BIAS = 33;
|
|
9
|
-
const MULAW_CLIP = 32635;
|
|
10
|
-
const mulawExpTable = new Uint8Array([
|
|
11
|
-
0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
|
12
|
-
4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
|
13
|
-
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
14
|
-
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
15
|
-
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
16
|
-
6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
17
|
-
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
18
|
-
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
19
|
-
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
20
|
-
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
21
|
-
7, 7, 7, 7, 7, 7,
|
|
22
|
-
]);
|
|
23
|
-
function mulawEncodeSample(sample) {
|
|
24
|
-
const sign = (sample >> 8) & 0x80;
|
|
25
|
-
if (sign !== 0)
|
|
26
|
-
sample = -sample;
|
|
27
|
-
if (sample > MULAW_CLIP)
|
|
28
|
-
sample = MULAW_CLIP;
|
|
29
|
-
sample += MULAW_BIAS;
|
|
30
|
-
const exponent = mulawExpTable[(sample >> 7) & 0xff];
|
|
31
|
-
const mantissa = (sample >> (exponent + 3)) & 0x0f;
|
|
32
|
-
return ~(sign | (exponent << 4) | mantissa) & 0xff;
|
|
33
|
-
}
|
|
34
|
-
function mulawDecodeSample(mulaw) {
|
|
35
|
-
mulaw = ~mulaw & 0xff;
|
|
36
|
-
const sign = mulaw & 0x80;
|
|
37
|
-
const exponent = (mulaw >> 4) & 0x07;
|
|
38
|
-
const mantissa = mulaw & 0x0f;
|
|
39
|
-
let sample = ((mantissa << 3) + MULAW_BIAS) << exponent;
|
|
40
|
-
sample -= MULAW_BIAS;
|
|
41
|
-
return sign !== 0 ? -sample : sample;
|
|
42
|
-
}
|
|
43
|
-
// --- A-law ---
|
|
44
|
-
const alawExpTable = new Uint8Array([
|
|
45
|
-
1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
|
46
|
-
5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
47
|
-
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
48
|
-
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
49
|
-
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
50
|
-
7, 7, 7,
|
|
51
|
-
]);
|
|
52
|
-
function alawEncodeSample(sample) {
|
|
53
|
-
const sign = (~sample >> 8) & 0x80;
|
|
54
|
-
if (sign === 0)
|
|
55
|
-
sample = -sample;
|
|
56
|
-
if (sample > 32767)
|
|
57
|
-
sample = 32767;
|
|
58
|
-
let compressedByte;
|
|
59
|
-
if (sample >= 256) {
|
|
60
|
-
const exponent = alawExpTable[(sample >> 8) & 0x7f];
|
|
61
|
-
const mantissa = (sample >> (exponent + 3)) & 0x0f;
|
|
62
|
-
compressedByte = (exponent << 4) | mantissa;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
compressedByte = sample >> 4;
|
|
66
|
-
}
|
|
67
|
-
return (compressedByte ^ (sign ^ 0x55)) & 0xff;
|
|
68
|
-
}
|
|
69
|
-
function alawDecodeSample(alaw) {
|
|
70
|
-
alaw ^= 0x55;
|
|
71
|
-
const sign = alaw & 0x80;
|
|
72
|
-
const exponent = (alaw >> 4) & 0x07;
|
|
73
|
-
const mantissa = alaw & 0x0f;
|
|
74
|
-
let sample;
|
|
75
|
-
if (exponent !== 0) {
|
|
76
|
-
sample = ((mantissa << 4) + 0x108) << (exponent - 1);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
sample = (mantissa << 4) + 8;
|
|
80
|
-
}
|
|
81
|
-
return sign !== 0 ? sample : -sample;
|
|
82
|
-
}
|
|
83
|
-
export const PCMU = {
|
|
84
|
-
name: 'PCMU',
|
|
85
|
-
payloadType: 0,
|
|
86
|
-
sampleRate: 8000,
|
|
87
|
-
channels: 1,
|
|
88
|
-
decode(input) {
|
|
89
|
-
const output = new Int16Array(input.length);
|
|
90
|
-
for (let i = 0; i < input.length; i++) {
|
|
91
|
-
output[i] = mulawDecodeSample(input[i]);
|
|
92
|
-
}
|
|
93
|
-
return output;
|
|
94
|
-
},
|
|
95
|
-
encode(input) {
|
|
96
|
-
const output = new Uint8Array(input.length);
|
|
97
|
-
for (let i = 0; i < input.length; i++) {
|
|
98
|
-
output[i] = mulawEncodeSample(input[i]);
|
|
99
|
-
}
|
|
100
|
-
return output;
|
|
101
|
-
},
|
|
102
|
-
};
|
|
103
|
-
export const PCMA = {
|
|
104
|
-
name: 'PCMA',
|
|
105
|
-
payloadType: 8,
|
|
106
|
-
sampleRate: 8000,
|
|
107
|
-
channels: 1,
|
|
108
|
-
decode(input) {
|
|
109
|
-
const output = new Int16Array(input.length);
|
|
110
|
-
for (let i = 0; i < input.length; i++) {
|
|
111
|
-
output[i] = alawDecodeSample(input[i]);
|
|
112
|
-
}
|
|
113
|
-
return output;
|
|
114
|
-
},
|
|
115
|
-
encode(input) {
|
|
116
|
-
const output = new Uint8Array(input.length);
|
|
117
|
-
for (let i = 0; i < input.length; i++) {
|
|
118
|
-
output[i] = alawEncodeSample(input[i]);
|
|
119
|
-
}
|
|
120
|
-
return output;
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
//# sourceMappingURL=g711.js.map
|
package/dist/codec/g711.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"g711.js","sourceRoot":"","sources":["../../src/codec/g711.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iBAAiB;AAEjB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC;IACnC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACjB,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAClC,IAAI,IAAI,KAAK,CAAC;QAAE,MAAM,GAAG,CAAC,MAAM,CAAC;IACjC,IAAI,MAAM,GAAG,UAAU;QAAE,MAAM,GAAG,UAAU,CAAC;IAC7C,MAAM,IAAI,UAAU,CAAC;IAErB,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;IAC9B,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,QAAQ,CAAC;IACxD,MAAM,IAAI,UAAU,CAAC;IACrB,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAED,gBAAgB;AAEhB,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC;IAClC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC,EAAE,CAAC,EAAE,CAAC;CACR,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,IAAI,KAAK,CAAC;QAAE,MAAM,GAAG,CAAC,MAAM,CAAC;IACjC,IAAI,MAAM,GAAG,KAAK;QAAE,MAAM,GAAG,KAAK,CAAC;IAEnC,IAAI,cAAsB,CAAC;IAC3B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACnD,cAAc,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,MAAM,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AACjD,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IAE7B,IAAI,MAAc,CAAC;IACnB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAaD,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,CAAC;IAEX,MAAM,CAAC,KAAiB;QACtB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,CAAC;IAEX,MAAM,CAAC,KAAiB;QACtB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAiB;QACtB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAc,MAAM,2CAA2C,CAAC;AAEnF,OAAO,EAAE,UAAU,EAA0B,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAkB,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SIP Signaling implementation using JsSIP library for WebSocket transport.
|
|
3
|
-
*
|
|
4
|
-
* @experimental
|
|
5
|
-
*
|
|
6
|
-
* WARNING: JsSIP is a WebRTC-only library. Its `session.answer()` API is a
|
|
7
|
-
* WebRTC API and cannot bridge to the raw RTP pipeline used by `SIPAudioInput`
|
|
8
|
-
* and `SIPAudioOutput`. This file is kept for reference but the WebSocket SIP
|
|
9
|
-
* signaling path is architecturally incompatible with the RTP transport.
|
|
10
|
-
*
|
|
11
|
-
* For production use, use `sip_signaling.ts` (UDP-based, compatible with RTP).
|
|
12
|
-
*
|
|
13
|
-
* JsSIP supports:
|
|
14
|
-
* - SIP over WebSocket (secure WSS and non-secure WS)
|
|
15
|
-
* - WebRTC for media (NOT compatible with raw RTP)
|
|
16
|
-
* - Full SIP protocol compliance (INVITE, ACK, BYE, etc.)
|
|
17
|
-
*/
|
|
18
|
-
import type { SIPServerOptions } from './types.js';
|
|
19
|
-
/**
|
|
20
|
-
* Callback for incoming INVITE requests.
|
|
21
|
-
*/
|
|
22
|
-
export type OnInviteCallback = (callId: string, remoteSdp: string, rtpPort: number) => void;
|
|
23
|
-
/**
|
|
24
|
-
* Callback for BYE requests (remote hangup).
|
|
25
|
-
*/
|
|
26
|
-
export type OnByeCallback = (callId: string) => void;
|
|
27
|
-
/**
|
|
28
|
-
* SIP Signaling handler using JsSIP over WebSocket.
|
|
29
|
-
*
|
|
30
|
-
* This implementation uses the JsSIP library for WebSocket-based SIP
|
|
31
|
-
* signaling, commonly used with WebRTC and modern SIP providers.
|
|
32
|
-
*/
|
|
33
|
-
export declare class JsSIPSignaling {
|
|
34
|
-
private options;
|
|
35
|
-
private ua;
|
|
36
|
-
private activeSessions;
|
|
37
|
-
private nextRtpPort;
|
|
38
|
-
private localAddress;
|
|
39
|
-
constructor(options: SIPServerOptions);
|
|
40
|
-
/**
|
|
41
|
-
* Start the SIP user agent and begin listening for calls over WebSocket.
|
|
42
|
-
*
|
|
43
|
-
* @param onInvite - Callback when a new INVITE is received
|
|
44
|
-
* @param onBye - Callback when a BYE is received (remote hangup)
|
|
45
|
-
*/
|
|
46
|
-
start(onInvite: OnInviteCallback, onBye?: OnByeCallback): Promise<void>;
|
|
47
|
-
/**
|
|
48
|
-
* Handle an incoming INVITE request.
|
|
49
|
-
*/
|
|
50
|
-
private handleIncomingInvite;
|
|
51
|
-
/**
|
|
52
|
-
* Hang up an active call.
|
|
53
|
-
*/
|
|
54
|
-
hangup(callId: string): Promise<void>;
|
|
55
|
-
/**
|
|
56
|
-
* Make an outgoing call.
|
|
57
|
-
*/
|
|
58
|
-
makeCall(targetUri: string, onInvite?: OnInviteCallback, onBye?: OnByeCallback): Promise<string>;
|
|
59
|
-
/**
|
|
60
|
-
* Stop the SIP user agent and hang up all active calls.
|
|
61
|
-
*/
|
|
62
|
-
stop(): Promise<void>;
|
|
63
|
-
/**
|
|
64
|
-
* Get the RTP port allocated for a specific call.
|
|
65
|
-
*/
|
|
66
|
-
getRtpPort(callId: string): number | undefined;
|
|
67
|
-
/**
|
|
68
|
-
* Check if the user agent is registered.
|
|
69
|
-
*/
|
|
70
|
-
get isRegistered(): boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Get the user agent status.
|
|
73
|
-
*/
|
|
74
|
-
get status(): 'disconnected' | 'connecting' | 'connected';
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=jssip_signaling.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jssip_signaling.d.ts","sourceRoot":"","sources":["../src/jssip_signaling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5F;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAmBrD;;;;;GAKG;AACH,qBAAa,cAAc;IAMb,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,cAAc,CAAoE;IAC1F,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;gBAET,OAAO,EAAE,gBAAgB;IAK7C;;;;;OAKG;IACG,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C7E;;OAEG;YACW,oBAAoB;IA6DlC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3C;;OAEG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC;IAkDlB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,cAAc,GAAG,YAAY,GAAG,WAAW,CAOxD;CACF"}
|
package/dist/jssip_signaling.js
DELETED
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SIP Signaling implementation using JsSIP library for WebSocket transport.
|
|
3
|
-
*
|
|
4
|
-
* @experimental
|
|
5
|
-
*
|
|
6
|
-
* WARNING: JsSIP is a WebRTC-only library. Its `session.answer()` API is a
|
|
7
|
-
* WebRTC API and cannot bridge to the raw RTP pipeline used by `SIPAudioInput`
|
|
8
|
-
* and `SIPAudioOutput`. This file is kept for reference but the WebSocket SIP
|
|
9
|
-
* signaling path is architecturally incompatible with the RTP transport.
|
|
10
|
-
*
|
|
11
|
-
* For production use, use `sip_signaling.ts` (UDP-based, compatible with RTP).
|
|
12
|
-
*
|
|
13
|
-
* JsSIP supports:
|
|
14
|
-
* - SIP over WebSocket (secure WSS and non-secure WS)
|
|
15
|
-
* - WebRTC for media (NOT compatible with raw RTP)
|
|
16
|
-
* - Full SIP protocol compliance (INVITE, ACK, BYE, etc.)
|
|
17
|
-
*/
|
|
18
|
-
import { UA, WebSocketInterface } from 'jssip';
|
|
19
|
-
/**
|
|
20
|
-
* SDP offer for G.711 μ-law audio.
|
|
21
|
-
*/
|
|
22
|
-
const G711_SDP_OFFER = (localAddress, rtpPort) => `v=0\r\n` +
|
|
23
|
-
`o=- ${Date.now()} ${Date.now()} IN IP4 ${localAddress}\r\n` +
|
|
24
|
-
`s=AriaFlow Voice Agent\r\n` +
|
|
25
|
-
`c=IN IP4 ${localAddress}\r\n` +
|
|
26
|
-
`t=0 0\r\n` +
|
|
27
|
-
`m=audio ${rtpPort} RTP/AVP 0 8\r\n` + // 0 = G.711 μ-law (PCMU), 8 = G.711 A-law (PCMA)
|
|
28
|
-
`a=rtpmap:0 PCMU/8000\r\n` +
|
|
29
|
-
`a=rtpmap:8 PCMA/8000\r\n` +
|
|
30
|
-
`a=fmtp:0\r\n` +
|
|
31
|
-
`a=fmtp:8\r\n` +
|
|
32
|
-
`a=ptime:20\r\n` +
|
|
33
|
-
`a=sendrecv\r\n`;
|
|
34
|
-
/**
|
|
35
|
-
* SIP Signaling handler using JsSIP over WebSocket.
|
|
36
|
-
*
|
|
37
|
-
* This implementation uses the JsSIP library for WebSocket-based SIP
|
|
38
|
-
* signaling, commonly used with WebRTC and modern SIP providers.
|
|
39
|
-
*/
|
|
40
|
-
export class JsSIPSignaling {
|
|
41
|
-
options;
|
|
42
|
-
ua = null;
|
|
43
|
-
activeSessions = new Map();
|
|
44
|
-
nextRtpPort;
|
|
45
|
-
localAddress;
|
|
46
|
-
constructor(options) {
|
|
47
|
-
this.options = options;
|
|
48
|
-
this.localAddress = options.localAddress;
|
|
49
|
-
this.nextRtpPort = options.rtpPortStart ?? 10000;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Start the SIP user agent and begin listening for calls over WebSocket.
|
|
53
|
-
*
|
|
54
|
-
* @param onInvite - Callback when a new INVITE is received
|
|
55
|
-
* @param onBye - Callback when a BYE is received (remote hangup)
|
|
56
|
-
*/
|
|
57
|
-
async start(onInvite, onBye) {
|
|
58
|
-
// Create WebSocket URL
|
|
59
|
-
const wsProtocol = this.options.secureWebSocket === false ? 'ws' : 'wss';
|
|
60
|
-
const wsUrl = `${wsProtocol}://${this.options.wsServerHost || this.localAddress}:${this.options.wsServerPort || 8080}/ws`;
|
|
61
|
-
// Create SIP URI
|
|
62
|
-
const sipUri = `sip:${this.options.sipUsername || 'agent'}@${this.options.sipDomain || this.localAddress}`;
|
|
63
|
-
// Create JsSIP User Agent
|
|
64
|
-
this.ua = new UA({
|
|
65
|
-
uri: sipUri,
|
|
66
|
-
sockets: [new WebSocketInterface(wsUrl)],
|
|
67
|
-
password: this.options.sipPassword,
|
|
68
|
-
register: this.options.shouldRegister !== false, // Register by default
|
|
69
|
-
});
|
|
70
|
-
// Set up event handlers for incoming calls
|
|
71
|
-
this.ua.on('newRTCSession', (data) => {
|
|
72
|
-
this.handleIncomingInvite(data.session, onInvite, onBye);
|
|
73
|
-
});
|
|
74
|
-
// Set up connection event handlers
|
|
75
|
-
this.ua.on('connected', () => {
|
|
76
|
-
console.log(`[JsSIPSignaling] Connected to SIP server: ${wsUrl}`);
|
|
77
|
-
});
|
|
78
|
-
this.ua.on('disconnected', () => {
|
|
79
|
-
console.warn('[JsSIPSignaling] Disconnected from SIP server');
|
|
80
|
-
});
|
|
81
|
-
this.ua.on('registered', () => {
|
|
82
|
-
console.log(`[JsSIPSignaling] Registered as: ${sipUri}`);
|
|
83
|
-
});
|
|
84
|
-
this.ua.on('registrationFailed', () => {
|
|
85
|
-
console.error('[JsSIPSignaling] Registration failed');
|
|
86
|
-
});
|
|
87
|
-
// Start the user agent
|
|
88
|
-
this.ua.start();
|
|
89
|
-
console.log(`[JsSIPSignaling] Started with WebSocket: ${wsUrl}`);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Handle an incoming INVITE request.
|
|
93
|
-
*/
|
|
94
|
-
async handleIncomingInvite(session, onInvite, onBye) {
|
|
95
|
-
const callId = session.request?.callId || `call-${Date.now()}`;
|
|
96
|
-
const remoteSdp = session.request?.body || '';
|
|
97
|
-
console.log(`[JsSIPSignaling] Received INVITE for call: ${callId}`);
|
|
98
|
-
console.log(`[JsSIPSignaling] From: ${session.remote_identity?.uri?.toString() || session}`);
|
|
99
|
-
// Allocate RTP port for this call
|
|
100
|
-
const rtpPort = this.nextRtpPort;
|
|
101
|
-
this.nextRtpPort += 2; // RTP uses even ports
|
|
102
|
-
// Generate SDP answer with our RTP port
|
|
103
|
-
const sdpAnswer = G711_SDP_OFFER(this.localAddress, rtpPort);
|
|
104
|
-
// Set up session state handlers
|
|
105
|
-
session.on('progress', () => {
|
|
106
|
-
console.log(`[JsSIPSignaling] Call ${callId} in progress`);
|
|
107
|
-
});
|
|
108
|
-
session.on('confirmed', () => {
|
|
109
|
-
console.log(`[JsSIPSignaling] Call ${callId} established`);
|
|
110
|
-
});
|
|
111
|
-
session.on('ended', () => {
|
|
112
|
-
console.log(`[JsSIPSignaling] Call ${callId} ended`);
|
|
113
|
-
this.activeSessions.delete(callId);
|
|
114
|
-
if (onBye) {
|
|
115
|
-
onBye(callId);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
session.on('failed', (error) => {
|
|
119
|
-
console.error(`[JsSIPSignaling] Call ${callId} failed:`, error);
|
|
120
|
-
this.activeSessions.delete(callId);
|
|
121
|
-
});
|
|
122
|
-
// Accept the invitation with our SDP
|
|
123
|
-
try {
|
|
124
|
-
await session.answer({
|
|
125
|
-
extraHeaders: ['Content-Type: application/sdp'],
|
|
126
|
-
});
|
|
127
|
-
// Track the active session
|
|
128
|
-
this.activeSessions.set(callId, { session, rtpPort });
|
|
129
|
-
// Notify the application about the new call
|
|
130
|
-
onInvite(callId, remoteSdp, rtpPort);
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
console.error(`[JsSIPSignaling] Error accepting call ${callId}:`, error);
|
|
134
|
-
try {
|
|
135
|
-
session.terminate();
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
// Ignore terminate errors
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Hang up an active call.
|
|
144
|
-
*/
|
|
145
|
-
async hangup(callId) {
|
|
146
|
-
const activeSession = this.activeSessions.get(callId);
|
|
147
|
-
if (!activeSession) {
|
|
148
|
-
console.warn(`[JsSIPSignaling] No active session for call: ${callId}`);
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
try {
|
|
152
|
-
await activeSession.session.terminate();
|
|
153
|
-
this.activeSessions.delete(callId);
|
|
154
|
-
console.log(`[JsSIPSignaling] Hung up call: ${callId}`);
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
console.error(`[JsSIPSignaling] Error hanging up call ${callId}:`, error);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Make an outgoing call.
|
|
162
|
-
*/
|
|
163
|
-
async makeCall(targetUri, onInvite, onBye) {
|
|
164
|
-
if (!this.ua) {
|
|
165
|
-
throw new Error('[JsSIPSignaling] User agent not started');
|
|
166
|
-
}
|
|
167
|
-
// Allocate RTP port for this call
|
|
168
|
-
const rtpPort = this.nextRtpPort;
|
|
169
|
-
this.nextRtpPort += 2;
|
|
170
|
-
// Generate SDP offer with our RTP port
|
|
171
|
-
const sdpOffer = G711_SDP_OFFER(this.localAddress, rtpPort);
|
|
172
|
-
// Create the call session
|
|
173
|
-
const session = this.ua.call(targetUri, {
|
|
174
|
-
extraHeaders: ['Content-Type: application/sdp'],
|
|
175
|
-
eventHandlers: {
|
|
176
|
-
progress: () => {
|
|
177
|
-
const callId = session.request?.callId || `call-${Date.now()}`;
|
|
178
|
-
console.log(`[JsSIPSignaling] Outgoing call ${callId} in progress`);
|
|
179
|
-
},
|
|
180
|
-
confirmed: () => {
|
|
181
|
-
const callId = session.request?.callId || `call-${Date.now()}`;
|
|
182
|
-
console.log(`[JsSIPSignaling] Outgoing call ${callId} accepted`);
|
|
183
|
-
this.activeSessions.set(callId, { session, rtpPort });
|
|
184
|
-
if (onInvite) {
|
|
185
|
-
onInvite(callId, session.request?.body || '', rtpPort);
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
ended: () => {
|
|
189
|
-
const callId = session.request?.callId || `call-${Date.now()}`;
|
|
190
|
-
console.log(`[JsSIPSignaling] Outgoing call ${callId} ended`);
|
|
191
|
-
this.activeSessions.delete(callId);
|
|
192
|
-
if (onBye) {
|
|
193
|
-
onBye(callId);
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
failed: (error) => {
|
|
197
|
-
const callId = session.request?.callId || `call-${Date.now()}`;
|
|
198
|
-
console.error(`[JsSIPSignaling] Outgoing call ${callId} failed:`, error);
|
|
199
|
-
this.activeSessions.delete(callId);
|
|
200
|
-
},
|
|
201
|
-
},
|
|
202
|
-
});
|
|
203
|
-
return session.request?.callId || `call-${Date.now()}`;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Stop the SIP user agent and hang up all active calls.
|
|
207
|
-
*/
|
|
208
|
-
async stop() {
|
|
209
|
-
if (!this.ua) {
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
// Hang up all active calls
|
|
213
|
-
const hangupPromises = Array.from(this.activeSessions.entries()).map(async ([callId, { session }]) => {
|
|
214
|
-
try {
|
|
215
|
-
await session.terminate();
|
|
216
|
-
}
|
|
217
|
-
catch (error) {
|
|
218
|
-
console.error(`[JsSIPSignaling] Error hanging up call ${callId} during shutdown:`, error);
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
await Promise.allSettled(hangupPromises);
|
|
222
|
-
this.activeSessions.clear();
|
|
223
|
-
// Stop the user agent
|
|
224
|
-
this.ua.stop();
|
|
225
|
-
this.ua = null;
|
|
226
|
-
console.log('[JsSIPSignaling] Stopped');
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Get the RTP port allocated for a specific call.
|
|
230
|
-
*/
|
|
231
|
-
getRtpPort(callId) {
|
|
232
|
-
return this.activeSessions.get(callId)?.rtpPort;
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Check if the user agent is registered.
|
|
236
|
-
*/
|
|
237
|
-
get isRegistered() {
|
|
238
|
-
return this.ua?.isRegistered() ?? false;
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Get the user agent status.
|
|
242
|
-
*/
|
|
243
|
-
get status() {
|
|
244
|
-
if (!this.ua)
|
|
245
|
-
return 'disconnected';
|
|
246
|
-
const uaStatus = this.ua.status;
|
|
247
|
-
// JsSIP UA status: 0 = Init, 1 = Ready, 2 = UserRegistered, 3 = Unregistered
|
|
248
|
-
if (uaStatus === 0)
|
|
249
|
-
return 'connecting';
|
|
250
|
-
if (uaStatus === 1 || uaStatus === 2)
|
|
251
|
-
return 'connected';
|
|
252
|
-
return 'disconnected';
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
//# sourceMappingURL=jssip_signaling.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jssip_signaling.js","sourceRoot":"","sources":["../src/jssip_signaling.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"native_bridge.d.ts","sourceRoot":"","sources":["../src/native_bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA0BvD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE;IACR,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,oBAAoB,CAqGtB"}
|