AudioHardwareInput.h   [plain text]


/*
 *  AppleHardwareInput.h
 *  AppleOnboardAudio
 *
 *  Created by lcerveau on Wed Jan 03 2001.
 *  Copyright (c) 2000 Apple Computer Inc. All rights reserved.
 *
 */

#ifndef _AUDIOHARDWAREINPUT_H
#define _AUDIOHARDWAREINPUT_H

#include "AudioHardwareCommon.h"
#include "AudioHardwareUtilities.h"
#include "AudioHardwareMux.h"
//#include "AppleOnboardAudio.h"  //we should replace with AppleAudioHardware generic class
class AudioHardwareMux;

typedef struct _s_AudioHardwareInputInfo {
    UInt32	sndHWPort; 		
    UInt32	inputPortType;
    UInt32	channels;
    bool 	isOnMuX;
    AudioHardwareMux *theMuxRef;  
      
}AudioHardwareInputInfo;

enum{
    kAudioHardwareInputUnknown = 0,
    kAudioHardwareInputNone = 1,
    kAudioHardwareInputIntMic = 2,
    kAudioHardwareInputExtMic = 3
};

    //4 char code equivalent of Sound.h for the source input
enum {
    kNoSource                     = 'none', /*no source selection*/
    kCDSource                     = 'cd  ', /*internal CD player input*/
    kExtMicSource                 = 'emic', /*external mic input*/
    kSoundInSource                = 'sinj', /*sound input jack*/
    kRCAInSource                  = 'irca', /*RCA jack input*/
    kTVFMTunerSource              = 'tvfm',
    kDAVInSource                  = 'idav', /*DAV analog input*/
    kIntMicSource                 = 'imic', /*internal mic input*/
    kMediaBaySource               = 'mbay', /*media bay input*/
    kModemSource                  = 'modm', /*modem input (internal modem on desktops, PCI input on PowerBooks)*/
    kPCCardSource                 = 'pcm ', /*PC Card pwm input*/
    kZoomVideoSource              = 'zvpc', /*zoom video input*/
    kDVDSource                    = 'dvda', /* DVD audio input*/
    kMicrophoneArray              = 'mica' /* microphone array*/
};


class AudioHardwareInput : public IOAudioPort {
    OSDeclareDefaultStructors(AudioHardwareInput);

public:
    static AudioHardwareInput *create(AudioHardwareInputInfo theInputInfo);
    bool deviceSetActive( UInt32 currentDevices );
    void forceActivation(UInt32 selector);
    void attachAudioPluginRef(AppleOnboardAudio *theAudioPlugin);
    UInt32 getInputPortType(void);
	void setInputGain(UInt32 leftGain, UInt32 rightGain);
    
protected:
    bool init(AudioHardwareInputInfo theInputInfo);
    void free();

    void ioLog();
    
    UInt32	sndHWPort; 		// which port the device is connected to
    UInt32	inputPortType;		// type of input port
    UInt32	channels;		// channels affected
    bool 	isOnMuX;		// set if the input is on a Mux
    bool	active;			// set if the input is active
    AudioHardwareMux *theMuxRef;  	//the Mux if there isone

    AppleOnboardAudio *pluginRef;
    UInt32 	gainLeft;
    UInt32 	gainRight;
};

#endif