sip-lab 1.28.12 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/DEV.md +55 -0
  2. package/README.md +8 -2
  3. package/binding.gyp +1 -0
  4. package/index.js +7 -0
  5. package/package.json +1 -1
  6. package/prebuilds/linux-x64/node.abi102.node +0 -0
  7. package/prebuilds/linux-x64/node.abi108.node +0 -0
  8. package/prebuilds/linux-x64/node.abi111.node +0 -0
  9. package/prebuilds/linux-x64/node.abi115.node +0 -0
  10. package/prebuilds/linux-x64/node.abi120.node +0 -0
  11. package/prebuilds/linux-x64/node.abi88.node +0 -0
  12. package/prebuilds/linux-x64/node.abi93.node +0 -0
  13. package/samples/100_calls.js +4 -0
  14. package/samples/16_audio_streams.js +2 -0
  15. package/samples/183_session_progress.js +2 -0
  16. package/samples/delayed_media.js +2 -0
  17. package/samples/four_audio_streams_two_refused.js +7 -4
  18. package/samples/mrcp_and_audio.simplified_media.js +2 -0
  19. package/samples/multiple_audio_streams.js +2 -0
  20. package/samples/refuse_telephone_event.js +3 -0
  21. package/samples/reinvite_and_dtmf.js +3 -0
  22. package/samples/reinvite_audio_audio.js +2 -0
  23. package/samples/reinvite_with_hold_unhold.js +2 -0
  24. package/samples/rtp_and_srtp.js +3 -0
  25. package/samples/rtp_and_srtp.rtp_refused.js +3 -0
  26. package/samples/srtp.js +3 -0
  27. package/samples/tcp.js +2 -0
  28. package/samples/text_to_speech.js +3 -0
  29. package/samples/two_audio_streams.js +4 -0
  30. package/samples/two_audio_streams.port_zero.js +4 -0
  31. package/src/addon.cpp +180 -10
  32. package/src/event_templates.cpp +8 -0
  33. package/src/event_templates.hpp +3 -0
  34. package/src/pjmedia/include/pjmedia/bfsk_det.h +25 -0
  35. package/src/pjmedia/src/pjmedia/bfsk_det.c +163 -0
  36. package/src/sip.cpp +520 -21
  37. package/src/sip.hpp +11 -0
