xref: /haiku/src/apps/mediaplayer/media_node_framework/audio/AudioReader.h (revision 8dd3060da4f50b8de2830fd93216b186efec7c4f)
10fc56ed5SStephan Aßmus /*
20fc56ed5SStephan Aßmus  * Copyright © 2000-2006 Ingo Weinhold <ingo_weinhold@gmx.de>
30fc56ed5SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT licensce.
40fc56ed5SStephan Aßmus  */
50fc56ed5SStephan Aßmus #ifndef AUDIO_READER_H
60fc56ed5SStephan Aßmus #define AUDIO_READER_H
70fc56ed5SStephan Aßmus 
80fc56ed5SStephan Aßmus #include <MediaDefs.h>
90fc56ed5SStephan Aßmus 
100fc56ed5SStephan Aßmus class AudioReader {
110fc56ed5SStephan Aßmus public:
120fc56ed5SStephan Aßmus 								AudioReader();
130fc56ed5SStephan Aßmus 								AudioReader(const media_format& format);
140fc56ed5SStephan Aßmus 	virtual						~AudioReader();
150fc56ed5SStephan Aßmus 
160fc56ed5SStephan Aßmus 	virtual	status_t			InitCheck() const;
170fc56ed5SStephan Aßmus 
180fc56ed5SStephan Aßmus 			void				SetFormat(const media_format& format);
190fc56ed5SStephan Aßmus 			const media_format&	Format() const;
200fc56ed5SStephan Aßmus 
21*8dd3060dSAxel Dörfler 	virtual bigtime_t			InitialLatency() const = 0;
220fc56ed5SStephan Aßmus 	virtual	status_t			Read(void* buffer, int64 pos, int64 frames) = 0;
230fc56ed5SStephan Aßmus 
240fc56ed5SStephan Aßmus 			void				SetOutOffset(int64 offset);
250fc56ed5SStephan Aßmus 			int64				OutOffset() const;
260fc56ed5SStephan Aßmus 
270fc56ed5SStephan Aßmus 			int64				FrameForTime(bigtime_t time) const;
280fc56ed5SStephan Aßmus 			bigtime_t			TimeForFrame(int64 frame) const;
290fc56ed5SStephan Aßmus 
300fc56ed5SStephan Aßmus protected:
310fc56ed5SStephan Aßmus 			void*				ReadSilence(void* buffer, int64 frames) const;
320fc56ed5SStephan Aßmus 			void*				SkipFrames(void* buffer, int64 frames) const;
330fc56ed5SStephan Aßmus 			void				ReverseFrames(void* buffer,
340fc56ed5SStephan Aßmus 									int64 frames) const;
350fc56ed5SStephan Aßmus 
360fc56ed5SStephan Aßmus protected:
370fc56ed5SStephan Aßmus 			media_format		fFormat;
380fc56ed5SStephan Aßmus 			int64				fOutOffset;
390fc56ed5SStephan Aßmus };
400fc56ed5SStephan Aßmus 
410fc56ed5SStephan Aßmus #endif	// AUDIO_READER_H
42