apply new version of audio-io for tizen 3.0
[platform/core/api/audio-io.git] / include / CAudioInfo.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #ifndef __TIZEN_MEDIA_AUDIO__IO_CAUDIO_INFO_H__
18 #define __TIZEN_MEDIA_AUDIO__IO_CAUDIO_INFO_H__
19
20
21 #ifdef __cplusplus
22
23
24 namespace tizen_media_audio {
25
26
27     /**
28      * Audio Information
29      */
30     class CAudioInfo {
31     public:
32         const static unsigned int MIN_SYSTEM_SAMPLERATE = 8000;
33         const static unsigned int MAX_SYSTEM_SAMPLERATE = 48000;
34
35         enum EChannel {
36             CHANNEL_MONO = 1,               /**< 1 channel, mono */
37             CHANNEL_STEREO,                 /**< 2 channel, stereo */
38             CHANNEL_MAX
39         };
40
41         enum ESampleType {
42             SAMPLE_TYPE_U8 = 1,             /**< Unsigned 8-bit audio samples */
43             SAMPLE_TYPE_S16_LE,             /**< Signed 16-bit audio samples */
44             SAMPLE_TYPE_MAX
45         };
46
47         enum EAudioType {
48             /* Only Input */
49             AUDIO_IN_TYPE_MEDIA = 0,
50             AUDIO_IN_TYPE_SYSTEM,
51             AUDIO_IN_TYPE_ALARM,
52             AUDIO_IN_TYPE_NOTIFICATION,
53             AUDIO_IN_TYPE_EMERGENCY,
54             AUDIO_IN_TYPE_VOICE_INFORMATION,
55             AUDIO_IN_TYPE_VOICE_RECOGNITION,
56             AUDIO_IN_TYPE_RINGTONE_VOIP,
57             AUDIO_IN_TYPE_VOIP,
58             AUDIO_IN_TYPE_LOOPBACK,   /**< only for loopback */
59
60             /* Only Output */
61             AUDIO_OUT_TYPE_MEDIA,
62             AUDIO_OUT_TYPE_SYSTEM,
63             AUDIO_OUT_TYPE_ALARM,
64             AUDIO_OUT_TYPE_NOTIFICATION,
65             AUDIO_OUT_TYPE_EMERGENCY,
66             AUDIO_OUT_TYPE_VOICE_INFORMATION,
67             AUDIO_OUT_TYPE_VOICE_RECOGNITION,
68             AUDIO_OUT_TYPE_RINGTONE_VOIP,
69             AUDIO_OUT_TYPE_VOIP,
70
71             AUDIO_TYPE_MAX
72         };
73
74         enum EAudioIOState {
75             AUDIO_IO_STATE_NONE,      /**< Audio-io handle is not created */
76             AUDIO_IO_STATE_IDLE,      /**< Audio-io handle is created, but not prepared */
77             AUDIO_IO_STATE_RUNNING,   /**< Audio-io handle is ready and the stream is running */
78             AUDIO_IO_STATE_PAUSED,    /**< Audio-io handle is ready and the stream is paused */
79         };
80
81     private:
82         unsigned int mSampleRate;
83         EChannel     mChannel;
84         ESampleType  mSampleType;
85         EAudioType   mAudioType;
86         int          mAudioIndex;
87
88         const char *StreamTypeTable[AUDIO_TYPE_MAX] = {
89             /* Only Input */
90             "media",                  /**< AUDIO_IN_TYPE_MEDIA */
91             "system",                 /**< AUDIO_IN_TYPE_SYSTEM */
92             "alarm",                  /**< AUDIO_IN_TYPE_ALARM */
93             "notification",           /**< AUDIO_IN_TYPE_NOTIFICATION */
94             "emergency",              /**< AUDIO_IN_TYPE_EMERGENCY */
95             "voice-information",      /**< AUDIO_IN_TYPE_VOICE_INFORMATION */
96             "voice-recognition",      /**< AUDIO_IN_TYPE_VOICE_RECOGNITION */
97             "ringtone-voip",          /**< AUDIO_IN_TYPE_RINGTONE_VOIP */
98             "voip",                   /**< AUDIO_IN_TYPE_VOIP */
99             "loopback",               /**< AUDIO_IN_TYPE_LOOPBACK */  /**< only for loopback */
100
101             /* Only Output */
102             "media",                  /**< AUDIO_OUT_TYPE_MEDIA */
103             "system",                 /**< AUDIO_OUT_TYPE_SYSTEM */
104             "alarm",                  /**< AUDIO_OUT_TYPE_ALARM */
105             "notification",           /**< AUDIO_OUT_TYPE_NOTIFICATION */
106             "emergency",              /**< AUDIO_OUT_TYPE_EMERGENCY */
107             "voice-information",      /**< AUDIO_OUT_TYPE_VOICE_INFORMATION */
108             "voice-recognition",      /**< AUDIO_OUT_TYPE_VOICE_RECOGNITION */
109             "ringtone-voip",          /**< AUDIO_OUT_TYPE_RINGTONE_VOIP */
110             "voip",                   /**< AUDIO_OUT_TYPE_VOIP */
111         };
112
113     public:
114         /* Constructors */
115         CAudioInfo();
116         CAudioInfo(unsigned int sampleRate, EChannel channel, ESampleType sampleType, EAudioType audioType, int audioIndex) throw (CAudioError);
117
118         /* Setter & Getter */
119         unsigned int getSampleRate();
120         EChannel getChannel();
121         ESampleType getSampleType();
122         EAudioType getAudioType();
123         void setAudioType(EAudioType AudioType);
124         int getAudioIndex();
125         void setAudioIndex(int AudioIndex);
126         void convertAudioType2StreamType (CAudioInfo::EAudioType audioType, char **streamType);
127         void convertStreamType2AudioType (char *streamType, CAudioInfo::EAudioType *audioType);
128     };
129
130 } /* namespace tizen_media_audio */
131
132 #endif
133 #endif /* __TIZEN_MEDIA_AUDIO__IO_CAUDIO_INFO_H__ */