Evo funkcije koja izracunava tapsanje:
Code:
DWORD IzvrsiSveProracune( PBYTE pSaveBuffer, DWORD dwVelicina ){
DWORD dwR = 0;
DWORD dwTemp = 0;
int iPrvi = 0, iPoslednji = 0;
bool bFunkcijaSeSpusta;
int iSastavljenBroj;
// za poslednji broj:
// iSastavljenBroj = pSaveBuffer[dwVelicina-2]+pSaveBuffer[dwVelicina-1]<<8;
for( dwTemp = 1; dwTemp < dwVelicina -1; dwTemp += 2 ){
iSastavljenBroj = pSaveBuffer[dwTemp -1] + pSaveBuffer[dwTemp]<<8;
if(iSastavljenBroj > 0){ // ako nije tisina:
iPrvi = iSastavljenBroj;
if( iPrvi > iPoslednji ){
// povecavaj spic
bFunkcijaSeSpusta = false;
}
if( iPrvi < iPoslednji && !bFunkcijaSeSpusta){
// Funkcija se spusta, spic je prosao i to u iPoslednji...
dwR += iPoslednji;
bFunkcijaSeSpusta = true;
}
}
iPoslednji = iPrvi;
}
dwR = dwR / dwVelicina;
return dwR;
}
Problem je sto ne radi bas onako kako bi trebala... :( U memoriji ce sve biti snimljeno u bajtovima, a ja to posle moram da prebacim u dva bajta (signed int) i da uzimam u obzir samo amplitude preko nule...
Uz poruku sam okacio obnovljen kod za 16-bitno snimanje...
Hvala na odgovoru !
P.S. CoolEdit mi ne moze odraditi posao, posto rezultat ide direktno na bimer, kao u jeftinim TV emisijama...