History

additional audio input device matching logic

Ge Wang committed 3 years ago

Commit 501e5df1 parent 25090c12 files · +23 −7Browse files

Unified · Split

2 files
  1. src/host/chuck_audio.cpp +20 −4
  2. src/visual-studio/chuck.vcxproj +3 −3
src/host/chuck_audio.cpp+20−4
@@ -661,6 +661,7 @@ t_CKBOOL ChuckAudio::initialize( t_CKUINT dac_device, · 660 unmodified lines
661661 if( useDefaultOut )
662662 {
663663 // get the default
664+ // FYI: getDefaultInputDevice returns 0 either as a valid index OR if no default/any devices
664665 m_dac_n = m_rtaudio->getDefaultOutputDevice();
665666 }
666667 else
@@ -777,10 +778,11 @@ t_CKBOOL ChuckAudio::initialize( t_CKUINT dac_device, · 110 unmodified lines
777778 if( useDefaultIn )
778779 {
779780 // get default input device
781+ // FYI getDefaultInputDevice returns 0 either as a valid index OR if no default/any devices
780782 m_adc_n = m_rtaudio->getDefaultInputDevice();
781−
782783 // ensure correct channel count if default device is requested
783784 RtAudio::DeviceInfo device_info = m_rtaudio->getDeviceInfo((unsigned int)m_adc_n);
785+
784786 // remember
785787 t_CKUINT inChannelsRequested = m_num_channels_in;
786788
@@ -818,22 +820,30 @@ t_CKBOOL ChuckAudio::initialize( t_CKUINT dac_device, · 31 unmodified lines
818820 // will first check if the default input device has only 1 channel
819821 // while we are requesting 2 channels...
820822 // -
823+
821824 // if non-zero input channels
822825 if( device_info.inputChannels > 0 )
823826 {
824− // find first device with *exactly* the requested channel count
825− m_adc_n = findMatchingInputDevice(m_rtaudio, device_info.inputChannels, sample_rate, FALSE );
827+ // find a device with *exactly* the current device input channels
828+ m_adc_n = findMatchingInputDevice( m_rtaudio, device_info.inputChannels, sample_rate, FALSE );
829+ }
830+ else // if device input channel count is 0
831+ {
832+ // find a device with *exactly* the requested channel count
833+ m_adc_n = findMatchingInputDevice( m_rtaudio, m_num_channels_in, sample_rate, FALSE);
826834 }
827835
828836 // check if match
829837 if( m_adc_n >= 0 )
830838 {
839+ // get updated device info (since m_adc_n may be updated by this point)
840+ device_info = m_rtaudio->getDeviceInfo((unsigned int)m_adc_n);
831841 // update the request input channel request
832842 m_num_channels_in = device_info.inputChannels;
833843 }
834844 else
835845 {
836− // find first device with *at least* the requested channel count
846+ // find a device with *at least* the requested channel count
837847 m_adc_n = findMatchingInputDevice(m_rtaudio, m_num_channels_in, sample_rate, TRUE );
838848
839849 // changed 1.3.1.2 (ge): for input, if no match found by this point, we just gonna try to open half-duplex
@@ -841,6 +851,12 @@ t_CKBOOL ChuckAudio::initialize( t_CKUINT dac_device, · 1 unmodified line
841851 {
842852 // set to 0
843853 m_num_channels_in = 0;
854+ // log
855+ EM_log( CK_LOG_SEVERE, "cannot find compatible audio input device..." );
856+ EM_pushlog();
857+ EM_log(CK_LOG_SEVERE, "defaulting to half-duplex (no audio input)...");
858+ EM_poplog();
859+
844860 // problem finding audio devices, most likely
845861 // EM_error2( 0, "unable to find audio input device with requested channel count (%i)...",
846862 // m_num_channels_in);
src/visual-studio/chuck.vcxproj+3−3
@@ -483,7 +483,7 @@ · 482 unmodified lines
483483 <WarningLevel>Level3</WarningLevel>
484484 <Optimization>Disabled</Optimization>
485485 <PreprocessorDefinitions>__WINDOWS_MODERN__;__PLATFORM_WIN32__;__WINDOWS_DS__;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
486− <AdditionalIncludeDirectories>.</AdditionalIncludeDirectories>
486+ <AdditionalIncludeDirectories>..\host\RtAudio\include;.</AdditionalIncludeDirectories>
487487 </ClCompile>
488488 <Link>
489489 <SubSystem>Console</SubSystem>
@@ -498,7 +498,7 @@ · 8 unmodified lines
498498 <WarningLevel>Level3</WarningLevel>
499499 <Optimization>Disabled</Optimization>
500500 <PreprocessorDefinitions>__WINDOWS_MODERN__;__PLATFORM_WIN32__;__WINDOWS_DS__;WIN32;_DEBUG;_CONSOLE;__WINDOWS_ASIO__;__WINDOWS_WASAPI__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
501− <AdditionalIncludeDirectories>C:\Users\nick\Documents\chuck\src\host\RtAudio\include;.</AdditionalIncludeDirectories>
501+ <AdditionalIncludeDirectories>..\host\RtAudio\include;.</AdditionalIncludeDirectories>
502502 </ClCompile>
503503 <Link>
504504 <SubSystem>Console</SubSystem>
@@ -549,4 +549,4 @@ · 44 unmodified lines
549549 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
550550 <ImportGroup Label="ExtensionTargets">
551551 </ImportGroup>
552−</Project>
552+</Project>

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t