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
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 */
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.
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
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];
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;
91 gboolean video_playback_supported;
92 gboolean use_uridecodebin3; /* experimental feature */
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;
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;
107 gchar httpsrc_element[PLAYER_INI_MAX_STRLEN];
108 guint http_ring_buffer_size;
112 gchar audioeffect_element[PLAYER_INI_MAX_STRLEN];
113 gchar audioeffect_element_custom[PLAYER_INI_MAX_STRLEN];
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];
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];
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;
137 /* default values if each values are not specified in inifile */
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_USE_URIDECODEBIN3 FALSE
177 #define DEFAULT_SUPPORT_AUDIO_EFFECT FALSE /* with HW audio codec */
178 #define DEFAULT_SUPPORT_PCM_EXPORTING FALSE /* with HW audio codec */
179 #define DEFAULT_SUPPORT_PITCH_CONTROL FALSE /* with HW audio codec */
180 #define DEFAULT_SUPPORT_REPLAYGAIN_CONTROL FALSE /* with HW audio codec */
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 */
187 /* dump buffer for debug */
188 #define DEFAULT_DUMP_ELEMENT_KEYWORD ""
189 #define DEFAULT_DUMP_ELEMENT_PATH "/tmp/"
192 mm_player_ini_load(mmplayer_ini_t *ini);
195 mm_player_audio_effect_ini_load(mmplayer_ini_t *ini);