Skip to content

Commit 21bda3b

Browse files
committed
refactor: MacOS input initialization
1 parent af757eb commit 21bda3b

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

src/core/afv/audio/input.cpp

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -101,33 +101,30 @@ namespace swift::core::afv::audio
101101
if (!m_audioInputBuffer) { m_audioInputBuffer = new CAudioInputBuffer(this); }
102102
else { m_audioInputBuffer->disconnect(); } // make sure disconnected in any case
103103
m_audioInputBuffer->start(m_inputFormat);
104+
const QString format = toQString(m_inputFormat);
105+
CLogMessage(this).info(u"Starting: '%1' with: %2") << selectedDevice.description() << format;
106+
107+
#ifdef Q_OS_MAC
108+
this->initMicrophoneMacOS();
109+
#else
110+
this->initMicrophone();
111+
#endif
112+
}
104113

105114
#ifdef Q_OS_MAC
115+
void CInput::initMicrophoneMacOS()
116+
{
106117
CMacOSMicrophoneAccess::AuthorizationStatus status = m_micAccess.getAuthorizationStatus();
107-
if (status == CMacOSMicrophoneAccess::Authorized)
108-
{
109-
// void
110-
// Audio start will be handled below
111-
}
118+
if (status == CMacOSMicrophoneAccess::Authorized) { this->initMicrophone(); }
112119
else if (status == CMacOSMicrophoneAccess::NotDetermined)
113120
{
114-
connect(&m_micAccess, &CMacOSMicrophoneAccess::permissionRequestAnswered, this,
115-
&CInput::delayedInitMicrophone);
121+
connect(&m_micAccess, &CMacOSMicrophoneAccess::permissionRequestAnswered, this, &CInput::initMicrophone);
116122
m_micAccess.requestAccess();
117-
CLogMessage(this).info(u"MacOS requested input device");
118-
}
119-
else
120-
{
121-
CLogMessage(this).error(u"Microphone access not granted. Voice input will not work.");
122-
return;
123+
CLogMessage(this).info(u"Request macOS permission for microphone");
123124
}
124-
#endif
125-
m_audioInput->start(m_audioInputBuffer);
126-
connect(m_audioInputBuffer, &CAudioInputBuffer::frameAvailable, this, &CInput::audioInDataAvailable);
127-
m_started = true;
128-
const QString format = toQString(m_inputFormat);
129-
CLogMessage(this).info(u"Starting: '%1' with: %2") << selectedDevice.description() << format;
125+
else { CLogMessage(this).error(u"Microphone access not granted. Voice input will not work."); }
130126
}
127+
#endif
131128

132129
void CInput::stop()
133130
{
@@ -187,13 +184,12 @@ namespace swift::core::afv::audio
187184
emit opusDataAvailable(opusDataAvailableArgs);
188185
}
189186

190-
#ifdef Q_OS_MAC
191-
void CInput::delayedInitMicrophone()
187+
void CInput::initMicrophone()
192188
{
193189
m_audioInput->start(m_audioInputBuffer);
194190
connect(m_audioInputBuffer, &CAudioInputBuffer::frameAvailable, this, &CInput::audioInDataAvailable);
195191
m_started = true;
192+
CLogMessage(this).info(u"Started input");
196193
}
197-
#endif
198194

199195
} // namespace swift::core::afv::audio

src/core/afv/audio/input.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ namespace swift::core::afv::audio
129129
private:
130130
void audioInDataAvailable(const QByteArray &frame);
131131

132+
void initMicrophone();
133+
132134
static constexpr qint64 c_frameSize = 960;
133135
int m_sampleRate = 0;
134136

@@ -152,7 +154,7 @@ namespace swift::core::afv::audio
152154

153155
#ifdef Q_OS_MAC
154156
swift::misc::CMacOSMicrophoneAccess m_micAccess;
155-
void delayedInitMicrophone();
157+
void initMicrophoneMacOS();
156158
#endif
157159
};
158160
} // namespace swift::core::afv::audio

0 commit comments

Comments
 (0)