Author: sayer
Date: 2009-10-22 17:26:58 +0200 (Thu, 22 Oct 2009)
New Revision: 1557

Modified:
   trunk/apps/precoded_announce/wav/test.predef
   trunk/core/AmPrecodedFile.cpp
Log:
fixed frame samples length for precoded files. Patch by Andrey Samusenko



Modified: trunk/apps/precoded_announce/wav/test.predef
===================================================================
--- trunk/apps/precoded_announce/wav/test.predef        2009-10-22 15:06:01 UTC 
(rev 1556)
+++ trunk/apps/precoded_announce/wav/test.predef        2009-10-22 15:26:58 UTC 
(rev 1557)
@@ -1,11 +1,12 @@
 # format: 
 # codec id;payload name;samplerate;channels;format parameters;frame 
milliseconds;frame bytes;filename (full path)
 #
+# to create e.g. .gsm file:
+#    sox test.wav -r 8000 -c 1 -g test8k.gsm
 #
 0;PCMU;8000;1;<none>;20;160;test8k.pcmu;
 8;PCMA;8000;1;<none>;20;160;test8k.pcma;
 96;iLBC;8000;1;<none>;30;50;test8k.ilbc30;
 97;iLBC;8000;1;mode=30;30;50;test8k.ilbc30;
 98;iLBC;8000;1;mode=20;20;33;test8k.ilbc20;
-
-
+3;GSM;8000;1;<none>;20;33;test8k.gsm;

Modified: trunk/core/AmPrecodedFile.cpp
===================================================================
--- trunk/core/AmPrecodedFile.cpp       2009-10-22 15:06:01 UTC (rev 1556)
+++ trunk/core/AmPrecodedFile.cpp       2009-10-22 15:26:58 UTC (rev 1557)
@@ -31,11 +31,11 @@
 #include <fstream>
 
 unsigned int precoded_bytes2samples(long h_codec, unsigned int num_bytes) {
-  return num_bytes;
+  return ((AmAudioFormat*)h_codec)->frame_size;
 }
 
 unsigned int precoded_samples2bytes(long h_codec, unsigned int num_samples) {
-  return num_samples;
+  return ((AmAudioFormat*)h_codec)->frame_encoded_size;
 }
 
 amci_codec_t _codec_precoded = { 
@@ -65,6 +65,7 @@
   // fill unused stuff
   frame_length = precoded_payload.frame_ms;
   frame_encoded_size = precoded_payload.frame_bytes;
+  h_codec = (long)this;
 }
 
 AmPrecodedRtpFormat::~AmPrecodedRtpFormat() {
@@ -86,6 +87,11 @@
   channels = precoded_payload.channels;
   rate = precoded_payload.sample_rate;
   codec = getCodec();
+
+  // used in precoded_bytes2samples()/precoded_samples2bytes()
+  frame_size = precoded_payload.frame_ms * precoded_payload.sample_rate / 1000;
+  frame_encoded_size = precoded_payload.frame_bytes;
+  h_codec = (long)this;
 }
 
 AmPrecodedFileFormat::~AmPrecodedFileFormat() { 

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to