CAudioInput::CAudioInput(CAudioInfo& info) :
CAudioIO(info),
__mIsUsedSyncRead(true),
- __mIsInit(false) {
+ __mIsInit(false),
+ __mVolume(1.0) {
mDirection = CAudioInfo::EAudioDirection::AUDIO_DIRECTION_IN;
}
CAudioIO::finalize();
__setInit(false);
+ __mVolume = 1.0;
}
void CAudioInput::prepare() {
internalLock();
mpPulseAudioClient = new CPulseAudioClient(CPulseAudioClient::EStreamDirection::STREAM_DIRECTION_RECORD, spec, this);
mpPulseAudioClient->initialize();
+ mpPulseAudioClient->applyRecordVolume(__mVolume);
#ifndef DISABLE_MOBILE_BACK_COMP
/* Uncork stream which is created with CORKED flag */
mpPulseAudioClient->cork(false);
return mpPulseAudioClient->drop();
}
+
+void CAudioInput::setVolume(double volume) {
+ if (!__IsInit())
+ THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Not initialized"); //LCOV_EXCL_LINE
+
+ AUDIO_IO_LOGE("%d, %p", __IsInit(), mpPulseAudioClient);
+ try {
+ if (__IsReady()) {
+ if (mpPulseAudioClient->isInThread()) {
+ mpPulseAudioClient->applyRecordVolume(volume);
+ } else {
+ internalLock();
+ mpPulseAudioClient->applyRecordVolume(volume);
+ internalUnlock();
+ }
+ }
+ } catch (const CAudioError& e) {
+ if (!mpPulseAudioClient->isInThread())
+ internalUnlock();
+ throw;
+ }
+
+ __mVolume = volume;
+}
+
+double CAudioInput::getVolume() {
+ if (!__IsInit())
+ THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Not initialized"); //LCOV_EXCL_LINE
+
+ return __mVolume;
+}
\ No newline at end of file