XnStatus XnSensorAudioStream::SetNumberOfChannels(XnUInt32 nNumberOfChannels) { XnStatus nRetVal = XN_STATUS_OK; nRetVal = m_Helper.BeforeSettingFirmwareParam(NumberOfChannelsProperty(), nNumberOfChannels); XN_IS_STATUS_OK(nRetVal); nRetVal = XnAudioStream::SetNumberOfChannels(nNumberOfChannels); XN_IS_STATUS_OK(nRetVal); nRetVal = ReallocBuffer(); XN_IS_STATUS_OK(nRetVal); nRetVal = m_Helper.AfterSettingFirmwareParam(NumberOfChannelsProperty()); XN_IS_STATUS_OK(nRetVal); return (XN_STATUS_OK); }
XnStatus XnSensorAudioStream::MapPropertiesToFirmware() { XnStatus nRetVal = XN_STATUS_OK; XN_IS_STATUS_OK(m_Helper.MapFirmwareProperty(SampleRateProperty(), GetFirmwareParams()->m_AudioSampleRate, FALSE, ConvertSampleRateToFirmwareRate)); XN_IS_STATUS_OK(m_Helper.MapFirmwareProperty(NumberOfChannelsProperty(), GetFirmwareParams()->m_AudioStereo, FALSE, ConvertNumberOfChannelsToStereo)); XN_IS_STATUS_OK(m_Helper.MapFirmwareProperty(m_LeftChannelVolume, GetFirmwareParams()->m_AudioLeftChannelGain, TRUE)); XN_IS_STATUS_OK(m_Helper.MapFirmwareProperty(m_RightChannelVolume, GetFirmwareParams()->m_AudioRightChannelGain, TRUE)); return (XN_STATUS_OK); }
XnStatus XnSensorAudioStream::ConfigureStreamImpl() { XnStatus nRetVal = XN_STATUS_OK; xnUSBShutdownReadThread(GetHelper()->GetPrivateData()->pSpecificMiscUsb->pUsbConnection->UsbEp); nRetVal = SetActualRead(TRUE); XN_IS_STATUS_OK(nRetVal); XN_IS_STATUS_OK(m_Helper.ConfigureFirmware(SampleRateProperty())); XN_IS_STATUS_OK(m_Helper.ConfigureFirmware(NumberOfChannelsProperty())); XN_IS_STATUS_OK(m_Helper.ConfigureFirmware(m_LeftChannelVolume)); XN_IS_STATUS_OK(m_Helper.ConfigureFirmware(m_RightChannelVolume)); return (XN_STATUS_OK); }
XnStatus XnSensorAudioStream::Init() { XnStatus nRetVal = XN_STATUS_OK; // init base nRetVal = XnAudioStream::Init(); XN_IS_STATUS_OK(nRetVal); // init helper nRetVal = m_Helper.Init(this, this); XN_IS_STATUS_OK(nRetVal); nRetVal = xnOSCreateCriticalSection(&m_buffer.hLock); XN_IS_STATUS_OK(nRetVal); nRetVal = SetReadChunkSize(XN_AUDIO_STREAM_DEFAULT_CHUNK_SIZE); XN_IS_STATUS_OK(nRetVal); // add properties XN_VALIDATE_ADD_PROPERTIES(this, &m_LeftChannelVolume, &m_RightChannelVolume, &m_ActualRead); // check what's the firmware audio packet size if (m_Helper.GetPrivateData()->SensorHandle.MiscConnection.bIsISO) m_nOrigAudioPacketSize = XN_SENSOR_PROTOCOL_AUDIO_PACKET_SIZE_ISO; else m_nOrigAudioPacketSize = XN_SENSOR_PROTOCOL_AUDIO_PACKET_SIZE_BULK; // alloc buffer nRetVal = ReallocBuffer(); XN_IS_STATUS_OK(nRetVal); m_buffer.pAudioCallback = NewDataCallback; m_buffer.pAudioCallbackCookie = this; // data processor nRetVal = m_Helper.RegisterDataProcessorProperty(NumberOfChannelsProperty()); XN_IS_STATUS_OK(nRetVal); return (XN_STATUS_OK); }