summaryrefslogtreecommitdiff
path: root/toxav/av_test.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2015-03-22 23:50:43 +0100
committermannol <eniz_vukovic@hotmail.com>2015-03-22 23:50:43 +0100
commit62af82705a805648a4dba54a7f516681e5163923 (patch)
treef417e3489ed834de9df60cb7b4bbec625482638c /toxav/av_test.c
parenta4fae8ffd49e298cd87e13be2496faf77e492bd9 (diff)
Some progress
Diffstat (limited to 'toxav/av_test.c')
-rw-r--r--toxav/av_test.c61
1 files changed, 57 insertions, 4 deletions
diff --git a/toxav/av_test.c b/toxav/av_test.c
index 01484249..46fd97e1 100644
--- a/toxav/av_test.c
+++ b/toxav/av_test.c
@@ -39,6 +39,7 @@
39typedef struct { 39typedef struct {
40 bool incoming; 40 bool incoming;
41 uint32_t state; 41 uint32_t state;
42 uint32_t output_source;
42} CallControl; 43} CallControl;
43 44
44const char* stringify_state(TOXAV_CALL_STATE s) 45const char* stringify_state(TOXAV_CALL_STATE s)
@@ -58,6 +59,8 @@ const char* stringify_state(TOXAV_CALL_STATE s)
58}; 59};
59 60
60 61
62int device_play_frame(uint32_t source, const int16_t* PCM, size_t size);
63
61/** 64/**
62 * Callbacks 65 * Callbacks
63 */ 66 */
@@ -86,7 +89,7 @@ void t_toxav_receive_audio_frame_cb(ToxAV *av, uint32_t friend_number,
86 uint32_t sampling_rate, 89 uint32_t sampling_rate,
87 void *user_data) 90 void *user_data)
88{ 91{
89 printf("Handling AUDIO FRAME callback\n"); 92 device_play_frame(((CallControl*)user_data)->output_source, pcm, sample_count);
90} 93}
91void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata) 94void t_accept_friend_request_cb(Tox *m, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata)
92{ 95{
@@ -173,7 +176,7 @@ int device_read_frame(ALCdevice* device, int32_t frame_dur, int16_t* PCM, size_t
173 return f_size; 176 return f_size;
174} 177}
175 178
176int device_play_frame(uint32_t source, int16_t* PCM, size_t size) 179int device_play_frame(uint32_t source, const int16_t* PCM, size_t size)
177{ 180{
178 uint32_t bufid; 181 uint32_t bufid;
179 int32_t processed, queued; 182 int32_t processed, queued;
@@ -604,17 +607,67 @@ int main (int argc, char** argv)
604 if (TEST_TRANSFER_A) { /* Audio encoding/decoding and transfer */ 607 if (TEST_TRANSFER_A) { /* Audio encoding/decoding and transfer */
605 printf("\nTrying audio enc/dec...\n"); 608 printf("\nTrying audio enc/dec...\n");
606 609
610 memset(&AliceCC, 0, sizeof(CallControl));
611 memset(&BobCC, 0, sizeof(CallControl));
612
613 AliceCC.output_source = BobCC.output_source = source;
614
615 {
616 TOXAV_ERR_CALL rc;
617 toxav_call(AliceAV, 0, 48, 0, &rc);
618
619 if (rc != TOXAV_ERR_CALL_OK) {
620 printf("toxav_call failed: %d\n", rc);
621 exit(1);
622 }
623 }
624
625 while (!BobCC.incoming)
626 iterate(Bsn, AliceAV, BobAV);
627
628 {
629 TOXAV_ERR_ANSWER rc;
630 toxav_answer(BobAV, 0, 48, 0, &rc);
631
632 if (rc != TOXAV_ERR_ANSWER_OK) {
633 printf("toxav_answer failed: %d\n", rc);
634 exit(1);
635 }
636 }
637
638 iterate(Bsn, AliceAV, BobAV);
639
607 int16_t PCM[10000]; 640 int16_t PCM[10000];
608 time_t start_time = time(NULL); 641 time_t start_time = time(NULL);
609 642
610 /* Run for 5 seconds */ 643 /* Run for 5 seconds */
611 while ( start_time + 10 > time(NULL) ) { 644 while ( start_time + 10 > time(NULL) ) {
612 int frame_size = device_read_frame(in_device, 20, PCM, sizeof(PCM)); 645 int frame_size = device_read_frame(in_device, 20, PCM, sizeof(PCM));
613 if (frame_size > 0) 646 if (frame_size > 0) {
614 device_play_frame(source, PCM, frame_size); 647 TOXAV_ERR_SEND_FRAME rc;
648 if (toxav_send_audio_frame(AliceAV, 0, PCM, frame_size, 2, 48000, &rc) == false) {
649 printf("Error sending frame of size %d: %d\n", frame_size, rc);
650 exit (1);
651 }
652 }
653
654 iterate(Bsn, AliceAV, BobAV);
615// c_sleep(20); 655// c_sleep(20);
616 } 656 }
617 657
658 {
659 TOXAV_ERR_CALL_CONTROL rc;
660 toxav_call_control(AliceAV, 0, TOXAV_CALL_CONTROL_CANCEL, &rc);
661
662 if (rc != TOXAV_ERR_CALL_CONTROL_OK) {
663 printf("toxav_call_control failed: %d\n", rc);
664 exit(1);
665 }
666 }
667
668 iterate(Bsn, AliceAV, BobAV);
669 assert(BobCC.state == TOXAV_CALL_STATE_END);
670
618 printf("Success!"); 671 printf("Success!");
619 } 672 }
620 673