@Override
	public void seek(long pFrame) throws AudioException {
		if ( this.mClosed ) {
			throw new IllegalStateException( "The Audio is not opened" );
		}
		if ( !this.canSeek() ) {
			throw new AudioException( "can't seek on this audio" );
		}
		long pFramesToSkip = pFrame - this.mFramePosition;
		if ( pFramesToSkip < 0 ) {
			//reset and skip to pFrame
			try {
				this.mFramePosition = 0;
				this.mAudioInputStream.reset();
			}
			catch (IOException e) {
				throw new AudioException(
						"couldn't reset the AudioInputStream",
						e
				);
			}
			this.skip( pFrame );
		}
		else {
			this.skip( pFramesToSkip );
		}
	}