xref: /haiku/src/apps/mediaplayer/media_node_framework/audio/AudioReader.h (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 /*
2  * Copyright © 2000-2006 Ingo Weinhold <ingo_weinhold@gmx.de>
3  * All rights reserved. Distributed under the terms of the MIT licensce.
4  */
5 #ifndef AUDIO_READER_H
6 #define AUDIO_READER_H
7 
8 #include <MediaDefs.h>
9 
10 class AudioReader {
11 public:
12 								AudioReader();
13 								AudioReader(const media_format& format);
14 	virtual						~AudioReader();
15 
16 	virtual	status_t			InitCheck() const;
17 
18 			void				SetFormat(const media_format& format);
19 			const media_format&	Format() const;
20 
21 	virtual bigtime_t			InitialLatency() const = 0;
22 	virtual	status_t			Read(void* buffer, int64 pos, int64 frames) = 0;
23 
24 			void				SetOutOffset(int64 offset);
25 			int64				OutOffset() const;
26 
27 			int64				FrameForTime(bigtime_t time) const;
28 			bigtime_t			TimeForFrame(int64 frame) const;
29 
30 protected:
31 			void*				ReadSilence(void* buffer, int64 frames) const;
32 			void*				SkipFrames(void* buffer, int64 frames) const;
33 			void				ReverseFrames(void* buffer,
34 									int64 frames) const;
35 
36 protected:
37 			media_format		fFormat;
38 			int64				fOutOffset;
39 };
40 
41 #endif	// AUDIO_READER_H
42