summaryrefslogtreecommitdiff
path: root/auto_tests
diff options
context:
space:
mode:
Diffstat (limited to 'auto_tests')
-rw-r--r--auto_tests/tox_test.c196
-rw-r--r--auto_tests/toxav_basic_test.c38
-rw-r--r--auto_tests/toxav_many_test.c18
3 files changed, 226 insertions, 26 deletions
diff --git a/auto_tests/tox_test.c b/auto_tests/tox_test.c
index 0dab2e69..40022b0a 100644
--- a/auto_tests/tox_test.c
+++ b/auto_tests/tox_test.c
@@ -332,6 +332,7 @@ START_TEST(test_one)
332 tox_self_set_name(tox1, name, sizeof(name), 0); 332 tox_self_set_name(tox1, name, sizeof(name), 0);
333 ck_assert_msg(tox_self_get_name_size(tox1) == sizeof(name), "Can't set name of TOX_MAX_NAME_LENGTH"); 333 ck_assert_msg(tox_self_get_name_size(tox1) == sizeof(name), "Can't set name of TOX_MAX_NAME_LENGTH");
334 334
335 tox_self_get_address(tox1, address);
335 size_t save_size = tox_get_savedata_size(tox1); 336 size_t save_size = tox_get_savedata_size(tox1);
336 uint8_t data[save_size]; 337 uint8_t data[save_size];
337 tox_get_savedata(tox1, data); 338 tox_get_savedata(tox1, data);
@@ -344,6 +345,9 @@ START_TEST(test_one)
344 345
345 ck_assert_msg(tox_self_get_name_size(tox2) == sizeof name, "Wrong name size."); 346 ck_assert_msg(tox_self_get_name_size(tox2) == sizeof name, "Wrong name size.");
346 347
348 uint8_t address2[TOX_ADDRESS_SIZE];
349 tox_self_get_address(tox2, address2);
350 ck_assert_msg(memcmp(address2, address, TOX_ADDRESS_SIZE) == 0, "Wrong address.");
347 uint8_t new_name[TOX_MAX_NAME_LENGTH] = { 0 }; 351 uint8_t new_name[TOX_MAX_NAME_LENGTH] = { 0 };
348 tox_self_get_name(tox2, new_name); 352 tox_self_get_name(tox2, new_name);
349 ck_assert_msg(memcmp(name, new_name, TOX_MAX_NAME_LENGTH) == 0, "Wrong name"); 353 ck_assert_msg(memcmp(name, new_name, TOX_MAX_NAME_LENGTH) == 0, "Wrong name");
@@ -809,6 +813,196 @@ loop_top:
809} 813}
810END_TEST 814END_TEST
811 815
816#define TCP_RELAY_PORT 33448
817
818START_TEST(test_many_clients_tcp)
819{
820 long long unsigned int cur_time = time(NULL);
821 Tox *toxes[NUM_TOXES];
822 uint32_t i, j;
823 uint32_t to_comp = 974536;
824
825 for (i = 0; i < NUM_TOXES; ++i) {
826 struct Tox_Options opts;
827 tox_options_default(&opts);
828
829 if (i == 0) {
830 opts.tcp_port = TCP_RELAY_PORT;
831 } else {
832 opts.udp_enabled = 0;
833 }
834
835 toxes[i] = tox_new(&opts, 0, 0, 0);
836 ck_assert_msg(toxes[i] != 0, "Failed to create tox instances %u", i);
837 tox_callback_friend_request(toxes[i], accept_friend_request, &to_comp);
838 uint8_t dpk[TOX_PUBLIC_KEY_SIZE];
839 tox_self_get_dht_id(toxes[0], dpk);
840 ck_assert_msg(tox_add_tcp_relay(toxes[i], "::1", TCP_RELAY_PORT, dpk, 0), "add relay error");
841 ck_assert_msg(tox_bootstrap(toxes[i], "::1", 33445, dpk, 0), "Bootstrap error");
842 }
843
844 {
845 TOX_ERR_GET_PORT error;
846 ck_assert_msg(tox_self_get_udp_port(toxes[0], &error) == 33445, "First Tox instance did not bind to udp port 33445.\n");
847 ck_assert_msg(error == TOX_ERR_GET_PORT_OK, "wrong error");
848 ck_assert_msg(tox_self_get_tcp_port(toxes[0], &error) == TCP_RELAY_PORT,
849 "First Tox instance did not bind to tcp port %u.\n", TCP_RELAY_PORT);
850 ck_assert_msg(error == TOX_ERR_GET_PORT_OK, "wrong error");
851 }
852
853 struct {
854 uint16_t tox1;
855 uint16_t tox2;
856 } pairs[NUM_FRIENDS];
857
858 uint8_t address[TOX_ADDRESS_SIZE];
859
860 for (i = 0; i < NUM_FRIENDS; ++i) {
861loop_top:
862 pairs[i].tox1 = rand() % NUM_TOXES;
863 pairs[i].tox2 = (pairs[i].tox1 + rand() % (NUM_TOXES - 1) + 1) % NUM_TOXES;
864
865 for (j = 0; j < i; ++j) {
866 if (pairs[j].tox2 == pairs[i].tox1 && pairs[j].tox1 == pairs[i].tox2)
867 goto loop_top;
868 }
869
870 tox_self_get_address(toxes[pairs[i].tox1], address);
871
872 TOX_ERR_FRIEND_ADD test;
873 uint32_t num = tox_friend_add(toxes[pairs[i].tox2], address, (uint8_t *)"Gentoo", 7, &test);
874
875 if (test == TOX_ERR_FRIEND_ADD_ALREADY_SENT) {
876 goto loop_top;
877 }
878
879 ck_assert_msg(num != UINT32_MAX && test == TOX_ERR_FRIEND_ADD_OK, "Failed to add friend error code: %i", test);
880 }
881
882 while (1) {
883 uint16_t counter = 0;
884
885 for (i = 0; i < NUM_TOXES; ++i) {
886 for (j = 0; j < tox_self_get_friend_list_size(toxes[i]); ++j)
887 if (tox_friend_get_connection_status(toxes[i], j, 0) == TOX_CONNECTION_TCP)
888 ++counter;
889 }
890
891 if (counter == NUM_FRIENDS * 2) {
892 break;
893 }
894
895 for (i = 0; i < NUM_TOXES; ++i) {
896 tox_iterate(toxes[i]);
897 }
898
899 c_sleep(50);
900 }
901
902 for (i = 0; i < NUM_TOXES; ++i) {
903 tox_kill(toxes[i]);
904 }
905
906 printf("test_many_clients_tcp succeeded, took %llu seconds\n", time(NULL) - cur_time);
907}
908END_TEST
909
910#define NUM_TCP_RELAYS 3
911
912START_TEST(test_many_clients_tcp_b)
913{
914 long long unsigned int cur_time = time(NULL);
915 Tox *toxes[NUM_TOXES];
916 uint32_t i, j;
917 uint32_t to_comp = 974536;
918
919 for (i = 0; i < NUM_TOXES; ++i) {
920 struct Tox_Options opts;
921 tox_options_default(&opts);
922
923 if (i < NUM_TCP_RELAYS) {
924 opts.tcp_port = TCP_RELAY_PORT + i;
925 } else {
926 opts.udp_enabled = 0;
927 }
928
929 toxes[i] = tox_new(&opts, 0, 0, 0);
930 ck_assert_msg(toxes[i] != 0, "Failed to create tox instances %u", i);
931 tox_callback_friend_request(toxes[i], accept_friend_request, &to_comp);
932 uint8_t dpk[TOX_PUBLIC_KEY_SIZE];
933 tox_self_get_dht_id(toxes[(i % NUM_TCP_RELAYS)], dpk);
934 ck_assert_msg(tox_add_tcp_relay(toxes[i], "::1", TCP_RELAY_PORT + (i % NUM_TCP_RELAYS), dpk, 0), "add relay error");
935 tox_self_get_dht_id(toxes[0], dpk);
936 ck_assert_msg(tox_bootstrap(toxes[i], "::1", 33445, dpk, 0), "Bootstrap error");
937 }
938
939 {
940 TOX_ERR_GET_PORT error;
941 ck_assert_msg(tox_self_get_udp_port(toxes[0], &error) == 33445, "First Tox instance did not bind to udp port 33445.\n");
942 ck_assert_msg(error == TOX_ERR_GET_PORT_OK, "wrong error");
943 ck_assert_msg(tox_self_get_tcp_port(toxes[0], &error) == TCP_RELAY_PORT,
944 "First Tox instance did not bind to tcp port %u.\n", TCP_RELAY_PORT);
945 ck_assert_msg(error == TOX_ERR_GET_PORT_OK, "wrong error");
946 }
947
948 struct {
949 uint16_t tox1;
950 uint16_t tox2;
951 } pairs[NUM_FRIENDS];
952
953 uint8_t address[TOX_ADDRESS_SIZE];
954
955 for (i = 0; i < NUM_FRIENDS; ++i) {
956loop_top:
957 pairs[i].tox1 = rand() % NUM_TOXES;
958 pairs[i].tox2 = (pairs[i].tox1 + rand() % (NUM_TOXES - 1) + 1) % NUM_TOXES;
959
960 for (j = 0; j < i; ++j) {
961 if (pairs[j].tox2 == pairs[i].tox1 && pairs[j].tox1 == pairs[i].tox2)
962 goto loop_top;
963 }
964
965 tox_self_get_address(toxes[pairs[i].tox1], address);
966
967 TOX_ERR_FRIEND_ADD test;
968 uint32_t num = tox_friend_add(toxes[pairs[i].tox2], address, (uint8_t *)"Gentoo", 7, &test);
969
970 if (test == TOX_ERR_FRIEND_ADD_ALREADY_SENT) {
971 goto loop_top;
972 }
973
974 ck_assert_msg(num != UINT32_MAX && test == TOX_ERR_FRIEND_ADD_OK, "Failed to add friend error code: %i", test);
975 }
976
977 while (1) {
978 uint16_t counter = 0;
979
980 for (i = 0; i < NUM_TOXES; ++i) {
981 for (j = 0; j < tox_self_get_friend_list_size(toxes[i]); ++j)
982 if (tox_friend_get_connection_status(toxes[i], j, 0) == TOX_CONNECTION_TCP)
983 ++counter;
984 }
985
986 if (counter == NUM_FRIENDS * 2) {
987 break;
988 }
989
990 for (i = 0; i < NUM_TOXES; ++i) {
991 tox_iterate(toxes[i]);
992 }
993
994 c_sleep(50);
995 }
996
997 for (i = 0; i < NUM_TOXES; ++i) {
998 tox_kill(toxes[i]);
999 }
1000
1001 printf("test_many_clients_tcp_b succeeded, took %llu seconds\n", time(NULL) - cur_time);
1002}
1003END_TEST
1004
1005
812#define NUM_GROUP_TOX 32 1006#define NUM_GROUP_TOX 32
813 1007
814void g_accept_friend_request(Tox *m, const uint8_t *public_key, const uint8_t *data, size_t length, void *userdata) 1008void g_accept_friend_request(Tox *m, const uint8_t *public_key, const uint8_t *data, size_t length, void *userdata)
@@ -996,6 +1190,8 @@ Suite *tox_suite(void)
996 DEFTESTCASE(one); 1190 DEFTESTCASE(one);
997 DEFTESTCASE_SLOW(few_clients, 50); 1191 DEFTESTCASE_SLOW(few_clients, 50);
998 DEFTESTCASE_SLOW(many_clients, 150); 1192 DEFTESTCASE_SLOW(many_clients, 150);
1193 DEFTESTCASE_SLOW(many_clients_tcp, 20);
1194 DEFTESTCASE_SLOW(many_clients_tcp_b, 20);
999 DEFTESTCASE_SLOW(many_group, 100); 1195 DEFTESTCASE_SLOW(many_group, 100);
1000 return s; 1196 return s;
1001} 1197}
diff --git a/auto_tests/toxav_basic_test.c b/auto_tests/toxav_basic_test.c
index 9f04dc11..79c5b724 100644
--- a/auto_tests/toxav_basic_test.c
+++ b/auto_tests/toxav_basic_test.c
@@ -66,8 +66,8 @@ void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, vo
66} 66}
67void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number, 67void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number,
68 uint16_t width, uint16_t height, 68 uint16_t width, uint16_t height,
69 uint8_t const *y, uint8_t const *u, uint8_t const *v, 69 uint8_t const *y, uint8_t const *u, uint8_t const *v, uint8_t const *a,
70 int32_t ystride, int32_t ustride, int32_t vstride, 70 int32_t ystride, int32_t ustride, int32_t vstride, int32_t astride,
71 void *user_data) 71 void *user_data)
72{ 72{
73 (void) av; 73 (void) av;
@@ -185,13 +185,13 @@ START_TEST(test_AV_flows)
185 185
186 toxav_callback_call(AliceAV, t_toxav_call_cb, &AliceCC); 186 toxav_callback_call(AliceAV, t_toxav_call_cb, &AliceCC);
187 toxav_callback_call_state(AliceAV, t_toxav_call_state_cb, &AliceCC); 187 toxav_callback_call_state(AliceAV, t_toxav_call_state_cb, &AliceCC);
188 toxav_callback_receive_video_frame(AliceAV, t_toxav_receive_video_frame_cb, &AliceCC); 188 toxav_callback_video_receive_frame(AliceAV, t_toxav_receive_video_frame_cb, &AliceCC);
189 toxav_callback_receive_audio_frame(AliceAV, t_toxav_receive_audio_frame_cb, &AliceCC); 189 toxav_callback_audio_receive_frame(AliceAV, t_toxav_receive_audio_frame_cb, &AliceCC);
190 190
191 toxav_callback_call(BobAV, t_toxav_call_cb, &BobCC); 191 toxav_callback_call(BobAV, t_toxav_call_cb, &BobCC);
192 toxav_callback_call_state(BobAV, t_toxav_call_state_cb, &BobCC); 192 toxav_callback_call_state(BobAV, t_toxav_call_state_cb, &BobCC);
193 toxav_callback_receive_video_frame(BobAV, t_toxav_receive_video_frame_cb, &BobCC); 193 toxav_callback_video_receive_frame(BobAV, t_toxav_receive_video_frame_cb, &BobCC);
194 toxav_callback_receive_audio_frame(BobAV, t_toxav_receive_audio_frame_cb, &BobCC); 194 toxav_callback_audio_receive_frame(BobAV, t_toxav_receive_audio_frame_cb, &BobCC);
195 195
196 printf("Created 2 instances of ToxAV\n"); 196 printf("Created 2 instances of ToxAV\n");
197 printf("All set after %llu seconds!\n", time(NULL) - cur_time); 197 printf("All set after %llu seconds!\n", time(NULL) - cur_time);
@@ -214,7 +214,7 @@ START_TEST(test_AV_flows)
214 long long unsigned int start_time = time(NULL); \ 214 long long unsigned int start_time = time(NULL); \
215 \ 215 \
216 \ 216 \
217 while (BobCC.state != TOXAV_CALL_STATE_END) { \ 217 while (BobCC.state != TOXAV_CALL_STATE_FINISHED) { \
218 \ 218 \
219 if (BobCC.incoming) { \ 219 if (BobCC.incoming) { \
220 TOXAV_ERR_ANSWER rc; \ 220 TOXAV_ERR_ANSWER rc; \
@@ -228,7 +228,7 @@ START_TEST(test_AV_flows)
228 } else { \ 228 } else { \
229 /* TODO rtp */ \ 229 /* TODO rtp */ \
230 \ 230 \
231 if (time(NULL) - start_time == 5) { \ 231 if (time(NULL) - start_time >= 1) { \
232 \ 232 \
233 TOXAV_ERR_CALL_CONTROL rc; \ 233 TOXAV_ERR_CALL_CONTROL rc; \
234 toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_CANCEL, &rc); \ 234 toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_CANCEL, &rc); \
@@ -358,8 +358,10 @@ START_TEST(test_AV_flows)
358 /* At first try all stuff while in invalid state */ 358 /* At first try all stuff while in invalid state */
359 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE, NULL)); 359 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE, NULL));
360 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME, NULL)); 360 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME, NULL));
361 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_MUTE_AUDIO, NULL)); 361 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_MUTE_AUDIO, NULL));
362 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_HIDE_VIDEO, NULL)); 362 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_UNMUTE_AUDIO, NULL));
363 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_HIDE_VIDEO, NULL));
364 ck_assert(!toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_SHOW_VIDEO, NULL));
363 365
364 { 366 {
365 TOXAV_ERR_ANSWER rc; 367 TOXAV_ERR_ANSWER rc;
@@ -377,32 +379,32 @@ START_TEST(test_AV_flows)
377 printf("Pause and Resume\n"); 379 printf("Pause and Resume\n");
378 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE, NULL)); 380 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_PAUSE, NULL));
379 iterate_tox(bootstrap, Alice, Bob); 381 iterate_tox(bootstrap, Alice, Bob);
380 ck_assert(BobCC.state == TOXAV_CALL_STATE_PAUSED); 382 ck_assert(BobCC.state == 0);
381 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME, NULL)); 383 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_RESUME, NULL));
382 iterate_tox(bootstrap, Alice, Bob); 384 iterate_tox(bootstrap, Alice, Bob);
383 ck_assert(BobCC.state & (TOXAV_CALL_STATE_SENDING_A | TOXAV_CALL_STATE_SENDING_V)); 385 ck_assert(BobCC.state & (TOXAV_CALL_STATE_SENDING_A | TOXAV_CALL_STATE_SENDING_V));
384 386
385 /* Mute/Unmute single */ 387 /* Mute/Unmute single */
386 printf("Mute/Unmute single\n"); 388 printf("Mute/Unmute single\n");
387 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_MUTE_AUDIO, NULL)); 389 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_MUTE_AUDIO, NULL));
388 iterate_tox(bootstrap, Alice, Bob); 390 iterate_tox(bootstrap, Alice, Bob);
389 ck_assert(BobCC.state ^ TOXAV_CALL_STATE_RECEIVING_A); 391 ck_assert(BobCC.state ^ TOXAV_CALL_STATE_RECEIVING_A);
390 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_MUTE_AUDIO, NULL)); 392 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_UNMUTE_AUDIO, NULL));
391 iterate_tox(bootstrap, Alice, Bob); 393 iterate_tox(bootstrap, Alice, Bob);
392 ck_assert(BobCC.state & TOXAV_CALL_STATE_RECEIVING_A); 394 ck_assert(BobCC.state & TOXAV_CALL_STATE_RECEIVING_A);
393 395
394 /* Mute/Unmute both */ 396 /* Mute/Unmute both */
395 printf("Mute/Unmute both\n"); 397 printf("Mute/Unmute both\n");
396 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_MUTE_AUDIO, NULL)); 398 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_MUTE_AUDIO, NULL));
397 iterate_tox(bootstrap, Alice, Bob); 399 iterate_tox(bootstrap, Alice, Bob);
398 ck_assert(BobCC.state ^ TOXAV_CALL_STATE_RECEIVING_A); 400 ck_assert(BobCC.state ^ TOXAV_CALL_STATE_RECEIVING_A);
399 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_HIDE_VIDEO, NULL)); 401 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_HIDE_VIDEO, NULL));
400 iterate_tox(bootstrap, Alice, Bob); 402 iterate_tox(bootstrap, Alice, Bob);
401 ck_assert(BobCC.state ^ TOXAV_CALL_STATE_RECEIVING_V); 403 ck_assert(BobCC.state ^ TOXAV_CALL_STATE_RECEIVING_V);
402 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_MUTE_AUDIO, NULL)); 404 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_UNMUTE_AUDIO, NULL));
403 iterate_tox(bootstrap, Alice, Bob); 405 iterate_tox(bootstrap, Alice, Bob);
404 ck_assert(BobCC.state & TOXAV_CALL_STATE_RECEIVING_A); 406 ck_assert(BobCC.state & TOXAV_CALL_STATE_RECEIVING_A);
405 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_TOGGLE_HIDE_VIDEO, NULL)); 407 ck_assert(toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_SHOW_VIDEO, NULL));
406 iterate_tox(bootstrap, Alice, Bob); 408 iterate_tox(bootstrap, Alice, Bob);
407 ck_assert(BobCC.state & TOXAV_CALL_STATE_RECEIVING_V); 409 ck_assert(BobCC.state & TOXAV_CALL_STATE_RECEIVING_V);
408 410
@@ -417,7 +419,7 @@ START_TEST(test_AV_flows)
417 } 419 }
418 420
419 iterate_tox(bootstrap, Alice, Bob); 421 iterate_tox(bootstrap, Alice, Bob);
420 ck_assert(BobCC.state == TOXAV_CALL_STATE_END); 422 ck_assert(BobCC.state == TOXAV_CALL_STATE_FINISHED);
421 423
422 printf("Success!\n"); 424 printf("Success!\n");
423 } 425 }
diff --git a/auto_tests/toxav_many_test.c b/auto_tests/toxav_many_test.c
index f913c9d3..a15acce3 100644
--- a/auto_tests/toxav_many_test.c
+++ b/auto_tests/toxav_many_test.c
@@ -63,8 +63,8 @@ void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, vo
63} 63}
64void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number, 64void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number,
65 uint16_t width, uint16_t height, 65 uint16_t width, uint16_t height,
66 uint8_t const *y, uint8_t const *u, uint8_t const *v, 66 uint8_t const *y, uint8_t const *u, uint8_t const *v, uint8_t const *a,
67 int32_t ystride, int32_t ustride, int32_t vstride, 67 int32_t ystride, int32_t ustride, int32_t vstride, int32_t stride,
68 void *user_data) 68 void *user_data)
69{ 69{
70 (void) av; 70 (void) av;
@@ -115,8 +115,8 @@ ToxAV* setup_av_instance(Tox* tox, CallControl *CC)
115 115
116 toxav_callback_call(av, t_toxav_call_cb, CC); 116 toxav_callback_call(av, t_toxav_call_cb, CC);
117 toxav_callback_call_state(av, t_toxav_call_state_cb, CC); 117 toxav_callback_call_state(av, t_toxav_call_state_cb, CC);
118 toxav_callback_receive_video_frame(av, t_toxav_receive_video_frame_cb, CC); 118 toxav_callback_video_receive_frame(av, t_toxav_receive_video_frame_cb, CC);
119 toxav_callback_receive_audio_frame(av, t_toxav_receive_audio_frame_cb, CC); 119 toxav_callback_audio_receive_frame(av, t_toxav_receive_audio_frame_cb, CC);
120 120
121 return av; 121 return av;
122} 122}
@@ -161,22 +161,24 @@ void* call_thread(void* pd)
161 uint8_t video_y[800*600]; 161 uint8_t video_y[800*600];
162 uint8_t video_u[800*600 / 2]; 162 uint8_t video_u[800*600 / 2];
163 uint8_t video_v[800*600 / 2]; 163 uint8_t video_v[800*600 / 2];
164 uint8_t video_a[800*600];
164 165
165 memset(PCM, 0, sizeof(PCM)); 166 memset(PCM, 0, sizeof(PCM));
166 memset(video_y, 0, sizeof(video_y)); 167 memset(video_y, 0, sizeof(video_y));
167 memset(video_u, 0, sizeof(video_u)); 168 memset(video_u, 0, sizeof(video_u));
168 memset(video_v, 0, sizeof(video_v)); 169 memset(video_v, 0, sizeof(video_v));
170 memset(video_a, 0, sizeof(video_a));
169 171
170 time_t start_time = time(NULL); 172 time_t start_time = time(NULL);
171 while(time(NULL) - start_time < 4) { 173 while(time(NULL) - start_time < 4) {
172 toxav_iterate(AliceAV); 174 toxav_iterate(AliceAV);
173 toxav_iterate(BobAV); 175 toxav_iterate(BobAV);
174 176
175 toxav_send_audio_frame(AliceAV, friend_number, PCM, 960, 1, 48000, NULL); 177 toxav_audio_send_frame(AliceAV, friend_number, PCM, 960, 1, 48000, NULL);
176 toxav_send_audio_frame(BobAV, 0, PCM, 960, 1, 48000, NULL); 178 toxav_audio_send_frame(BobAV, 0, PCM, 960, 1, 48000, NULL);
177 179
178 toxav_send_video_frame(AliceAV, friend_number, 800, 600, video_y, video_u, video_v, NULL); 180 toxav_video_send_frame(AliceAV, friend_number, 800, 600, video_y, video_u, video_v, video_a, NULL);
179 toxav_send_video_frame(BobAV, 0, 800, 600, video_y, video_u, video_v, NULL); 181 toxav_video_send_frame(BobAV, 0, 800, 600, video_y, video_u, video_v, video_a, NULL);
180 182
181 c_sleep(10); 183 c_sleep(10);
182 } 184 }