summaryrefslogtreecommitdiff
path: root/toxav/av_test.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2015-04-16 02:00:34 +0200
committermannol <eniz_vukovic@hotmail.com>2015-04-16 02:00:34 +0200
commitda6c17222f54c933c826e9c557e66629ee57790f (patch)
tree2cf5e0ff002bef5d69f0048475ea7becc11bd389 /toxav/av_test.c
parent2465f486acd90ed8395c8a83a13af09ecd024c98 (diff)
The pretty basic adaptive bitrate is *working*
Diffstat (limited to 'toxav/av_test.c')
-rw-r--r--toxav/av_test.c59
1 files changed, 21 insertions, 38 deletions
diff --git a/toxav/av_test.c b/toxav/av_test.c
index c20d459b..6ebe0421 100644
--- a/toxav/av_test.c
+++ b/toxav/av_test.c
@@ -27,6 +27,9 @@
27#include "../toxcore/tox.h" 27#include "../toxcore/tox.h"
28#include "../toxcore/util.h" 28#include "../toxcore/util.h"
29 29
30#define LOGGING
31#include "../toxcore/logger.h"
32
30/* Playing audio data */ 33/* Playing audio data */
31#include <portaudio.h> 34#include <portaudio.h>
32/* Reading audio */ 35/* Reading audio */
@@ -80,6 +83,7 @@
80typedef struct { 83typedef struct {
81 bool incoming; 84 bool incoming;
82 uint32_t state; 85 uint32_t state;
86 uint32_t abitrate;
83} CallControl; 87} CallControl;
84 88
85struct toxav_thread_data { 89struct toxav_thread_data {
@@ -91,22 +95,6 @@ struct toxav_thread_data {
91const char* vdout = "AV Test"; /* Video output */ 95const char* vdout = "AV Test"; /* Video output */
92PaStream* adout = NULL; /* Audio output */ 96PaStream* adout = NULL; /* Audio output */
93 97
94const char* stringify_state(TOXAV_CALL_STATE s)
95{
96 static const char* strings[] =
97 {
98 "NOT SENDING",
99 "SENDING AUDIO",
100 "SENDING VIDEO",
101 "SENDING AUDIO AND VIDEO",
102 "PAUSED",
103 "END",
104 "ERROR"
105 };
106
107 return strings [s];
108}
109
110/** 98/**
111 * Callbacks 99 * Callbacks
112 */ 100 */
@@ -117,9 +105,20 @@ void t_toxav_call_cb(ToxAV *av, uint32_t friend_number, bool audio_enabled, bool
117} 105}
118void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_data) 106void t_toxav_call_state_cb(ToxAV *av, uint32_t friend_number, uint32_t state, void *user_data)
119{ 107{
120 printf("Handling CALL STATE callback: %d\n", state);
121
122 ((CallControl*)user_data)->state = state; 108 ((CallControl*)user_data)->state = state;
109
110 if (state & TOXAV_CALL_STATE_INCREASE_AUDIO_BITRATE) {
111 uint32_t bitrate = ((CallControl*)user_data)->abitrate;
112
113 if (bitrate < 64) {
114 printf("Changing bitrate to: %d\n", 64);
115 toxav_set_audio_bit_rate(av, friend_number, 64, 0);
116 }
117 } else if (state & TOXAV_CALL_STATE_INCREASE_VIDEO_BITRATE) {
118
119 } else {
120 printf("Handling CALL STATE callback: %d\n", state);
121 }
123} 122}
124void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number, 123void t_toxav_receive_video_frame_cb(ToxAV *av, uint32_t friend_number,
125 uint16_t width, uint16_t height, 124 uint16_t width, uint16_t height,
@@ -331,24 +330,6 @@ int print_help (const char* name)
331 330
332int main (int argc, char** argv) 331int main (int argc, char** argv)
333{ 332{
334 RingBuffer* rb = rb_new(4);
335 int a[5] = {0, 1, 2, 3, 4};
336 int* x;
337 rb_write(rb, a + 0);
338 rb_write(rb, a + 1);
339 rb_write(rb, a + 2);
340 rb_write(rb, a + 3);
341// rb_write(rb, a + 4);
342
343 x = rb_write(rb, a + 4);
344 while (rb_read(rb, (void**) &x))
345// rb_read(rb, (void**)&x);
346 printf("%d ", *x);
347
348 printf("\n");
349// int r = 43;
350// printf("%d\n", r >= 40 ? 3 : r / 10);
351 return 0;
352 Pa_Initialize(); 333 Pa_Initialize();
353 334
354 struct stat st; 335 struct stat st;
@@ -688,9 +669,11 @@ int main (int argc, char** argv)
688 memset(&AliceCC, 0, sizeof(CallControl)); 669 memset(&AliceCC, 0, sizeof(CallControl));
689 memset(&BobCC, 0, sizeof(CallControl)); 670 memset(&BobCC, 0, sizeof(CallControl));
690 671
672 AliceCC.abitrate = BobCC.abitrate = 8;
673
691 { /* Call */ 674 { /* Call */
692 TOXAV_ERR_CALL rc; 675 TOXAV_ERR_CALL rc;
693 toxav_call(AliceAV, 0, 48, 0, &rc); 676 toxav_call(AliceAV, 0, AliceCC.abitrate, 0, &rc);
694 677
695 if (rc != TOXAV_ERR_CALL_OK) { 678 if (rc != TOXAV_ERR_CALL_OK) {
696 printf("toxav_call failed: %d\n", rc); 679 printf("toxav_call failed: %d\n", rc);
@@ -703,7 +686,7 @@ int main (int argc, char** argv)
703 686
704 { /* Answer */ 687 { /* Answer */
705 TOXAV_ERR_ANSWER rc; 688 TOXAV_ERR_ANSWER rc;
706 toxav_answer(BobAV, 0, 48, 0, &rc); 689 toxav_answer(BobAV, 0, BobCC.abitrate, 0, &rc);
707 690
708 if (rc != TOXAV_ERR_ANSWER_OK) { 691 if (rc != TOXAV_ERR_ANSWER_OK) {
709 printf("toxav_answer failed: %d\n", rc); 692 printf("toxav_answer failed: %d\n", rc);