@@ -0,0 +1,163 @@
1
+ /* $Id: bfsk_det.c 0000 2024-09-08 08:11:53Z mayamatakeshi $ */
2
+ /*
3
+ * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
4
+ * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, write to the Free Software
18
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
+ */
20
+
21
+ #include <pjmedia/bfsk_det.h>
22
+ #include <pjmedia/errno.h>
23
+ #include <pjmedia/port.h>
24
+ #include <pj/assert.h>
25
+ #include <pj/pool.h>
26
+ #include <pj/string.h>
27
+
28
+ #include <spandsp.h>
29
+ #include <spandsp/expose.h>
30
+
31
+ #define SIGNATURE PJMEDIA_SIGNATURE('b', 'f', 'd', 't')
32
+ #define THIS_FILE "bfsk_det.c"
33
+
34
+ #if 0
35
+ # define TRACE_(expr) PJ_LOG(4,expr)
36
+ #else
37
+ # define TRACE_(expr)
38
+ #endif
39
+
40
+ static pj_status_t bfsk_det_put_frame(pjmedia_port *this_port,
41
+ pjmedia_frame *frame);
42
+ static pj_status_t bfsk_det_on_destroy(pjmedia_port *this_port);
43
+
44
+ struct bfsk_det
45
+ {
46
+ struct pjmedia_port base;
47
+ fsk_rx_state_t state;
48
+ void (*bfsk_cb)(pjmedia_port*, void*, int);
49
+ void *bfsk_cb_user_data;
50
+ };
51
+
52
+ static void bfsk_det_bit_callback(void *user_data, int bit)
53
+ {
54
+ printf("bfsk_det_bit_callback got bit=%i\n", bit);
55
+ if(bit != 0 && bit != 1) return;
56
+
57
+ struct bfsk_det *dport = (struct bfsk_det*)user_data;
58
+
59
+ TRACE_((THIS_FILE, "bfsk_det bit detected: %c", bit));
60
+
61
+ if(!dport->bfsk_cb) return;
62
+
63
+ dport->bfsk_cb((pjmedia_port*)dport,
64
+ dport->bfsk_cb_user_data,
65
+ bit);
66
+ }
67
+
68
+ PJ_DEF(pj_status_t) pjmedia_bfsk_det_create( pj_pool_t *pool,
69
+ unsigned clock_rate,
70
+ unsigned channel_count,
71
+ unsigned samples_per_frame,
72
+ unsigned bits_per_sample,
73
+ void (*cb)(pjmedia_port*,
74
+ void *user_data,
75
+ int bit),
76
+ void *user_data,
77
+ int freq_zero,
78
+ int freq_one,
79
+ int min_level,
80
+ int baud_rate,
81
+ pjmedia_port **p_port)
82
+ {
83
+ printf("pjmedia_bfsk_det_create\n");
84
+ struct bfsk_det *det;
85
+ fsk_spec_t *fsk_spec;
86
+
87
+ printf("p1\n");
88
+ const pj_str_t name = pj_str("bfsk_det");
89
+
90
+ PJ_ASSERT_RETURN(pool && clock_rate && channel_count &&
91
+ samples_per_frame && bits_per_sample == 16 &&
92
+ p_port != NULL, PJ_EINVAL);
93
+
94
+ PJ_ASSERT_RETURN(pool && p_port, PJ_EINVAL);
95
+
96
+ printf("p2\n");
97
+
98
+ det = PJ_POOL_ZALLOC_T(pool, struct bfsk_det);
99
+ PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
100
+ printf("p3\n");
101
+
102
+ pjmedia_port_info_init(&det->base.info, &name, SIGNATURE, clock_rate,
103
+ channel_count, bits_per_sample, samples_per_frame);
104
+
105
+ printf("p4\n");
106
+
107
+ det->base.put_frame = &bfsk_det_put_frame;
108
+ det->base.on_destroy = &bfsk_det_on_destroy;
109
+
110
+ printf("p5\n");
111
+
112
+ det->bfsk_cb = cb;
113
+ det->bfsk_cb_user_data = user_data;
114
+
115
+ fsk_spec = PJ_POOL_ZALLOC_T(pool, fsk_spec_t);
116
+ PJ_ASSERT_RETURN(pool != NULL, PJ_ENOMEM);
117
+ printf("p6\n");
118
+
119
+ fsk_spec->name = "bfsk";
120
+ fsk_spec->freq_zero = freq_zero;
121
+ fsk_spec->freq_one = freq_one;
122
+ fsk_spec->min_level = min_level;
123
+ fsk_spec->baud_rate = baud_rate;
124
+
125
+ int sync_mode = 0;
126
+
127
+ printf("p7\n");
128
+ fsk_rx_state_t *res = fsk_rx_init(&det->state, fsk_spec, sync_mode, &bfsk_det_bit_callback, (void*)det);
129
+ if(res != &det->state) {
130
+ printf("fsx_rx_init failed\n");
131
+ }
132
+
133
+ //fsk_rx_init(&(det->state), &preset_fsk_specs[FSK_V21CH2], FSK_FRAME_MODE_SYNC, &bfsk_det_bit_callback, (void*)det);
134
+
135
+ printf("p8\n");
136
+ TRACE_((THIS_FILE, "bfsk_det created: %u/%u/%u/%u", clock_rate,
137
+ channel_count, samples_per_frame, bits_per_sample));
138
+
139
+ printf("fsk_rx_init done\n");
140
+
141
+ *p_port = &det->base;
142
+ return PJ_SUCCESS;
143
+ }
144
+
145
+ static pj_status_t bfsk_det_put_frame(pjmedia_port *this_port,
146
+ pjmedia_frame *frame)
147
+ {
148
+ printf("bfsk_det_put_frame\n");
149
+ if(frame->type != PJMEDIA_FRAME_TYPE_AUDIO) return PJ_SUCCESS;
150
+
151
+ struct bfsk_det *dport = (struct bfsk_det*) this_port;
152
+
153
+ printf("p=%x, size=%i\n", frame->buf, PJMEDIA_PIA_SPF(&dport->base.info));
154
+ fsk_rx(&dport->state, (const pj_int16_t *)frame->buf,
155
+ PJMEDIA_PIA_SPF(&dport->base.info));
156
+
157
+ return PJ_SUCCESS;
158
+ }
159
+
160
+ static pj_status_t bfsk_det_on_destroy(pjmedia_port *this_port)
161
+ {
162
+ return PJ_SUCCESS;
163
+ }