sourceafFancomSapi::ISpeechAudio.fan

using afFancom::Dispatch
using afFancom::Variant

** Supports the control of real-time audio streams, such as those connected to a live microphone or 
** telephone line.
** 
** `http://msdn.microsoft.com/en-us/library/ee125237%28v=vs.85%29.aspx`
**
** @clsid {CFF8E175-019E-11D3-A08E-00C04F8EF9B5}
class ISpeechAudio : ISpeechBaseStream {

    new makeFromDispatch(Dispatch dispatch) : super(dispatch) { }


    // ---- Properties ----------------------------------------------------------------------------

    ISpeechAudioBufferInfo? bufferInfo {
        get { dispatch.getProperty("BufferInfo").asType(ISpeechAudioBufferInfo#) }
        private set { }
    }

    Int? bufferNotifySize {
        get { dispatch.getProperty("BufferNotifySize").asInt }
        set { dispatch.setProperty("BufferNotifySize", it) }
    }

    SpAudioFormat? defaultFormat {
        get { dispatch.getProperty("DefaultFormat").asType(SpAudioFormat#) }
        private set { }
    }

    Int? eventHandle {
        get { dispatch.getProperty("EventHandle").asInt }
        private set { }
    }

    ** Returns the audio status as an `ISpeechAudioStatus` object.
    ISpeechAudioStatus? status {
        get { dispatch.getProperty("Status").asType(ISpeechAudioStatus#) }
        private set { }
    }

    Int? volume {
        get { dispatch.getProperty("Volume").asInt }
        set { dispatch.setProperty("Volume", it) }
    }


    // ---- Methods -------------------------------------------------------------------------------

    ** Sets the audio state with a SpeechAudioState constant.
    Void setState(SpeechAudioState? state) {
        dispatch.call("SetState", state)
    }

}