pollAnalyzerFrame method
Implementation
Float32List pollAnalyzerFrame({int? maxSamples}) {
if (_engine == ffi.nullptr) {
return Float32List(0);
}
final size = maxSamples ?? getAnalyzerFrameSize();
if (size <= 0) {
return Float32List(0);
}
if (_analyzerBufferPtr == null || _analyzerBufferCapacity < size) {
if (_analyzerBufferPtr != null && _analyzerBufferPtr != ffi.nullptr) {
_freePtr(_analyzerBufferPtr!.cast<ffi.Void>());
}
_analyzerBufferCapacity = size < 4096 ? 4096 : size;
_analyzerBufferPtr =
_malloc(_analyzerBufferCapacity * ffi.sizeOf<ffi.Float>())
.cast<ffi.Float>();
}
final ptr = _analyzerBufferPtr!;
final copied = _pollAnalyzerFrame(_engine, ptr, size);
if (copied <= 0) {
return Float32List(0);
}
final src = ptr.asTypedList(copied);
return Float32List.fromList(src);
}