| Index: webrtc/modules/audio_coding/neteq/test/RTPencode.cc
|
| diff --git a/webrtc/modules/audio_coding/neteq/test/RTPencode.cc b/webrtc/modules/audio_coding/neteq/test/RTPencode.cc
|
| index 7e778b86e0dd0917c5d37e963a8863971bbb5364..b2df07aa4e97751207a640dfb72d99fa900201ca 100644
|
| --- a/webrtc/modules/audio_coding/neteq/test/RTPencode.cc
|
| +++ b/webrtc/modules/audio_coding/neteq/test/RTPencode.cc
|
| @@ -23,6 +23,8 @@
|
|
|
| #include <assert.h>
|
|
|
| +#include <algorithm>
|
| +
|
| #include "webrtc/typedefs.h"
|
| // needed for NetEqDecoder
|
| #include "webrtc/modules/audio_coding/neteq/audio_decoder_impl.h"
|
| @@ -76,27 +78,27 @@
|
| void NetEQTest_GetCodec_and_PT(char* name,
|
| webrtc::NetEqDecoder* codec,
|
| int* PT,
|
| - int frameLen,
|
| + size_t frameLen,
|
| int* fs,
|
| int* bitrate,
|
| int* useRed);
|
| int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| - int enc_frameSize,
|
| + size_t enc_frameSize,
|
| int bitrate,
|
| int sampfreq,
|
| int vad,
|
| - int numChannels);
|
| + size_t numChannels);
|
| void defineCodecs(webrtc::NetEqDecoder* usedCodec, int* noOfCodecs);
|
| -int NetEQTest_free_coders(webrtc::NetEqDecoder coder, int numChannels);
|
| -int NetEQTest_encode(int coder,
|
| - int16_t* indata,
|
| - int frameLen,
|
| - unsigned char* encoded,
|
| - int sampleRate,
|
| - int* vad,
|
| - int useVAD,
|
| - int bitrate,
|
| - int numChannels);
|
| +int NetEQTest_free_coders(webrtc::NetEqDecoder coder, size_t numChannels);
|
| +size_t NetEQTest_encode(int coder,
|
| + int16_t* indata,
|
| + size_t frameLen,
|
| + unsigned char* encoded,
|
| + int sampleRate,
|
| + int* vad,
|
| + int useVAD,
|
| + int bitrate,
|
| + size_t numChannels);
|
| void makeRTPheader(unsigned char* rtp_data,
|
| int payloadType,
|
| int seqNo,
|
| @@ -109,13 +111,13 @@ int makeRedundantHeader(unsigned char* rtp_data,
|
| uint16_t* blockLen,
|
| int seqNo,
|
| uint32_t ssrc);
|
| -int makeDTMFpayload(unsigned char* payload_data,
|
| - int Event,
|
| - int End,
|
| - int Volume,
|
| - int Duration);
|
| -void stereoDeInterleave(int16_t* audioSamples, int numSamples);
|
| -void stereoInterleave(unsigned char* data, int dataLen, int stride);
|
| +size_t makeDTMFpayload(unsigned char* payload_data,
|
| + int Event,
|
| + int End,
|
| + int Volume,
|
| + int Duration);
|
| +void stereoDeInterleave(int16_t* audioSamples, size_t numSamples);
|
| +void stereoInterleave(unsigned char* data, size_t dataLen, size_t stride);
|
|
|
| /*********************/
|
| /* Codec definitions */
|
| @@ -264,13 +266,14 @@ SPEEX_encinst_t* SPEEX16enc_inst[2];
|
| #endif
|
|
|
| int main(int argc, char* argv[]) {
|
| - int packet_size, fs;
|
| + size_t packet_size;
|
| + int fs;
|
| webrtc::NetEqDecoder usedCodec;
|
| int payloadType;
|
| int bitrate = 0;
|
| int useVAD, vad;
|
| int useRed = 0;
|
| - int len, enc_len;
|
| + size_t len, enc_len;
|
| int16_t org_data[4000];
|
| unsigned char rtp_data[8000];
|
| int16_t seqNo = 0xFFF;
|
| @@ -282,14 +285,14 @@ int main(int argc, char* argv[]) {
|
| int red_PT[2] = {0};
|
| uint32_t red_TS[2] = {0};
|
| uint16_t red_len[2] = {0};
|
| - int RTPheaderLen = 12;
|
| + size_t RTPheaderLen = 12;
|
| uint8_t red_data[8000];
|
| #ifdef INSERT_OLD_PACKETS
|
| uint16_t old_length, old_plen;
|
| - int old_enc_len;
|
| + size_t old_enc_len;
|
| int first_old_packet = 1;
|
| unsigned char old_rtp_data[8000];
|
| - int packet_age = 0;
|
| + size_t packet_age = 0;
|
| #endif
|
| #ifdef INSERT_DTMF_PACKETS
|
| int NTone = 1;
|
| @@ -298,8 +301,8 @@ int main(int argc, char* argv[]) {
|
| bool dtmfSent = false;
|
| #endif
|
| bool usingStereo = false;
|
| - int stereoMode = 0;
|
| - int numChannels = 1;
|
| + size_t stereoMode = 0;
|
| + size_t numChannels = 1;
|
|
|
| /* check number of parameters */
|
| if ((argc != 6) && (argc != 7)) {
|
| @@ -449,12 +452,13 @@ int main(int argc, char* argv[]) {
|
| FILE* out_file = fopen(argv[2], "wb");
|
| CHECK_NOT_NULL(out_file);
|
| printf("Output file: %s\n\n", argv[2]);
|
| - packet_size = atoi(argv[3]);
|
| - if (packet_size <= 0) {
|
| - printf("Packet size %d must be positive", packet_size);
|
| + int packet_size_int = atoi(argv[3]);
|
| + if (packet_size_int <= 0) {
|
| + printf("Packet size %d must be positive", packet_size_int);
|
| return -1;
|
| }
|
| - printf("Packet size: %d\n", packet_size);
|
| + printf("Packet size: %d\n", packet_size_int);
|
| + packet_size = static_cast<size_t>(packet_size_int);
|
|
|
| // check for stereo
|
| if (argv[4][strlen(argv[4]) - 1] == '*') {
|
| @@ -653,10 +657,6 @@ int main(int argc, char* argv[]) {
|
| enc_len =
|
| NetEQTest_encode(usedCodec, org_data, packet_size, &rtp_data[12], fs,
|
| &vad, useVAD, bitrate, numChannels);
|
| - if (enc_len == -1) {
|
| - printf("Error encoding frame\n");
|
| - exit(0);
|
| - }
|
|
|
| if (usingStereo && stereoMode != STEREO_MODE_FRAME && vad == 1) {
|
| // interleave the encoded payload for sample-based codecs (not for CNG)
|
| @@ -729,12 +729,12 @@ int main(int argc, char* argv[]) {
|
| return -1;
|
| }
|
| #ifdef RANDOM_DATA
|
| - for (int k = 0; k < 12 + enc_len; k++) {
|
| + for (size_t k = 0; k < 12 + enc_len; k++) {
|
| rtp_data[k] = rand() + rand();
|
| }
|
| #endif
|
| #ifdef RANDOM_PAYLOAD_DATA
|
| - for (int k = 12; k < 12 + enc_len; k++) {
|
| + for (size_t k = 12; k < 12 + enc_len; k++) {
|
| rtp_data[k] = rand() + rand();
|
| }
|
| #endif
|
| @@ -822,7 +822,7 @@ int main(int argc, char* argv[]) {
|
| void NetEQTest_GetCodec_and_PT(char* name,
|
| webrtc::NetEqDecoder* codec,
|
| int* PT,
|
| - int frameLen,
|
| + size_t frameLen,
|
| int* fs,
|
| int* bitrate,
|
| int* useRed) {
|
| @@ -887,14 +887,14 @@ void NetEQTest_GetCodec_and_PT(char* name,
|
| }
|
|
|
| int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| - int enc_frameSize,
|
| + size_t enc_frameSize,
|
| int bitrate,
|
| int sampfreq,
|
| int vad,
|
| - int numChannels) {
|
| + size_t numChannels) {
|
| int ok = 0;
|
|
|
| - for (int k = 0; k < numChannels; k++) {
|
| + for (size_t k = 0; k < numChannels; k++) {
|
| VAD_inst[k] = WebRtcVad_Create();
|
| if (!VAD_inst[k]) {
|
| printf("Error: Couldn't allocate memory for VAD instance\n");
|
| @@ -962,7 +962,7 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| WebRtcG729_EncoderInit(G729enc_inst[k], vad);
|
| if ((vad == 1) && (enc_frameSize != 80)) {
|
| printf("\nError - This simulation only supports VAD for G729 at "
|
| - "10ms packets (not %dms)\n", (enc_frameSize >> 3));
|
| + "10ms packets (not %" PRIuS "ms)\n", (enc_frameSize >> 3));
|
| }
|
| } else {
|
| printf("\nError - g729 is only developed for 8kHz \n");
|
| @@ -1018,7 +1018,7 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| }
|
| if ((vad == 1) && (enc_frameSize != 160)) {
|
| printf("\nError - This simulation only supports VAD for Speex at "
|
| - "20ms packets (not %dms)\n",
|
| + "20ms packets (not %" PRIuS "ms)\n",
|
| (enc_frameSize >> 3));
|
| vad = 0;
|
| }
|
| @@ -1049,7 +1049,7 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| }
|
| if ((vad == 1) && (enc_frameSize != 320)) {
|
| printf("\nError - This simulation only supports VAD for Speex at "
|
| - "20ms packets (not %dms)\n",
|
| + "20ms packets (not %" PRIuS "ms)\n",
|
| (enc_frameSize >> 4));
|
| vad = 0;
|
| }
|
| @@ -1238,8 +1238,7 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| "instance\n");
|
| exit(0);
|
| }
|
| - if (((enc_frameSize / 320) < 0) || ((enc_frameSize / 320) > 3) ||
|
| - ((enc_frameSize % 320) != 0)) {
|
| + if (((enc_frameSize / 320) > 3) || ((enc_frameSize % 320) != 0)) {
|
| printf("\nError - AMRwb must have frameSize of 20, 40 or 60ms\n");
|
| exit(0);
|
| }
|
| @@ -1320,7 +1319,8 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| bitrate);
|
| exit(0);
|
| }
|
| - WebRtcIsac_Control(ISAC_inst[k], bitrate, enc_frameSize >> 4);
|
| + WebRtcIsac_Control(ISAC_inst[k], bitrate,
|
| + static_cast<int>(enc_frameSize >> 4));
|
| } else {
|
| printf("\nError - iSAC only supports 480 or 960 enc_frameSize (30 or "
|
| "60 ms)\n");
|
| @@ -1379,7 +1379,8 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| "56000 bps (not %i)\n", bitrate);
|
| exit(0);
|
| }
|
| - WebRtcIsac_Control(ISACSWB_inst[k], bitrate, enc_frameSize >> 5);
|
| + WebRtcIsac_Control(ISACSWB_inst[k], bitrate,
|
| + static_cast<int>(enc_frameSize >> 5));
|
| } else {
|
| printf("\nError - iSAC SWB only supports 960 enc_frameSize (30 "
|
| "ms)\n");
|
| @@ -1424,8 +1425,8 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
|
| return (0);
|
| }
|
|
|
| -int NetEQTest_free_coders(webrtc::NetEqDecoder coder, int numChannels) {
|
| - for (int k = 0; k < numChannels; k++) {
|
| +int NetEQTest_free_coders(webrtc::NetEqDecoder coder, size_t numChannels) {
|
| + for (size_t k = 0; k < numChannels; k++) {
|
| WebRtcVad_Free(VAD_inst[k]);
|
| #if (defined(CODEC_CNGCODEC8) || defined(CODEC_CNGCODEC16) || \
|
| defined(CODEC_CNGCODEC32) || defined(CODEC_CNGCODEC48))
|
| @@ -1552,35 +1553,34 @@ int NetEQTest_free_coders(webrtc::NetEqDecoder coder, int numChannels) {
|
| return (0);
|
| }
|
|
|
| -int NetEQTest_encode(int coder,
|
| - int16_t* indata,
|
| - int frameLen,
|
| - unsigned char* encoded,
|
| - int sampleRate,
|
| - int* vad,
|
| - int useVAD,
|
| - int bitrate,
|
| - int numChannels) {
|
| - int cdlen = 0;
|
| +size_t NetEQTest_encode(int coder,
|
| + int16_t* indata,
|
| + size_t frameLen,
|
| + unsigned char* encoded,
|
| + int sampleRate,
|
| + int* vad,
|
| + int useVAD,
|
| + int bitrate,
|
| + size_t numChannels) {
|
| + size_t cdlen = 0;
|
| int16_t* tempdata;
|
| static int first_cng = 1;
|
| - int16_t tempLen;
|
| -
|
| + size_t tempLen;
|
| *vad = 1;
|
|
|
| // check VAD first
|
| if (useVAD) {
|
| *vad = 0;
|
|
|
| - int sampleRate_10 = 10 * sampleRate / 1000;
|
| - int sampleRate_20 = 20 * sampleRate / 1000;
|
| - int sampleRate_30 = 30 * sampleRate / 1000;
|
| - for (int k = 0; k < numChannels; k++) {
|
| + size_t sampleRate_10 = static_cast<size_t>(10 * sampleRate / 1000);
|
| + size_t sampleRate_20 = static_cast<size_t>(20 * sampleRate / 1000);
|
| + size_t sampleRate_30 = static_cast<size_t>(30 * sampleRate / 1000);
|
| + for (size_t k = 0; k < numChannels; k++) {
|
| tempLen = frameLen;
|
| tempdata = &indata[k * frameLen];
|
| int localVad = 0;
|
| /* Partition the signal and test each chunk for VAD.
|
| - All chunks must be VAD=0 to produce a total VAD=0. */
|
| + All chunks must be VAD=0 to produce a total VAD=0. */
|
| while (tempLen >= sampleRate_10) {
|
| if ((tempLen % sampleRate_30) == 0) { // tempLen is multiple of 30ms
|
| localVad |= WebRtcVad_Process(VAD_inst[k], sampleRate, tempdata,
|
| @@ -1607,7 +1607,7 @@ int NetEQTest_encode(int coder,
|
| if (!*vad) {
|
| // all channels are silent
|
| cdlen = 0;
|
| - for (int k = 0; k < numChannels; k++) {
|
| + for (size_t k = 0; k < numChannels; k++) {
|
| WebRtcCng_Encode(CNGenc_inst[k], &indata[k * frameLen],
|
| (frameLen <= 640 ? frameLen : 640) /* max 640 */,
|
| encoded, &tempLen, first_cng);
|
| @@ -1621,9 +1621,9 @@ int NetEQTest_encode(int coder,
|
| }
|
|
|
| // loop over all channels
|
| - int totalLen = 0;
|
| + size_t totalLen = 0;
|
|
|
| - for (int k = 0; k < numChannels; k++) {
|
| + for (size_t k = 0; k < numChannels; k++) {
|
| /* Encode with the selected coder type */
|
| if (coder == webrtc::kDecoderPCMu) { /*g711 u-law */
|
| #ifdef CODEC_G711
|
| @@ -1652,7 +1652,8 @@ int NetEQTest_encode(int coder,
|
| #endif
|
| #ifdef CODEC_ILBC
|
| else if (coder == webrtc::kDecoderILBC) { /*iLBC */
|
| - cdlen = WebRtcIlbcfix_Encode(iLBCenc_inst[k], indata, frameLen, encoded);
|
| + cdlen = static_cast<size_t>(std::max(
|
| + WebRtcIlbcfix_Encode(iLBCenc_inst[k], indata, frameLen, encoded), 0));
|
| }
|
| #endif
|
| #if (defined(CODEC_ISAC) || \
|
| @@ -1660,28 +1661,30 @@ int NetEQTest_encode(int coder,
|
| // NETEQ_ISACFIX_CODEC
|
| else if (coder == webrtc::kDecoderISAC) { /*iSAC */
|
| int noOfCalls = 0;
|
| - cdlen = 0;
|
| - while (cdlen <= 0) {
|
| + int res = 0;
|
| + while (res <= 0) {
|
| #ifdef CODEC_ISAC /* floating point */
|
| - cdlen =
|
| + res =
|
| WebRtcIsac_Encode(ISAC_inst[k], &indata[noOfCalls * 160], encoded);
|
| #else /* fixed point */
|
| - cdlen = WebRtcIsacfix_Encode(ISAC_inst[k], &indata[noOfCalls * 160],
|
| - encoded);
|
| + res = WebRtcIsacfix_Encode(ISAC_inst[k], &indata[noOfCalls * 160],
|
| + encoded);
|
| #endif
|
| noOfCalls++;
|
| }
|
| + cdlen = static_cast<size_t>(res);
|
| }
|
| #endif
|
| #ifdef CODEC_ISAC_SWB
|
| else if (coder == webrtc::kDecoderISACswb) { /* iSAC SWB */
|
| int noOfCalls = 0;
|
| - cdlen = 0;
|
| - while (cdlen <= 0) {
|
| - cdlen = WebRtcIsac_Encode(ISACSWB_inst[k], &indata[noOfCalls * 320],
|
| - encoded);
|
| + int res = 0;
|
| + while (res <= 0) {
|
| + res = WebRtcIsac_Encode(ISACSWB_inst[k], &indata[noOfCalls * 320],
|
| + encoded);
|
| noOfCalls++;
|
| }
|
| + cdlen = static_cast<size_t>(res);
|
| }
|
| #endif
|
| indata += frameLen;
|
| @@ -1757,11 +1760,11 @@ int makeRedundantHeader(unsigned char* rtp_data,
|
| return rtpPointer - rtp_data; // length of header in bytes
|
| }
|
|
|
| -int makeDTMFpayload(unsigned char* payload_data,
|
| - int Event,
|
| - int End,
|
| - int Volume,
|
| - int Duration) {
|
| +size_t makeDTMFpayload(unsigned char* payload_data,
|
| + int Event,
|
| + int End,
|
| + int Volume,
|
| + int Duration) {
|
| unsigned char E, R, V;
|
| R = 0;
|
| V = (unsigned char)Volume;
|
| @@ -1778,11 +1781,11 @@ int makeDTMFpayload(unsigned char* payload_data,
|
| return (4);
|
| }
|
|
|
| -void stereoDeInterleave(int16_t* audioSamples, int numSamples) {
|
| +void stereoDeInterleave(int16_t* audioSamples, size_t numSamples) {
|
| int16_t* tempVec;
|
| int16_t* readPtr, *writeL, *writeR;
|
|
|
| - if (numSamples <= 0)
|
| + if (numSamples == 0)
|
| return;
|
|
|
| tempVec = (int16_t*)malloc(sizeof(int16_t) * numSamples);
|
| @@ -1797,7 +1800,7 @@ void stereoDeInterleave(int16_t* audioSamples, int numSamples) {
|
| writeR = &audioSamples[numSamples / 2];
|
| readPtr = tempVec;
|
|
|
| - for (int k = 0; k < numSamples; k += 2) {
|
| + for (size_t k = 0; k < numSamples; k += 2) {
|
| *writeL = *readPtr;
|
| readPtr++;
|
| *writeR = *readPtr;
|
| @@ -1809,7 +1812,7 @@ void stereoDeInterleave(int16_t* audioSamples, int numSamples) {
|
| free(tempVec);
|
| }
|
|
|
| -void stereoInterleave(unsigned char* data, int dataLen, int stride) {
|
| +void stereoInterleave(unsigned char* data, size_t dataLen, size_t stride) {
|
| unsigned char* ptrL, *ptrR;
|
| unsigned char temp[10];
|
|
|
|
|