xref: /haiku/src/apps/mediaplayer/media_node_framework/audio/AudioFormatConverter.h (revision 8dd3060da4f50b8de2830fd93216b186efec7c4f)
10fc56ed5SStephan Aßmus /*
2*8dd3060dSAxel Dörfler  * Copyright 2000-2006 Ingo Weinhold <ingo_weinhold@gmx.de>
3*8dd3060dSAxel Dörfler  * Copyright 2008 Stephan Aßmus <superstippi@gmx.de>
40fc56ed5SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT licensce.
50fc56ed5SStephan Aßmus  */
6*8dd3060dSAxel Dörfler #ifndef AUDIO_FORMAT_CONVERTER_H
7*8dd3060dSAxel Dörfler #define AUDIO_FORMAT_CONVERTER_H
8*8dd3060dSAxel Dörfler 
90fc56ed5SStephan Aßmus 
100fc56ed5SStephan Aßmus /*! This AudioReader just converts the source sample format (and byte order)
110fc56ed5SStephan Aßmus 	into another one, e.g. LE short -> BE float. Frame rate and channel
120fc56ed5SStephan Aßmus 	count remain unchanged.
130fc56ed5SStephan Aßmus */
140fc56ed5SStephan Aßmus 
150fc56ed5SStephan Aßmus 
160fc56ed5SStephan Aßmus #include "AudioReader.h"
170fc56ed5SStephan Aßmus 
18*8dd3060dSAxel Dörfler 
190fc56ed5SStephan Aßmus class AudioFormatConverter : public AudioReader {
200fc56ed5SStephan Aßmus public:
210fc56ed5SStephan Aßmus 								AudioFormatConverter(AudioReader* source,
220fc56ed5SStephan Aßmus 									uint32 format, uint32 byte_order);
230fc56ed5SStephan Aßmus 	virtual						~AudioFormatConverter();
240fc56ed5SStephan Aßmus 
25*8dd3060dSAxel Dörfler 	virtual bigtime_t			InitialLatency() const;
260fc56ed5SStephan Aßmus 	virtual	status_t			Read(void* buffer, int64 pos, int64 frames);
270fc56ed5SStephan Aßmus 
280fc56ed5SStephan Aßmus 	virtual	status_t			InitCheck() const;
290fc56ed5SStephan Aßmus 
300fc56ed5SStephan Aßmus 			AudioReader*		Source() const;
310fc56ed5SStephan Aßmus 
320fc56ed5SStephan Aßmus protected:
330fc56ed5SStephan Aßmus 			AudioReader*		fSource;
340fc56ed5SStephan Aßmus };
350fc56ed5SStephan Aßmus 
360fc56ed5SStephan Aßmus #endif	// AUDIO_FORMAT_CONVERTER_H
37