Use static_cast instead of dynamic cast
[platform/core/api/audio-io.git] / src / cpp / CAudioInfo.cpp
index c6c3d1d..3429c7e 100644 (file)
@@ -26,98 +26,129 @@ using namespace tizen_media_audio;
 /**
  * class CAudioInfo
  */
-CAudioInfo::CAudioInfo()
-    :  mSampleRate(MAX_SYSTEM_SAMPLERATE), mChannel(CHANNEL_MONO),
-       mSampleType(SAMPLE_TYPE_U8), mAudioType(AUDIO_IN_TYPE_MEDIA),
-       mAudioIndex(-1) {
+CAudioInfo::CAudioInfo() :
+    __mSampleRate(MAX_SYSTEM_SAMPLERATE),
+    __mChannel(EChannel::CHANNEL_MONO),
+    __mSampleType(ESampleType::SAMPLE_TYPE_U8),
+    __mAudioType(EAudioType::AUDIO_IN_TYPE_MEDIA),
+    __mAudioIndex(-1) {
 }
 
-CAudioInfo::CAudioInfo(unsigned int sampleRate, EChannel channel, ESampleType sampleType, EAudioType audioType, int audioIndex) throw (CAudioError)
-    :  mSampleRate(sampleRate), mChannel(channel), mSampleType(sampleType), mAudioType(audioType), mAudioIndex(audioIndex) {
+CAudioInfo::CAudioInfo(unsigned int sampleRate, EChannel channel, ESampleType sampleType, EAudioType audioType, int audioIndex) throw(CAudioError) :
+    __mSampleRate(sampleRate),
+    __mChannel(channel),
+    __mSampleType(sampleType),
+    __mAudioType(audioType),
+    __mAudioIndex(audioIndex) {
     // Check to invalid AudioInfo
     if (sampleRate < CAudioInfo::MIN_SYSTEM_SAMPLERATE || sampleRate > CAudioInfo::MAX_SYSTEM_SAMPLERATE) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::ERROR_INVALID_ARGUMENT, "The sampleRate is invalid [sampleRate:%d]", sampleRate);
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The sampleRate is invalid [sampleRate:%u]", sampleRate);
     }
 
-    if (channel < CAudioInfo::CHANNEL_MONO || channel >= CAudioInfo::CHANNEL_MAX) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::ERROR_INVALID_ARGUMENT, "The channel is invalid [channel:%d]", channel);
+    if (channel < CAudioInfo::EChannel::CHANNEL_MONO || channel >= CAudioInfo::EChannel::CHANNEL_MAX) {
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The channel is invalid [channel:%u]", to_integral(channel));
     }
 
-    if (sampleType < CAudioInfo::SAMPLE_TYPE_U8 || sampleType >= CAudioInfo::SAMPLE_TYPE_MAX) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::ERROR_INVALID_ARGUMENT, "The sampleType is invalid [sampleType:%d]", sampleType);
+    if (sampleType < CAudioInfo::ESampleType::SAMPLE_TYPE_U8 || sampleType >= CAudioInfo::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::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::AUDIO_TYPE_MAX) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::ERROR_INVALID_ARGUMENT, "The audioType is invalid [audioType:%d]", audioType);
+    if (audioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::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() {
-    return mSampleRate;
+    return __mSampleRate;
 }
 
 CAudioInfo::EChannel CAudioInfo::getChannel() {
-    return mChannel;
+    return __mChannel;
 }
 
 CAudioInfo::ESampleType CAudioInfo::getSampleType() {
-    return mSampleType;
+    return __mSampleType;
 }
 
 CAudioInfo::EAudioType CAudioInfo::getAudioType() {
-    return mAudioType;
+    return __mAudioType;
 }
 
-void CAudioInfo::setAudioType(CAudioInfo::EAudioType AudioType) {
-    mAudioType = AudioType;
+void CAudioInfo::setAudioType(CAudioInfo::EAudioType audioType) {
+    __mAudioType = audioType;
     return;
 }
 
 int CAudioInfo::getAudioIndex() {
-    return mAudioIndex;
+    return __mAudioIndex;
 }
 
-void CAudioInfo::setAudioIndex(int AudioIndex) {
-    mAudioIndex = AudioIndex;
+void CAudioInfo::setAudioIndex(int audioIndex) {
+    __mAudioIndex = audioIndex;
     return;
 }
 
-void CAudioInfo::convertAudioType2StreamType (CAudioInfo::EAudioType audioType, char **streamType)
-{
-    if (audioType < CAudioInfo::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::AUDIO_TYPE_MAX) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::ERROR_NOT_SUPPORTED_TYPE, "The audioType is not supported [audioType:%d]", audioType);
+int CAudioInfo::getSampleSize() {
+    int bytes_in_sample = 0;
+    int number_of_channel = 0;
+
+    switch (__mSampleType) {
+    case ESampleType::SAMPLE_TYPE_U8:
+        bytes_in_sample = 1;
+        break;
+    case ESampleType::SAMPLE_TYPE_S16_LE:
+        bytes_in_sample = 2;
+        break;
+    default:
+        AUDIO_IO_LOGW("As unrecognized sample type %d, let's assume S16_LE", __mSampleType);
+        bytes_in_sample = 2;
+        break;
     }
-    *streamType = (char *)StreamTypeTable[audioType];
+
+    switch (__mChannel) {
+    case EChannel::CHANNEL_MONO:
+        number_of_channel = 1;
+        break;
+    case EChannel::CHANNEL_STEREO:
+        number_of_channel = 2;
+        break;
+    default:
+        AUDIO_IO_LOGW("As unrecognized channel %d, let's assume STEREO", __mChannel);
+        number_of_channel = 2;
+        break;
+    }
+
+    return bytes_in_sample * number_of_channel;
+}
+
+void CAudioInfo::convertAudioType2StreamType(CAudioInfo::EAudioType audioType, char **streamType) {
+    if (audioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::EAudioType::AUDIO_TYPE_MAX) {
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE,
+                              "The audioType is not supported [audioType:%u]", to_integral(audioType));
+    }
+    *streamType = (char *)__STREAM_TYPE_TABLE[(unsigned int)audioType];
     return;
 }
 
-void CAudioInfo::convertInputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType)
-{
-    unsigned int i;
-    for (i = CAudioInfo::AUDIO_IN_TYPE_MEDIA ; i < CAudioInfo::AUDIO_OUT_TYPE_MEDIA ; i++) {
-        if (!strcmp((char *)StreamTypeTable[i], streamType)) {
-            break;
+void CAudioInfo::convertInputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType) {
+    for (unsigned int i = (unsigned int)CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i++) {
+        if (!strcmp((char *)__STREAM_TYPE_TABLE[i], streamType)) {
+            *audioType = (CAudioInfo::EAudioType)i;
+            return;
         }
     }
-    if (i >= CAudioInfo::AUDIO_OUT_TYPE_MEDIA) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::ERROR_NOT_SUPPORTED_TYPE, "The streamType is not supported [streamType:%s]", streamType);
-    }
-    *audioType = (CAudioInfo::EAudioType)i;
+    THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType of input is not supported [streamType:%s]", streamType);
     return;
 }
 
-void CAudioInfo::convertOutputStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType)
-{
-    unsigned int i;
-    for (i = CAudioInfo::AUDIO_OUT_TYPE_MEDIA ; i < CAudioInfo::AUDIO_TYPE_MAX ; i++) {
-        if (!strcmp((char *)StreamTypeTable[i], streamType)) {
-            break;
+void CAudioInfo::convertOutputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType) {
+    for (unsigned int i = (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_TYPE_MAX ; i++) {
+        if (!strcmp((char *)__STREAM_TYPE_TABLE[i], streamType)) {
+            *audioType = (CAudioInfo::EAudioType)i;
+            return;
         }
     }
-    if (i >= CAudioInfo::AUDIO_TYPE_MAX) {
-        THROW_ERROR_MSG_FORMAT(CAudioError::ERROR_NOT_SUPPORTED_TYPE, "The streamType is not supported [streamType:%s]", streamType);
-    }
-    *audioType = (CAudioInfo::EAudioType)i;
+    THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType of output is not supported [streamType:%s]", streamType);
     return;
 }