/* PROJECT:         ReactOS sndrec32
 * LICENSE:         GPL - See COPYING in the top level directory
 * FILE:            base/applications/sndrec32/audio_resampler_acm.hpp
 * PURPOSE:         Windows ACM wrapper
 * PROGRAMMERS:     Marco Pagliaricci (irc: rendar)
 */


#ifndef _AUDIORESAMPLERACM__H_
#define _AUDIORESAMPLERACM__H_



#include "audio_def.hpp"
#include "audio_receiver.hpp"
#include "audio_format.hpp"




_AUDIO_NAMESPACE_START_



//TODO: inherit from a base resampler?
class audio_resampler_acm : public audio_receiver
{

    private:
        void init_( void );


    protected:


        HACMSTREAM acm_stream;
        ACMSTREAMHEADER acm_header;
        DWORD src_buflen;
        DWORD dst_buflen;
        bool stream_opened;

        audio_format audfmt_in;
        audio_format audfmt_out;

        float buf_secs;

        WAVEFORMATEX wformat_src;
        WAVEFORMATEX wformat_dst;




    public:


        //
        // Ctors
        //

        audio_resampler_acm( audio_format fmt_in, audio_format fmt_out )
            : acm_stream( 0 ), src_buflen( 0 ), dst_buflen( 0 ),
            stream_opened( false ), audfmt_in( fmt_in ), audfmt_out( fmt_out ),
            buf_secs( _AUDIO_DEFAULT_BUFSECS )

        {   
        

            init_();
        
        
        }



        
        
        //
        // Dtor
        //

        ~audio_resampler_acm( void )
        {   }



        //
        // Public functions
        //

        void open( void );
        void close( void );



        void audio_receive( unsigned char *, unsigned int );



};


_AUDIO_NAMESPACE_END_




#endif //ifdef _AUDIORESAMPLERACM_H_
