b2bed7329075b2f8fde170467022e0ab587ad1ce
[platform/core/multimedia/libmm-player.git] / src / include / mm_player_ini.h
1 /*
2  * libmm-player
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>, YeJin Cho <cho.yejin@samsung.com>,
7  * Seungbae Shin <seungbae.shin@samsung.com>, YoungHwan An <younghwan_.an@samsung.com>
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  */
22
23 #ifndef __MM_PLAYER_INI_H__
24 #define __MM_PLAYER_INI_H__
25
26 #include <glib.h>
27 #include <mm_types.h>
28 #include "mm_player_audioeffect.h"
29
30 #ifdef __cplusplus
31         extern "C" {
32 #endif
33
34 #ifdef LOG_TAG
35 #undef LOG_TAG
36 #endif
37 #define LOG_TAG "MM_PLAYER"
38
39 #define MM_PLAYER_INI_DEFAULT_PATH      SYSCONFDIR"/multimedia/mmfw_player.ini" /* SYSCONFDIR is defined at .spec */
40 #define MM_PLAYER_INI_DEFAULT_AUDIOEFFECT_PATH  SYSCONFDIR"/multimedia/mmfw_player_audio_effect.ini" /* SYSCONFDIR is defined at .spec */
41
42 #define PLAYER_INI_MAX_STRLEN       100
43 #define PLAYER_INI_MAX_PARAM_STRLEN 256
44
45 #define PLAYER_INI_MAX_ELEMENT      10
46 #define PLAYER_INI_MAX_DEVICE_TYPE  10
47 #define PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT 10 /* @see MAX_SUPPORTED_MEDIA_FORMAT in player_private.h */
48
49 /* NOTE : MMPlayer has no initalizing API for library itself
50  * so we cannot decide when those ini values to be released.
51  * this is the reason of all string items are static array.
52  * make it do with malloc when MMPlayerInitialize() API created
53  * before that time, we should be careful with size limitation
54  * of each string item.
55  */
56 enum keyword_type {
57         KEYWORD_EXCLUDE,    // for element exclude keyword
58         KEYWORD_DUMP,       // for dump element keyword
59         KEYWORD_UNSUPPORTED_CODEC, // for un-supported codec
60         KEYWORD_A_SW_CODEC, // for audio sw codec
61         KEYWORD_V_SW_CODEC, // for video sw codec
62         KEYWORD_A_OFFLOAD_DEVICE_TYPE,  // for audio device type which can support offload
63         KEYWORD_A_OFFLOAD_MEDIA_FORMAT, // supported media format for audio offload
64         KEYWORD_MEDIA_STREAM_IN_FORMAT, // supported media format for external media stream
65 };
66
67 typedef struct {
68         /* general */
69         gchar videosink_element_overlay[PLAYER_INI_MAX_STRLEN];
70         gchar videosink_element_fake[PLAYER_INI_MAX_STRLEN];
71         gchar videoconverter_element[PLAYER_INI_MAX_STRLEN];
72         gchar videocodec_element_hw[PLAYER_INI_MAX_STRLEN];
73         gchar videocodec_element_sw[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
74         gchar videocodec_default_type[PLAYER_INI_MAX_STRLEN];
75         gchar audiocodec_element_hw[PLAYER_INI_MAX_STRLEN];
76         gchar audiocodec_element_sw[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
77         gchar audiocodec_default_type[PLAYER_INI_MAX_STRLEN];
78         gchar audioresampler_element[PLAYER_INI_MAX_STRLEN];
79         gchar audiosink_element[PLAYER_INI_MAX_STRLEN];
80         gchar audio_offload_sink_element[PLAYER_INI_MAX_STRLEN];
81         gchar audio_offload_device_type[PLAYER_INI_MAX_DEVICE_TYPE][PLAYER_INI_MAX_STRLEN];
82         gchar audio_offload_media_format[PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT][PLAYER_INI_MAX_STRLEN];
83         gchar media_stream_input_format[PLAYER_INI_MAX_SUPPORTED_MEDIA_FORMAT][PLAYER_INI_MAX_STRLEN];
84         gboolean skip_rescan;
85         gboolean generate_dot;
86         gboolean use_system_clock;
87         gint live_state_change_timeout;
88         gint localplayback_state_change_timeout;
89         gint delay_before_repeat;
90         gint eos_delay;
91         gboolean video_playback_supported;
92         gboolean use_uridecodebin3; /* experimental feature */
93
94         gchar gst_param[5][PLAYER_INI_MAX_PARAM_STRLEN];
95         gchar exclude_element_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
96         gchar unsupported_codec_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
97         gboolean disable_segtrap;
98         gint pcm_buffer_size;
99         gint num_of_video_bo;
100         gint video_bo_timeout;
101         gboolean support_audio_effect;
102         gboolean support_pcm_exporting;
103         gboolean support_pitch_control;
104         gboolean support_replaygain_control;
105
106         /* http streaming */
107         gchar httpsrc_element[PLAYER_INI_MAX_STRLEN];
108         guint http_ring_buffer_size;
109         gint http_timeout;
110
111         /* audio effect */
112         gchar audioeffect_element[PLAYER_INI_MAX_STRLEN];
113         gchar audioeffect_element_custom[PLAYER_INI_MAX_STRLEN];
114
115         /* audio effect preset mode */
116         gboolean use_audio_effect_preset;
117         gboolean audio_effect_preset_list[MM_AUDIO_EFFECT_PRESET_NUM];
118         gboolean audio_effect_preset_earphone_only_list[MM_AUDIO_EFFECT_PRESET_NUM];
119
120         /* audio effect custom mode */
121         gboolean use_audio_effect_custom;
122         gboolean audio_effect_custom_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
123         gboolean audio_effect_custom_earphone_only_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
124         gint audio_effect_custom_eq_band_num;
125         gint audio_effect_custom_eq_band_width[MM_AUDIO_EFFECT_EQ_BAND_NUM_MAX];
126         gint audio_effect_custom_eq_band_freq[MM_AUDIO_EFFECT_EQ_BAND_NUM_MAX];
127         gint audio_effect_custom_ext_num;
128         gint audio_effect_custom_min_level_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
129         gint audio_effect_custom_max_level_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
130
131         /* dump buffer for debug */
132         gchar dump_element_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
133         gchar dump_element_path[PLAYER_INI_MAX_STRLEN];
134         gboolean set_dump_element_flag;
135 } mmplayer_ini_t;
136
137 /* default values if each values are not specified in inifile */
138 /* general */
139 #define DEFAULT_EMPTY_VALUE                               ""
140 #define DEFAULT_AUDIO_EFFECT_ELEMENT                      ""
141 #define DEFAULT_USE_AUDIO_EFFECT_PRESET                   FALSE
142 #define DEFAULT_AUDIO_EFFECT_PRESET_LIST                  ""
143 #define DEFAULT_AUDIO_EFFECT_PRESET_LIST_EARPHONE_ONLY    ""
144 #define DEFAULT_USE_AUDIO_EFFECT_CUSTOM                   FALSE
145 #define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST                  ""
146 #define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST_EARPHONE_ONLY    ""
147 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_NUM           0
148 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_WIDTH         ""
149 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_FREQ          ""
150 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MIN                0
151 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MAX                0
152 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EXT_NUM               0
153 #define DEFAULT_USE_SINK_HANDLER                          TRUE
154 #define DEFAULT_SKIP_RESCAN                               TRUE
155 #define DEFAULT_GENERATE_DOT                              FALSE
156 #define DEFAULT_USE_SYSTEM_CLOCK                          TRUE
157 #define DEFAULT_DELAY_BEFORE_REPEAT                       50 /* msec */
158 #define DEFAULT_EOS_DELAY                                 0 /* msec */
159 #define DEFAULT_VIDEOSINK_OVERLAY                         "tizenwlsink"
160 #define DEFAULT_VIDEOSINK_EVAS                            "evasimagesink"
161 #define DEFAULT_VIDEOSINK_FAKE                            "fakesink"
162 #define DEFAULT_AUDIORESAMPLER                            "audioresample"
163 #define DEFAULT_AUDIOSINK                                 "pulsesink"
164 #define DEFAULT_A_OFFLOAD_DEVICE_TYPE                     ""
165 #define DEFAULT_GST_PARAM                                 ""
166 #define DEFAULT_EXCLUDE_KEYWORD                           ""
167 #define DEFAULT_UNSUPPORTED_CODEC_KEYWORD                 ""
168 #define DEFAULT_DISABLE_SEGTRAP                           TRUE
169 #define DEFAULT_VIDEO_CONVERTER                           ""
170 #define DEFAULT_LIVE_STATE_CHANGE_TIMEOUT                 30 /* sec */
171 #define DEFAULT_LOCALPLAYBACK_STATE_CHANGE_TIMEOUT        10 /* sec */
172 #define DEFAULT_PCM_BUFFER_SIZE                           51200 /* bytes */
173 #define DEFAULT_NUM_OF_VIDEO_BO                           10
174 #define DEFAULT_TIMEOUT_OF_VIDEO_BO                       10 /* sec */
175 #define DEFAULT_AUDIO_OFFLOAD_SINK                        ""
176 #define DEFAULT_SUPPORT_AUDIO_EFFECT                      FALSE /* with HW audio codec */
177 #define DEFAULT_SUPPORT_PCM_EXPORTING                     FALSE /* with HW audio codec */
178 #define DEFAULT_SUPPORT_PITCH_CONTROL                     FALSE /* with HW audio codec */
179 #define DEFAULT_SUPPORT_REPLAYGAIN_CONTROL                FALSE /* with HW audio codec */
180 #define DEFAULT_USE_URIDECODEBIN3                         FALSE
181
182 /* http streaming */
183 #define DEFAULT_HTTPSRC                                   "souphttpsrc"
184 #define DEFAULT_HTTP_RING_BUFFER_SIZE                     (20*1024*1024) /* bytes : 20MBytes */
185 #define DEFAULT_HTTP_TIMEOUT                              -1        /* infinite retry */
186
187 /* dump buffer for debug */
188 #define DEFAULT_DUMP_ELEMENT_KEYWORD                      ""
189 #define DEFAULT_DUMP_ELEMENT_PATH                         "/tmp/"
190
191 int
192 mm_player_ini_load(mmplayer_ini_t *ini);
193
194 int
195 mm_player_audio_effect_ini_load(mmplayer_ini_t *ini);
196
197 #ifdef __cplusplus
198         }
199 #endif
200
201 #endif