git-svn-id: http://webrtc.googlecode.com/svn/trunk@4 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
173
modules/audio_coding/codecs/iSAC/fix/test/ISACHist.cpp
Normal file
173
modules/audio_coding/codecs/iSAC/fix/test/ISACHist.cpp
Normal file
@@ -0,0 +1,173 @@
|
||||
/*
|
||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
//#include "isac_codec.h"
|
||||
//#include "isac_structs.h"
|
||||
#include "isacfix.h"
|
||||
|
||||
|
||||
#define NUM_CODECS 1
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
FILE *inFileList;
|
||||
FILE *audioFile;
|
||||
FILE *outFile;
|
||||
char audioFileName[501];
|
||||
short audioBuff[960];
|
||||
short encoded[600];
|
||||
short startAudio;
|
||||
short encodedLen;
|
||||
ISACFIX_MainStruct *isac_struct;
|
||||
unsigned long int hist[601];
|
||||
|
||||
// reset the histogram
|
||||
for(short n=0; n < 601; n++)
|
||||
{
|
||||
hist[n] = 0;
|
||||
}
|
||||
|
||||
|
||||
inFileList = fopen(argv[1], "r");
|
||||
if(inFileList == NULL)
|
||||
{
|
||||
printf("Could not open the input file.\n");
|
||||
getchar();
|
||||
exit(-1);
|
||||
}
|
||||
outFile = fopen(argv[2], "w");
|
||||
if(outFile == NULL)
|
||||
{
|
||||
printf("Could not open the histogram file.\n");
|
||||
getchar();
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
short frameSizeMsec = 30;
|
||||
if(argc > 3)
|
||||
{
|
||||
frameSizeMsec = atoi(argv[3]);
|
||||
}
|
||||
|
||||
short audioOffset = 0;
|
||||
if(argc > 4)
|
||||
{
|
||||
audioOffset = atoi(argv[4]);
|
||||
}
|
||||
int ok;
|
||||
ok = WebRtcIsacfix_Create(&isac_struct);
|
||||
// instantaneous mode
|
||||
ok |= WebRtcIsacfix_EncoderInit(isac_struct, 1);
|
||||
// is not used but initialize
|
||||
ok |= WebRtcIsacfix_DecoderInit(isac_struct);
|
||||
ok |= WebRtcIsacfix_Control(isac_struct, 32000, frameSizeMsec);
|
||||
|
||||
if(ok != 0)
|
||||
{
|
||||
printf("\nProblem in seting up iSAC\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
while( fgets(audioFileName, 500, inFileList) != NULL )
|
||||
{
|
||||
// remove trailing white-spaces and any Cntrl character
|
||||
if(strlen(audioFileName) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
short n = strlen(audioFileName) - 1;
|
||||
while(isspace(audioFileName[n]) || iscntrl(audioFileName[n]))
|
||||
{
|
||||
audioFileName[n] = '\0';
|
||||
n--;
|
||||
if(n < 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// remove leading spaces
|
||||
if(strlen(audioFileName) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
n = 0;
|
||||
while((isspace(audioFileName[n]) || iscntrl(audioFileName[n])) &&
|
||||
(audioFileName[n] != '\0'))
|
||||
{
|
||||
n++;
|
||||
}
|
||||
memmove(audioFileName, &audioFileName[n], 500 - n);
|
||||
if(strlen(audioFileName) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
audioFile = fopen(audioFileName, "rb");
|
||||
if(audioFile == NULL)
|
||||
{
|
||||
printf("\nCannot open %s!!!!!\n", audioFileName);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if(audioOffset > 0)
|
||||
{
|
||||
fseek(audioFile, (audioOffset<<1), SEEK_SET);
|
||||
}
|
||||
|
||||
while(fread(audioBuff, sizeof(short), (480*frameSizeMsec/30), audioFile) >= (480*frameSizeMsec/30))
|
||||
{
|
||||
startAudio = 0;
|
||||
do
|
||||
{
|
||||
encodedLen = WebRtcIsacfix_Encode(isac_struct,
|
||||
&audioBuff[startAudio], encoded);
|
||||
startAudio += 160;
|
||||
} while(encodedLen == 0);
|
||||
|
||||
if(encodedLen < 0)
|
||||
{
|
||||
printf("\nEncoding Error!!!\n");
|
||||
exit(0);
|
||||
}
|
||||
hist[encodedLen]++;
|
||||
}
|
||||
fclose(audioFile);
|
||||
}
|
||||
fclose(inFileList);
|
||||
unsigned long totalFrames = 0;
|
||||
for(short n=0; n < 601; n++)
|
||||
{
|
||||
totalFrames += hist[n];
|
||||
fprintf(outFile, "%10lu\n", hist[n]);
|
||||
}
|
||||
fclose(outFile);
|
||||
|
||||
short topTenCntr = 0;
|
||||
printf("\nTotal number of Frames %lu\n\n", totalFrames);
|
||||
printf("Payload Len # occurences\n");
|
||||
printf("=========== ============\n");
|
||||
|
||||
for(short n = 600; (n >= 0) && (topTenCntr < 10); n--)
|
||||
{
|
||||
if(hist[n] > 0)
|
||||
{
|
||||
topTenCntr++;
|
||||
printf(" %3d %3d\n", n, hist[n]);
|
||||
}
|
||||
}
|
||||
WebRtcIsacfix_Free(isac_struct);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user