code: protected int readSamples ()
          throws IOException
      {
          int samples;
          while ((samples = _dsp.synthesis_pcmout(_pcm, _offsets)) <= 0) {
              if (samples == 0 && !readPacket()) {
                  return 0;
              }
              if (_block.synthesis(_packet) == 0) {
                  _dsp.synthesis_blockin(_block);
              }
          }
          return samples;
      }
docs: Reads a buffer's worth of samples.
  
  @return the number of samples read, or zero if we've reached the end of the stream.