Index: CLAM/src/Tools/AudioFileIO/MpegAudioStream.cxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/MpegAudioStream.cxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/MpegAudioStream.cxx	(working copy)
@@ -161,6 +161,11 @@
 		mEOFReached = mBitstream.EOS() && mDecodeBuffer[0].empty();
 	}
 
+	void MpegAudioStream::SeekToTime( unsigned framesStart )
+	{
+		CLAM_WARNING( false, "CLAM does not seek within Mpeg Audio!!!" );
+	}
+
 	void MpegAudioStream::ConsumeDecodedSamples()
 	{
 		TSize samplesToRead = mInterleavedData.Size()/mEncodedChannels;
Index: CLAM/src/Tools/AudioFileIO/MpegAudioStream.hxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/MpegAudioStream.hxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/MpegAudioStream.hxx	(working copy)
@@ -55,6 +55,7 @@
 		void AudioFileToNative( const AudioFile& file );
 		void DiskToMemoryTransfer();
 		void MemoryToDiskTransfer();
+		void SeekToTime( unsigned framesStart );
 
 		void ConsumeDecodedSamples();
 
Index: CLAM/src/Tools/AudioFileIO/PCMAudioStream.cxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/PCMAudioStream.cxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/PCMAudioStream.cxx	(working copy)
@@ -161,7 +161,16 @@
 		CLAM_DEBUG_ASSERT( samplesWritten == mFramesToWrite,
 			     "Could not write all samples to disk!" );
 	}
+	
+	void PCMAudioStream::SeekToTime( unsigned framesStart )
+	{
+		// TODO: return value...
 
+		// sf_seek takes (number of seconds) * (sample rate) as time position
+		unsigned sfFrames = framesStart / 1000 * mNativeFileParams.samplerate;
+		sf_seek( mFileHandle, sfFrames, SEEK_SET);
+	}
+
 }
 }
 
Index: CLAM/src/Tools/AudioFileIO/PCMAudioStream.hxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/PCMAudioStream.hxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/PCMAudioStream.hxx	(working copy)
@@ -56,6 +56,7 @@
 		void AudioFileToNative( const AudioFile& file );
 		void DiskToMemoryTransfer();
 		void MemoryToDiskTransfer();		
+		void SeekToTime( unsigned framesStart );
 
 	protected:
 		SNDFILE*            mFileHandle;
Index: CLAM/src/Tools/AudioFileIO/AudioCodecs_Stream.cxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/AudioCodecs_Stream.cxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/AudioCodecs_Stream.cxx	(working copy)
@@ -27,7 +27,7 @@
 namespace AudioCodecs
 {
 	Stream::Stream()
-		: mStrictStreaming( true ), mFramesLastRead( 0 )
+		: mStrictStreaming( true ), mFramesStart( 0 ), mFramesLastRead( 0 )
 	{
 	}
 
@@ -121,6 +121,12 @@
 		}
 	}
 
+	void Stream::SetFramesStart( unsigned framesStart )
+	{
+		mFramesStart = framesStart;
+		SeekToTime( mFramesStart );
+	}
+
 	bool Stream::ReadData( int channel, TData* ptr, TSize howmany )
 	{
 		CheckForFileReading( howmany );
@@ -135,10 +141,10 @@
 			const TData* end = mInterleavedData.GetPtr() + mInterleavedData.Size();
 			const int stride = channelCount;
 			
-			for ( TData* i = mInterleavedData.GetPtr() + channel;
-			      i < end; i+=stride, ptr++ )
+			for ( TData* i = mInterleavedData.GetPtr() + channel; i < end; i+=stride, ptr++ )
 				*ptr = *i;
-			
+
+
 			mChannelsConsumed[ channel ] = true;
 			
 		}
Index: CLAM/src/Tools/AudioFileIO/OggVorbisAudioStream.cxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/OggVorbisAudioStream.cxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/OggVorbisAudioStream.cxx	(working copy)
@@ -335,7 +335,15 @@
 		} while ( currentOffset < mInterleavedDataOut.Size() );
 
 	}
