code: func (s *stream) Seek(offset int64, whence int) (int64, error) {
  	switch whence {
  	case io.SeekStart:
  		offset = offset + s.headerSize
  	case io.SeekCurrent:
  	case io.SeekEnd:
  		offset = s.headerSize + s.dataSize + offset
  		whence = io.SeekStart
  	}
  	n, err := s.src.Seek(offset, whence)
  	if err != nil {
  		return 0, err
  	}
  	if n-s.headerSize < 0 {
  		return 0, fmt.Errorf("wav: invalid offset")
  	}
  	s.remaining = s.dataSize - (n - s.headerSize)
  	// There could be a tail in wav file.
  	if s.remaining < 0 {
  		s.remaining = 0
  		return s.dataSize, nil
  	}
  	return n - s.headerSize, nil
  }
docs: // Seek is implementation of io.Seeker's Seek.