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.
23 #ifndef __MM_WFD_SINK_INI_H__
24 #define __MM_WFD_SINK_INI_H__
27 #include <mmf/wfdconfigmessage.h>
34 enum WFDSinkINIProbeFlags
36 WFD_SINK_INI_PROBE_DEFAULT = 0,
37 WFD_SINK_INI_PROBE_TIMESTAMP = (1 << 0),
38 WFD_SINK_INI_PROBE_BUFFERSIZE = (1 << 1),
39 WFD_SINK_INI_PROBE_CAPS = (1 << 2),
40 WFD_SINK_INI_PROBE_BUFFER_DURATION = (1 << 3),
43 #define MM_WFD_SINK_INI_DEFAULT_PATH "/usr/etc/mmfw_wfd_sink.ini"
45 #define WFD_SINK_INI_MAX_STRLEN 256
46 #define WFD_SINK_INI_MAX_ELEMENT 10
48 /* NOTE : MMPlayer has no initalizing API for library itself
49 * so we cannot decide when those ini values to be released.
50 * this is the reason of all string items are static array.
51 * make it do with malloc when MMPlayerInitialize() API created
52 * before that time, we should be careful with size limitation
53 * of each string item.
55 typedef struct __mm_wfd_sink_ini
58 gchar gst_param[5][WFD_SINK_INI_MAX_STRLEN];
59 gboolean generate_dot;
60 gboolean enable_pad_probe;
61 gint state_change_timeout;
62 gboolean set_debug_property;
64 gint jitter_buffer_latency;
65 gint video_sink_max_lateness;
67 gboolean audio_sink_async;
68 gboolean video_sink_async;
69 gboolean enable_retransmission;
70 gboolean enable_reset_basetime;
71 gboolean enable_ts_data_dump;
72 gboolean enable_wfdrtspsrc_pad_probe;
75 gchar name_of_tsdemux[WFD_SINK_INI_MAX_STRLEN];
76 gchar name_of_audio_hdcp[WFD_SINK_INI_MAX_STRLEN];
77 gchar name_of_aac_parser[WFD_SINK_INI_MAX_STRLEN];
78 gchar name_of_aac_decoder[WFD_SINK_INI_MAX_STRLEN];
79 gchar name_of_ac3_parser[WFD_SINK_INI_MAX_STRLEN];
80 gchar name_of_ac3_decoder[WFD_SINK_INI_MAX_STRLEN];
81 gchar name_of_lpcm_converter[WFD_SINK_INI_MAX_STRLEN];
82 gchar name_of_lpcm_filter[WFD_SINK_INI_MAX_STRLEN];
83 gchar name_of_audio_resampler[WFD_SINK_INI_MAX_STRLEN];
84 gchar name_of_audio_volume[WFD_SINK_INI_MAX_STRLEN];
85 gchar name_of_audio_sink[WFD_SINK_INI_MAX_STRLEN];
87 gchar name_of_video_hdcp[WFD_SINK_INI_MAX_STRLEN];
88 gchar name_of_video_parser[WFD_SINK_INI_MAX_STRLEN];
89 gchar name_of_video_decoder[WFD_SINK_INI_MAX_STRLEN];
90 gchar name_of_video_sink[WFD_SINK_INI_MAX_STRLEN];
92 /* audio parameter for reponse of M3 request */
96 guint audio_sampling_frequency;
98 /* video parameter for reponse of M3 request */
100 guint video_native_resolution;
101 guint video_cea_support;
102 guint video_vesa_support;
103 guint video_hh_support;
107 gint video_vertical_resolution;
108 gint video_horizontal_resolution;
109 gint video_minimum_slicing;
110 gint video_slice_enc_param;
111 gint video_framerate_control_support;
113 /* hdcp parameter for reponse of M3 request */
114 gint hdcp_content_protection;
119 /*Default sink ini values*/
121 #define DEFAULT_GST_PARAM ""
122 #define DEFAULT_GENERATE_DOT FALSE
123 #define DEFAULT_ENABLE_PAD_PROBE FALSE
124 #define DEFAULT_STATE_CHANGE_TIMEOUT 5 /* sec */
125 #define DEFAULT_SET_DEBUG_PROPERTY TRUE
126 #define DEFAULT_ENABLE_ASM FALSE
127 #define DEFAULT_JITTER_BUFFER_LATENCY 10 /* msec */
128 #define DEFAULT_ENABLE_RETRANSMISSION TRUE
129 #define DEFAULT_ENABLE_RESET_BASETIME TRUE
130 #define DEFAULT_VIDEO_SINK_MAX_LATENESS 20000000 /* nsec */
131 #define DEFAULT_SINK_TS_OFFSET 150000000 /* nsec */
132 #define DEFAULT_AUDIO_SINK_ASYNC FALSE
133 #define DEFAULT_VIDEO_SINK_ASYNC FALSE
134 #define DEFAULT_ENABLE_TS_DATA_DUMP FALSE
135 #define DEFAULT_ENABLE_WFDRTSPSRC_PAD_PROBE FALSE
138 #define DEFAULT_NAME_OF_TSDEMUX ""
139 #define DEFAULT_NAME_OF_AUDIO_HDCP ""
140 #define DEFAULT_NAME_OF_AAC_PARSER ""
141 #define DEFAULT_NAME_OF_AAC_DECODER ""
142 #define DEFAULT_NAME_OF_AC3_PARSER ""
143 #define DEFAULT_NAME_OF_AC3_DECODER ""
144 #define DEFAULT_NAME_OF_LPCM_CONVERTER ""
145 #define DEFAULT_NAME_OF_LPCM_FILTER ""
146 #define DEFAULT_NAME_OF_AUDIO_RESAMPLER ""
147 #define DEFAULT_NAME_OF_AUDIO_VOLUME ""
148 #define DEFAULT_NAME_OF_AUDIO_SPLITTER ""
149 #define DEFAULT_NAME_OF_AUDIO_SINK ""
150 #define DEFAULT_NAME_OF_VIDEO_HDCP ""
151 #define DEFAULT_NAME_OF_VIDEO_PARSER ""
152 #define DEFAULT_NAME_OF_VIDEO_DECODER ""
153 #define DEFAULT_NAME_OF_VIDEO_SINK ""
156 #define DEFAULT_AUDIO_CODEC WFD_AUDIO_LPCM | WFD_AUDIO_AAC
157 #define DEFAULT_AUDIO_LATENCY 0x0
158 #define DEFAULT_AUDIO_CHANNELS WFD_CHANNEL_2
159 #define DEFAULT_AUDIO_SAMP_FREQUENCY WFD_FREQ_44100 | WFD_FREQ_48000
162 #define DEFAULT_VIDEO_CODEC WFD_VIDEO_H264
163 #define DEFAULT_VIDEO_NATIVE_RESOLUTION 0x20
164 /* CEA : WFD_CEA_640x480P60 | WFD_CEA_720x480P60 |WFD_CEA_720x576P50 |WFD_CEA_1280x720P30 |WFD_CEA_1920x1080P30 |
165 WFD_CEA_1280x720P25 |WFD_CEA_1920x1080P25 |WFD_CEA_1280x720P24 | WFD_CEA_1920x1080P24 */
166 #define DEFAULT_VIDEO_CEA_SUPPORT 0x194ab
167 /* VESA : WFD_VESA_800x600P30 |WFD_VESA_1024x768P30 |WFD_VESA_1152x864P30 | WFD_VESA_1280x768P30 | WFD_VESA_1280x800P30 |
168 WFD_VESA_1360x768P30 | WFD_VESA_1366x768P30 | WFD_VESA_1280x1024P30 |WFD_VESA_1400x1050P30 | WFD_VESA_1440x900P30 |
169 WFD_VESA_1600x900P30 | FD_VESA_1600x1200P30 | WFD_VESA_1680x1024P30 | WFD_VESA_1680x1050P30 | WFD_VESA_1920x1200P30 | */
170 #define DEFAULT_VIDEO_VESA_SUPPORT 0x55555555
171 /* HH : WFD_HH_800x480P30 | WFD_HH_854x480P30 | WFD_HH_864x480P30 | WFD_HH_640x360P30 | WFD_HH_960x540P30 | WFD_HH_848x480P30 */
172 #define DEFAULT_VIDEO_HH_SUPPORT 0x555
173 #define DEFAULT_VIDEO_PROFILE WFD_H264_BASE_PROFILE
174 #define DEFAULT_VIDEO_LEVEL WFD_H264_LEVEL_3_2
175 #define DEFAULT_VIDEO_LATENCY 0x0
176 #define DEFAULT_VIDEO_VERTICAL_RESOLUTION 1080
177 #define DEFAULT_VIDEO_HORIZONTAL_RESOLUTION 1920
178 #define DEFAULT_VIDEO_MIN_SLICESIZE 0
179 #define DEFAULT_VIDEO_SLICE_ENC_PARAM 200
180 #define DEFAULT_VIDEO_FRAMERATE_CONTROL 11
183 #define DEFAULT_HDCP_CONTENT_PROTECTION 0x0
184 #define DEFAULT_HDCP_PORT_NO 0
187 #define MM_WFD_SINK_DEFAULT_INI \
190 ; parameters for initializing gstreamer\n\
191 ; DEFAULT SET (--gst-debug=2,*wfd*:5)\n\
192 gstparam1 = --gst-debug=2,*wfd*:5,*wfdtsdemux:1,*wfdrtpbuffer:1\n\
198 ; generating dot file representing pipeline state\n\
199 ; do export GST_DEBUG_DUMP_DOT_DIR=[dot file path] in the shell\n\
202 ; enable pad probe\n\
203 enable pad probe = no\n\
205 ; enable wfdrtspsrc inner pad probe\n\
206 enable wfdrtspsrc pad probe = no\n\
208 ; enable ts data dump (/var/tmp/*.ts)\n\
209 enable ts data dump = no\n\
211 ; allowed timeout for changing pipeline state\n\
212 state change timeout = 5 ; sec\n\
214 ; set debug property to wfdrtspsrc plugin for debugging rtsp message\n\
215 set debug property = yes\n\
217 ; for asm function enable = yes, disable = no\n\
220 ; 0: default value set by wfdrtspsrc element, other: user define value.\n\
221 jitter buffer latency=10\n\
223 ; for retransmission request enable = yes, disable = no\n\
224 enable retransmission = yes\n\
226 ; for reset basetime, enable = yes, disable = no\n\
227 enable reset basetime = yes\n\
229 ; Maximum number of nanoseconds that a buffer can be late before it is dropped by videosink (-1 unlimited)\n\
230 video sink max lateness=20000000\n\
232 ; nanoseconds to be added to buffertimestamp by sink elements\n\
233 sink ts offset=150000000\n\
235 ; if no, go asynchronously to PAUSED without preroll \n\
236 audio sink async=no\n\
238 ; if no, go asynchronously to PAUSED without preroll \n\
239 video sink async=no\n\
244 tsdemux element = ffdemux_mpegts\n\
246 audio hdcp element = drm_hdcp\n\
248 aac parser element =\n\
250 aac decoder element = omx_tz_aacdec\n\
252 ac3 parser element = \n\
254 ac3 decoder element = ;omx_tz_ac3dec\n\
256 lpcm converter element = omx_tz_lpcmdec\n\
258 lpcm filter element = ;capsfilter\n\
260 audio resampler element =\n\
262 audio volume element =\n\
264 audio sink element = alsasink\n\
266 video hdcp element = drm_hdcp\n\
268 video parser element =\n\
270 video decoder element = omx_tz_h264dec\n\
272 video sink element = xvimagesink\n\
277 ; 0x1: LPCM, 0x2: aac, 0x4: ac3\n\
278 ;default aac and LPCM\n\
283 ;0x1 : 48000khz, 0x2: 44100khz\n\
284 audio sampling frequency=0x3\n\
286 ; 0x1:2 channels, 0x2:4 channels, 0x4:6channels, 0x8:8channels\n\
287 audio channels=0x1\n\
292 ; 0: H264CBP 1: H264CHP\n\
295 video native resolution = 0x20\n\
297 video cea support=0x194ab\n\
299 video vesa support=0x5555555\n\
301 video hh support=0x555\n\
303 ; 0x1:base, 0x2:high\n\
306 ; 0x1:level_3_1, 0x2:level_3_2, 0x4:level_4, 0x8:level_4_1, 0x10:level_4_2\n\
311 video vertical resolution=1080\n\
313 video horizontal resolution=1920\n\
315 video minimum slicesize=0\n\
317 video slice encoding params=200\n\
319 video framerate control support=11\n\
324 ;0x0:none, 0x1:HDCP_2.0, 0x2:HDCP_2.1\n\
325 hdcp content protection=0x0\n\
332 mm_wfd_sink_ini_load(mm_wfd_sink_ini_t *ini);
335 mm_wfd_sink_ini_unload(mm_wfd_sink_ini_t *ini);