+	
+	void OggVorbisAudioStream::SeekToTime( unsigned framesStart )
+	{
+		// TODO: return value!
 
+		// second parameter is in miliseconds
+		ov_time_seek(&mNativeFileParams, ((double) framesStart)/1000.0);
+	}
+
 	void OggVorbisAudioStream::PushAnalysisBlocksOntoOggStream()
 	{
 		int eos = 0;
Index: CLAM/src/Tools/AudioFileIO/AudioCodecs_Stream.hxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/AudioCodecs_Stream.hxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/AudioCodecs_Stream.hxx	(working copy)
@@ -56,6 +56,8 @@
 		void DeactivateStrictStreaming();
 		void ActivateStrictStreaming();
 		bool StrictStreaming() const;
+		
+		void SetFramesStart( unsigned framesStart );
 
 		bool ReadData( int channel, TData* ptr, TSize howmany );
 		bool ReadData( int* channels, int nchannels,
@@ -73,6 +75,8 @@
 		virtual void DiskToMemoryTransfer() = 0;
 		virtual void MemoryToDiskTransfer() = 0;
 
+		virtual void SeekToTime( unsigned framesStart ) = 0;
+
 		bool AllChannelsConsumed();
 		void ResetConsumedChannels();
 		void MarkAllChannelsAsConsumed();
@@ -91,6 +95,7 @@
 		DataArray           mInterleavedData;
 		DataArray           mInterleavedDataOut;
 		bool                mEOFReached;
+		TSize               mFramesStart;
 		TSize               mFramesToRead;
 		TSize               mFramesToWrite;
 		TSize               mFramesLastRead;
Index: CLAM/src/Tools/AudioFileIO/OggVorbisAudioStream.hxx
===================================================================
--- CLAM/src/Tools/AudioFileIO/OggVorbisAudioStream.hxx	(revision 10679)
+++ CLAM/src/Tools/AudioFileIO/OggVorbisAudioStream.hxx	(working copy)
@@ -60,6 +60,7 @@
 		void AudioFileToNative( const AudioFile& file );
 		void DiskToMemoryTransfer();
 		void MemoryToDiskTransfer();
+		void SeekToTime( unsigned framesStart );
 
 		void VorbisI_EncoderSetup();
 		void WriteBitstreamHeader();
Index: CLAM/src/Processing/AudioFileIO/MonoAudioFileReader.hxx
===================================================================
--- CLAM/src/Processing/AudioFileIO/MonoAudioFileReader.hxx	(revision 10679)
+++ CLAM/src/Processing/AudioFileIO/MonoAudioFileReader.hxx	(working copy)
@@ -27,6 +27,7 @@
 #include "AudioOutPort.hxx"
 #include "AudioFile.hxx"
 #include "OutControl.hxx"
+#include "InControl.hxx"
 
 namespace CLAM
 {
@@ -61,6 +62,7 @@
 		MonoAudioFileReaderConfig mConfig;
 		AudioFileSource           mAudioFile;
 		AudioOutPort	          mOutput;
+		InControl                 mTimeInput;
 		OutControl                mTimeOutput;
 		AudioCodecs::Stream*      mNativeStream;
 		TTime                     mCurrentBeginTime;
Index: CLAM/src/Processing/AudioFileIO/MonoAudioFileReader.cxx
===================================================================
--- CLAM/src/Processing/AudioFileIO/MonoAudioFileReader.cxx	(revision 10679)
+++ CLAM/src/Processing/AudioFileIO/MonoAudioFileReader.cxx	(working copy)
@@ -42,6 +42,7 @@
 	
 	MonoAudioFileReader::MonoAudioFileReader( const ProcessingConfig& cfg )
 		: mOutput( "Samples Read", this ),
+		  mTimeInput( "Starting Time Position", this),
 		  mTimeOutput( "Current Time Position", this),
 		  mNativeStream( NULL )
 	{
@@ -112,9 +113,11 @@
 		}
 
 		mNativeStream->PrepareReading();
-		mCurrentBeginTime = 0.0;
+		mCurrentBeginTime = mTimeInput.GetLastValue() * 1000; // unit is milisecond [ms]
 		mEOFReached = false;
 		
+		mNativeStream->SetFramesStart( (unsigned) mCurrentBeginTime );
+		
 		return true;
 	}
 
