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>, Abhishek Bajaj <abhi.bajaj@samsung.com>, Nikhilesh Mittal <nikhilesh.m@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 __GST_WFD_CONFIG_MESSAGE_H__
24 #define __GST_WFD_CONFIG_MESSAGE_H__
32 * @WFD_OK: A successful return value
33 * @WFD_EINVAL: a function was given invalid parameters
35 * Return values for the WFD_CONFIG functions.
40 WFD_NOT_IMPLEMENTED = -2,
41 WFD_NOT_SUPPORTED = -3
45 WFD_AUDIO_UNKNOWN = 0,
46 WFD_AUDIO_LPCM = (1 << 0),
47 WFD_AUDIO_AAC = (1 << 1),
48 WFD_AUDIO_AC3 = (1 << 2)
53 WFD_FREQ_44100 = (1 << 0),
54 WFD_FREQ_48000 = (1 << 1)
58 WFD_CHANNEL_UNKNOWN = 0,
59 WFD_CHANNEL_2 = (1 << 0),
60 WFD_CHANNEL_4 = (1 << 1),
61 WFD_CHANNEL_6 = (1 << 2),
62 WFD_CHANNEL_8 = (1 << 3)
67 WFD_VIDEO_UNKNOWN = 0,
68 WFD_VIDEO_H264 = (1 << 0)
72 WFD_VIDEO_CEA_RESOLUTION = 0,
73 WFD_VIDEO_VESA_RESOLUTION,
74 WFD_VIDEO_HH_RESOLUTION
75 }WFDVideoNativeResolution;
79 WFD_CEA_640x480P60 = (1 << 0),
80 WFD_CEA_720x480P60 = (1 << 1),
81 WFD_CEA_720x480I60 = (1 << 2),
82 WFD_CEA_720x576P50 = (1 << 3),
83 WFD_CEA_720x576I50 = (1 << 4),
84 WFD_CEA_1280x720P30 = (1 << 5),
85 WFD_CEA_1280x720P60 = (1 << 6),
86 WFD_CEA_1920x1080P30= (1 << 7),
87 WFD_CEA_1920x1080P60= (1 << 8),
88 WFD_CEA_1920x1080I60= (1 << 9),
89 WFD_CEA_1280x720P25 = (1 << 10),
90 WFD_CEA_1280x720P50 = (1 << 11),
91 WFD_CEA_1920x1080P25= (1 << 12),
92 WFD_CEA_1920x1080P50= (1 << 13),
93 WFD_CEA_1920x1080I50= (1 << 14),
94 WFD_CEA_1280x720P24 = (1 << 15),
95 WFD_CEA_1920x1080P24= (1 << 16)
96 }WFDVideoCEAResolution;
100 WFD_VESA_800x600P30 = (1 << 0),
101 WFD_VESA_800x600P60 = (1 << 1),
102 WFD_VESA_1024x768P30 = (1 << 2),
103 WFD_VESA_1024x768P60 = (1 << 3),
104 WFD_VESA_1152x864P30 = (1 << 4),
105 WFD_VESA_1152x864P60 = (1 << 5),
106 WFD_VESA_1280x768P30 = (1 << 6),
107 WFD_VESA_1280x768P60 = (1 << 7),
108 WFD_VESA_1280x800P30 = (1 << 8),
109 WFD_VESA_1280x800P60 = (1 << 9),
110 WFD_VESA_1360x768P30 = (1 << 10),
111 WFD_VESA_1360x768P60 = (1 << 11),
112 WFD_VESA_1366x768P30 = (1 << 12),
113 WFD_VESA_1366x768P60 = (1 << 13),
114 WFD_VESA_1280x1024P30 = (1 << 14),
115 WFD_VESA_1280x1024P60 = (1 << 15),
116 WFD_VESA_1400x1050P30 = (1 << 16),
117 WFD_VESA_1400x1050P60 = (1 << 17),
118 WFD_VESA_1440x900P30 = (1 << 18),
119 WFD_VESA_1440x900P60 = (1 << 19),
120 WFD_VESA_1600x900P30 = (1 << 20),
121 WFD_VESA_1600x900P60 = (1 << 21),
122 WFD_VESA_1600x1200P30 = (1 << 22),
123 WFD_VESA_1600x1200P60 = (1 << 23),
124 WFD_VESA_1680x1024P30 = (1 << 24),
125 WFD_VESA_1680x1024P60 = (1 << 25),
126 WFD_VESA_1680x1050P30 = (1 << 26),
127 WFD_VESA_1680x1050P60 = (1 << 27),
128 WFD_VESA_1920x1200P30 = (1 << 28),
129 WFD_VESA_1920x1200P60 = (1 << 29)
130 }WFDVideoVESAResolution;
134 WFD_HH_800x480P30 = (1 << 0),
135 WFD_HH_800x480P60 = (1 << 1),
136 WFD_HH_854x480P30 = (1 << 2),
137 WFD_HH_854x480P60 = (1 << 3),
138 WFD_HH_864x480P30 = (1 << 4),
139 WFD_HH_864x480P60 = (1 << 5),
140 WFD_HH_640x360P30 = (1 << 6),
141 WFD_HH_640x360P60 = (1 << 7),
142 WFD_HH_960x540P30 = (1 << 8),
143 WFD_HH_960x540P60 = (1 << 9),
144 WFD_HH_848x480P30 = (1 << 10),
145 WFD_HH_848x480P60 = (1 << 11)
146 }WFDVideoHHResolution;
149 WFD_H264_UNKNOWN_PROFILE= 0,
150 WFD_H264_BASE_PROFILE = (1 << 0),
151 WFD_H264_HIGH_PROFILE = (1 << 1)
152 }WFDVideoH264Profile;
155 WFD_H264_LEVEL_UNKNOWN = 0,
156 WFD_H264_LEVEL_3_1 = (1 << 0),
157 WFD_H264_LEVEL_3_2 = (1 << 1),
158 WFD_H264_LEVEL_4 = (1 << 2),
159 WFD_H264_LEVEL_4_1 = (1 << 3),
160 WFD_H264_LEVEL_4_2 = (1 << 4)
165 WFD_HDCP_2_0 = (1 << 0),
166 WFD_HDCP_2_1 = (1 << 1)
170 WFD_SINK_UNKNOWN = -1,
171 WFD_SINK_NOT_COUPLED = 0,
173 WFD_SINK_TEARDOWN_COUPLING,
175 }WFDCoupledSinkStatus;
178 WFD_TRIGGER_UNKNOWN = 0,
181 WFD_TRIGGER_TEARDOWN,
186 WFD_RTSP_TRANS_UNKNOWN = 0,
187 WFD_RTSP_TRANS_RTP = (1 << 0),
188 WFD_RTSP_TRANS_RDT = (1 << 1)
192 WFD_RTSP_PROFILE_UNKNOWN = 0,
193 WFD_RTSP_PROFILE_AVP = (1 << 0),
194 WFD_RTSP_PROFILE_SAVP = (1 << 1)
198 WFD_RTSP_LOWER_TRANS_UNKNOWN = 0,
199 WFD_RTSP_LOWER_TRANS_UDP = (1 << 0),
200 WFD_RTSP_LOWER_TRANS_UDP_MCAST = (1 << 1),
201 WFD_RTSP_LOWER_TRANS_TCP = (1 << 2),
202 WFD_RTSP_LOWER_TRANS_HTTP = (1 << 3)
206 WFD_PRIMARY_SINK = 0,
211 WFD_UIBC_INPUT_CAT_UNKNOWN = 0,
212 WFD_UIBC_INPUT_CAT_GENERIC = (1 << 0),
213 WFD_UIBC_INPUT_CAT_HIDC = (1 << 1),
217 WFD_UIBC_INPUT_TYPE_UNKNOWN = 0,
218 WFD_UIBC_INPUT_TYPE_KEYBOARD = (1 << 0),
219 WFD_UIBC_INPUT_TYPE_MOUSE = (1 << 1),
220 WFD_UIBC_INPUT_TYPE_SINGLETOUCH = (1 << 2),
221 WFD_UIBC_INPUT_TYPE_MULTITOUCH = (1 << 3),
222 WFD_UIBC_INPUT_TYPE_JOYSTICK = (1 << 4),
223 WFD_UIBC_INPUT_TYPE_CAMERA = (1 << 5),
224 WFD_UIBC_INPUT_TYPE_GESTURE = (1 << 6),
225 WFD_UIBC_INPUT_TYPE_REMOTECONTROL = (1 << 7)
229 WFD_UIBC_INPUT_PATH_UNKNOWN = 0,
230 WFD_UIBC_INPUT_PATH_INFRARED = (1 << 0),
231 WFD_UIBC_INPUT_PATH_USB = (1 << 1),
232 WFD_UIBC_INPUT_PATH_BT = (1 << 2),
233 WFD_UIBC_INPUT_PATH_ZIGBEE = (1 << 3),
234 WFD_UIBC_INPUT_PATH_WIFI = (1 << 4),
235 WFD_UIBC_INPUT_PATH_NOSP = (1 << 5)
239 WFD_CONNECTOR_VGA = 0,
241 WFD_CONNECTOR_COMPOSITE,
242 WFD_CONNECTOR_COMPONENT,
246 WFD_CONNECTOR_RESERVED_7,
247 WFD_CONNECTOR_JAPANESE_D,
250 WFD_CONNECTOR_RESERVED_11,
252 WFD_CONNECTOR_NO = 254,
253 WFD_CONNECTOR_PHYSICAL = 255
274 guint min_slice_size;
275 guint slice_enc_params;
276 guint frame_rate_control_support;
277 } WFDVideoH264MiscParams;
284 WFDVideoH264MiscParams misc_params;
289 guint preferred_display_mode_supported;
290 WFDVideoH264Codec H264_codec;
299 guint video_3d_capability;
301 guint min_slice_size;
302 guint slice_enc_params;
303 guint frame_rate_control_support;
304 } WFD3DVideoH264MiscParams;
309 WFD3DVideoH264MiscParams misc_params;
312 } WFD3DVideoH264Codec;
316 guint preferred_display_mode_supported;
317 WFD3DVideoH264Codec H264_codec;
331 WFDHdcp2Spec *hdcp2_spec;
332 } WFDContentProtection;
335 guint edid_supported;
336 guint edid_block_count;
344 } WFDCoupled_sink_cap;
347 WFDCoupled_sink_cap *coupled_sink_cap;
351 gchar *wfd_trigger_method;
357 } WFDPresentationUrl;
378 } WFDAVFormatChangeTiming;
381 gboolean displaymodesupported;
395 WFDVideoH264Codec H264_codec;
396 } WFDPreferredDisplayMode;
400 }WFDInputCategoryList;
404 }WFDGenericCategoryList;
406 typedef struct _detailed_cap detailed_cap;
409 WFDUibcinp_type inp_type;
410 WFDUibcinp_path inp_path;
411 }WFDHIDCTypePathPair;
413 struct _detailed_cap {
414 WFDHIDCTypePathPair p;
421 }WFDHIDCCategoryList;
424 gboolean uibcsupported;
425 WFDInputCategoryList input_category_list;
426 WFDGenericCategoryList generic_cap_list;
427 WFDHIDCCategoryList hidc_cap_list;
432 gboolean uibc_setting;
436 gboolean standby_resume_cap;
437 } WFDStandbyResumeCapability;
440 gboolean wfd_standby;
445 gint32 connector_type;
449 gboolean idr_request;
452 /***********************************************************/
456 WFDAudioCodeclist *audio_codecs;
457 WFDVideoCodeclist *video_formats;
458 WFD3DFormats *video_3d_formats;
459 WFDContentProtection *content_protection;
460 WFDDisplayEdid *display_edid;
461 WFDCoupledSink *coupled_sink;
462 WFDTriggerMethod *trigger_method;
463 WFDPresentationUrl *presentation_url;
464 WFDClientRtpPorts *client_rtp_ports;
467 WFDAVFormatChangeTiming *av_format_change_timing;
468 WFDPreferredDisplayMode *preferred_display_mode;
469 WFDUibcCapability *uibc_capability;
470 WFDUibcSetting *uibc_setting;
471 WFDStandbyResumeCapability *standby_resume_capability;
473 WFDConnectorType *connector_type;
474 WFDIdrRequest *idr_request;
477 /* Session descriptions */
478 WFDResult wfdconfig_message_new (WFDMessage **msg);
479 WFDResult wfdconfig_message_init (WFDMessage *msg);
480 WFDResult wfdconfig_message_uninit (WFDMessage *msg);
481 WFDResult wfdconfig_message_free (WFDMessage *msg);
482 WFDResult wfdconfig_message_parse_buffer (const guint8 *data, guint size, WFDMessage *msg);
483 gchar* wfdconfig_message_as_text (const WFDMessage *msg);
484 gchar* wfdconfig_parameter_names_as_text (const WFDMessage *msg);
485 WFDResult wfdconfig_message_dump (const WFDMessage *msg);
488 WFDResult wfdconfig_set_supported_audio_format(WFDMessage *msg,
489 guint aCodec, guint aFreq, guint aChanels,
490 guint aBitwidth, guint32 aLatency);
491 WFDResult wfdconfig_set_prefered_audio_format(WFDMessage *msg,
492 WFDAudioFormats aCodec, WFDAudioFreq aFreq, WFDAudioChannels aChanels,
493 guint aBitwidth, guint32 aLatency);
494 WFDResult wfdconfig_get_supported_audio_format(WFDMessage *msg,
495 guint *aCodec, guint *aFreq, guint *aChanels,
496 guint *aBitwidth, guint32 *aLatency);
497 WFDResult wfdconfig_get_prefered_audio_format(WFDMessage *msg,
498 WFDAudioFormats *aCodec, WFDAudioFreq *aFreq, WFDAudioChannels *aChanels,
499 guint *aBitwidth, guint32 *aLatency);
501 WFDResult wfdconfig_set_supported_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
502 WFDVideoNativeResolution vNative, guint64 vNativeResolution,
503 guint64 vCEAResolution, guint64 vVESAResolution, guint64 vHHResolution,
504 guint vProfile, guint vLevel, guint32 vLatency, guint32 vMaxHeight,
505 guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
506 WFDResult wfdconfig_set_prefered_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
507 WFDVideoNativeResolution vNative, guint64 vNativeResolution,
508 WFDVideoCEAResolution vCEAResolution, WFDVideoVESAResolution vVESAResolution,
509 WFDVideoHHResolution vHHResolution, WFDVideoH264Profile vProfile,
510 WFDVideoH264Level vLevel, guint32 vLatency, guint32 vMaxHeight,
511 guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
512 WFDResult wfdconfig_get_supported_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
513 WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
514 guint64 *vCEAResolution, guint64 *vVESAResolution, guint64 *vHHResolution,
515 guint *vProfile, guint *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
516 guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
517 WFDResult wfdconfig_get_prefered_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
518 WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
519 WFDVideoCEAResolution *vCEAResolution, WFDVideoVESAResolution *vVESAResolution,
520 WFDVideoHHResolution *vHHResolution, WFDVideoH264Profile *vProfile,
521 WFDVideoH264Level *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
522 guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
524 // Todo wfd-3d-formats
526 WFDResult wfdconfig_set_contentprotection_type(WFDMessage *msg, WFDHDCPProtection hdcpversion, guint32 TCPPort);
527 WFDResult wfdconfig_get_contentprotection_type(WFDMessage *msg, WFDHDCPProtection *hdcpversion, guint32 *TCPPort);
529 WFDResult wfdconfig_set_display_EDID(WFDMessage *msg, gboolean edid_supported, guint32 edid_blockcount, gchar *edid_playload);
530 WFDResult wfdconfig_get_display_EDID(WFDMessage *msg, gboolean *edid_supported, guint32 *edid_blockcount, gchar **edid_playload);
533 WFDResult wfdconfig_set_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus status, gchar *sink_address);
534 WFDResult wfdconfig_get_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus *status, gchar **sink_address);
536 WFDResult wfdconfig_set_trigger_type(WFDMessage *msg, WFDTrigger trigger);
537 WFDResult wfdconfig_get_trigger_type(WFDMessage *msg, WFDTrigger *trigger);
539 WFDResult wfdconfig_set_presentation_url(WFDMessage *msg, gchar *wfd_url0, gchar *wfd_url1);
540 WFDResult wfdconfig_get_presentation_url(WFDMessage *msg, gchar **wfd_url0, gchar **wfd_url1);
542 WFDResult wfdconfig_set_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode trans, WFDRTSPProfile profile,
543 WFDRTSPLowerTrans lowertrans, guint32 rtp_port0, guint32 rtp_port1);
544 WFDResult wfdconfig_get_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode *trans, WFDRTSPProfile *profile,
545 WFDRTSPLowerTrans *lowertrans, guint32 *rtp_port0, guint32 *rtp_port1);
547 WFDResult wfdconfig_set_audio_sink_type(WFDMessage *msg, WFDSinkType sinktype);
548 WFDResult wfdconfig_get_audio_sink_type(WFDMessage *msg, WFDSinkType *sinktype);
550 WFDResult wfdconfig_set_I2C_port(WFDMessage *msg, gboolean i2csupport, guint32 i2cport);
551 WFDResult wfdconfig_get_I2C_port(WFDMessage *msg, gboolean *i2csupport, guint32 *i2cport);
553 WFDResult wfdconfig_set_av_format_change_timing(WFDMessage *msg, guint64 PTS, guint64 DTS);
554 WFDResult wfdconfig_get_av_format_change_timing(WFDMessage *msg, guint64 *PTS, guint64 *DTS);
556 // Todo wfd-preferred-display-mode
558 WFDResult wfdconfig_set_uibc_capability(WFDMessage *msg, guint32 input_category, guint32 inp_type, WFDHIDCTypePathPair *inp_pair,
559 guint32 inp_type_path_count, guint32 tcp_port);
560 WFDResult wfdconfig_get_uibc_capability(WFDMessage *msg, guint32 *input_category, guint32 *inp_type, WFDHIDCTypePathPair **inp_pair,
561 guint32 *inp_type_path_count, guint32 *tcp_port);
563 WFDResult wfdconfig_set_uibc_status(WFDMessage *msg, gboolean uibc_enable);
564 WFDResult wfdconfig_get_uibc_status(WFDMessage *msg, gboolean *uibc_enable);
566 WFDResult wfdconfig_set_standby_resume_capability(WFDMessage *msg, gboolean supported);
567 WFDResult wfdconfig_get_standby_resume_capability(WFDMessage *msg, gboolean *supported);
569 WFDResult wfdconfig_set_standby(WFDMessage *msg, gboolean standby_enable);
570 WFDResult wfdconfig_get_standby(WFDMessage *msg, gboolean *standby_enable);
572 WFDResult wfdconfig_set_connector_type(WFDMessage *msg, WFDConnector connector);
573 WFDResult wfdconfig_get_connector_type(WFDMessage *msg, WFDConnector *connector);
575 WFDResult wfdconfig_set_idr_request(WFDMessage *msg);
579 #endif /* __GST_WFD_CONFIG_MESSAGE_H__ */