diff options
author | mannol <eniz_vukovic@hotmail.com> | 2014-11-18 00:46:46 +0100 |
---|---|---|
committer | mannol <eniz_vukovic@hotmail.com> | 2014-11-18 00:46:46 +0100 |
commit | 386c9748d48d3bb4513e8e5c32e2b30a4d6a00d4 (patch) | |
tree | 55d0fb2e9fb6e1149317b9de355c28dd86c57014 /auto_tests/toxav_basic_test.c | |
parent | 4e6f993e7d22865ee2ac90bd7dd3ff25b078c55c (diff) |
av refactor
Diffstat (limited to 'auto_tests/toxav_basic_test.c')
-rw-r--r-- | auto_tests/toxav_basic_test.c | 209 |
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 | |||
65 | void callback_recv_invite ( void *av, int32_t call_index, void *_arg ) | 67 | void 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 | } |
73 | void callback_recv_ringing ( void *av, int32_t call_index, void *_arg ) | 82 | void 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 */ |
80 | void 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 | } | ||
89 | void 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 | } |
112 | void callback_call_canceled ( void *av, int32_t call_index, void *_arg ) | 115 | void 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 | } |
119 | void callback_call_rejected ( void *av, int32_t call_index, void *_arg ) | 129 | void 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 | } |
128 | void callback_call_ended ( void *av, int32_t call_index, void *_arg ) | 145 | void 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 | ||
136 | void callback_call_type_change ( void *av, int32_t call_index, void *_arg ) | 161 | void 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" | 186 | void 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 | ||
161 | void callback_requ_timeout ( void *av, int32_t call_index, void *_arg ) | 211 | void 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 | ||
168 | static void callback_audio(ToxAv *av, int32_t call_index, int16_t *data, int length, void *userdata) | 226 | void callback_audio (void* agent, int32_t call_idx, const int16_t* PCM, uint16_t size, void* data) |
169 | { | 227 | {} |
170 | } | ||
171 | 228 | ||
172 | static void callback_video(ToxAv *av, int32_t call_index, vpx_image_t *img, void *userdata) | 229 | void callback_video (void* agent, int32_t call_idx, const vpx_image_t* img, void* data) |
173 | { | 230 | {} |
174 | } | ||
175 | 231 | ||
176 | void register_callbacks(ToxAv *av, void *data) | 232 | void 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"); |