[commit] r2538 - in freeswitch/trunk/src/mod: codecs/mod_l16 endpoints/mod_sofia
Author: brian Date: Wed Sep 6 19:58:14 2006 New Revision: 2538 Modified: freeswitch/trunk/src/mod/codecs/mod_l16/mod_l16.c freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Log: adding a check for frame sizes so VBR codecs work correctly.. Should this be moved to the core instead? Modified: freeswitch/trunk/src/mod/codecs/mod_l16/mod_l16.c ============================================================================== --- freeswitch/trunk/src/mod/codecs/mod_l16/mod_l16.c (original) +++ freeswitch/trunk/src/mod/codecs/mod_l16/mod_l16.c Wed Sep 6 19:58:14 2006 @@ -195,11 +195,11 @@ /*.ianacode */ 10, /*.iananame */ "L16", /*.samples_per_second */ 8000, - /*.bits_per_second */ 256000, - /*.microseconds_per_frame */ 60000, - /*.samples_per_frame */ 480, - /*.bytes_per_frame */ 960, - /*.encoded_bytes_per_frame */ 960, + /*.bits_per_second */ 128000, + /*.microseconds_per_frame */ 22500, + /*.samples_per_frame */ 180, + /*.bytes_per_frame */ 360, + /*.encoded_bytes_per_frame */ 360, /*.number_of_channels */ 1, /*.pref_frames_per_packet */ 1, /*.max_frames_per_packet */ 1, @@ -229,7 +229,6 @@ /*.destroy */ switch_raw_destroy, /*.next */ &raw_8k_60ms_implementation }; - static const switch_codec_interface_t raw_codec_interface = { /*.interface_name */ "raw signed linear (16 bit)", Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Wed Sep 6 19:58:14 2006 @@ -833,8 +833,13 @@ if (tech_pvt->read_frame.datalen > 0) { tech_pvt->last_read = switch_time_now(); - bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_frame; - frames = (tech_pvt->read_frame.datalen / bytes); + + if (tech_pvt->read_codec.implementation->encoded_bytes_per_frame) { + bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_frame; + frames = (tech_pvt->read_frame.datalen / bytes); + } else + frames = 1; + samples = frames * tech_pvt->read_codec.implementation->samples_per_frame; ms = frames * tech_pvt->read_codec.implementation->microseconds_per_frame; tech_pvt->timestamp_recv += (int32_t) samples; @@ -884,8 +889,12 @@ switch_set_flag_locked(tech_pvt, TFLAG_WRITING); - bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_frame; - frames = ((int) frame->datalen / bytes); + if (tech_pvt->read_codec.implementation->encoded_bytes_per_frame) { + bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_frame; + frames = ((int) frame->datalen / bytes); + } else + frames = 1; + samples = frames * tech_pvt->read_codec.implementation->samples_per_frame; #if 0
participants (1)
-
Freeswitch SVN