4 * Copyright (c) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: JongHyuk Choi <jhchoi.choi@samsung.com>, ByungWook Jang <bw.jang@samsung.com>,
7 * Manoj Kumar K <manojkumar.k@samsung.com>, Hyunil Park <hyunil46.park@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.
24 #include <glib/gstdio.h>
26 #include <iniparser.h>
28 #include "mm_wfd_sink_ini.h"
29 #include "mm_wfd_sink_dlog.h"
31 static gboolean loaded = FALSE;
33 /* global variables here */
34 #ifdef MM_WFD_SINK_DEFAULT_INI
35 static gboolean __generate_sink_default_ini(void);
38 static void __mm_wfd_sink_ini_check_status(void);
41 #define MM_WFD_SINK_INI_GET_STRING(x_dict, x_item, x_ini, x_default) \
46 str = iniparser_getstring(x_dict, x_ini, (char *)x_default); \
48 length = strlen(str); \
49 if ((length > 1) && (length < WFD_SINK_INI_MAX_STRLEN)) \
50 strncpy(x_item, str, WFD_SINK_INI_MAX_STRLEN-1); \
52 strncpy(x_item, x_default, WFD_SINK_INI_MAX_STRLEN-1); \
54 strncpy(x_item, x_default, WFD_SINK_INI_MAX_STRLEN-1); \
58 #ifdef MM_WFD_SINK_DEFAULT_INI
60 gboolean __generate_sink_default_ini(void)
63 const gchar *default_ini = MM_WFD_SINK_DEFAULT_INI;
67 fp = fopen(MM_WFD_SINK_INI_DEFAULT_PATH, "wt");
73 /* writing default ini file */
74 if (strlen(default_ini) != fwrite(default_ini, 1, strlen(default_ini), fp)) {
85 mm_wfd_sink_ini_load(mm_wfd_sink_ini_t *ini)
87 dictionary *dict = NULL;
89 wfd_sink_debug_fenter();
92 __mm_wfd_sink_ini_check_status();
94 /* first, try to load existing ini file */
95 dict = iniparser_load(MM_WFD_SINK_INI_DEFAULT_PATH);
97 /* if no file exists. create one with set of default values */
99 #ifdef MM_WFD_SINK_DEFAULT_INI
100 wfd_sink_debug("No inifile found. create default ini file.\n");
101 if (FALSE == __generate_sink_default_ini()) {
102 wfd_sink_error("Creating default ini file failed. Use default values.\n");
104 /* load default ini */
105 dict = iniparser_load(MM_WFD_SINK_INI_DEFAULT_PATH);
108 wfd_sink_error("No ini file found. \n");
110 return MM_ERROR_FILE_NOT_FOUND;
115 memset(ini, 0, sizeof(mm_wfd_sink_ini_t));
117 if (dict) { /* if dict is available */
119 MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[0], "general:gstparam1", DEFAULT_GST_PARAM);
120 MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[1], "general:gstparam2", DEFAULT_GST_PARAM);
121 MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[2], "general:gstparam3", DEFAULT_GST_PARAM);
122 MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[3], "general:gstparam4", DEFAULT_GST_PARAM);
123 MM_WFD_SINK_INI_GET_STRING(dict, ini->gst_param[4], "general:gstparam5", DEFAULT_GST_PARAM);
124 ini->generate_dot = iniparser_getboolean(dict, "general:generate dot", DEFAULT_GENERATE_DOT);
125 ini->enable_pad_probe = iniparser_getboolean(dict, "general:enable pad probe", DEFAULT_ENABLE_PAD_PROBE);
126 ini->state_change_timeout = iniparser_getint(dict, "general:state change timeout", DEFAULT_STATE_CHANGE_TIMEOUT);
127 ini->set_debug_property = iniparser_getboolean(dict, "general:set debug property", DEFAULT_SET_DEBUG_PROPERTY);
128 ini->enable_asm = iniparser_getboolean(dict, "general:enable asm", DEFAULT_ENABLE_ASM);
129 ini->jitter_buffer_latency = iniparser_getint(dict, "general:jitter buffer latency", DEFAULT_JITTER_BUFFER_LATENCY);
130 ini->enable_retransmission = iniparser_getboolean(dict, "general:enable retransmission", DEFAULT_ENABLE_RETRANSMISSION);
131 ini->enable_reset_basetime = iniparser_getboolean(dict, "general:enable reset basetime", DEFAULT_ENABLE_RESET_BASETIME);
132 ini->video_sink_max_lateness = iniparser_getint(dict, "general:video sink max lateness", DEFAULT_VIDEO_SINK_MAX_LATENESS);
133 ini->sink_ts_offset = iniparser_getint(dict, "general:sink ts offset", DEFAULT_SINK_TS_OFFSET);
134 ini->audio_sink_async = iniparser_getboolean(dict, "general:audio sink async", DEFAULT_AUDIO_SINK_ASYNC);
135 ini->video_sink_async = iniparser_getboolean(dict, "general:video sink async", DEFAULT_VIDEO_SINK_ASYNC);
136 ini->enable_ts_data_dump = iniparser_getboolean(dict, "general:enable ts data dump", DEFAULT_ENABLE_TS_DATA_DUMP);
137 ini->enable_wfdsrc_pad_probe = iniparser_getboolean(dict, "general:enable wfdsrc pad probe", DEFAULT_ENABLE_WFDRTSPSRC_PAD_PROBE);
141 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_source, "pipeline:wfdsrc element", DEFAULT_NAME_OF_SOURCE);
142 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_tsdemux, "pipeline:tsdemux element", DEFAULT_NAME_OF_TSDEMUX);
143 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_audio_hdcp, "pipeline:audio hdcp element", DEFAULT_NAME_OF_AUDIO_HDCP);
144 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_aac_parser, "pipeline:aac parser element", DEFAULT_NAME_OF_AAC_PARSER);
145 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_aac_decoder, "pipeline:aac decoder element", DEFAULT_NAME_OF_AAC_DECODER);
146 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_ac3_parser, "pipeline:ac3 parser element", DEFAULT_NAME_OF_AC3_PARSER);
147 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_ac3_decoder, "pipeline:ac3 decoder element", DEFAULT_NAME_OF_AC3_DECODER);
148 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_lpcm_converter, "pipeline:lpcm converter element", DEFAULT_NAME_OF_LPCM_CONVERTER);
149 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_lpcm_filter, "pipeline:lpcm filter element", DEFAULT_NAME_OF_LPCM_FILTER);
150 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_audio_resampler, "pipeline:audio resampler element", DEFAULT_NAME_OF_AUDIO_RESAMPLER);
151 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_audio_volume, "pipeline:audio volume element", DEFAULT_NAME_OF_AUDIO_VOLUME);
152 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_audio_sink, "pipeline:audio sink element", DEFAULT_NAME_OF_AUDIO_SINK);
153 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_hdcp, "pipeline:video hdcp element", DEFAULT_NAME_OF_VIDEO_HDCP);
154 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_parser, "pipeline:video parser element", DEFAULT_NAME_OF_VIDEO_PARSER);
155 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_capssetter, "pipeline:video capssetter element", DEFAULT_NAME_OF_VIDEO_CAPSSETTER);
156 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_decoder, "pipeline:video decoder element", DEFAULT_NAME_OF_VIDEO_DECODER);
157 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_converter, "pipeline:video converter element", DEFAULT_NAME_OF_VIDEO_CONVERTER);
158 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_filter, "pipeline:video filter element", DEFAULT_NAME_OF_VIDEO_FILTER);
159 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_sink, "pipeline:video sink element", DEFAULT_NAME_OF_VIDEO_SINK);
160 MM_WFD_SINK_INI_GET_STRING(dict, ini->name_of_video_evas_sink, "pipeline:video evas sink element", DEFAULT_NAME_OF_EVAS_VIDEO_SINK);
163 ini->audio_codec = iniparser_getint(dict, "audio param:audio codec", DEFAULT_AUDIO_CODEC);
164 ini->audio_latency = iniparser_getint(dict, "audio param:audio latency", DEFAULT_AUDIO_LATENCY);
165 ini->audio_channel = iniparser_getint(dict, "audio param:audio channels", DEFAULT_AUDIO_CHANNELS);
166 ini->audio_sampling_frequency = iniparser_getint(dict, "audio param:audio sampling frequency", DEFAULT_AUDIO_SAMP_FREQUENCY);
169 ini->video_codec = iniparser_getint(dict, "video param:video codec", DEFAULT_VIDEO_CODEC);
170 ini->video_native_resolution = iniparser_getint(dict, "video param:video native resolution", DEFAULT_VIDEO_NATIVE_RESOLUTION);
171 ini->video_cea_support = iniparser_getint(dict, "video param:video cea support", DEFAULT_VIDEO_CEA_SUPPORT);
172 ini->video_vesa_support = iniparser_getint(dict, "video param:video vesa support", DEFAULT_VIDEO_VESA_SUPPORT);
173 ini->video_hh_support = iniparser_getint(dict, "video param:video hh support", DEFAULT_VIDEO_HH_SUPPORT);
174 ini->video_profile = iniparser_getint(dict, "video param:video profile", DEFAULT_VIDEO_PROFILE);
175 ini->video_level = iniparser_getint(dict, "video param:video level", DEFAULT_VIDEO_LEVEL);
176 ini->video_latency = iniparser_getint(dict, "video param:video latency", DEFAULT_VIDEO_LATENCY);
177 ini->video_vertical_resolution = iniparser_getint(dict, "video param:video vertical resolution", DEFAULT_VIDEO_VERTICAL_RESOLUTION);
178 ini->video_horizontal_resolution = iniparser_getint(dict, "video param:video horizontal resolution", DEFAULT_VIDEO_HORIZONTAL_RESOLUTION);
179 ini->video_minimum_slicing = iniparser_getint(dict, "video param:video minimum slicesize", DEFAULT_VIDEO_MIN_SLICESIZE);
180 ini->video_slice_enc_param = iniparser_getint(dict, "video param:video slice encoding params", DEFAULT_VIDEO_SLICE_ENC_PARAM);
181 ini->video_framerate_control_support = iniparser_getint(dict, "video param:video framerate control support", DEFAULT_VIDEO_FRAMERATE_CONTROL);
184 ini->hdcp_content_protection = iniparser_getint(dict, "hdcp param:hdcp content protection", DEFAULT_HDCP_CONTENT_PROTECTION);
185 ini->hdcp_port_no = iniparser_getint(dict, "hdcp param:hdcp port no", DEFAULT_HDCP_PORT_NO);
186 } else { /* if dict is not available just fill the structure with default value */
187 wfd_sink_error("failed to load ini. using hardcoded default\n");
190 strncpy(ini->gst_param[0], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
191 strncpy(ini->gst_param[1], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
192 strncpy(ini->gst_param[2], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
193 strncpy(ini->gst_param[3], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
194 strncpy(ini->gst_param[4], DEFAULT_GST_PARAM, WFD_SINK_INI_MAX_STRLEN - 1);
195 ini->generate_dot = DEFAULT_GENERATE_DOT;
196 ini->enable_pad_probe = DEFAULT_ENABLE_PAD_PROBE;
197 ini->state_change_timeout = DEFAULT_STATE_CHANGE_TIMEOUT;
198 ini->set_debug_property = DEFAULT_SET_DEBUG_PROPERTY;
199 ini->enable_asm = DEFAULT_ENABLE_ASM;
200 ini->jitter_buffer_latency = DEFAULT_JITTER_BUFFER_LATENCY;
201 ini->enable_retransmission = DEFAULT_ENABLE_RETRANSMISSION;
202 ini->enable_reset_basetime = DEFAULT_ENABLE_RESET_BASETIME;
203 ini->video_sink_max_lateness = DEFAULT_VIDEO_SINK_MAX_LATENESS;
204 ini->sink_ts_offset = DEFAULT_SINK_TS_OFFSET;
205 ini->enable_ts_data_dump = DEFAULT_ENABLE_TS_DATA_DUMP;
206 ini->enable_wfdsrc_pad_probe = DEFAULT_ENABLE_WFDRTSPSRC_PAD_PROBE;
209 strncpy(ini->name_of_source, DEFAULT_NAME_OF_TSDEMUX, WFD_SINK_INI_MAX_STRLEN - 1);
210 strncpy(ini->name_of_tsdemux, DEFAULT_NAME_OF_TSDEMUX, WFD_SINK_INI_MAX_STRLEN - 1);
211 strncpy(ini->name_of_audio_hdcp, DEFAULT_NAME_OF_AUDIO_HDCP, WFD_SINK_INI_MAX_STRLEN - 1);
212 strncpy(ini->name_of_aac_parser, DEFAULT_NAME_OF_AAC_PARSER, WFD_SINK_INI_MAX_STRLEN - 1);
213 strncpy(ini->name_of_aac_decoder, DEFAULT_NAME_OF_AAC_DECODER, WFD_SINK_INI_MAX_STRLEN - 1);
214 strncpy(ini->name_of_ac3_parser, DEFAULT_NAME_OF_AC3_PARSER, WFD_SINK_INI_MAX_STRLEN - 1);
215 strncpy(ini->name_of_ac3_decoder, DEFAULT_NAME_OF_AC3_DECODER, WFD_SINK_INI_MAX_STRLEN - 1);
216 strncpy(ini->name_of_lpcm_converter, DEFAULT_NAME_OF_LPCM_CONVERTER, WFD_SINK_INI_MAX_STRLEN - 1);
217 strncpy(ini->name_of_lpcm_filter, DEFAULT_NAME_OF_LPCM_FILTER, WFD_SINK_INI_MAX_STRLEN - 1);
218 strncpy(ini->name_of_audio_resampler, DEFAULT_NAME_OF_AUDIO_RESAMPLER, WFD_SINK_INI_MAX_STRLEN - 1);
219 strncpy(ini->name_of_audio_volume, DEFAULT_NAME_OF_AUDIO_VOLUME, WFD_SINK_INI_MAX_STRLEN - 1);
220 strncpy(ini->name_of_audio_sink, DEFAULT_NAME_OF_AUDIO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
221 strncpy(ini->name_of_video_hdcp, DEFAULT_NAME_OF_VIDEO_HDCP, WFD_SINK_INI_MAX_STRLEN - 1);
222 strncpy(ini->name_of_video_parser, DEFAULT_NAME_OF_VIDEO_PARSER, WFD_SINK_INI_MAX_STRLEN - 1);
223 strncpy(ini->name_of_video_capssetter, DEFAULT_NAME_OF_VIDEO_CAPSSETTER, WFD_SINK_INI_MAX_STRLEN - 1);
224 strncpy(ini->name_of_video_decoder, DEFAULT_NAME_OF_VIDEO_DECODER, WFD_SINK_INI_MAX_STRLEN - 1);
225 strncpy(ini->name_of_video_converter, DEFAULT_NAME_OF_VIDEO_CONVERTER, WFD_SINK_INI_MAX_STRLEN - 1);
226 strncpy(ini->name_of_video_filter, DEFAULT_NAME_OF_VIDEO_FILTER, WFD_SINK_INI_MAX_STRLEN - 1);
227 strncpy(ini->name_of_video_sink, DEFAULT_NAME_OF_VIDEO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
228 strncpy(ini->name_of_video_evas_sink, DEFAULT_NAME_OF_EVAS_VIDEO_SINK, WFD_SINK_INI_MAX_STRLEN - 1);
231 ini->audio_codec = DEFAULT_AUDIO_CODEC;
232 ini->audio_latency = DEFAULT_AUDIO_LATENCY;
233 ini->audio_channel = DEFAULT_AUDIO_CHANNELS;
234 ini->audio_sampling_frequency = DEFAULT_AUDIO_SAMP_FREQUENCY;
237 ini->video_codec = DEFAULT_VIDEO_CODEC;
238 ini->video_native_resolution = DEFAULT_VIDEO_NATIVE_RESOLUTION;
239 ini->video_cea_support = DEFAULT_VIDEO_CEA_SUPPORT;
240 ini->video_vesa_support = DEFAULT_VIDEO_VESA_SUPPORT;
241 ini->video_hh_support = DEFAULT_VIDEO_HH_SUPPORT;
242 ini->video_profile = DEFAULT_VIDEO_PROFILE;
243 ini->video_level = DEFAULT_VIDEO_LEVEL;
244 ini->video_latency = DEFAULT_VIDEO_LATENCY;
245 ini->video_vertical_resolution = DEFAULT_VIDEO_VERTICAL_RESOLUTION;
246 ini->video_horizontal_resolution = DEFAULT_VIDEO_HORIZONTAL_RESOLUTION;
247 ini->video_minimum_slicing = DEFAULT_VIDEO_MIN_SLICESIZE;
248 ini->video_slice_enc_param = DEFAULT_VIDEO_SLICE_ENC_PARAM;
249 ini->video_framerate_control_support = DEFAULT_VIDEO_FRAMERATE_CONTROL;
252 ini->hdcp_content_protection = DEFAULT_HDCP_CONTENT_PROTECTION;
253 ini->hdcp_port_no = DEFAULT_HDCP_PORT_NO;
256 /* free dict as we got our own structure */
257 iniparser_freedict(dict);
261 wfd_sink_debug("W-Fi Display Sink Initial Settings-----------------------------------\n");
264 wfd_sink_debug("gst_param1 : %s\n", ini->gst_param[0]);
265 wfd_sink_debug("gst_param2 : %s\n", ini->gst_param[1]);
266 wfd_sink_debug("gst_param3 : %s\n", ini->gst_param[2]);
267 wfd_sink_debug("gst_param4 : %s\n", ini->gst_param[3]);
268 wfd_sink_debug("gst_param5 : %s\n", ini->gst_param[4]);
269 wfd_sink_debug("generate_dot : %d\n", ini->generate_dot);
270 if (ini->generate_dot == TRUE) {
271 wfd_sink_debug("generate_dot is TRUE, dot file will be stored into /tmp/\n");
272 g_setenv("GST_DEBUG_DUMP_DOT_DIR", "/tmp/", FALSE);
274 wfd_sink_debug("enable_pad_probe : %d\n", ini->enable_pad_probe);
275 wfd_sink_debug("state_change_timeout(sec) : %d\n", ini->state_change_timeout);
276 wfd_sink_debug("set_debug_property : %d\n", ini->set_debug_property);
277 wfd_sink_debug("enable_asm : %d\n", ini->enable_asm);
278 wfd_sink_debug("jitter_buffer_latency(msec) : %d\n", ini->jitter_buffer_latency);
279 wfd_sink_debug("enable_retransmission : %d\n", ini->enable_retransmission);
280 wfd_sink_debug("enable_reset_basetime : %d\n", ini->enable_reset_basetime);
281 wfd_sink_debug("video_sink_max_lateness(nsec) : %d\n", ini->video_sink_max_lateness);
282 wfd_sink_debug("sink_ts_offset(nsec) : %d\n", ini->sink_ts_offset);
283 wfd_sink_debug("audio_sink_async : %d\n", ini->audio_sink_async);
284 wfd_sink_debug("video_sink_async : %d\n", ini->video_sink_async);
285 wfd_sink_debug("enable_ts_data_dump : %d\n", ini->enable_ts_data_dump);
286 wfd_sink_debug("enable_wfdsrc_pad_probe : %d\n", ini->enable_wfdsrc_pad_probe);
289 wfd_sink_debug("name_of_source : %s\n", ini->name_of_source);
290 wfd_sink_debug("name_of_tsdemux : %s\n", ini->name_of_tsdemux);
291 wfd_sink_debug("name_of_audio_hdcp : %s\n", ini->name_of_audio_hdcp);
292 wfd_sink_debug("name_of_aac_parser : %s\n", ini->name_of_aac_parser);
293 wfd_sink_debug("name_of_aac_decoder : %s\n", ini->name_of_aac_decoder);
294 wfd_sink_debug("name_of_ac3_parser : %s\n", ini->name_of_ac3_parser);
295 wfd_sink_debug("name_of_ac3_decoder : %s\n", ini->name_of_ac3_decoder);
296 wfd_sink_debug("name_of_lpcm_converter : %s\n", ini->name_of_lpcm_converter);
297 wfd_sink_debug("name_of_lpcm_filter : %s\n", ini->name_of_lpcm_filter);
298 wfd_sink_debug("name_of_audio_resampler : %s\n", ini->name_of_audio_resampler);
299 wfd_sink_debug("name_of_audio_volume : %s\n", ini->name_of_audio_volume);
300 wfd_sink_debug("name_of_audio_sink : %s\n", ini->name_of_audio_sink);
301 wfd_sink_debug("name_of_video_hdcp : %s\n", ini->name_of_video_hdcp);
302 wfd_sink_debug("name_of_video_parser : %s\n", ini->name_of_video_parser);
303 wfd_sink_debug("name_of_video_capssetter : %s\n", ini->name_of_video_capssetter);
304 wfd_sink_debug("name_of_video_decoder : %s\n", ini->name_of_video_decoder);
305 wfd_sink_debug("name_of_video_converter : %s\n", ini->name_of_video_converter);
306 wfd_sink_debug("name_of_video_filter : %s\n", ini->name_of_video_filter);
307 wfd_sink_debug("name_of_video_sink : %s\n", ini->name_of_video_sink);
308 wfd_sink_debug("name_of_video_evas_sink : %s\n", ini->name_of_video_evas_sink);
311 wfd_sink_debug("audio_codec : %x\n", ini->audio_codec);
312 wfd_sink_debug("audio_latency : %d\n", ini->audio_latency);
313 wfd_sink_debug("audio_channel : %x\n", ini->audio_channel);
314 wfd_sink_debug("audio_sampling_frequency : %x\n", ini->audio_sampling_frequency);
317 wfd_sink_debug("video_codec : %x\n", ini->video_codec);
318 wfd_sink_debug("video_native_resolution : %x\n", ini->video_native_resolution);
319 wfd_sink_debug("video_cea_support : %x\n", ini->video_cea_support);
320 wfd_sink_debug("video_vesa_support : %x\n", ini->video_vesa_support);
321 wfd_sink_debug("video_hh_support : %x\n", ini->video_hh_support);
322 wfd_sink_debug("video_profile : %x\n", ini->video_profile);
323 wfd_sink_debug("video_level : %x\n", ini->video_level);
324 wfd_sink_debug("video_latency : %d\n", ini->video_latency);
325 wfd_sink_debug("video_vertical_resolution : %d\n", ini->video_vertical_resolution);
326 wfd_sink_debug("video_horizontal_resolution : %d\n", ini->video_horizontal_resolution);
327 wfd_sink_debug("video_minimum_slicing : %d\n", ini->video_minimum_slicing);
328 wfd_sink_debug("video_slice_enc_param : %d\n", ini->video_slice_enc_param);
329 wfd_sink_debug("video_framerate_control_support : %d\n", ini->video_framerate_control_support);
332 wfd_sink_debug("hdcp_content_protection : %x\n", ini->hdcp_content_protection);
333 wfd_sink_debug("hdcp_port_no : %d\n", ini->hdcp_port_no);
335 wfd_sink_debug("---------------------------------------------------\n");
339 wfd_sink_debug_fleave();
341 return MM_ERROR_NONE;
346 void __mm_wfd_sink_ini_check_status(void)
348 struct stat ini_buff;
350 wfd_sink_debug_fenter();
352 if (g_stat(MM_WFD_SINK_INI_DEFAULT_PATH, &ini_buff) < 0) {
353 wfd_sink_error("failed to get mmfw_wfd_sink ini status\n");
355 if (ini_buff.st_size < 5) {
356 wfd_sink_error("mmfw_wfd_sink.ini file size=%d, Corrupted! So, Removed\n", (int)ini_buff.st_size);
357 g_remove(MM_WFD_SINK_INI_DEFAULT_PATH);
361 wfd_sink_debug_fleave();
365 mm_wfd_sink_ini_unload(mm_wfd_sink_ini_t *ini)
367 wfd_sink_debug_fenter();
371 wfd_sink_debug_fleave();
373 return MM_ERROR_NONE;