diff --git a/apps/precoded_announce/wav/test.predef b/apps/precoded_announce/wav/test.predef index c119db09..3125c172 100644 --- a/apps/precoded_announce/wav/test.predef +++ b/apps/precoded_announce/wav/test.predef @@ -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;;20;160;test8k.pcmu; 8;PCMA;8000;1;;20;160;test8k.pcma; 96;iLBC;8000;1;;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;;20;33;test8k.gsm; diff --git a/core/AmPrecodedFile.cpp b/core/AmPrecodedFile.cpp index e2da7681..e8a15ee0 100644 --- a/core/AmPrecodedFile.cpp +++ b/core/AmPrecodedFile.cpp @@ -31,11 +31,11 @@ #include 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 @@ AmPrecodedRtpFormat::AmPrecodedRtpFormat(precoded_payload_t& precoded_payload, // 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 @@ AmPrecodedFileFormat::AmPrecodedFileFormat(precoded_payload_t& precoded_payload) 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() {