Author: sayer Date: 2008-09-16 14:35:33 +0200 (Tue, 16 Sep 2008) New Revision: 1082
Modified: branches/wb/core/AmAudio.cpp branches/wb/core/AmAudio.h Log: using 8khz rate in RTP TS for g722 (see also http://www.mail-archive.com/[EMAIL PROTECTED]/msg00387.html) Modified: branches/wb/core/AmAudio.cpp =================================================================== --- branches/wb/core/AmAudio.cpp 2008-08-31 21:19:32 UTC (rev 1081) +++ branches/wb/core/AmAudio.cpp 2008-09-16 12:35:33 UTC (rev 1082) @@ -110,6 +110,7 @@ if (m_currentPayloadP && codec) { channels = m_currentPayloadP->channels; rate = m_currentPayloadP->sample_rate; + advertised_rate = m_currentPayloadP->advertised_sample_rate; } else { ERROR("Could not find payload <%i>\n", payload); return -1; @@ -126,7 +127,7 @@ } AmAudioFormat::AmAudioFormat() - : channels(-1), rate(-1), codec(NULL), + : channels(-1), rate(-1), advertised_rate(-1), codec(NULL), frame_length(20), frame_size(20*SYSTEM_SAMPLERATE/1000) { @@ -338,26 +339,26 @@ /* from internal format */ size = upMix(size); + int s = encode(size); + if (s<=0) + return s; + unsigned long wr_ts = user_ts; // wr_ts =( (long)user_ts * (long)fmt->rate / (long)SYSTEM_SAMPLERATE); - if (fmt->rate != SYSTEM_SAMPLERATE) { - if (fmt->rate > SYSTEM_SAMPLERATE) { - unsigned int f = fmt->rate / SYSTEM_SAMPLERATE; + if (fmt->advertised_rate != SYSTEM_SAMPLERATE) { + if (fmt->advertised_rate > SYSTEM_SAMPLERATE) { + unsigned int f = fmt->advertised_rate / SYSTEM_SAMPLERATE; wr_ts = wr_ts * f; } else { - unsigned int f = SYSTEM_SAMPLERATE / fmt->rate ; + unsigned int f = SYSTEM_SAMPLERATE / fmt->advertised_rate ; wr_ts = wr_ts / f; } } - int s = encode(size); - if (s>0) { - incRecordTime(bytes2samples(size)); - return write(wr_ts,(unsigned int)s); - } else { - return s; - } + incRecordTime(bytes2samples(size)); + return write(wr_ts,(unsigned int)s); + } void AmAudio::stereo2mono(unsigned char* out_buf,unsigned char* in_buf,unsigned int& size) @@ -478,7 +479,7 @@ if (m_src_state->resample_state) { if (m_src_state->resample_buf_samples + PCM16_B2S(s) > PCM16_B2S(AUDIO_BUFFER_SIZE) * 2) { - WARN("resample input buffer overflow! (%lu)\n", + WARN("resample input buffer overflow! (%u)\n", m_src_state->resample_buf_samples + PCM16_B2S(s)); } else { signed short* samples_s = (signed short*)(unsigned char*)samples; Modified: branches/wb/core/AmAudio.h =================================================================== --- branches/wb/core/AmAudio.h 2008-08-31 21:19:32 UTC (rev 1081) +++ branches/wb/core/AmAudio.h 2008-09-16 12:35:33 UTC (rev 1082) @@ -111,6 +111,8 @@ int channels; /** Sampling rate. */ int rate; + /** Advertised sampling rate (used in RTP TS clock, only differs from rate for g722). */ + int advertised_rate; /* frame length in ms (frame based codecs) */ int frame_length; /* frame size in samples */ _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
