Copyright © 2006-2025 MultiMedia Soft

StartSplitFromWasapiCaptureDevice method

Previous pageReturn to chapter overviewNext page

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:

for sounds at 16000 Hz CBR must be set to 16000 (16 kbps)
for sounds at 22050 Hz CBR must be set to 20000 (20 kbps)
for sounds at 44100 Hz CBR must be set to 32000 (32 kbps) or 48000 (48 kbps)

 

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.