summaryrefslogtreecommitdiff
path: root/toxav/media.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2014-05-10 18:00:49 +0200
committermannol <eniz_vukovic@hotmail.com>2014-05-10 18:00:49 +0200
commit9bb910a370725696cc3169c795f903c24e7d126f (patch)
tree3c63f103a0b883f71007c697aa19c18c8e4c9330 /toxav/media.c
parent0fa03b924030c5791599451389ba84b81be84da8 (diff)
This should work
Diffstat (limited to 'toxav/media.c')
-rw-r--r--toxav/media.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/toxav/media.c b/toxav/media.c
index 33d5d6b6..5700c2f2 100644
--- a/toxav/media.c
+++ b/toxav/media.c
@@ -36,8 +36,7 @@
36#include "rtp.h" 36#include "rtp.h"
37#include "media.h" 37#include "media.h"
38 38
39 39int empty_queue(JitterBuffer *q)
40int empty_queue(struct jitter_buffer *q)
41{ 40{
42 while (q->size > 0) { 41 while (q->size > 0) {
43 rtp_free_msg(NULL, q->queue[q->front]); 42 rtp_free_msg(NULL, q->queue[q->front]);
@@ -54,11 +53,11 @@ int empty_queue(struct jitter_buffer *q)
54 return 0; 53 return 0;
55} 54}
56 55
57struct jitter_buffer *create_queue(int capacity) 56JitterBuffer *create_queue(int capacity)
58{ 57{
59 struct jitter_buffer *q; 58 JitterBuffer *q;
60 q = calloc(sizeof(struct jitter_buffer), 1); 59 if ( !(q = calloc(sizeof(JitterBuffer), 1)) ) return NULL;
61 q->queue = calloc(sizeof(RTPMessage *), capacity); 60 if (!(q->queue = calloc(sizeof(RTPMessage *), capacity))) return NULL;
62 q->size = 0; 61 q->size = 0;
63 q->capacity = capacity; 62 q->capacity = capacity;
64 q->front = 0; 63 q->front = 0;
@@ -70,10 +69,20 @@ struct jitter_buffer *create_queue(int capacity)
70 return q; 69 return q;
71} 70}
72 71
72void terminate_queue(JitterBuffer* q)
73{
74 int i;
75 for ( i = 0; i < q->capacity; i ++ ) {
76 rtp_free_msg(NULL, q->queue[i]);
77 }
78 free(q->queue);
79 free(q);
80}
81
73#define sequnum_older(sn_a, sn_b, ts_a, ts_b) (sn_a > sn_b || ts_a > ts_b) 82#define sequnum_older(sn_a, sn_b, ts_a, ts_b) (sn_a > sn_b || ts_a > ts_b)
74 83
75/* success is 0 when there is nothing to dequeue, 1 when there's a good packet, 2 when there's a lost packet */ 84/* success is 0 when there is nothing to dequeue, 1 when there's a good packet, 2 when there's a lost packet */
76RTPMessage *dequeue(struct jitter_buffer *q, int *success) 85RTPMessage *dequeue(JitterBuffer *q, int *success)
77{ 86{
78 if (q->size == 0 || q->queue_ready == 0) { /* Empty queue */ 87 if (q->size == 0 || q->queue_ready == 0) { /* Empty queue */
79 q->queue_ready = 0; 88 q->queue_ready = 0;
@@ -122,10 +131,10 @@ RTPMessage *dequeue(struct jitter_buffer *q, int *success)
122} 131}
123 132
124 133
125void queue(struct jitter_buffer* q, RTPMessage* pk) 134void queue(JitterBuffer* q, RTPMessage* pk)
126{ 135{
127 if (q->size == q->capacity) { /* Full, empty queue */ 136 if (q->size == q->capacity) { /* Full, empty queue */
128 LOGGER_DEBUG("Queue full, emptying..."); 137 LOGGER_DEBUG("Queue full s(%d) c(%d), emptying...", q->size, q->capacity);
129 empty_queue(q); 138 empty_queue(q);
130 } 139 }
131 140
@@ -257,7 +266,7 @@ CodecState *codec_init_session ( uint32_t audio_bitrate,
257 uint32_t video_bitrate ) 266 uint32_t video_bitrate )
258{ 267{
259 CodecState *retu = calloc(sizeof(CodecState), 1); 268 CodecState *retu = calloc(sizeof(CodecState), 1);
260 assert(retu); 269 if(!retu) return NULL;
261 270
262 retu->audio_bitrate = audio_bitrate; 271 retu->audio_bitrate = audio_bitrate;
263 retu->audio_sample_rate = audio_sample_rate; 272 retu->audio_sample_rate = audio_sample_rate;
@@ -275,6 +284,11 @@ CodecState *codec_init_session ( uint32_t audio_bitrate,
275 retu->capabilities |= ( 0 == init_audio_encoder(retu, audio_channels) ) ? a_encoding : 0; 284 retu->capabilities |= ( 0 == init_audio_encoder(retu, audio_channels) ) ? a_encoding : 0;
276 retu->capabilities |= ( 0 == init_audio_decoder(retu, audio_channels) ) ? a_decoding : 0; 285 retu->capabilities |= ( 0 == init_audio_decoder(retu, audio_channels) ) ? a_decoding : 0;
277 286
287 if ( retu->capabilities == 0 ) { /* everything failed */
288 free (retu);
289 return NULL;
290 }
291
278 return retu; 292 return retu;
279} 293}
280 294