summaryrefslogtreecommitdiff
path: root/auto_tests/toxav_basic_test.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2014-11-18 00:46:46 +0100
committermannol <eniz_vukovic@hotmail.com>2014-11-18 00:46:46 +0100
commit386c9748d48d3bb4513e8e5c32e2b30a4d6a00d4 (patch)
tree55d0fb2e9fb6e1149317b9de355c28dd86c57014 /auto_tests/toxav_basic_test.c
parent4e6f993e7d22865ee2ac90bd7dd3ff25b078c55c (diff)
av refactor
Diffstat (limited to 'auto_tests/toxav_basic_test.c')
-rw-r--r--auto_tests/toxav_basic_test.c209
1 files changed, 134 insertions, 75 deletions
diff --git a/auto_tests/toxav_basic_test.c b/auto_tests/toxav_basic_test.c
index c6481366..076b438c 100644
--- a/auto_tests/toxav_basic_test.c
+++ b/auto_tests/toxav_basic_test.c
@@ -11,6 +11,8 @@
11#include <time.h> 11#include <time.h>
12#include <assert.h> 12#include <assert.h>
13 13
14#include <vpx/vpx_image.h>
15
14#include "../toxcore/tox.h" 16#include "../toxcore/tox.h"
15#include "../toxcore/logger.h" 17#include "../toxcore/logger.h"
16#include "../toxcore/crypto_core.h" 18#include "../toxcore/crypto_core.h"
@@ -33,7 +35,7 @@ typedef enum _CallStatus {
33 Ringing, 35 Ringing,
34 Ended, 36 Ended,
35 Rejected, 37 Rejected,
36 Cancel, 38 Canceled,
37 TimedOut 39 TimedOut
38 40
39} CallStatus; 41} CallStatus;
@@ -65,37 +67,30 @@ void accept_friend_request(Tox *m, const uint8_t *public_key, const uint8_t *dat
65void callback_recv_invite ( void *av, int32_t call_index, void *_arg ) 67void callback_recv_invite ( void *av, int32_t call_index, void *_arg )
66{ 68{
67 Status *cast = _arg; 69 Status *cast = _arg;
68 70
69 /* Bob always receives invite */ 71 if (cast->Alice.av == av)
70 cast->Bob.status = Ringing; 72 {
71 cast->Bob.call_index = call_index; 73 // ...
74 }
75 else if (cast->Bob.av == av)
76 {
77 /* Bob always receives invite */
78 cast->Bob.status = Ringing;
79 cast->Bob.call_index = call_index;
80 }
72} 81}
73void callback_recv_ringing ( void *av, int32_t call_index, void *_arg ) 82void callback_recv_ringing ( void *av, int32_t call_index, void *_arg )
74{ 83{
75 Status *cast = _arg; 84 Status *cast = _arg;
76 85
77 /* Alice always sends invite */ 86 if (cast->Alice.av == av)
78 cast->Alice.status = Ringing; 87 {
79} 88 /* Alice always sends invite */
80void callback_recv_starting ( void *av, int32_t call_index, void *_arg ) 89 cast->Alice.status = Ringing;
81{ 90 }
82 Status *cast = _arg; 91 else if (cast->Bob.av == av)
83 92 {
84 /* Alice always sends invite */ 93 // ...
85 printf("Call started on Alice side...\n");
86 cast->Alice.status = InCall;
87 toxav_prepare_transmission(av, call_index, av_jbufdc, av_VADd, 1);
88}
89void callback_recv_ending ( void *av, int32_t call_index, void *_arg )
90{
91 Status *cast = _arg;
92
93 if ( cast->Alice.status == Rejected) {
94 printf ( "Call ended for Bob!\n" );
95 cast->Bob.status = Ended;
96 } else {
97 printf ( "Call ended for Alice!\n" );
98 cast->Alice.status = Ended;
99 } 94 }
100} 95}
101 96
@@ -104,17 +99,32 @@ void callback_call_started ( void *av, int32_t call_index, void *_arg )
104{ 99{
105 Status *cast = _arg; 100 Status *cast = _arg;
106 101
107 /* Alice always sends invite */ 102 if (cast->Alice.av == av)
108 printf("Call started on Bob side...\n"); 103 {
109 cast->Bob.status = InCall; 104 printf("Call started on Alices side...\n");
110 toxav_prepare_transmission(av, call_index, av_jbufdc, av_VADd, 1); 105 cast->Alice.status = InCall;
106 toxav_prepare_transmission(av, call_index, 1);
107 }
108 else if (cast->Bob.av == av)
109 {
110 printf("Call started on Bob side...\n");
111 cast->Bob.status = InCall;
112 toxav_prepare_transmission(av, call_index, 1);
113 }
111} 114}
112void callback_call_canceled ( void *av, int32_t call_index, void *_arg ) 115void callback_call_canceled ( void *av, int32_t call_index, void *_arg )
113{ 116{
114 Status *cast = _arg; 117 Status *cast = _arg;
115 118
116 printf ( "Call Canceled for Bob!\n" ); 119 if (cast->Alice.av == av)
117 cast->Bob.status = Cancel; 120 {
121 // ...
122 }
123 else if (cast->Bob.av == av)
124 {
125 printf ( "Call Canceled for Bob!\n" );
126 cast->Bob.status = Canceled;
127 }
118} 128}
119void callback_call_rejected ( void *av, int32_t call_index, void *_arg ) 129void callback_call_rejected ( void *av, int32_t call_index, void *_arg )
120{ 130{
@@ -123,55 +133,101 @@ void callback_call_rejected ( void *av, int32_t call_index, void *_arg )
123 printf ( "Call rejected by Bob!\n" 133 printf ( "Call rejected by Bob!\n"
124 "Call ended for Alice!\n" ); 134 "Call ended for Alice!\n" );
125 /* If Bob rejects, call is ended for alice and she sends ending */ 135 /* If Bob rejects, call is ended for alice and she sends ending */
126 cast->Alice.status = Rejected; 136 if (cast->Alice.av == av)
137 {
138 cast->Alice.status = Rejected;
139 }
140 else if (cast->Bob.av == av)
141 {
142 //... ignor
143 }
127} 144}
128void callback_call_ended ( void *av, int32_t call_index, void *_arg ) 145void callback_call_ended ( void *av, int32_t call_index, void *_arg )
129{ 146{
130 Status *cast = _arg; 147 Status *cast = _arg;
131 148
132 printf ( "Call ended for Bob!\n" ); 149 if (cast->Alice.av == av)
133 cast->Bob.status = Ended; 150 {
151 printf ( "Call ended for Alice!\n" );
152 cast->Alice.status = Ended;
153 }
154 else if (cast->Bob.av == av)
155 {
156 printf ( "Call ended for Bob!\n" );
157 cast->Bob.status = Ended;
158 }
134} 159}
135 160
136void callback_call_type_change ( void *av, int32_t call_index, void *_arg ) 161void callback_peer_cs_change ( void *av, int32_t call_index, void *_arg )
137{ 162{
138 ToxAvCSettings csettings; 163 ToxAvCSettings csettings;
139 toxav_get_peer_csettings(av, call_index, 0, &csettings); 164 toxav_get_peer_csettings(av, call_index, 0, &csettings);
165
166 printf("Peer changing settings to: \n"
167 "Type: %u \n"
168 "Video bitrate: %u \n"
169 "Video height: %u \n"
170 "Video width: %u \n"
171 "Audio bitrate: %u \n"
172 "Audio framedur: %u \n"
173 "Audio sample rate: %u \n"
174 "Audio channels: %u \n",
175 csettings.call_type,
176 csettings.video_bitrate,
177 csettings.max_video_height,
178 csettings.max_video_width,
179 csettings.audio_bitrate,
180 csettings.audio_frame_duration,
181 csettings.audio_sample_rate,
182 csettings.audio_channels
183 );
184}
140 185
141 printf("New settings: \n" 186void callback_self_cs_change ( void *av, int32_t call_index, void *_arg )
142 "Type: %u \n" 187{
143 "Video bitrate: %u \n" 188 ToxAvCSettings csettings;
144 "Video height: %u \n" 189 toxav_get_peer_csettings(av, call_index, 0, &csettings);
145 "Video width: %u \n" 190
146 "Audio bitrate: %u \n" 191 printf("Changed settings to: \n"
147 "Audio framedur: %u \n" 192 "Type: %u \n"
148 "Audio sample rate: %u \n" 193 "Video bitrate: %u \n"
149 "Audio channels: %u \n", 194 "Video height: %u \n"
150 csettings.call_type, 195 "Video width: %u \n"
151 csettings.video_bitrate, 196 "Audio bitrate: %u \n"
152 csettings.max_video_height, 197 "Audio framedur: %u \n"
153 csettings.max_video_width, 198 "Audio sample rate: %u \n"
154 csettings.audio_bitrate, 199 "Audio channels: %u \n",
155 csettings.audio_frame_duration, 200 csettings.call_type,
156 csettings.audio_sample_rate, 201 csettings.video_bitrate,
157 csettings.audio_channels 202 csettings.max_video_height,
158 ); 203 csettings.max_video_width,
204 csettings.audio_bitrate,
205 csettings.audio_frame_duration,
206 csettings.audio_sample_rate,
207 csettings.audio_channels
208 );
159} 209}
160 210
161void callback_requ_timeout ( void *av, int32_t call_index, void *_arg ) 211void callback_requ_timeout ( void *av, int32_t call_index, void *_arg )
162{ 212{
163 Status *cast = _arg; 213 Status *cast = _arg;
164 printf("Call timed-out!\n"); 214 printf("Call timed-out!\n");
165 cast->Alice.status = TimedOut; 215
216 if (cast->Alice.av == av)
217 {
218 cast->Alice.status = TimedOut;
219 }
220 else if (cast->Bob.av == av)
221 {
222 cast->Bob.status = TimedOut;
223 }
166} 224}
167 225
168static void callback_audio(ToxAv *av, int32_t call_index, int16_t *data, int length, void *userdata) 226void callback_audio (void* agent, int32_t call_idx, const int16_t* PCM, uint16_t size, void* data)
169{ 227{}
170}
171 228
172static void callback_video(ToxAv *av, int32_t call_index, vpx_image_t *img, void *userdata) 229void callback_video (void* agent, int32_t call_idx, const vpx_image_t* img, void* data)
173{ 230{}
174}
175 231
176void register_callbacks(ToxAv *av, void *data) 232void register_callbacks(ToxAv *av, void *data)
177{ 233{
@@ -180,17 +236,12 @@ void register_callbacks(ToxAv *av, void *data)
180 toxav_register_callstate_callback(av, callback_call_rejected, av_OnReject, data); 236 toxav_register_callstate_callback(av, callback_call_rejected, av_OnReject, data);
181 toxav_register_callstate_callback(av, callback_call_ended, av_OnEnd, data); 237 toxav_register_callstate_callback(av, callback_call_ended, av_OnEnd, data);
182 toxav_register_callstate_callback(av, callback_recv_invite, av_OnInvite, data); 238 toxav_register_callstate_callback(av, callback_recv_invite, av_OnInvite, data);
183
184 toxav_register_callstate_callback(av, callback_recv_ringing, av_OnRinging, data); 239 toxav_register_callstate_callback(av, callback_recv_ringing, av_OnRinging, data);
185 toxav_register_callstate_callback(av, callback_recv_starting, av_OnStarting, data);
186 toxav_register_callstate_callback(av, callback_recv_ending, av_OnEnding, data);
187
188 toxav_register_callstate_callback(av, callback_requ_timeout, av_OnRequestTimeout, data); 240 toxav_register_callstate_callback(av, callback_requ_timeout, av_OnRequestTimeout, data);
189 toxav_register_callstate_callback(av, callback_call_type_change, av_OnMediaChange, data); 241 toxav_register_callstate_callback(av, callback_peer_cs_change, av_OnPeerCSChange, data);
190 242 toxav_register_callstate_callback(av, callback_self_cs_change, av_OnSelfCSChange, data);
191 243 toxav_register_audio_callback(callback_audio, NULL);
192 toxav_register_audio_recv_callback(av, callback_audio, NULL); 244 toxav_register_video_callback(callback_video, NULL);
193 toxav_register_video_recv_callback(av, callback_video, NULL);
194} 245}
195 246
196 247
@@ -202,6 +253,7 @@ void register_callbacks(ToxAv *av, void *data)
202#define CALL_AND_START_LOOP(AliceCallType, BobCallType) \ 253#define CALL_AND_START_LOOP(AliceCallType, BobCallType) \
203{ int step = 0, running = 1; while (running) {\ 254{ int step = 0, running = 1; while (running) {\
204 tox_do(bootstrap_node); tox_do(Alice); tox_do(Bob); \ 255 tox_do(bootstrap_node); tox_do(Alice); tox_do(Bob); \
256 toxav_do(status_control.Bob.av); toxav_do(status_control.Alice.av); \
205 switch ( step ) {\ 257 switch ( step ) {\
206 case 0: /* Alice */ printf("Alice is calling...\n");\ 258 case 0: /* Alice */ printf("Alice is calling...\n");\
207 toxav_call(status_control.Alice.av, &status_control.Alice.call_index, 0, &muhcaps, 10); step++; break;\ 259 toxav_call(status_control.Alice.av, &status_control.Alice.call_index, 0, &muhcaps, 10); step++; break;\
@@ -495,7 +547,11 @@ START_TEST(test_AV_flows)
495 tox_do(bootstrap_node); 547 tox_do(bootstrap_node);
496 tox_do(Alice); 548 tox_do(Alice);
497 tox_do(Bob); 549 tox_do(Bob);
498 550
551 toxav_do(status_control.Alice.av);
552 toxav_do(status_control.Bob.av);
553
554
499 switch ( step ) { 555 switch ( step ) {
500 case 0: /* Alice */ 556 case 0: /* Alice */
501 printf("Alice is calling...\n"); 557 printf("Alice is calling...\n");
@@ -514,7 +570,7 @@ START_TEST(test_AV_flows)
514 break; 570 break;
515 571
516 case 2: /* Wait for Both to have status ended */ 572 case 2: /* Wait for Both to have status ended */
517 if (status_control.Bob.status == Cancel) running = 0; 573 if (status_control.Bob.status == Canceled) running = 0;
518 574
519 break; 575 break;
520 } 576 }
@@ -536,7 +592,10 @@ START_TEST(test_AV_flows)
536 tox_do(bootstrap_node); 592 tox_do(bootstrap_node);
537 tox_do(Alice); 593 tox_do(Alice);
538 tox_do(Bob); 594 tox_do(Bob);
539 595
596 toxav_do(status_control.Alice.av);
597 toxav_do(status_control.Bob.av);
598
540 switch ( step ) { 599 switch ( step ) {
541 case 0: 600 case 0:
542 printf("Alice is calling...\n"); 601 printf("Alice is calling...\n");