Add audio-in set/get volume
[platform/core/api/audio-io.git] / src / cpp / CAudioInput.cpp
index 8b6633f..69cbd67 100644 (file)
@@ -33,7 +33,8 @@ using namespace tizen_media_audio;
 CAudioInput::CAudioInput(CAudioInfo& info) :
     CAudioIO(info),
     __mIsUsedSyncRead(true),
-    __mIsInit(false) {
+    __mIsInit(false),
+    __mVolume(1.0) {
     mDirection = CAudioInfo::EAudioDirection::AUDIO_DIRECTION_IN;
 }
 
@@ -103,6 +104,7 @@ void CAudioInput::finalize() {
     CAudioIO::finalize();
 
     __setInit(false);
+    __mVolume = 1.0;
 }
 
 void CAudioInput::prepare() {
@@ -135,6 +137,7 @@ 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);
@@ -317,3 +320,34 @@ int CAudioInput::drop() {
 
     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