code: public void seekTo(long seekToSamples) throws IOException
      {
      	// Seek with SeekTable if any provided
  		if (seekTable!=null)
  		{
  			for (int s=0; s < seekTable.numberOfPoints(); s++)
  			{
  				SeekPoint p = seekTable.getSeekPoint(s);
  				samplesDecoded = p.getSampleNumber();
  				if (samplesDecoded >= seekToSamples)
  				{
  					if (s>0) p = seekTable.getSeekPoint(s-1);
  					samplesDecoded = p.getSampleNumber();
  					bitStream.skip(p.getStreamOffset());
  					break;
  				}
  			}
  		}
  		while (samplesDecoded < seekToSamples)
  		{
          	try
          	{
  				findFrameSync();
  	        	readFrame();
  	        	if (frame!=null && frame.header!=null)
  	        	{
  	        		samplesDecoded = frame.header.sampleNumber;
  	        		if (samplesDecoded + frame.header.blockSize >= seekToSamples) break;
  	        	}
          	}
          	catch (Throwable ex)
          	{
          		// We will recieve DecoderExceptions if we did seek
          		// I would expect that seeking will reach a sync point
          	}
  		}
  	}
docs: This will do a forward seek - backwards is not possible yet
  because we would need to reset the inputstream
  @since 18.02.2012
  @param seekToSamples