summaryrefslogtreecommitdiff
path: root/toxav/toxav.h
diff options
context:
space:
mode:
Diffstat (limited to 'toxav/toxav.h')
-rw-r--r--[-rwxr-xr-x]toxav/toxav.h114
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
32typedef void ( *ToxAVCallback ) ( void *arg ); 32typedef void ( *ToxAVCallback ) ( int32_t, void *arg );
33typedef struct _ToxAv ToxAv; 33typedef 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 */
69typedef enum { 69typedef 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
122static const ToxAvCodecSettings av_DefaultSettings = { 123extern 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 */
145ToxAv *toxav_new(Tox *messenger, ToxAvCodecSettings* codec_settings); 136ToxAv *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 */
175int toxav_call(ToxAv *av, int user, ToxAvCallType call_type, int ringing_seconds); 166int 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 */
185int toxav_hangup(ToxAv *av); 176int 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 */
196int toxav_answer(ToxAv *av, ToxAvCallType call_type ); 187int 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 */
207int toxav_reject(ToxAv *av, const char *reason); 198int 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 */
219int toxav_cancel(ToxAv* av, int peer_id, const char* reason); 210int 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 */
229int toxav_stop_call(ToxAv *av); 220int 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 */
240int toxav_prepare_transmission(ToxAv *av, int support_video); 231int 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 */
250int toxav_kill_transmission(ToxAv *av); 241int 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 */
261int toxav_recv_video ( ToxAv *av, vpx_image_t **output); 252int 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 */
275int toxav_recv_audio( ToxAv *av, int frame_size, int16_t *dest ); 266int 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 */
286int toxav_send_video ( ToxAv *av, vpx_image_t *input); 278int 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 */
299int toxav_send_audio ( ToxAv *av, const int16_t *frame, int frame_size); 291int 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 */
304int 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 */
318int 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 */
310int toxav_get_peer_transmission_type ( ToxAv *av, int peer ); 330int 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 */
320int toxav_get_peer_id ( ToxAv* av, int peer ); 340int 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 */
330int toxav_capability_supported ( ToxAv* av, ToxAvCapabilities capability ); 350int 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 */
338Tox* toxav_get_tox ( ToxAv* av ); 360int 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 */
370int toxav_set_video_queue_limit ( ToxAv *av, int32_t call_index, uint64_t limit );
371
339 372
373Tox *toxav_get_tox(ToxAv *av);
340#endif /* __TOXAV */ \ No newline at end of file 374#endif /* __TOXAV */ \ No newline at end of file