//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================//

#ifndef MIXER_CONTROLS_H
#define MIXER_CONTROLS_H
#pragma once


abstract_class IMixerControls
{

public:
	virtual			~IMixerControls() {}
	enum Control
	{
		// Microphone boost is a boolean switch that sound cards support which boosts the input signal by about +20dB.
		// If this isn't on, the mic is usually way too quiet.
		MicBoost=0,

		// Volume values are 0-1.
		MicVolume,
		
		// Mic playback muting. You usually want this set to false, otherwise the sound card echoes whatever you say into the mic.
		MicMute,
		
		NumControls
	};

	virtual bool	GetValue_Float(Control iControl, float &value) = 0;
	virtual bool	SetValue_Float(Control iControl, float value) = 0;
	
	// Apps like RealJukebox will switch the waveIn input to use CD audio 
	// rather than the microphone. This should be called at startup to set it back.
	virtual bool	SelectMicrophoneForWaveInput() = 0;
};

extern IMixerControls *g_pMixerControls;
// Allocates a set of mixer controls.
void InitMixerControls();
void ShutdownMixerControls();


#endif // MIXER_CONTROLS_H