@Override public boolean canProvide() { if (lastFrame == null) lastFrame = audioPlayer.provide(); return lastFrame != null; }
@Override public boolean isReady() { if (lastFrame == null) { lastFrame = audioPlayer.provide(); } return lastFrame != null; }
@Override public boolean canProvide() { if (lastFrame == null) { lastFrame = audioPlayer.provide(); } return lastFrame != null; }
@Override public boolean canProvide() { if (lastFrame == null) { lastFrame = audioPlayer.provide(); } return lastFrame != null; }
@Override public boolean canProvide() { lastFrame = audioPlayer.provide(); return lastFrame != null; }
@Override public boolean provide(MutableAudioFrame targetFrame) { synchronized (lock) { if (streamCursor != null) { throw new UnsupportedOperationException(); } return fallback.provide(targetFrame); } }
@Override public boolean provide(MutableAudioFrame targetFrame, long timeout, TimeUnit unit) throws TimeoutException, InterruptedException { synchronized (lock) { if (streamCursor != null) { throw new UnsupportedOperationException(); } return fallback.provide(targetFrame, timeout, unit); } }
@Override public AudioFrame provide(long timeout, TimeUnit unit) throws TimeoutException, InterruptedException { synchronized (lock) { if (streamCursor != null) { throw new UnsupportedOperationException(); } return fallback.provide(timeout, unit); } }
@Override public byte[] provide20MsAudio() { if (lastFrame == null) lastFrame = audioPlayer.provide(); byte[] data = lastFrame != null ? lastFrame.getData() : null; lastFrame = null; return data; }
@Override public byte[] provide() { if (lastFrame == null) { lastFrame = audioPlayer.provide(); } byte[] data = lastFrame != null ? lastFrame.getData() : null; lastFrame = null; return data; }
@Override public byte[] provide20MsAudio() { if (lastFrame == null) { lastFrame = audioPlayer.provide(); } byte[] data = lastFrame != null ? lastFrame.getData() : null; lastFrame = null; return data; }
@Override public byte[] provide20MsAudio() { if (lastFrame == null) { lastFrame = audioPlayer.provide(); } byte[] data = lastFrame != null ? lastFrame.getData(): null; lastFrame = null; return data; }
private void attemptRetrieveFrame() throws TimeoutException, InterruptedException { AudioFrame frame = player.provide(timeout, TimeUnit.MILLISECONDS); if (frame != null) { if (!format.equals(frame.getFormat())) { throw new IllegalStateException("Frame read from the player uses a different format than expected."); } addFrame(frame.getData()); } else if (!provideSilence) { Thread.sleep(10); } }
private synchronized AudioFrame getFrame(Cursor cursor) { if (destroyed) { return null; } if (cursor.absoluteOffset < 0 || cursor.absoluteOffset < absoluteOffset) { cursor.absoluteOffset = getFreshOffset(); } if (cursor.absoluteOffset >= absoluteOffset + frameCount) { AudioFrame newFrame = trackPlayer.provide(); if (newFrame == null) { return null; } absoluteOffset++; frameCount = Math.min(frameCount + 1, ringBuffer.length); int framePosition = getRelativeOffset(absoluteOffset + frameCount - 1); ringBuffer[framePosition] = newFrame; cursor.absoluteOffset++; return newFrame; } else { int framePosition = getRelativeOffset(cursor.absoluteOffset); cursor.absoluteOffset++; return ringBuffer[framePosition]; } }
public static long consumeTrack(AudioPlayer player) throws Exception { ByteBuffer buffer = ByteBuffer.allocate(960 * 2 * 2); MutableAudioFrame frame = new MutableAudioFrame(); frame.setBuffer(buffer); CRC32 crc = new CRC32(); while (player.getPlayingTrack() != null && player.provide(frame, 10, TimeUnit.SECONDS)) { buffer.flip(); crc.update(buffer.array(), buffer.position(), buffer.remaining()); } return crc.getValue(); } }
@Override public AudioFrame provide() { synchronized (lock) { if (streamCursor != null) { AudioFrame frame = streamCursor.provide(); if (frame == null) { if (streamCursor.getTrack() == null) { detachStream(); } else { return null; } } else { return frame; } } return fallback.provide(); } }