//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: @Override public AudioFrame provide(long timeout, TimeUnit unit) throws TimeoutException, InterruptedException public AudioFrame provide(long timeout, TimeUnit unit) { AudioFrame frame = frameBuffer.provide(timeout, unit); processProvidedFrame(frame); return(frame); }
public AudioFrame provide() { AudioFrame frame = frameBuffer.provide(); processProvidedFrame(frame); return(frame); }
public AudioFrame provide(long timeout, TimeUnit unit) { AudioFrame frame = provideDirectly(timeout, unit); if (outputHook != null) { frame = outputHook.outgoingFrame(this, frame); } return(frame); }
private void processProvidedFrame(AudioFrame frame) { if (frame != null && !frame.Terminator) { lastFrameTimecode.set(frame.timecode); if (pendingSeek.get() == NO_SEEK && !frameBuffer.hasClearOnInsert()) { markerTracker.checkPlaybackTimecode(frame.timecode); } } }
private AudioFrame provideShadowFrame() { InternalAudioTrack shadow = shadowTrack; AudioFrame frame = null; if (shadow != null) { frame = shadow.provide(); if (frame != null && frame.Terminator) { shadowTrack = null; frame = null; } } return(frame); }
/// <summary> /// Provide an audio frame bypassing hooks. </summary> /// <param name="timeout"> Specifies the maximum time to wait for data. Pass 0 for non-blocking mode. </param> /// <param name="unit"> Specifies the time unit of the maximum wait time. </param> /// <returns> An audio frame if available, otherwise null </returns> public AudioFrame provideDirectly(long timeout, TimeUnit unit) { InternalAudioTrack track; lastRequestTime = DateTimeHelperClass.CurrentUnixTimeMillis(); if (timeout == 0 && paused.get()) { return(null); } while ((track = activeTrack) != null) { AudioFrame frame = timeout > 0 ? track.provide(timeout, unit) : track.provide(); if (frame != null) { lastReceiveTime = nanoTime(); shadowTrack = null; if (frame.Terminator) { handleTerminator(track); continue; } } else if (timeout == 0) { checkStuck(track); frame = provideShadowFrame(); } return(frame); } return(null); }