2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef __TIZEN_MEDIA_AUDIO__IO_CAUDIO_INFO_H__
18 #define __TIZEN_MEDIA_AUDIO__IO_CAUDIO_INFO_H__
23 #include <type_traits>
25 namespace tizen_media_audio {
28 constexpr auto to_integral(E e) -> typename std::underlying_type<E>::type {
29 return static_cast<typename std::underlying_type<E>::type>(e);
37 enum class EChannel : unsigned int {
38 CHANNEL_MONO = 1, /**< 1 channel, mono */
39 CHANNEL_STEREO, /**< 2 channel, stereo */
43 enum class ESampleType : unsigned int {
44 SAMPLE_TYPE_U8 = 1, /**< Unsigned 8-bit audio samples */
45 SAMPLE_TYPE_S16_LE, /**< Signed 16-bit audio samples */
46 SAMPLE_TYPE_S24_LE, /**< Signed 24-bit audio samples */
47 SAMPLE_TYPE_S24_32_LE, /**< Signed 24-bit packed in 32-bit audio samples */
51 enum class EAudioType : unsigned int {
53 AUDIO_IN_TYPE_MEDIA = 0,
54 //AUDIO_IN_TYPE_SYSTEM,
55 //AUDIO_IN_TYPE_ALARM,
56 //AUDIO_IN_TYPE_NOTIFICATION,
57 //AUDIO_IN_TYPE_EMERGENCY,
58 //AUDIO_IN_TYPE_VOICE_INFORMATION,
59 AUDIO_IN_TYPE_VOICE_RECOGNITION,
60 //AUDIO_IN_TYPE_RINGTONE_VOIP,
62 AUDIO_IN_TYPE_MEDIA_EXTERNAL_ONLY,
63 //AUDIO_IN_TYPE_RINGTONE_CALL,
64 //AUDIO_IN_TYPE_VOICE_CALL,
65 //AUDIO_IN_TYPE_VIDEO_CALL,
66 //AUDIO_IN_TYPE_RADIO,
67 AUDIO_IN_TYPE_LOOPBACK,
68 AUDIO_IN_TYPE_VOICE_RECOGNITION_SERVICE,
69 //AUDIO_IN_TYPE_MEDIA_NETWORK_SOURCE,
73 AUDIO_OUT_TYPE_SYSTEM,
75 AUDIO_OUT_TYPE_NOTIFICATION,
76 AUDIO_OUT_TYPE_EMERGENCY,
77 AUDIO_OUT_TYPE_VOICE_INFORMATION,
78 //AUDIO_OUT_TYPE_VOICE_RECOGNITION,
79 AUDIO_OUT_TYPE_RINGTONE_VOIP,
81 AUDIO_OUT_TYPE_MEDIA_EXTERNAL_ONLY,
82 AUDIO_OUT_TYPE_RINGTONE_CALL,
83 //AUDIO_OUT_TYPE_VOICE_CALL,
84 //AUDIO_OUT_TYPE_VIDEO_CALL,
85 //AUDIO_OUT_TYPE_RADIO,
86 //AUDIO_OUT_TYPE_LOOPBACK,
87 //AUDIO_OUT_TYPE_VOICE_RECOGNITION_SERVICE,
88 AUDIO_OUT_TYPE_MEDIA_NETWORK_SOURCE,
93 enum class EAudioIOState : unsigned int {
94 AUDIO_IO_STATE_NONE, /**< Audio-io handle is not created */
95 AUDIO_IO_STATE_IDLE, /**< Audio-io handle is created, but not prepared */
96 AUDIO_IO_STATE_RUNNING, /**< Audio-io handle is ready and the stream is running */
97 AUDIO_IO_STATE_PAUSED, /**< Audio-io handle is ready and the stream is paused */
101 enum class EAudioDirection : unsigned int {
102 AUDIO_DIRECTION_IN, /**< Audio direction input */
103 AUDIO_DIRECTION_OUT, /**< Audio direction output */
107 const static unsigned int MIN_SYSTEM_SAMPLERATE = 8000;
108 const static unsigned int MAX_SYSTEM_SAMPLERATE = 192000;
112 CAudioInfo(unsigned int sampleRate, EChannel channel, ESampleType sampleType, EAudioType audioType, int audioIndex);
114 /* Setter & Getter */
115 unsigned int getSampleRate();
116 EChannel getChannel();
117 ESampleType getSampleType();
118 EAudioType getAudioType();
119 void setAudioType(EAudioType audioType);
121 void setAudioIndex(int audioIndex);
122 void convertAudioType2StreamType(CAudioInfo::EAudioType audioType, char **streamType);
123 void convertInputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType);
124 void convertOutputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType);
128 const char *__STREAM_TYPE_TABLE[(unsigned int)EAudioType::AUDIO_TYPE_MAX] = {
130 "media", /**< AUDIO_IN_TYPE_MEDIA */
131 //"system", /**< AUDIO_IN_TYPE_SYSTEM */
132 //"alarm", /**< AUDIO_IN_TYPE_ALARM */
133 //"notification", /**< AUDIO_IN_TYPE_NOTIFICATION */
134 //"emergency", /**< AUDIO_IN_TYPE_EMERGENCY */
135 //"voice-information", /**< AUDIO_IN_TYPE_VOICE_INFORMATION */
136 "voice-recognition", /**< AUDIO_IN_TYPE_VOICE_RECOGNITION */
137 //"ringtone-voip", /**< AUDIO_IN_TYPE_RINGTONE_VOIP */
138 "voip", /**< AUDIO_IN_TYPE_VOIP */
139 "ext-media", /**< AUDIO_IN_TYPE_MEDIA_EXTERNAL_ONLY */
140 //"ringtone-call", /**< AUDIO_IN_TYPE_RINGTONE_CALL */
141 //"call-voice", /**< AUDIO_IN_TYPE_VOICE_CALL */
142 //"call-video", /**< AUDIO_IN_TYPE_VIDEO_CALL */
143 //"radio", /**< AUDIO_IN_TYPE_RADIO */
144 "loopback-mirroring", /**< AUDIO_IN_TYPE_LOOPBACK */
145 "voice-recognition-service", /**< AUDIO_IN_TYPE_VOICE_RECOGNITION_SERVICE */
146 //"network-source-media", /**< AUDIO_IN_TYPE_MEDIA_NETWORK_SOURCE */
149 "media", /**< AUDIO_OUT_TYPE_MEDIA */
150 "system", /**< AUDIO_OUT_TYPE_SYSTEM */
151 "alarm", /**< AUDIO_OUT_TYPE_ALARM */
152 "notification", /**< AUDIO_OUT_TYPE_NOTIFICATION */
153 "emergency", /**< AUDIO_OUT_TYPE_EMERGENCY */
154 "voice-information", /**< AUDIO_OUT_TYPE_VOICE_INFORMATION */
155 //"voice-recognition", /**< AUDIO_OUT_TYPE_VOICE_RECOGNITION */
156 "ringtone-voip", /**< AUDIO_OUT_TYPE_RINGTONE_VOIP */
157 "voip", /**< AUDIO_OUT_TYPE_VOIP */
158 "ext-media", /**< AUDIO_OUT_TYPE_MEDIA_EXTERNAL_ONLY */
159 "ringtone-call", /**< AUDIO_OUT_TYPE_RINGTONE_CALL */
160 //"call-voice", /**< AUDIO_OUT_TYPE_VOICE_CALL */
161 //"call-video", /**< AUDIO_OUT_TYPE_VIDEO_CALL */
162 //"radio", /**< AUDIO_OUT_TYPE_RADIO */
163 //"loopback-mirroring", /**< AUDIO_OUT_TYPE_LOOPBACK */
164 //"voice-recognition-service",/**< AUDIO_OUT_TYPE_VOICE_RECOGNITION_SERVICE */
165 "network-source-media", /**< AUDIO_OUT_TYPE_MEDIA_NETWORK_SOURCE */
168 unsigned int __mSampleRate;
170 ESampleType __mSampleType;
171 EAudioType __mAudioType;
176 } /* namespace tizen_media_audio */
179 #endif /* __TIZEN_MEDIA_AUDIO__IO_CAUDIO_INFO_H__ */