4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
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>
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
23 #ifndef __MM_PLAYER_INI_H__
24 #define __MM_PLAYER_INI_H__
28 #include "mm_player_audioeffect.h"
37 #define LOG_TAG "MM_PLAYER"
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 */
42 #define PLAYER_INI_MAX_STRLEN 100
43 #define PLAYER_INI_MAX_PARAM_STRLEN 256
45 #define PLAYER_INI_MAX_ELEMENT 10
47 /* NOTE : MMPlayer has no initalizing API for library itself
48 * so we cannot decide when those ini values to be released.
49 * this is the reason of all string items are static array.
50 * make it do with malloc when MMPlayerInitialize() API created
51 * before that time, we should be careful with size limitation
52 * of each string item.
55 KEYWORD_EXCLUDE, // for element exclude keyworld
56 KEYWORD_DUMP, // for dump element keyworld
57 KEYWORD_UNSUPPORTED_CODEC, // for un-supported codec
58 KEYWORD_A_SW_CODEC, // for audio sw codec
59 KEYWORD_V_SW_CODEC // for video sw codec
62 typedef struct __mm_player_ini {
64 gchar videosink_element_overlay[PLAYER_INI_MAX_STRLEN];
65 gchar videosink_element_fake[PLAYER_INI_MAX_STRLEN];
66 gchar videoconverter_element[PLAYER_INI_MAX_STRLEN];
67 gchar videocodec_element_hw[PLAYER_INI_MAX_STRLEN];
68 gchar videocodec_element_sw[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
69 gchar audiocodec_element_hw[PLAYER_INI_MAX_STRLEN];
70 gchar audiocodec_element_sw[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
71 gchar audioresampler_element[PLAYER_INI_MAX_STRLEN];
72 gchar audiosink_element[PLAYER_INI_MAX_STRLEN];
74 gboolean generate_dot;
75 gboolean use_system_clock;
76 gint live_state_change_timeout;
77 gint localplayback_state_change_timeout;
78 gint delay_before_repeat;
80 gboolean video_playback_supported;
82 gchar gst_param[5][PLAYER_INI_MAX_PARAM_STRLEN];
83 gchar exclude_element_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
84 gchar unsupported_codec_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
86 gboolean disable_segtrap;
89 gint video_bo_timeout;
92 gchar httpsrc_element[PLAYER_INI_MAX_STRLEN];
93 gboolean http_use_file_buffer;
94 guint http_ring_buffer_size;
95 guint http_max_size_bytes;
96 gint http_buffering_time; /* ms */
100 gchar audioeffect_element[PLAYER_INI_MAX_STRLEN];
101 gchar audioeffect_element_custom[PLAYER_INI_MAX_STRLEN];
103 /* audio effect preset mode */
104 gboolean use_audio_effect_preset;
105 gboolean audio_effect_preset_list[MM_AUDIO_EFFECT_PRESET_NUM];
106 gboolean audio_effect_preset_earphone_only_list[MM_AUDIO_EFFECT_PRESET_NUM];
108 /* audio effect custom mode */
109 gboolean use_audio_effect_custom;
110 gboolean audio_effect_custom_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
111 gboolean audio_effect_custom_earphone_only_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
112 gint audio_effect_custom_eq_band_num;
113 gint audio_effect_custom_eq_band_width[MM_AUDIO_EFFECT_EQ_BAND_NUM_MAX];
114 gint audio_effect_custom_eq_band_freq[MM_AUDIO_EFFECT_EQ_BAND_NUM_MAX];
115 gint audio_effect_custom_ext_num;
116 gint audio_effect_custom_min_level_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
117 gint audio_effect_custom_max_level_list[MM_AUDIO_EFFECT_CUSTOM_NUM];
119 /* dump buffer for debug */
120 gchar dump_element_keyword[PLAYER_INI_MAX_ELEMENT][PLAYER_INI_MAX_STRLEN];
121 gchar dump_element_path[PLAYER_INI_MAX_STRLEN];
122 gboolean set_dump_element_flag;
125 /* default values if each values are not specified in inifile */
127 #define DEFAULT_AUDIO_EFFECT_ELEMENT ""
128 #define DEFAULT_USE_AUDIO_EFFECT_PRESET FALSE
129 #define DEFAULT_AUDIO_EFFECT_PRESET_LIST ""
130 #define DEFAULT_AUDIO_EFFECT_PRESET_LIST_EARPHONE_ONLY ""
131 #define DEFAULT_USE_AUDIO_EFFECT_CUSTOM FALSE
132 #define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST ""
133 #define DEFAULT_AUDIO_EFFECT_CUSTOM_LIST_EARPHONE_ONLY ""
134 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_NUM 0
135 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_WIDTH ""
136 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_BAND_FREQ ""
137 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MIN 0
138 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EQ_MAX 0
139 #define DEFAULT_AUDIO_EFFECT_CUSTOM_EXT_NUM 0
140 #define DEFAULT_USE_SINK_HANDLER TRUE
141 #define DEFAULT_SKIP_RESCAN TRUE
142 #define DEFAULT_GENERATE_DOT FALSE
143 #define DEFAULT_USE_SYSTEM_CLOCK TRUE
144 #define DEFAULT_DELAY_BEFORE_REPEAT 50 /* msec */
145 #define DEFAULT_EOS_DELAY 0 /* msec */
146 #define DEFAULT_VIDEOSINK_OVERLAY "tizenwlsink"
147 #define DEFAULT_VIDEOSINK_EVAS "evasimagesink"
148 #define DEFAULT_VIDEOSINK_FAKE "fakesink"
149 #define DEFAULT_AUDIORESAMPLER "audioresample"
150 #define DEFAULT_AUDIOSINK "pulsesink"
151 #define DEFAULT_CODEC_HW ""
152 #define DEFAULT_CODEC_SW ""
153 #define DEFAULT_GST_PARAM ""
154 #define DEFAULT_EXCLUDE_KEYWORD ""
155 #define DEFAULT_UNSUPPORTED_CODEC_KEYWORD ""
156 #define DEFAULT_ASYNC_START TRUE
157 #define DEFAULT_DISABLE_SEGTRAP TRUE
158 #define DEFAULT_VIDEO_CONVERTER ""
159 #define DEFAULT_VIDEO_PLAYBACK_SUPPORTED TRUE
160 #define DEFAULT_LIVE_STATE_CHANGE_TIMEOUT 30 /* sec */
161 #define DEFAULT_LOCALPLAYBACK_STATE_CHANGE_TIMEOUT 10 /* sec */
162 #define DEFAULT_PCM_BUFFER_SIZE 51200 /* bytes */
163 #define DEFAULT_NUM_OF_VIDEO_BO 10
164 #define DEFAULT_TIMEOUT_OF_VIDEO_BO 10 /* sec */
167 #define DEFAULT_HTTPSRC "souphttpsrc"
168 #define DEFAULT_HTTP_USE_FILE_BUFFER FALSE
169 #define DEFAULT_HTTP_RING_BUFFER_SIZE (20*1024*1024) /* bytes : 20MBytes */
170 #define DEFAULT_HTTP_MAX_SIZE_BYTES 1048576 /* bytes : 1 MBytes */
171 #define DEFAULT_HTTP_BUFFERING_TIME 1.2 /* sec */
172 #define DEFAULT_HTTP_TIMEOUT -1 /* infinite retry */
174 /* dump buffer for debug */
175 #define DEFAULT_DUMP_ELEMENT_KEYWORD ""
176 #define DEFAULT_DUMP_ELEMENT_PATH "/tmp/"
178 /* NOTE : following content should be same with above default values */
179 /* FIXIT : need smarter way to generate default ini file. */
180 /* FIXIT : finally, it should be an external file */
181 #define MM_PLAYER_DEFAULT_INI \
185 disable segtrap = yes ; same effect with --gst-disable-segtrap \n\
187 ; set default video sink but, it can be replaced with others selected by application\n\
188 ; 0:v4l2sink, 1:ximagesink, 2:xvimagesink, 3:fakesink 4:evasimagesink 5:glimagesink\n\
189 videosink element = 2 \n\
191 video converter element = \n\
193 audiosink element = pulsesink \n\
195 ; if yes. gstreamer will not update registry \n\
196 skip rescan = yes \n\
198 delay before repeat = 50 ; msec\n\
200 ; comma separated list of tocken which elemnts has it in it's name will not be used \n\
201 element exclude keyword = \n\
203 ; comma separated list of tocken \n\
204 unsupported codec keyword = \n\
206 async start = yes \n\
208 ; parameters for initializing gstreamer \n\
209 gstparam1 = --gst-debug=2\n\
215 ; generating dot file representing pipeline state \n\
216 ; export GST_DEBUG_DUMP_DOT_DIR=/tmp/\n\
217 generate dot = no \n\
219 ; parameter is for only video to be determined \n\
220 ; which clock will be used \n\
221 ; if yes, system clock will be used \n\
222 ; apart from this, audiosink is clock provider for audio \n\
223 use system clock = yes \n\
225 ; allowed timeout for changing pipeline state \n\
226 live state change timeout = 30 ; sec \n\
227 localplayback state change timeout = 4 ; sec \n\
229 ; delay in msec for sending EOS \n\
230 eos delay = 150 ; msec \n\
235 httppsrc element = souphttpsrc \n\
237 ; if yes, use file for buffering.\n\
238 ; if no, use memory for buffering.\n\
239 http use file buffer = no\n\
241 ; ring buffer size when use mem buffer \n\
242 http ring buffer size = 20971520 ; 20MBytes \n\
244 http buffering limit = 99 ; percent\n\
246 http max size bytes = 1048576 ; bytes\n\
248 http buffering time = 1.2 \n\
250 http timeout = -1 ; infinite retry \n\
255 mm_player_ini_load(mm_player_ini_t *ini);
258 mm_player_audio_effect_ini_load(mm_player_ini_t *ini);