private CAudioJackDeviceInfo GetJackDevice(CAudioDataFlow deviceType) { uint devCount = 0; CAudioDeviceInfo devInfo; CAudioJackDeviceInfo jackDeviceInfo = new CAudioJackDeviceInfo(); int rev = NativeMethods.CMI_GetDeviceCount(deviceType, ref devCount); if (0 == devCount) { //Device not found!! return(null); } else { for (int i = 0; i < devCount; i++) { rev = NativeMethods.CMI_GetDeviceById(deviceType, i, out devInfo); switch (devInfo.DeviceState) { case CAudioDeviceState.Active: jackDeviceInfo.m_devInfo = devInfo; break; } } ; } return(jackDeviceInfo); }
public int Initialize() { int rev = NativeMethods.CMI_ConfLibInit(); rev = NativeMethods.CMI_CreateDeviceList(); //Get Render device _cmediaJackInfoRender = GetJackDevice(CAudioDataFlow.eRender); if (_cmediaJackInfoRender == null) { return(-1); } //Get Capture device _cmediajackInfoCapture = GetJackDevice(CAudioDataFlow.eCapture); if (_cmediajackInfoCapture == null) { return(-1); } return(rev); }
public ReturnValue ConfigureJackDeviceData(CAudioDataFlow dataFlow, CAudioDriverReadWrite readWrite, CAudioClientData clientData) { ReturnValue revData = new ReturnValue() { RevCode = -1, RevMessage = $"API Name [{clientData.ApiName}] not Correct!" }; CAudioAPIFunctionPoint sdkAPI; if (!Enum.TryParse(clientData.ApiName, out sdkAPI)) { return(revData); } if (readWrite == CAudioDriverReadWrite.Write && clientData.SetValue == null && clientData.SetExtraValue == null) { revData.RevMessage = "SetValue Can't be Null"; return(revData); } CAudioStructure rwData = null; CAudioJackDeviceInfo jackInfo = null; jackInfo = _cmediaJackInfoRender; if (dataFlow == CAudioDataFlow.eCapture || sdkAPI > CAudioAPIFunctionPoint.VOICECLARITY_NOISESUPP_LEVEL) { jackInfo = _cmediajackInfoCapture; } rwData = new CAudioStructure() { JackInfo = jackInfo, ApiPropertyName = clientData.ApiName, ReadWrite = readWrite, WriteData = clientData.SetValueToByteArray(), WriteExtraData = clientData.SetExtraValueToByteArray() }; if (clientData.SetValue != null || clientData.SetExtraValue != null) { rwData.IsWriteExtra = true; } revData = ConfigurePropertyControl(rwData); return(revData); }
public void Dispose() { _cmediaSDKCallback = null; _cmediaJackInfoRender = null; _cmediajackInfoCapture = null; }