⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wavein.h

📁 EP931X系列的WinCE声卡驱动源代码
💻 H
字号:
//**********************************************************************
//                                                                      
// Filename: wavein.h
//                                                                      
// Description: includes prototypes for WaveIn class.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
// Copyright(c) Cirrus Logic Corporation 2001, All Rights Reserved                       
//                                                                      
//**********************************************************************

#ifndef _H_WAVEIN
#define _H_WAVEIN

typedef void WaveInConversionFunc(PVOID, PVOID, PVOID, PULONG, PULONG);

class WaveIn
{
    public:
        WaveIn();
        ~WaveIn();
        
        MMRESULT Initialize(CodecInterface *ci);
    
        MMRESULT    AddBuffer
        (
            PWAVEHDR    pWaveHDR,
            DWORD       dwSize
        );
    
        MMRESULT    Close();    
    
        MMRESULT    GetDevCaps
        (
            PWAVEINCAPS pWaveCaps,
            DWORD       dwSize
        );
    
            
        DWORD       GetNumDevs()
        {
            return 1;
        }        


        MMRESULT    GetPosition
        (
            MMTIME  *pmmTime,
            DWORD   dwSize
        );
    
        MMRESULT    Open
        (
            WAVEOPENDESC        *pOpenDesc,
            DWORD               dwFlags
        );
    
        MMRESULT    Prepare()
        {
            return MMSYSERR_NOTSUPPORTED;
        }
    

        MMRESULT    Reset();


        MMRESULT    Start();
    
        MMRESULT    Stop();

        MMRESULT    UnPrepare()
        {
            return MMSYSERR_NOTSUPPORTED;
        }
    private:
        void RemoveCompleteBlocks(void);
        void EmptyDMABuffer
        (
            DWORD   dwStartPos,
            DWORD   dwEndPos
        );


        static void InterruptHandler(void *Handle, BOOL bLastHalf);


        PingPongDma             m_Dma;        
        CodecInterface *        m_pCodec;
        CRITICAL_SECTION        m_CriticalSection;;
        WAVEFORMATEX            m_WaveFormat;
        DWORD                   m_dwInstance;
        PWAVEHDR                m_pWaveHead;
        PWAVEHDR                m_pWaveNext;
        DRVCALLBACK *           m_pfnCallback;
        HANDLE                  m_hCallback;
        WaveInConversionFunc  * m_pfnWaveCopyFunc;
        DWORD                   m_dwRecordedBytes;
        BOOL                    m_bIsRecording;
        DWORD                   m_dwSourceFactor;
        DWORD                   m_dwDestFactor;
        DWORD                   m_dwDmaSampleSize;
        ULONG                   m_ulDmaBufferSize;


        //
        // Dma Actual Buffer
        //
        void *                  m_pDmaBuffer;

        //
        // Sample Rate Converter Buffer.
        //
        void *                  m_pRateConverterBuffer;

        //
        // If a Software Sample Rate Converter is used, a buffer 
        // that is cached that is a copy of the DMA buffer.
        //
        // If no SRC is used it is also the DMA buffer.
        //
        void *                  m_pBuffer;

        //
        // Pointer to an SRC structure.
        //
        tSRC                    m_Src;
        BOOL                    m_bUseSrc;
        
};


#endif // _H_WAVEIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -