[ACR-1434] Extend channel and format parameters
[platform/core/api/audio-io.git] / src / cpp / CPulseStreamSpec.cpp
index 92dc4c8..def1833 100644 (file)
@@ -42,12 +42,13 @@ static const char* STREAM_LATENCY_VOIP    = "voip";
 static const char* STREAM_LATENCY_DEFAULT = "default";
 static const char* STREAM_LATENCY_DEFAULT_ASYNC = "default-async";
 
-
+//LCOV_EXCL_START
 CPulseStreamSpec::CPulseStreamSpec():
     __mLatency(EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT),
     __mStreamName(NULL) {
     __adjustSpec();
 }
+//LCOV_EXCL_STOP
 
 CPulseStreamSpec::CPulseStreamSpec(EStreamLatency latency, CAudioInfo& audioInfo) :
     __mLatency(latency),
@@ -56,12 +57,14 @@ CPulseStreamSpec::CPulseStreamSpec(EStreamLatency latency, CAudioInfo& audioInfo
     __adjustSpec();
 }
 
+//LCOV_EXCL_START
 CPulseStreamSpec::CPulseStreamSpec(EStreamLatency latency, CAudioInfo& audioInfo, int customLatency) :
     __mLatency(latency),
     __mAudioInfo(audioInfo),
     __mStreamName(NULL) {
     __adjustSpec();
 }
+//LCOV_EXCL_STOP
 
 CPulseStreamSpec::~CPulseStreamSpec() {
 }
@@ -71,16 +74,7 @@ void CPulseStreamSpec::__adjustSpec() {
     __mSampleSpec.rate = __mAudioInfo.getSampleRate();
 
     // Convert channels for PA
-    switch (__mAudioInfo.getChannel()) {
-    case CAudioInfo::EChannel::CHANNEL_MONO:
-        __mSampleSpec.channels = 1;
-        break;
-
-    case CAudioInfo::EChannel::CHANNEL_STEREO:
-    default:
-        __mSampleSpec.channels = 2;
-        break;
-    }
+    __mSampleSpec.channels = static_cast<uint8_t>(__mAudioInfo.getChannel());
 
     // Convert format for PA
     switch (__mAudioInfo.getSampleType()) {
@@ -100,16 +94,21 @@ void CPulseStreamSpec::__adjustSpec() {
         __mSampleSpec.format = PA_SAMPLE_S24_32LE;
         break;
 
+    case CAudioInfo::ESampleType::SAMPLE_TYPE_S32_LE:
+        __mSampleSpec.format = PA_SAMPLE_S32LE;
+        break;
+
     default:
         __mSampleSpec.format = PA_SAMPLE_S16LE;
         break;
     }
 
     // Sets channelmap
-    pa_channel_map_init_auto(&__mChannelMap, __mSampleSpec.channels, PA_CHANNEL_MAP_ALSA);
+    pa_channel_map_init_extend(&__mChannelMap, __mSampleSpec.channels, PA_CHANNEL_MAP_ALSA);
 
     // Sets stream name
     switch (__mLatency) {
+//LCOV_EXCL_START
     case EStreamLatency::STREAM_LATENCY_INPUT_LOW:
         __mStreamName = STREAM_NAME_INPUT_LOW_LATENCY;
         break;
@@ -125,11 +124,13 @@ void CPulseStreamSpec::__adjustSpec() {
     case EStreamLatency::STREAM_LATENCY_INPUT_VOIP:
         __mStreamName = STREAM_NAME_INPUT_VOIP;
         break;
+//LCOV_EXCL_STOP
 
     case EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT:
         __mStreamName = STREAM_NAME_INPUT_DEFAULT;
         break;
 
+//LCOV_EXCL_START
     case EStreamLatency::STREAM_LATENCY_OUTPUT_LOW:
         __mStreamName = STREAM_NAME_OUTPUT_LOW_LATENCY;
         break;
@@ -145,6 +146,7 @@ void CPulseStreamSpec::__adjustSpec() {
     case EStreamLatency::STREAM_LATENCY_OUTPUT_VOIP:
         __mStreamName = STREAM_NAME_OUTPUT_VOIP;
         break;
+//LCOV_EXCL_STOP
 
     case EStreamLatency::STREAM_LATENCY_OUTPUT_DEFAULT:
         __mStreamName = STREAM_NAME_OUTPUT_DEFAULT;
@@ -154,10 +156,12 @@ void CPulseStreamSpec::__adjustSpec() {
         __mStreamName = STREAM_NAME_OUTPUT_DEFAULT_ASYNC;
         break;
 
+//LCOV_EXCL_START
     default:
         AUDIO_IO_LOGW("Invalid __mLatency[%d]", static_cast<int>(__mLatency));
         break;
     }
+//LCOV_EXCL_STOP
 }
 
 CPulseStreamSpec::EStreamLatency CPulseStreamSpec::getStreamLatency() {
@@ -168,6 +172,7 @@ const char* CPulseStreamSpec::getStreamLatencyToString() {
     const char* latency;
 
     switch (__mLatency) {
+//LCOV_EXCL_START
     case EStreamLatency::STREAM_LATENCY_INPUT_LOW:
     case EStreamLatency::STREAM_LATENCY_OUTPUT_LOW:
         latency = STREAM_LATENCY_LOW;
@@ -187,6 +192,7 @@ const char* CPulseStreamSpec::getStreamLatencyToString() {
     case EStreamLatency::STREAM_LATENCY_OUTPUT_VOIP:
         latency = STREAM_LATENCY_VOIP;
         break;
+//LCOV_EXCL_STOP
 
     case EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT:
     case EStreamLatency::STREAM_LATENCY_OUTPUT_DEFAULT:
@@ -197,10 +203,12 @@ const char* CPulseStreamSpec::getStreamLatencyToString() {
         latency = STREAM_LATENCY_DEFAULT_ASYNC;
         break;
 
+//LCOV_EXCL_START
     default:
         AUDIO_IO_LOGW("Invalid __mLatency[%d]", static_cast<int>(__mLatency));
         latency = STREAM_LATENCY_DEFAULT;
         break;
+//LCOV_EXCL_STOP
     }
 
     return latency;