diff options
Diffstat (limited to 'toxav/toxav.c')
-rw-r--r-- | toxav/toxav.c | 17 |
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 | */ |
272 | void toxav_register_audio_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, int16_t *, int)) | 275 | void 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 | */ |
283 | void toxav_register_video_recv_callback (ToxAv *av, void (*callback)(ToxAv *, int32_t, vpx_image_t *)) | 287 | void 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 | } |