Hi an alle,
ich muss eine Wave Datei mit den ANSI C Dateifunktionen auslesen und dann den Datenteil in 160b große Blöcke splitten und diese an ein RT-Protocol zu hängen und an ein VOIP Gerät verschicken. Vorab werden die Daten noch encodiert...(GSM, aLaw, uLaw)
Ich habe das Problem, den Datenteil korrekt zu splitten...
Hier mal mein Code wie ich es bisher mache...
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//Header wird bereits vorher in anderer Methode ausgelesen
int nWaveSize = szDataSize / szBlockAlign;
short *pData;
pData =(short*)malloc(2*nWaveSize);
for(int i = 0; i < nWaveSize; i++)
{
fread(&pData[i], 1, 1, pWaveFile);
}
fclose(pWaveFile);
int AnzSamples = nWaveSize / 160;
int nOffset = 0;
for(int x = 0; x < AnzSamples; x++)
{
short* pBuffer = new short[160];
int nIndex = 0;
while((nOffset + 160) < nWaveSize)
{
for(int y = 0; y < 160; y++)
}
pBuffer[nIndex] = (pData[nOffset] + pData[nOffset + 1])/2; //Das hier ist sicher verkehrt...
//habe hier nur versucht da ja ein Sample aus 2 byte besteht diese zusammenzufassen...
}
//buffer wird dann zum Versand genommen, danach geleert und mit
//den neuen Daten gefüllt.
|
Allerdings hab ich es jetzt schon auf verschiedene Arten probiert. am Phone kommt ausschließlich Rauschen an...