code: protected boolean populateBuffer (Buffer buffer)
      {
          if (_abuf == null) {
              _abuf = ByteBuffer.allocateDirect(getBufferSize()).order(ByteOrder.nativeOrder());
          }
          _abuf.clear();
          int read = 0;
          try {
              read = Math.max(populateBuffer(_abuf), 0);
          } catch (IOException e) {
              log.warning("Error reading audio stream [error=" + e + "].");
          }
          if (read <= 0) {
              return false;
          }
          _abuf.rewind().limit(read);
          buffer.setData(getFormat(), _abuf, getFrequency());
          return true;
      }
docs: Populates the identified buffer with as much data as it can hold.
  
  @return true if data was read into the buffer and it should be enqueued, false if the end of
  the stream has been reached and no data was read into the buffer