fixed random values being obtained from PCM obtainer

This commit is contained in:
Harrison Deng 2018-08-17 19:44:12 -05:00
parent 50bc2bfdea
commit fa8dd9622f

View File

@ -62,7 +62,8 @@ public class PCMObtainer implements Observer, PCMSystem {
df.setRoundingMode(RoundingMode.HALF_EVEN); df.setRoundingMode(RoundingMode.HALF_EVEN);
} }
private synchronized void calcPCMData() { private synchronized boolean calcPCMData() {
boolean empty = true;
short chanVal; short chanVal;
for (int sid = 0; sid < PCM.length && sid < playingBuffer.remaining(); sid++) { for (int sid = 0; sid < PCM.length && sid < playingBuffer.remaining(); sid++) {
PCM[sid] = 0; PCM[sid] = 0;
@ -72,8 +73,16 @@ public class PCMObtainer implements Observer, PCMSystem {
} }
} }
PCM[sid] /= Short.MAX_VALUE + 1f; PCM[sid] /= Short.MAX_VALUE + 1f;
}
if (PCM[sid] != 0) {
empty = false;
}
}
return empty;
}
private void checkValidityOfPlaybackBuffer() {
// Begin comparison // Begin comparison
buffer.rewind(); buffer.rewind();
if (intermediateBuffer.compareTo(buffer) != 0) { if (intermediateBuffer.compareTo(buffer) != 0) {
@ -160,9 +169,11 @@ public class PCMObtainer implements Observer, PCMSystem {
timeOfLastRead = TimeUtils.millis(); timeOfLastRead = TimeUtils.millis();
//calculate current pcm data and notify that there is new data //calculate current pcm data and notify that there is new data
calcPCMData(); checkValidityOfPlaybackBuffer();
fft.realForward(PCM); updated = !calcPCMData();
updated = true; if (updated) {
fft.realForward(PCM);
}
windowsRead++; windowsRead++;
//contemplate synchronization //contemplate synchronization