diff options
Diffstat (limited to 'toxav/toxav.h')
-rw-r--r--[-rwxr-xr-x] | toxav/toxav.h | 114 |
1 files changed, 74 insertions, 40 deletions
diff --git a/toxav/toxav.h b/toxav/toxav.h index 349e9498..aa604285 100755..100644 --- a/toxav/toxav.h +++ b/toxav/toxav.h | |||
@@ -29,7 +29,7 @@ | |||
29 | /* vpx_image_t */ | 29 | /* vpx_image_t */ |
30 | #include <vpx/vpx_image.h> | 30 | #include <vpx/vpx_image.h> |
31 | 31 | ||
32 | typedef void ( *ToxAVCallback ) ( void *arg ); | 32 | typedef void ( *ToxAVCallback ) ( int32_t, void *arg ); |
33 | typedef struct _ToxAv ToxAv; | 33 | typedef struct _ToxAv ToxAv; |
34 | 34 | ||
35 | #ifndef __TOX_DEFINED__ | 35 | #ifndef __TOX_DEFINED__ |
@@ -67,7 +67,7 @@ typedef enum { | |||
67 | * @brief Call type identifier. | 67 | * @brief Call type identifier. |
68 | */ | 68 | */ |
69 | typedef enum { | 69 | typedef enum { |
70 | TypeAudio = 70, | 70 | TypeAudio = 192, |
71 | TypeVideo | 71 | TypeVideo |
72 | } ToxAvCallType; | 72 | } ToxAvCallType; |
73 | 73 | ||
@@ -87,6 +87,7 @@ typedef enum { | |||
87 | ErrorStartingVideoRtp = -8 , /* Error in toxav_prepare_transmission() */ | 87 | ErrorStartingVideoRtp = -8 , /* Error in toxav_prepare_transmission() */ |
88 | ErrorTerminatingAudioRtp = -9, /* Returned in toxav_kill_transmission() */ | 88 | ErrorTerminatingAudioRtp = -9, /* Returned in toxav_kill_transmission() */ |
89 | ErrorTerminatingVideoRtp = -10, /* Returned in toxav_kill_transmission() */ | 89 | ErrorTerminatingVideoRtp = -10, /* Returned in toxav_kill_transmission() */ |
90 | ErrorPacketTooLarge = -11, /* Buffer exceeds size while encoding */ | ||
90 | 91 | ||
91 | } ToxAvError; | 92 | } ToxAvError; |
92 | 93 | ||
@@ -110,26 +111,16 @@ typedef struct _ToxAvCodecSettings { | |||
110 | uint32_t video_bitrate; /* In bits/s */ | 111 | uint32_t video_bitrate; /* In bits/s */ |
111 | uint16_t video_width; /* In px */ | 112 | uint16_t video_width; /* In px */ |
112 | uint16_t video_height; /* In px */ | 113 | uint16_t video_height; /* In px */ |
113 | 114 | ||
114 | uint32_t audio_bitrate; /* In bits/s */ | 115 | uint32_t audio_bitrate; /* In bits/s */ |
115 | uint16_t audio_frame_duration; /* In ms */ | 116 | uint16_t audio_frame_duration; /* In ms */ |
116 | uint32_t audio_sample_rate; /* In Hz */ | 117 | uint32_t audio_sample_rate; /* In Hz */ |
117 | uint32_t audio_channels; | 118 | uint32_t audio_channels; |
118 | 119 | ||
119 | uint32_t jbuf_capacity; /* Size of jitter buffer */ | 120 | uint32_t jbuf_capacity; /* Size of jitter buffer */ |
120 | } ToxAvCodecSettings; | 121 | } ToxAvCodecSettings; |
121 | 122 | ||
122 | static const ToxAvCodecSettings av_DefaultSettings = { | 123 | extern const ToxAvCodecSettings av_DefaultSettings; |
123 | 1000000, | ||
124 | 800, | ||
125 | 600, | ||
126 | |||
127 | 64000, | ||
128 | 20, | ||
129 | 48000, | ||
130 | 1, | ||
131 | 20 | ||
132 | }; | ||
133 | 124 | ||
134 | /** | 125 | /** |
135 | * @brief Start new A/V session. There can only be one session at the time. If you register more | 126 | * @brief Start new A/V session. There can only be one session at the time. If you register more |
@@ -142,7 +133,7 @@ static const ToxAvCodecSettings av_DefaultSettings = { | |||
142 | * @return ToxAv* | 133 | * @return ToxAv* |
143 | * @retval NULL On error. | 134 | * @retval NULL On error. |
144 | */ | 135 | */ |
145 | ToxAv *toxav_new(Tox *messenger, ToxAvCodecSettings* codec_settings); | 136 | ToxAv *toxav_new(Tox *messenger, int32_t max_calls); |
146 | 137 | ||
147 | /** | 138 | /** |
148 | * @brief Remove A/V session. | 139 | * @brief Remove A/V session. |
@@ -172,7 +163,7 @@ void toxav_register_callstate_callback (ToxAVCallback callback, ToxAvCallbackID | |||
172 | * @retval 0 Success. | 163 | * @retval 0 Success. |
173 | * @retval ToxAvError On error. | 164 | * @retval ToxAvError On error. |
174 | */ | 165 | */ |
175 | int toxav_call(ToxAv *av, int user, ToxAvCallType call_type, int ringing_seconds); | 166 | int toxav_call(ToxAv *av, int32_t *call_index, int user, ToxAvCallType call_type, int ringing_seconds); |
176 | 167 | ||
177 | /** | 168 | /** |
178 | * @brief Hangup active call. | 169 | * @brief Hangup active call. |
@@ -182,7 +173,7 @@ int toxav_call(ToxAv *av, int user, ToxAvCallType call_type, int ringing_seconds | |||
182 | * @retval 0 Success. | 173 | * @retval 0 Success. |
183 | * @retval ToxAvError On error. | 174 | * @retval ToxAvError On error. |
184 | */ | 175 | */ |
185 | int toxav_hangup(ToxAv *av); | 176 | int toxav_hangup(ToxAv *av, int32_t call_index); |
186 | 177 | ||
187 | /** | 178 | /** |
188 | * @brief Answer incomming call. | 179 | * @brief Answer incomming call. |
@@ -193,7 +184,7 @@ int toxav_hangup(ToxAv *av); | |||
193 | * @retval 0 Success. | 184 | * @retval 0 Success. |
194 | * @retval ToxAvError On error. | 185 | * @retval ToxAvError On error. |
195 | */ | 186 | */ |
196 | int toxav_answer(ToxAv *av, ToxAvCallType call_type ); | 187 | int toxav_answer(ToxAv *av, int32_t call_index, ToxAvCallType call_type ); |
197 | 188 | ||
198 | /** | 189 | /** |
199 | * @brief Reject incomming call. | 190 | * @brief Reject incomming call. |
@@ -204,7 +195,7 @@ int toxav_answer(ToxAv *av, ToxAvCallType call_type ); | |||
204 | * @retval 0 Success. | 195 | * @retval 0 Success. |
205 | * @retval ToxAvError On error. | 196 | * @retval ToxAvError On error. |
206 | */ | 197 | */ |
207 | int toxav_reject(ToxAv *av, const char *reason); | 198 | int toxav_reject(ToxAv *av, int32_t call_index, const char *reason); |
208 | 199 | ||
209 | /** | 200 | /** |
210 | * @brief Cancel outgoing request. | 201 | * @brief Cancel outgoing request. |
@@ -216,7 +207,7 @@ int toxav_reject(ToxAv *av, const char *reason); | |||
216 | * @retval 0 Success. | 207 | * @retval 0 Success. |
217 | * @retval ToxAvError On error. | 208 | * @retval ToxAvError On error. |
218 | */ | 209 | */ |
219 | int toxav_cancel(ToxAv* av, int peer_id, const char* reason); | 210 | int toxav_cancel(ToxAv *av, int32_t call_index, int peer_id, const char *reason); |
220 | 211 | ||
221 | /** | 212 | /** |
222 | * @brief Terminate transmission. Note that transmission will be terminated without informing remote peer. | 213 | * @brief Terminate transmission. Note that transmission will be terminated without informing remote peer. |
@@ -226,7 +217,7 @@ int toxav_cancel(ToxAv* av, int peer_id, const char* reason); | |||
226 | * @retval 0 Success. | 217 | * @retval 0 Success. |
227 | * @retval ToxAvError On error. | 218 | * @retval ToxAvError On error. |
228 | */ | 219 | */ |
229 | int toxav_stop_call(ToxAv *av); | 220 | int toxav_stop_call(ToxAv *av, int32_t call_index); |
230 | 221 | ||
231 | /** | 222 | /** |
232 | * @brief Must be call before any RTP transmission occurs. | 223 | * @brief Must be call before any RTP transmission occurs. |
@@ -237,7 +228,7 @@ int toxav_stop_call(ToxAv *av); | |||
237 | * @retval 0 Success. | 228 | * @retval 0 Success. |
238 | * @retval ToxAvError On error. | 229 | * @retval ToxAvError On error. |
239 | */ | 230 | */ |
240 | int toxav_prepare_transmission(ToxAv *av, int support_video); | 231 | int toxav_prepare_transmission(ToxAv *av, int32_t call_index, ToxAvCodecSettings *codec_settings, int support_video); |
241 | 232 | ||
242 | /** | 233 | /** |
243 | * @brief Call this at the end of the transmission. | 234 | * @brief Call this at the end of the transmission. |
@@ -247,7 +238,7 @@ int toxav_prepare_transmission(ToxAv *av, int support_video); | |||
247 | * @retval 0 Success. | 238 | * @retval 0 Success. |
248 | * @retval ToxAvError On error. | 239 | * @retval ToxAvError On error. |
249 | */ | 240 | */ |
250 | int toxav_kill_transmission(ToxAv *av); | 241 | int toxav_kill_transmission(ToxAv *av, int32_t call_index); |
251 | 242 | ||
252 | /** | 243 | /** |
253 | * @brief Receive decoded video packet. | 244 | * @brief Receive decoded video packet. |
@@ -258,7 +249,7 @@ int toxav_kill_transmission(ToxAv *av); | |||
258 | * @retval 0 Success. | 249 | * @retval 0 Success. |
259 | * @retval ToxAvError On Error. | 250 | * @retval ToxAvError On Error. |
260 | */ | 251 | */ |
261 | int toxav_recv_video ( ToxAv *av, vpx_image_t **output); | 252 | int toxav_recv_video ( ToxAv *av, int32_t call_index, vpx_image_t **output); |
262 | 253 | ||
263 | /** | 254 | /** |
264 | * @brief Receive decoded audio frame. | 255 | * @brief Receive decoded audio frame. |
@@ -272,21 +263,22 @@ int toxav_recv_video ( ToxAv *av, vpx_image_t **output); | |||
272 | * @retval >=0 Size of received data in frames/samples. | 263 | * @retval >=0 Size of received data in frames/samples. |
273 | * @retval ToxAvError On error. | 264 | * @retval ToxAvError On error. |
274 | */ | 265 | */ |
275 | int toxav_recv_audio( ToxAv *av, int frame_size, int16_t *dest ); | 266 | int toxav_recv_audio( ToxAv *av, int32_t call_index, int frame_size, int16_t *dest ); |
276 | 267 | ||
277 | /** | 268 | /** |
278 | * @brief Encode and send video packet. | 269 | * @brief Encode and send video packet. |
279 | * | 270 | * |
280 | * @param av Handler. | 271 | * @param av Handler. |
281 | * @param input The packet. | 272 | * @param frame The encoded frame. |
273 | * @param frame_size The size of the encoded frame. | ||
282 | * @return int | 274 | * @return int |
283 | * @retval 0 Success. | 275 | * @retval 0 Success. |
284 | * @retval ToxAvError On error. | 276 | * @retval ToxAvError On error. |
285 | */ | 277 | */ |
286 | int toxav_send_video ( ToxAv *av, vpx_image_t *input); | 278 | int toxav_send_video ( ToxAv *av, int32_t call_index, const uint8_t *frame, int frame_size); |
287 | 279 | ||
288 | /** | 280 | /** |
289 | * @brief Encode and send audio frame. | 281 | * @brief Send audio frame. |
290 | * | 282 | * |
291 | * @param av Handler. | 283 | * @param av Handler. |
292 | * @param frame The frame (raw 16 bit signed pcm with AUDIO_CHANNELS channels audio.) | 284 | * @param frame The frame (raw 16 bit signed pcm with AUDIO_CHANNELS channels audio.) |
@@ -296,7 +288,35 @@ int toxav_send_video ( ToxAv *av, vpx_image_t *input); | |||
296 | * @retval 0 Success. | 288 | * @retval 0 Success. |
297 | * @retval ToxAvError On error. | 289 | * @retval ToxAvError On error. |
298 | */ | 290 | */ |
299 | int toxav_send_audio ( ToxAv *av, const int16_t *frame, int frame_size); | 291 | int toxav_send_audio ( ToxAv *av, int32_t call_index, const uint8_t *frame, int frame_size); |
292 | |||
293 | /** | ||
294 | * @brief Encode video frame | ||
295 | * | ||
296 | * @param av Handler | ||
297 | * @param dest Where to | ||
298 | * @param dest_max Max size | ||
299 | * @param input What to encode | ||
300 | * @return int | ||
301 | * @retval ToxAvError On error. | ||
302 | * @retval >0 On success | ||
303 | */ | ||
304 | int toxav_prepare_video_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, vpx_image_t *input ); | ||
305 | |||
306 | /** | ||
307 | * @brief Encode audio frame | ||
308 | * | ||
309 | * @param av Handler | ||
310 | * @param dest dest | ||
311 | * @param dest_max Max dest size | ||
312 | * @param frame The frame | ||
313 | * @param frame_size The frame size | ||
314 | * @return int | ||
315 | * @retval ToxAvError On error. | ||
316 | * @retval >0 On success | ||
317 | */ | ||
318 | int toxav_prepare_audio_frame ( ToxAv *av, int32_t call_index, uint8_t *dest, int dest_max, const int16_t *frame, | ||
319 | int frame_size); | ||
300 | 320 | ||
301 | /** | 321 | /** |
302 | * @brief Get peer transmission type. It can either be audio or video. | 322 | * @brief Get peer transmission type. It can either be audio or video. |
@@ -307,34 +327,48 @@ int toxav_send_audio ( ToxAv *av, const int16_t *frame, int frame_size); | |||
307 | * @retval ToxAvCallType On success. | 327 | * @retval ToxAvCallType On success. |
308 | * @retval ToxAvError On error. | 328 | * @retval ToxAvError On error. |
309 | */ | 329 | */ |
310 | int toxav_get_peer_transmission_type ( ToxAv *av, int peer ); | 330 | int toxav_get_peer_transmission_type ( ToxAv *av, int32_t call_index, int peer ); |
311 | 331 | ||
312 | /** | 332 | /** |
313 | * @brief Get id of peer participating in conversation | 333 | * @brief Get id of peer participating in conversation |
314 | * | 334 | * |
315 | * @param av Handler | 335 | * @param av Handler |
316 | * @param peer peer index | 336 | * @param peer peer index |
317 | * @return int | 337 | * @return int |
318 | * @retval ToxAvError No peer id | 338 | * @retval ToxAvError No peer id |
319 | */ | 339 | */ |
320 | int toxav_get_peer_id ( ToxAv* av, int peer ); | 340 | int toxav_get_peer_id ( ToxAv *av, int32_t call_index, int peer ); |
321 | 341 | ||
322 | /** | 342 | /** |
323 | * @brief Is certain capability supported | 343 | * @brief Is certain capability supported |
324 | * | 344 | * |
325 | * @param av Handler | 345 | * @param av Handler |
326 | * @return int | 346 | * @return int |
327 | * @retval 1 Yes. | 347 | * @retval 1 Yes. |
328 | * @retval 0 No. | 348 | * @retval 0 No. |
329 | */ | 349 | */ |
330 | int toxav_capability_supported ( ToxAv* av, ToxAvCapabilities capability ); | 350 | int toxav_capability_supported ( ToxAv *av, int32_t call_index, ToxAvCapabilities capability ); |
331 | 351 | ||
332 | /** | 352 | /** |
333 | * @brief Get messenger handle | 353 | * @brief Set queue limit |
334 | * | 354 | * |
335 | * @param av Handler. | 355 | * @param av Handler |
336 | * @return Tox* | 356 | * @param call_index index |
357 | * @param limit the limit | ||
358 | * @return void | ||
337 | */ | 359 | */ |
338 | Tox* toxav_get_tox ( ToxAv* av ); | 360 | int toxav_set_audio_queue_limit ( ToxAv *av, int32_t call_index, uint64_t limit ); |
361 | |||
362 | /** | ||
363 | * @brief Set queue limit | ||
364 | * | ||
365 | * @param av Handler | ||
366 | * @param call_index index | ||
367 | * @param limit the limit | ||
368 | * @return void | ||
369 | */ | ||
370 | int toxav_set_video_queue_limit ( ToxAv *av, int32_t call_index, uint64_t limit ); | ||
371 | |||
339 | 372 | ||
373 | Tox *toxav_get_tox(ToxAv *av); | ||
340 | #endif /* __TOXAV */ \ No newline at end of file | 374 | #endif /* __TOXAV */ \ No newline at end of file |