Small optimization
This commit is contained in:
@@ -21,16 +21,21 @@ class AudioAnalyzer {
|
||||
}
|
||||
|
||||
public function analyze(startPos:Float, endPos:Float):Float {
|
||||
var bytesStartPos:Int = Math.floor(startPos * __timeMulti / 4000 / buffer.bitsPerSample) * buffer.bitsPerSample;
|
||||
var bytesEndPos:Int = Math.floor(endPos * __timeMulti / 4000 / buffer.bitsPerSample) * buffer.bitsPerSample;
|
||||
var bitsPerSample = buffer.bitsPerSample;
|
||||
var multi = __timeMulti / 4000 / bitsPerSample;
|
||||
var bytesStartPos:Int = Math.floor(startPos * multi) * bitsPerSample;
|
||||
var bytesEndPos:Int = Math.floor(endPos * multi) * bitsPerSample;
|
||||
|
||||
bytesStartPos -= bytesStartPos % buffer.bitsPerSample;
|
||||
bytesEndPos -= bytesEndPos % buffer.bitsPerSample;
|
||||
bytesStartPos -= bytesStartPos % bitsPerSample;
|
||||
bytesEndPos -= bytesEndPos % bitsPerSample;
|
||||
|
||||
var dataBuffer = buffer.data.buffer;
|
||||
|
||||
var maxByte:Int = 0;
|
||||
for(i in 0...Math.floor((bytesEndPos - bytesStartPos) / buffer.bitsPerSample)) {
|
||||
var byte:Int = buffer.data.buffer.get(bytesStartPos + (i * buffer.bitsPerSample))
|
||||
| (buffer.data.buffer.get(bytesStartPos + (i * buffer.bitsPerSample) + 1) << 8);
|
||||
for(i in 0...Math.floor((bytesEndPos - bytesStartPos) / bitsPerSample)) {
|
||||
var bytePos = bytesStartPos + (i * bitsPerSample);
|
||||
// What if bitsPerSample is 8? or 32? or 64? -Ne_Eo
|
||||
var byte:Int = dataBuffer.get(bytePos) | (dataBuffer.get(bytePos + 1) << 8);
|
||||
if (byte > 256 * 128) byte -= 256 * 256;
|
||||
if (maxByte < byte) maxByte = byte;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user