///////////////////////////////////////////////////////////////////////////////
// Copyright (c) Winnov L.P., 1997.  All rights reserved
// asrcpriv.h: asrc class definition : private methods
//
// Modified : C++ -> C
///////////////////////////////////////////////////////////////////////////////

#ifndef _ASRCPRIV_INCLUDED
#define _ASRCPRIV_INCLUDED

#include <tchar.h>
#include "hal.h"
#include "codec.h"
#include "shared.h"
#ifdef USER_WIN32
#include "registry.h"
#endif

#define PRIVATE

	PRIVATE void  asrcOpenRegistry (PASRC pAsrc, UINT nBoard);
    PRIVATE void  asrcCloseRegistry (PASRC pAsrc);
    PRIVATE void  asrcSaveSetting (PASRC pAsrc, TCHAR FAR *tzEntry, UINT nVal);
    PRIVATE UINT  asrcGetSetting (PASRC pAsrc, TCHAR FAR *tzEntry, UINT nDefault);
    PRIVATE DWORD asrcGetVersion (PASRC pAsrc);
    PRIVATE DWORD asrcGetSampleRate (PASRC pAsrc);
    PRIVATE DWORD asrcGetDefaultSampleRate (PASRC pAsrc);
    PRIVATE DWORD asrcGetACE (PASRC pAsrc);
    PRIVATE DWORD asrcGetAMS (PASRC pAsrc);
    PRIVATE DWORD asrcGetAPE (PASRC pAsrc);
    PRIVATE DWORD asrcGetPtr (PASRC pAsrc);
    PRIVATE DWORD asrcGetIsPlaying (PASRC pAsrc);
    PRIVATE DWORD asrcGetWaveOutState (PASRC pAsrc);
    PRIVATE DWORD asrcGetLeftGainCurrentSource (PASRC pAsrc);
    PRIVATE DWORD asrcGetRightGainCurrentSource (PASRC pAsrc);
    PRIVATE DWORD asrcGetLeftGainPerSource (PASRC pAsrc, UINT nSource);
    PRIVATE DWORD asrcGetRightGainPerSource (PASRC pAsrc, UINT nSource);
    PRIVATE DWORD asrcGetSource (PASRC pAsrc);
    PRIVATE DWORD asrcGetLine2Source (PASRC pAsrc);
    PRIVATE DWORD asrcGetOutputSource (PASRC pAsrc);
    PRIVATE DWORD asrcGetMuteOut (PASRC pAsrc);
    PRIVATE DWORD asrcGetMuteIn (PASRC pAsrc);
    PRIVATE DWORD asrcGetAuxMute (PASRC pAsrc);
    PRIVATE DWORD asrcGetWaveOutMute (PASRC pAsrc);
    PRIVATE DWORD asrcGetMonitorMute (PASRC pAsrc);
    PRIVATE DWORD asrcGetVolume (PASRC pAsrc);
    PRIVATE DWORD asrcGetBalance (PASRC pAsrc);
    PRIVATE DWORD asrcGetLeftVolume (PASRC pAsrc);
    PRIVATE DWORD asrcGetRightVolume (PASRC pAsrc);
    PRIVATE DWORD asrcGetWaveVolume (PASRC pAsrc);
    PRIVATE DWORD asrcGetAuxVolume (PASRC pAsrc);
    PRIVATE DWORD asrcGetMonitorVolume (PASRC pAsrc);
    PRIVATE DWORD asrcGetLine1Volume (PASRC pAsrc);
    PRIVATE DWORD asrcGetLine2Volume (PASRC pAsrc);
    PRIVATE DWORD asrcGetMicVolume (PASRC pAsrc);
    PRIVATE BOOL  asrcGetMonitorMuteShadow (PASRC pAsrc, UINT nSource);
    PRIVATE DWORD asrcGetAudioWithVideo (PASRC pAsrc);
    PRIVATE DWORD asrcGetVideoSource (PASRC pAsrc);
    PRIVATE DWORD asrcGetSourceAssociation (PASRC pAsrc, UINT nVideoSource);
    PRIVATE DWORD asrcGetSourceAssociationEnable (PASRC pAsrc);
    PRIVATE DWORD asrcGetBlockDCEnabled (PASRC pAsrc);
    PRIVATE DWORD asrcGetLeftDC (PASRC pAsrc);
    PRIVATE DWORD asrcGetRightDC (PASRC pAsrc);
    PRIVATE DWORD asrcGetRightInputLevel (PASRC pAsrc);
    PRIVATE DWORD asrcGetLeftInputLevel (PASRC pAsrc);
    PRIVATE DWORD asrcGetIsWimp (PASRC pAsrc);
	PRIVATE DWORD asrcGetCodecMute (PASRC pAsrc);

    PRIVATE DWORD asrcSetSampleRate (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetACE (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetAMS (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetAPE (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetPtr (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetIsPlaying (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetWaveOutState (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetLeftGainCurrentSource (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetRightGainCurrentSource (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetLeftGainPerSource (PASRC pAsrc, UINT nSource, DWORD dwVal);
    PRIVATE DWORD asrcSetRightGainPerSource (PASRC pAsrc, UINT nSource, DWORD dwVal);
    PRIVATE DWORD asrcSetSource (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetLine2Source (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetOutputSource (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetMuteOut (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetMuteIn (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetAuxMute (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetWaveOutMute (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetMonitorMute (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetVolume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetBalance (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetLeftVolume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetRightVolume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetWaveVolume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetAuxVolume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetMonitorVolume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetLine1Volume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetLine2Volume (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetMicVolume (PASRC pAsrc, DWORD dwVal);
    PRIVATE void  asrcSetMonitorMuteShadow (PASRC pAsrc, UINT nSource, BOOL fMute);
    PRIVATE DWORD asrcSetAudioWithVideo (PASRC pAsrc, DWORD dwVideoSource);
    PRIVATE DWORD asrcSetVideoSource (PASRC pAsrc, DWORD dwVideoSource);
    PRIVATE DWORD asrcSetSourceAssociation (PASRC pAsrc, DWORD dwValue);
    PRIVATE DWORD asrcSetSourceAssociationEnable (PASRC pAsrc, DWORD dwValue);
    PRIVATE void  asrcSetPower (PASRC pAsrc, BOOL fState);
    PRIVATE DWORD asrcSetWaveOutPower (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetWaveInPower (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetMixerPower (PASRC pAsrc, DWORD dwVal);
    PRIVATE DWORD asrcSetBlockDCEnabled (PASRC pAsrc, DWORD dwVal);
	PRIVATE DWORD asrcSetCodecMute (PASRC pAsrc, DWORD dwVal);

    PRIVATE void  asrcBlockDC (PASRC pAsrc, LPVOID lpBuf, DWORD dwSize);
    PRIVATE DWORD asrcLevel (PASRC pAsrc, LPVOID lpBuf, DWORD dwSize);

    PRIVATE DWORD asrcInit (PASRC pAsrc);
    PRIVATE DWORD asrcStartup (PASRC pAsrc);
    PRIVATE DWORD asrcShutdown (PASRC pAsrc);
    PRIVATE DWORD asrcHotInsertion (PASRC pAsrc);
    PRIVATE DWORD asrcUnload (PASRC pAsrc);
    PRIVATE DWORD asrcSavePersistent (PASRC pAsrc);

    PRIVATE BOOL asrcIsVideoOnly (PASRC pAsrc);
    PRIVATE BOOL asrcIsVideum1 (PASRC pAsrc);
    PRIVATE BOOL asrcIsWimpCam1 (PASRC pAsrc);

    PRIVATE UINT asrcReadReg (PASRC pAsrc, UINT nReg);
    PRIVATE void asrcWriteReg (PASRC pAsrc, UINT nReg, UINT nVal);

#endif	// ndef _ASRCPRIV_INCUDED
