code: @Override
      public AudioInputStream getAudioInputStream(InputStream inputStream)
              throws UnsupportedAudioFileException, IOException {
          LOG.log(Level.FINE, "TAudioFileReader.getAudioInputStream(InputStream): begin (class: {0})", getClass().getSimpleName());
          long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED;
          AudioInputStream audioInputStream = null;
          if (!inputStream.markSupported()) {
              inputStream = new BufferedInputStream(inputStream, getMarkLimit());
          }
          inputStream.mark(getMarkLimit());
          try {
              audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes);
          } catch (UnsupportedAudioFileException e) {
              inputStream.reset();
              throw e;
          } catch (IOException e) {
              try {
                  inputStream.reset();
              } catch (IOException e2) {
                  if (e2.getCause() == null) {
                      e2.initCause(e);
                      throw e2;
                  }
              }
              throw e;
          }
          LOG.log(Level.FINE, "TAudioFileReader.getAudioInputStream(InputStream): end");
          return audioInputStream;
      }
docs: Get an AudioInputStream object for an InputStream. This method calls
  getAudioInputStream(InputStream, long). Subclasses should not override
  this method unless there are really severe reasons. Normally, it is
  sufficient to implement getAudioFileFormat(InputStream, long) and perhaps
  override getAudioInputStream(InputStream, long).
  
  @param inputStream	the stream to read from.
  @return	an AudioInputStream instance containing the audio data from this
  stream.
  @throws javax.sound.sampled.UnsupportedAudioFileException
  @throws java.io.IOException