summaryrefslogtreecommitdiff
path: root/toxav/toxav.c
diff options
context:
space:
mode:
Diffstat (limited to 'toxav/toxav.c')
-rw-r--r--toxav/toxav.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/toxav/toxav.c b/toxav/toxav.c
index 3a95e445..b215b3e9 100644
--- a/toxav/toxav.c
+++ b/toxav/toxav.c
@@ -104,8 +104,11 @@ struct _ToxAv {
104 MSISession *msi_session; /** Main msi session */ 104 MSISession *msi_session; /** Main msi session */
105 CallSpecific *calls; /** Per-call params */ 105 CallSpecific *calls; /** Per-call params */
106 106
107 void (*audio_callback)(ToxAv *, int32_t, int16_t *, int); 107 void (*audio_callback)(ToxAv *, int32_t, int16_t *, int, void*);
108 void (*video_callback)(ToxAv *, int32_t, vpx_image_t *); 108 void (*video_callback)(ToxAv *, int32_t, vpx_image_t *, void*);
109
110 void *audio_callback_userdata;
111 void *video_callback_userdata;
109 112
110 uint32_t max_calls; 113 uint32_t max_calls;
111 114
@@ -269,9 +272,10 @@ void toxav_register_callstate_callback ( ToxAv *av, ToxAVCallback callback, ToxA
269 * @param callback The callback 272 * @param callback The callback
270 * @return void 273 * @return void
271 */ 274 */
272void toxav_register_audio_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, int16_t *, int)) 275void toxav_register_audio_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, int16_t *, int, void*), void* user_data)
273{ 276{
274 av->audio_callback = callback; 277 av->audio_callback = callback;
278 av->audio_callback_userdata = user_data;
275} 279}
276 280
277/** 281/**
@@ -280,9 +284,10 @@ void toxav_register_audio_recv_callback (ToxAv *av, void (*callback)(ToxAv *, in
280 * @param callback The callback 284 * @param callback The callback
281 * @return void 285 * @return void
282 */ 286 */
283void toxav_register_video_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, vpx_image_t *)) 287void toxav_register_video_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, vpx_image_t *, void*), void* user_data)
284{ 288{
285 av->video_callback = callback; 289 av->video_callback = callback;
290 av->video_callback_userdata = user_data;
286} 291}
287 292
288/** 293/**
@@ -933,7 +938,7 @@ static void decode_video(ToxAv *av, DECODE_PACKET *p)
933 img = vpx_codec_get_frame(&call->cs->v_decoder, &iter); 938 img = vpx_codec_get_frame(&call->cs->v_decoder, &iter);
934 939
935 if (img && av->video_callback) { 940 if (img && av->video_callback) {
936 av->video_callback(av, p->call_index, img); 941 av->video_callback(av, p->call_index, img, av->video_callback_userdata);
937 } else { 942 } else {
938 LOGGER_WARNING("Video packet dropped due to missing callback or no image!"); 943 LOGGER_WARNING("Video packet dropped due to missing callback or no image!");
939 } 944 }
@@ -961,7 +966,7 @@ static void decode_audio(ToxAv *av, DECODE_PACKET *p)
961 } 966 }
962 967
963 if ( av->audio_callback ) 968 if ( av->audio_callback )
964 av->audio_callback(av, call_index, dest, dec_size); 969 av->audio_callback(av, call_index, dest, dec_size, av->audio_callback_userdata);
965 else 970 else
966 LOGGER_WARNING("Audio packet dropped due to missing callback!"); 971 LOGGER_WARNING("Audio packet dropped due to missing callback!");
967} 972}