[Freeswitch-svn] [commit] r2538 - in freeswitch/trunk/src/mod: codecs/mod_l16 endpoints/mod_sofia
Freeswitch SVN
brian at freeswitch.org
Wed Sep 6 19:58:14 EDT 2006
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
More information about the Freeswitch-svn
mailing list