summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2014-07-27 12:51:20 -0400
committerirungentoo <irungentoo@gmail.com>2014-07-27 12:51:20 -0400
commit8aa62cfef7e4f581f88eeaad1cb82f39546bec88 (patch)
treeb4944ec5ac87ffaac3f0ce9dd9a1f88df1331053
parent26bec89287d767afcd395cae89dc51103a6555fc (diff)
Initialize codec session with right values.
Audio decoder and encoder channel values are sepparate values, the decoder should be set to the number of channels the other peer has his encoder set.
-rw-r--r--toxav/codec.c10
-rw-r--r--toxav/codec.h11
-rw-r--r--toxav/toxav.c36
3 files changed, 32 insertions, 25 deletions
diff --git a/toxav/codec.c b/toxav/codec.c
index 1e8478bb..ed1ee44e 100644
--- a/toxav/codec.c
+++ b/toxav/codec.c
@@ -151,6 +151,7 @@ int init_audio_decoder(CodecState *cs, uint32_t audio_channels)
151 return -1; 151 return -1;
152 } 152 }
153 153
154 cs->audio_decoder_channels = audio_channels;
154 return 0; 155 return 0;
155} 156}
156 157
@@ -261,7 +262,7 @@ int init_audio_encoder(CodecState *cs, uint32_t audio_channels)
261 return -1; 262 return -1;
262 } 263 }
263 264
264 265 cs->audio_encoder_channels = audio_channels;
265 return 0; 266 return 0;
266} 267}
267 268
@@ -269,7 +270,8 @@ int init_audio_encoder(CodecState *cs, uint32_t audio_channels)
269CodecState *codec_init_session ( uint32_t audio_bitrate, 270CodecState *codec_init_session ( uint32_t audio_bitrate,
270 uint16_t audio_frame_duration, 271 uint16_t audio_frame_duration,
271 uint32_t audio_sample_rate, 272 uint32_t audio_sample_rate,
272 uint32_t audio_channels, 273 uint32_t encoder_audio_channels,
274 uint32_t decoder_audio_channels,
273 uint32_t audio_VAD_tolerance_ms, 275 uint32_t audio_VAD_tolerance_ms,
274 uint16_t max_video_width, 276 uint16_t max_video_width,
275 uint16_t max_video_height, 277 uint16_t max_video_height,
@@ -292,8 +294,8 @@ CodecState *codec_init_session ( uint32_t audio_bitrate,
292 retu->capabilities |= ( 0 == init_video_decoder(retu) ) ? v_decoding : 0; 294 retu->capabilities |= ( 0 == init_video_decoder(retu) ) ? v_decoding : 0;
293 } 295 }
294 296
295 retu->capabilities |= ( 0 == init_audio_encoder(retu, audio_channels) ) ? a_encoding : 0; 297 retu->capabilities |= ( 0 == init_audio_encoder(retu, encoder_audio_channels) ) ? a_encoding : 0;
296 retu->capabilities |= ( 0 == init_audio_decoder(retu, audio_channels) ) ? a_decoding : 0; 298 retu->capabilities |= ( 0 == init_audio_decoder(retu, decoder_audio_channels) ) ? a_decoding : 0;
297 299
298 if ( retu->capabilities == 0 ) { /* everything failed */ 300 if ( retu->capabilities == 0 ) { /* everything failed */
299 free (retu); 301 free (retu);
diff --git a/toxav/codec.h b/toxav/codec.h
index 755673f3..dceeea7a 100644
--- a/toxav/codec.h
+++ b/toxav/codec.h
@@ -64,9 +64,11 @@ typedef struct _CodecState {
64 OpusEncoder *audio_encoder; 64 OpusEncoder *audio_encoder;
65 int audio_bitrate; 65 int audio_bitrate;
66 int audio_sample_rate; 66 int audio_sample_rate;
67 int audio_encoder_channels;
67 68
68 /* audio decoding */ 69 /* audio decoding */
69 OpusDecoder *audio_decoder; 70 OpusDecoder *audio_decoder;
71 int audio_decoder_channels;
70 72
71 uint64_t capabilities; /* supports*/ 73 uint64_t capabilities; /* supports*/
72 74
@@ -93,11 +95,12 @@ RTPMessage *dequeue(JitterBuffer *q, int *success);
93CodecState *codec_init_session ( uint32_t audio_bitrate, 95CodecState *codec_init_session ( uint32_t audio_bitrate,
94 uint16_t audio_frame_duration, 96 uint16_t audio_frame_duration,
95 uint32_t audio_sample_rate, 97 uint32_t audio_sample_rate,
96 uint32_t audio_channels, 98 uint32_t encoder_audio_channels,
99 uint32_t decoder_audio_channels,
97 uint32_t audio_VAD_tolerance_ms, 100 uint32_t audio_VAD_tolerance_ms,
98 uint16_t video_width, 101 uint16_t max_video_width,
99 uint16_t video_height, 102 uint16_t max_video_height,
100 uint32_t video_bitrate); 103 uint32_t video_bitrate );
101 104
102void codec_terminate_session(CodecState *cs); 105void codec_terminate_session(CodecState *cs);
103 106
diff --git a/toxav/toxav.c b/toxav/toxav.c
index 1e5847a4..1a25a82f 100644
--- a/toxav/toxav.c
+++ b/toxav/toxav.c
@@ -432,7 +432,8 @@ int toxav_prepare_transmission ( ToxAv *av, int32_t call_index, uint32_t jbuf_ca
432 goto error; 432 goto error;
433 } 433 }
434 434
435 ToxAvCSettings csettings = toxavcsettings_cast(&av->msi_session->calls[call_index]->csettings_peer[0]); 435 ToxAvCSettings csettings_peer = toxavcsettings_cast(&av->msi_session->calls[call_index]->csettings_peer[0]);
436 ToxAvCSettings csettings_local = toxavcsettings_cast(&av->msi_session->calls[call_index]->csettings_local);
436 LOGGER_DEBUG( 437 LOGGER_DEBUG(
437 "Type: %u \n" 438 "Type: %u \n"
438 "Video bitrate: %u \n" 439 "Video bitrate: %u \n"
@@ -442,23 +443,24 @@ int toxav_prepare_transmission ( ToxAv *av, int32_t call_index, uint32_t jbuf_ca
442 "Audio framedur: %u \n" 443 "Audio framedur: %u \n"
443 "Audio sample rate: %u \n" 444 "Audio sample rate: %u \n"
444 "Audio channels: %u \n", 445 "Audio channels: %u \n",
445 csettings.call_type, 446 csettings_peer.call_type,
446 csettings.video_bitrate, 447 csettings_peer.video_bitrate,
447 csettings.max_video_height, 448 csettings_peer.max_video_height,
448 csettings.max_video_width, 449 csettings_peer.max_video_width,
449 csettings.audio_bitrate, 450 csettings_peer.audio_bitrate,
450 csettings.audio_frame_duration, 451 csettings_peer.audio_frame_duration,
451 csettings.audio_sample_rate, 452 csettings_peer.audio_sample_rate,
452 csettings.audio_channels ); 453 csettings_peer.audio_channels );
453 454
454 if ( (call->cs = codec_init_session(csettings.audio_bitrate, 455 if ( (call->cs = codec_init_session(csettings_local.audio_bitrate,
455 csettings.audio_frame_duration, 456 csettings_local.audio_frame_duration,
456 csettings.audio_sample_rate, 457 csettings_local.audio_sample_rate,
457 csettings.audio_channels, 458 csettings_local.audio_channels,
459 csettings_peer.audio_channels,
458 VAD_treshold, 460 VAD_treshold,
459 csettings.max_video_width, 461 csettings_local.max_video_width,
460 csettings.max_video_height, 462 csettings_local.max_video_height,
461 csettings.video_bitrate) )) { 463 csettings_local.video_bitrate) )) {
462 464
463 if ( pthread_mutex_init(&call->mutex, NULL) != 0 ) goto error; 465 if ( pthread_mutex_init(&call->mutex, NULL) != 0 ) goto error;
464 466