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

Reply via email to