10fc56ed5SStephan Aßmus /* 2*8dd3060dSAxel Dörfler * 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 */ 5*8dd3060dSAxel Dörfler #ifndef AUDIO_ADAPTER_H 6*8dd3060dSAxel Dörfler #define AUDIO_ADAPTER_H 7*8dd3060dSAxel Dörfler 80fc56ed5SStephan Aßmus 90fc56ed5SStephan Aßmus /*! This AudioReader slaves an AudioConverter and an AudioResampler 100fc56ed5SStephan Aßmus to convert the source data to a given format. 110fc56ed5SStephan Aßmus At this time the number of channels cannot be changed and the output 120fc56ed5SStephan Aßmus format byte order is set to the one of the host. 130fc56ed5SStephan Aßmus If input and output format are the same, the overhead is quit small. 140fc56ed5SStephan Aßmus */ 150fc56ed5SStephan Aßmus 160fc56ed5SStephan Aßmus 170fc56ed5SStephan Aßmus #include "AudioReader.h" 180fc56ed5SStephan Aßmus 19*8dd3060dSAxel Dörfler 200fc56ed5SStephan Aßmus class AudioChannelConverter; 210fc56ed5SStephan Aßmus class AudioFormatConverter; 220fc56ed5SStephan Aßmus class AudioResampler; 230fc56ed5SStephan Aßmus 24*8dd3060dSAxel Dörfler 250fc56ed5SStephan Aßmus class AudioAdapter : public AudioReader { 260fc56ed5SStephan Aßmus public: 270fc56ed5SStephan Aßmus AudioAdapter(AudioReader* source, 280fc56ed5SStephan Aßmus const media_format& format); 290fc56ed5SStephan Aßmus virtual ~AudioAdapter(); 300fc56ed5SStephan Aßmus 31*8dd3060dSAxel Dörfler virtual bigtime_t InitialLatency() const; 320fc56ed5SStephan Aßmus virtual status_t Read(void* buffer, int64 pos, int64 frames); 330fc56ed5SStephan Aßmus 340fc56ed5SStephan Aßmus virtual status_t InitCheck() const; 350fc56ed5SStephan Aßmus 360fc56ed5SStephan Aßmus AudioReader* Source() const; 370fc56ed5SStephan Aßmus 380fc56ed5SStephan Aßmus protected: 390fc56ed5SStephan Aßmus void _ConvertChannels(void* buffer, 400fc56ed5SStephan Aßmus int64 frames) const; 410fc56ed5SStephan Aßmus 420fc56ed5SStephan Aßmus AudioReader* fSource; 430fc56ed5SStephan Aßmus AudioReader* fFinalConverter; 440fc56ed5SStephan Aßmus AudioFormatConverter* fFormatConverter; 450fc56ed5SStephan Aßmus AudioChannelConverter* fChannelConverter; 460fc56ed5SStephan Aßmus AudioResampler* fResampler; 470fc56ed5SStephan Aßmus }; 480fc56ed5SStephan Aßmus 490fc56ed5SStephan Aßmus #endif // AUDIO_ADAPTER_H 50