StartSplitFromWasapiCaptureDevice method |
![]() ![]() ![]() |
Remarks
Starts a new recording session from the given WASAPI capture device and splits incoming sound in left and right channels.
The given WASAPI capture device must be previously started through the WASAPI.DeviceStartExcusive or WASAPI.DeviceStartShared methods. You can know if a WASAPI device is already started through the WASAPI.DeviceIsStarted method.
Calling this method will cause the control to fire a RecordingStarted event. The recording session can be stopped at any time through a call to the Stop method.
In this case the recording session wouldn't be kept inside the RecordedSound object so the only accepted recording mode, set through the SetRecordingMode method, is REC_MODE_NEW.
Limitations to encoding capabilities when splitting the recording session
If the EncodeFormats.ForRecording property is set to ENCODING_FORMAT_WMA, the only supported encoding mode for the EncodeFormats.WMA.EncodeMode property is WMA_ENCODE_CBR_STD_16 and the WMA.CBR property must be set to a value that can support both stereo and mono, so the only compatible combinations are the following:
If the EncodeFormats.ForRecording property is set to ENCODING_FORMAT_WAV, the splitting will only work if the EncodeFormats.WAV.EncodeMode property is set to a format supporting both mono and stereo formats meaning that, for example, it will not work for mono-only formats like WAV_ENCODE_GSM_610 or WAV_ENCODE_G721_ADPCM_32.
If the EncodeFormats.ForRecording property is set to ENCODING_FORMAT_AIFF, the splitting will only work if the EncodeFormats.AIFF.EncodeMode property is set to a format supporting both mono and stereo formats meaning that, for example, it will not work for mono-only formats like AIFF_ENCODE_GSM_610.
If the EncodeFormats.ForRecording property is set to ENCODING_FORMAT_AU, the splitting will only work if the EncodeFormats.AU.EncodeMode property is set to a format supporting both mono and stereo formats meaning that, for example, it will not work for mono-only formats like AU_ENCODE_G721_ADPCM_32 or AU_ENCODE_G723_ADPCM_24 or AU_ENCODE_G723_ADPCM_40.
If the EncodeFormats.ForRecording property is set to ENCODING_FORMAT_ACM, the splitting will only work if the selected codec supports both mono and stereo formats meaning that, for example, it will not work for mono-only codecs like GSM 6.10 or G721 ADPCM.
The split doesn't work if the EncodeFormats.ForRecording property is set to ENCODING_FORMAT_AAC because this format doesn't support creating mono sounds.
When the stereo recording session is encoded in MP3, Ogg Vorbis or Opus audio formats, respective external encoders (Lame, OggEnc and OpusEnc) must be available on the target system because internal encoders cannot manage the "downmix" to mono of the split channels. |
This method is only intended for usage with Windows Vista and later versions.
For further details about the use of WASAPI see the WASAPI object and the How to manage audio flow through WASAPI tutorial.
For details about the encoding format and parameters applied during recording see the How to perform a recording session section.
Syntax
[Visual Basic] Public Function StartSplitFromWasapiCaptureDevice ( nCaptureDevice as Int32, strOutputPathLeft as String, strOutputPathRight as String ) as enumErrorCodes |
[C#] public enumErrorCodes StartSplitFromWasapiCaptureDevice ( Int32 nCaptureDevice, string strOutputPathLeft, string strOutputPathRight ); |
[C++] public: enumErrorCodes StartSplitFromWasapiCaptureDevice ( Int32 nCaptureDevice, string strOutputPathLeft, string strOutputPathRight ); |
Parameter |
Description |
|
|
nCaptureDevice |
Number representing the zero-based index of the WASAPI capture device of interest. The total number of available WASAPI capture devices can be obtained using the WASAPI.DeviceGetCount method having the nDeviceType parameter set to WASAPI_DEVICE_TYPE_CAPTURE.
If the multimedia engine shouldn't find any enabled or valid input or output device, the container application would be notified through the WarnNoInputDevice and WarnNoOutputDevice events. |
strOutputPathLeft |
String representing the absolute pathname of the destination file that will contain the left channel of recorded data. If this pathname should contain invalid characters, they would be automatically changed into an underscore '_' character. |
strOutputPathRight |
String representing the absolute pathname of the destination file that will contain the right channel of recorded data. If this pathname should contain invalid characters, they would be automatically changed into an underscore '_' character. |
Return value
Value |
Meaning |
|
|
Negative value |
An error occurred. Check the LastError property value in order to see the last error. |
enumErrorCodes.ERR_NOERROR (0) |
The method call was successful. |