11539Srgrimes/***********************************************************************
21539Srgrimes * AUTHOR: Marcus Overhagen
31539Srgrimes *   FILE: TrackReader.h
41539Srgrimes *  DESCR: The undocumented BTrackReader class,
51539Srgrimes *         used by BSound and the GameSound classes
61539Srgrimes ***********************************************************************/
71539Srgrimes
81539Srgrimes#if !defined(_TRACK_READER_H_)
91539Srgrimes#define _TRACK_READER_H_
101539Srgrimes
111539Srgrimes#include <MediaTrack.h>
121539Srgrimes
131539Srgrimesclass BMediaFile;
141539Srgrimes
151539Srgrimesnamespace BPrivate
161539Srgrimes{
171539Srgrimes
18203964Simpclass BTrackReader
191539Srgrimes{
201539Srgrimespublic:
211539Srgrimes	BTrackReader(BMediaTrack *, media_raw_audio_format const &);
221539Srgrimes	BTrackReader(BFile *, media_raw_audio_format const &);
231539Srgrimes	~BTrackReader();
241539Srgrimes
251539Srgrimes	status_t 	InitCheck();
261539Srgrimes	int64 		CountFrames(void);
271539Srgrimes	int32 		FrameSize(void);
281539Srgrimes	status_t 	ReadFrames(void *in_buffer, int32 frame_count);
291539Srgrimes	status_t 	SeekToFrame(int64 *in_out_frame);
301539Srgrimes
311539Srgrimes	BMediaTrack * 					Track(void);
321539Srgrimes	const media_raw_audio_format & 	Format(void) const;
331539Srgrimes
341539Srgrimesprivate:
355207Snate	void SetToTrack(BMediaTrack *track);
3650473Speter
371539Srgrimesprivate:
381539Srgrimes	int32	fFrameSize;
391539Srgrimes	uint8 *	fBuffer;
401539Srgrimes	int32 	fBufferOffset;
411539Srgrimes	int32	fBufferUsedSize;
42102287Speter	BMediaFile *fMediaFile;
431539Srgrimes	BMediaTrack *fMediaTrack;
441539Srgrimes	media_raw_audio_format fFormat;
451539Srgrimes};
4693032Simp
471539Srgrimes}; //namespace BPrivate
481539Srgrimes
491539Srgrimes#endif
50