code: private BaseVideoFrame	getAvailableVideoFrame() {
  		BaseVideoFrame frame = null;
  
  		// block until a video frame is available
  		synchronized (availableVideoFrames) {
  			while (availableVideoFrames.size() == 0)
  				try {
  					availableVideoFrames.wait();
  				} catch (InterruptedException e) {
  					throw new StateException("Interrupted while waiting for a video frame", e);
  				}
  
  				// get the video frame
  				frame = availableVideoFrames.remove(0);
  		}
  
  		return frame;
  	}
docs: This method is called as part of {@link #getVideoFrame()}. It retrieves a video
  frame marked as available (recycled). if no frame is available, this method
  will block. If interrupted while waiting, a {@link StateException} will
  be thrown
  @return an available video frame.
  @thrown {@link StateException} if interrupted while waiting.