@Override public AudioFrame provide() { AudioFrame frame = audioFrames.poll(); if (frame == null) { return fetchPendingTerminator(); } return filterFrame(frame); }
@Override public boolean provide(MutableAudioFrame targetFrame, long timeout, TimeUnit unit) throws TimeoutException, InterruptedException { return passToMutable(provide(timeout, unit), targetFrame); }
@Override public AudioFrame provide(long timeout, TimeUnit unit) throws TimeoutException, InterruptedException { AudioFrame frame = audioFrames.poll(); if (frame == null) { AudioFrame terminator = fetchPendingTerminator(); if (terminator != null) { return terminator; } if (timeout > 0) { frame = audioFrames.poll(timeout, unit); if (frame == null || frame.isTerminator()) { terminator = fetchPendingTerminator(); return terminator != null ? terminator : frame; } } } else if (frame.isTerminator()) { fetchPendingTerminator(); return frame; } return filterFrame(frame); }
@Override public boolean provide(MutableAudioFrame targetFrame) { return passToMutable(provide(), targetFrame); }