CAudioInfo: Refactor getters to return in group
[platform/core/api/audio-io.git] / src / cpp / CAudioInfo.cpp
index 8a20199..8cf23d4 100644 (file)
@@ -36,37 +36,29 @@ CAudioInfo::CAudioInfo(unsigned int sampleRate, EChannel channel, ESampleType sa
     __mAudioType(audioType),
     __mAudioIndex(audioIndex) {
     // Check to invalid AudioInfo
-    if (sampleRate < CAudioInfo::MIN_SYSTEM_SAMPLERATE ||
-        sampleRate > CAudioInfo::MAX_SYSTEM_SAMPLERATE)
+    if (sampleRate < MIN_SYSTEM_SAMPLERATE ||
+        sampleRate > MAX_SYSTEM_SAMPLERATE)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                "The sampleRate is invalid [sampleRate:%u]", sampleRate);
 
-    if (channel < CAudioInfo::EChannel::CHANNEL_MONO ||
-        channel >= CAudioInfo::EChannel::CHANNEL_MAX)
+    if (channel < EChannel::CHANNEL_MONO ||
+        channel >= EChannel::CHANNEL_MAX)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                "The channel is invalid [channel:%u]", to_integral(channel));
 
-    if (sampleType < CAudioInfo::ESampleType::SAMPLE_TYPE_U8 ||
-        sampleType >= CAudioInfo::ESampleType::SAMPLE_TYPE_MAX)
+    if (sampleType < ESampleType::SAMPLE_TYPE_U8 ||
+        sampleType >= ESampleType::SAMPLE_TYPE_MAX)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                "The sampleType is invalid [sampleType:%u]", to_integral(sampleType));
 
-    if (audioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA ||
-        audioType >= CAudioInfo::EAudioType::AUDIO_TYPE_MAX)
+    if (audioType < EAudioType::AUDIO_IN_TYPE_MEDIA ||
+        audioType >= EAudioType::AUDIO_TYPE_MAX)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                "The audioType is invalid [audioType:%u]", to_integral(audioType));
 }
 
-unsigned int CAudioInfo::getSampleRate() const noexcept {
-    return __mSampleRate;
-}
-
-CAudioInfo::EChannel CAudioInfo::getChannel() const noexcept {
-    return __mChannel;
-}
-
-CAudioInfo::ESampleType CAudioInfo::getSampleType() const noexcept {
-    return __mSampleType;
+std::tuple<CAudioInfo::ESampleType, unsigned int, CAudioInfo::EChannel> CAudioInfo::getSpec() const noexcept {
+    return { __mSampleType, __mSampleRate, __mChannel };
 }
 
 CAudioInfo::EAudioType CAudioInfo::getAudioType() const noexcept {
@@ -81,10 +73,6 @@ void CAudioInfo::setAudioTypeByOutputStreamType(const char* streamType) {
     __mAudioType = convertOutputStreamTypeToAudioType(streamType);
 }
 
-int CAudioInfo::getAudioIndex() const noexcept {
-    return __mAudioIndex;
-}
-
 void CAudioInfo::setAudioIndex(int audioIndex) noexcept {
     __mAudioIndex = audioIndex;
 }
@@ -115,6 +103,15 @@ int CAudioInfo::getSampleSize() const noexcept {
     return bytes_in_sample * static_cast<int>(__mChannel);
 }
 
+
+size_t CAudioInfo::msToBytes(size_t milliseconds) const noexcept {
+    return milliseconds * __mSampleRate * getSampleSize() / 1000;
+}
+
+size_t CAudioInfo::bytesToMs(size_t bytes) const noexcept {
+    return bytes * 1000 / getSampleSize() / __mSampleRate;
+}
+
 void CAudioInfo::setEffectMethod(int method) noexcept {
     __mEffectMethod = method;
 }
@@ -155,32 +152,32 @@ std::pair<std::string, int> CAudioInfo::getEffectMethodWithReference() const noe
     return make_pair(method, __mEffectMethodReferenceDeviceId);
 }
 
-const char* CAudioInfo::getConvertedStreamType() const {
-    if (__mAudioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA ||
-        __mAudioType >= CAudioInfo::EAudioType::AUDIO_TYPE_MAX)
+std::pair<const char*, int> CAudioInfo::getStreamProperties() const {
+    if (__mAudioType < EAudioType::AUDIO_IN_TYPE_MEDIA ||
+        __mAudioType >= EAudioType::AUDIO_TYPE_MAX)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE,
                                "The audioType is not supported [audioType:%u]", to_integral(__mAudioType));
 
-    return __STREAM_TYPE_TABLE[(unsigned int)__mAudioType];
+    return std::make_pair(__STREAM_TYPE_TABLE[(unsigned int)__mAudioType], __mAudioIndex);
 }
 
 CAudioInfo::EAudioType CAudioInfo::convertInputStreamTypeToAudioType(const char *streamType) {
-    for (auto i = (unsigned int)CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA;
-              i < (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA;
+    for (auto i = (unsigned int)EAudioType::AUDIO_IN_TYPE_MEDIA;
+              i < (unsigned int)EAudioType::AUDIO_OUT_TYPE_MEDIA;
               i++) {
         if (!strcmp(__STREAM_TYPE_TABLE[i], streamType))
-            return (CAudioInfo::EAudioType)i;
+            return (EAudioType)i;
     }
     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE,
                            "The streamType of input is not supported [streamType:%s]", streamType);
 }
 
 CAudioInfo::EAudioType CAudioInfo::convertOutputStreamTypeToAudioType(const char *streamType) {
-    for (auto i = (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA;
-              i < (unsigned int)CAudioInfo::EAudioType::AUDIO_TYPE_MAX;
+    for (auto i = (unsigned int)EAudioType::AUDIO_OUT_TYPE_MEDIA;
+              i < (unsigned int)EAudioType::AUDIO_TYPE_MAX;
               i++) {
         if (!strcmp(__STREAM_TYPE_TABLE[i], streamType))
-            return (CAudioInfo::EAudioType)i;
+            return (EAudioType)i;
     }
     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE,
                            "The streamType of output is not supported [streamType:%s]", streamType);