secondary backed array to get previous windows. Not sure whether or not to use.

This commit is contained in:
Harrison Deng 2018-01-10 23:53:51 -06:00
parent 03966d124a
commit 193f972d01

View File

@ -5,6 +5,7 @@ import static org.lwjgl.openal.AL10.*;
import java.nio.ByteBuffer;
import java.nio.ShortBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.openal.AL11;
import com.badlogic.gdx.Gdx;
@ -25,6 +26,8 @@ public class Visualizer extends Widget implements Disposable {
private boolean updatePositioning = true;
private boolean mmSet;
private MusicManager mm;
private ShortBuffer prevBuffer;
private ShortBuffer compareBuffer;
private ShortBuffer buffer;
private int sourceID;
private float visRefreshRate = 1f/60f;
@ -81,18 +84,45 @@ public class Visualizer extends Widget implements Disposable {
public void calcPCMData() {
short chanVal;
int bufferPosOffset = 0;
if (mm.playbackIndexUpdate() != readWindowIndex) {
updateBufferPosition();
bufferPosOffset = updateBufferPosition();
if (bufferPosOffset < 0) {
prevBuffer.position(prevBuffer.limit()+bufferPosOffset);
}
}
for (int sid = 0; sid < vis.getAudioPCM().length && sid < buffer.remaining(); sid++) {
for (int channel = 0; channel < mm.getChannelCount(); channel ++) {
if (vis.getAudioPCM()[sid] < (chanVal = buffer.get())) {
vis.getAudioPCM()[sid] = chanVal;
if (prevBuffer.position() < prevBuffer.limit()) {
if (vis.getAudioPCM()[sid] < (chanVal = prevBuffer.get())) {
vis.getAudioPCM()[sid] = chanVal;
}
} else {
if (vis.getAudioPCM()[sid] < (chanVal = buffer.get())) {
vis.getAudioPCM()[sid] = chanVal;
}
}
}
vis.getAudioPCM()[sid] /= Short.MAX_VALUE+1f;
}
int originalPos = buffer.position();
buffer.rewind();
compareBuffer.rewind();
if (compareBuffer.compareTo(buffer) != 0) {
prevBuffer.clear();
prevBuffer.put(compareBuffer);
System.out.println("Buffer switched: " + prevBuffer.get(5) + "-" + buffer.get(5) + "-" + compareBuffer.get(5));
} else {
}
compareBuffer.clear();
compareBuffer.put(buffer);
compareBuffer.flip();
buffer.position(originalPos);
readWindowIndex++;
}
@ -103,7 +133,6 @@ public class Visualizer extends Widget implements Disposable {
buffer.position(pos);
} catch (IllegalArgumentException iae) {
buffer.position(0);
Gdx.app.error("BufferPosition", iae + " position was " + pos);
}
return pos;
}
@ -116,6 +145,20 @@ public class Visualizer extends Widget implements Disposable {
} catch (ReflectionException e) {
e.printStackTrace();
}
int originalPos = buffer.position();
prevBuffer = ShortBuffer.allocate(buffer.capacity());
buffer.rewind();
prevBuffer.put(buffer);
prevBuffer.flip();
compareBuffer = ShortBuffer.allocate(buffer.capacity());
buffer.rewind();
compareBuffer.put(buffer);
compareBuffer.flip();
buffer.position(originalPos);
this.mm = mm;
mmSet = false;
}