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