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.
43 WFD_AUDIO_UNKNOWN = 0,
44 WFD_AUDIO_LPCM = (1 << 0),
45 WFD_AUDIO_AAC = (1 << 1),
46 WFD_AUDIO_AC3 = (1 << 2)
51 WFD_FREQ_44100 = (1 << 0),
52 WFD_FREQ_48000 = (1 << 1)
56 WFD_CHANNEL_UNKNOWN = 0,
57 WFD_CHANNEL_2 = (1 << 0),
58 WFD_CHANNEL_4 = (1 << 1),
59 WFD_CHANNEL_6 = (1 << 2),
60 WFD_CHANNEL_8 = (1 << 3)
65 WFD_VIDEO_UNKNOWN = 0,
66 WFD_VIDEO_H264 = (1 << 0)
70 WFD_VIDEO_CEA_RESOLUTION = 0,
71 WFD_VIDEO_VESA_RESOLUTION,
72 WFD_VIDEO_HH_RESOLUTION
73 }WFDVideoNativeResolution;
77 WFD_CEA_640x480P60 = (1 << 0),
78 WFD_CEA_720x480P60 = (1 << 1),
79 WFD_CEA_720x480I60 = (1 << 2),
80 WFD_CEA_720x576P50 = (1 << 3),
81 WFD_CEA_720x576I50 = (1 << 4),
82 WFD_CEA_1280x720P30 = (1 << 5),
83 WFD_CEA_1280x720P60 = (1 << 6),
84 WFD_CEA_1920x1080P30= (1 << 7),
85 WFD_CEA_1920x1080P60= (1 << 8),
86 WFD_CEA_1920x1080I60= (1 << 9),
87 WFD_CEA_1280x720P25 = (1 << 10),
88 WFD_CEA_1280x720P50 = (1 << 11),
89 WFD_CEA_1920x1080P25= (1 << 12),
90 WFD_CEA_1920x1080P50= (1 << 13),
91 WFD_CEA_1920x1080I50= (1 << 14),
92 WFD_CEA_1280x720P24 = (1 << 15),
93 WFD_CEA_1920x1080P24= (1 << 16)
94 }WFDVideoCEAResolution;
98 WFD_VESA_800x600P30 = (1 << 0),
99 WFD_VESA_800x600P60 = (1 << 1),
100 WFD_VESA_1024x768P30 = (1 << 2),
101 WFD_VESA_1024x768P60 = (1 << 3),
102 WFD_VESA_1152x864P30 = (1 << 4),
103 WFD_VESA_1152x864P60 = (1 << 5),
104 WFD_VESA_1280x768P30 = (1 << 6),
105 WFD_VESA_1280x768P60 = (1 << 7),
106 WFD_VESA_1280x800P30 = (1 << 8),
107 WFD_VESA_1280x800P60 = (1 << 9),
108 WFD_VESA_1360x768P30 = (1 << 10),
109 WFD_VESA_1360x768P60 = (1 << 11),
110 WFD_VESA_1366x768P30 = (1 << 12),
111 WFD_VESA_1366x768P60 = (1 << 13),
112 WFD_VESA_1280x1024P30 = (1 << 14),
113 WFD_VESA_1280x1024P60 = (1 << 15),
114 WFD_VESA_1400x1050P30 = (1 << 16),
115 WFD_VESA_1400x1050P60 = (1 << 17),
116 WFD_VESA_1440x900P30 = (1 << 18),
117 WFD_VESA_1440x900P60 = (1 << 19),
118 WFD_VESA_1600x900P30 = (1 << 20),
119 WFD_VESA_1600x900P60 = (1 << 21),
120 WFD_VESA_1600x1200P30 = (1 << 22),
121 WFD_VESA_1600x1200P60 = (1 << 23),
122 WFD_VESA_1680x1024P30 = (1 << 24),
123 WFD_VESA_1680x1024P60 = (1 << 25),
124 WFD_VESA_1680x1050P30 = (1 << 26),
125 WFD_VESA_1680x1050P60 = (1 << 27),
126 WFD_VESA_1920x1200P30 = (1 << 28),
127 WFD_VESA_1920x1200P60 = (1 << 29)
128 }WFDVideoVESAResolution;
132 WFD_HH_800x480P30 = (1 << 0),
133 WFD_HH_800x480P60 = (1 << 1),
134 WFD_HH_854x480P30 = (1 << 2),
135 WFD_HH_854x480P60 = (1 << 3),
136 WFD_HH_864x480P30 = (1 << 4),
137 WFD_HH_864x480P60 = (1 << 5),
138 WFD_HH_640x360P30 = (1 << 6),
139 WFD_HH_640x360P60 = (1 << 7),
140 WFD_HH_960x540P30 = (1 << 8),
141 WFD_HH_960x540P60 = (1 << 9),
142 WFD_HH_848x480P30 = (1 << 10),
143 WFD_HH_848x480P60 = (1 << 11)
144 }WFDVideoHHResolution;
147 WFD_H264_UNKNOWN_PROFILE= 0,
148 WFD_H264_BASE_PROFILE = (1 << 0),
149 WFD_H264_HIGH_PROFILE = (1 << 1)
150 }WFDVideoH264Profile;
153 WFD_H264_LEVEL_UNKNOWN = 0,
154 WFD_H264_LEVEL_3_1 = (1 << 0),
155 WFD_H264_LEVEL_3_2 = (1 << 1),
156 WFD_H264_LEVEL_4 = (1 << 2),
157 WFD_H264_LEVEL_4_1 = (1 << 3),
158 WFD_H264_LEVEL_4_2 = (1 << 4)
163 WFD_HDCP_2_0 = (1 << 0),
164 WFD_HDCP_2_1 = (1 << 1)
168 WFD_SINK_UNKNOWN = -1,
169 WFD_SINK_NOT_COUPLED = 0,
171 WFD_SINK_TEARDOWN_COUPLING,
173 }WFDCoupledSinkStatus;
176 WFD_TRIGGER_UNKNOWN = 0,
179 WFD_TRIGGER_TEARDOWN,
184 WFD_RTSP_TRANS_UNKNOWN = 0,
185 WFD_RTSP_TRANS_RTP = (1 << 0),
186 WFD_RTSP_TRANS_RDT = (1 << 1)
190 WFD_RTSP_PROFILE_UNKNOWN = 0,
191 WFD_RTSP_PROFILE_AVP = (1 << 0),
192 WFD_RTSP_PROFILE_SAVP = (1 << 1)
196 WFD_RTSP_LOWER_TRANS_UNKNOWN = 0,
197 WFD_RTSP_LOWER_TRANS_UDP = (1 << 0),
198 WFD_RTSP_LOWER_TRANS_UDP_MCAST = (1 << 1),
199 WFD_RTSP_LOWER_TRANS_TCP = (1 << 2),
200 WFD_RTSP_LOWER_TRANS_HTTP = (1 << 3)
204 WFD_PRIMARY_SINK = 0,
209 WFD_UIBC_INPUT_CAT_UNKNOWN = 0,
210 WFD_UIBC_INPUT_CAT_GENERIC = (1 << 0),
211 WFD_UIBC_INPUT_CAT_HIDC = (1 << 1),
215 WFD_UIBC_INPUT_TYPE_UNKNOWN = 0,
216 WFD_UIBC_INPUT_TYPE_KEYBOARD = (1 << 0),
217 WFD_UIBC_INPUT_TYPE_MOUSE = (1 << 1),
218 WFD_UIBC_INPUT_TYPE_SINGLETOUCH = (1 << 2),
219 WFD_UIBC_INPUT_TYPE_MULTITOUCH = (1 << 3),
220 WFD_UIBC_INPUT_TYPE_JOYSTICK = (1 << 4),
221 WFD_UIBC_INPUT_TYPE_CAMERA = (1 << 5),
222 WFD_UIBC_INPUT_TYPE_GESTURE = (1 << 6),
223 WFD_UIBC_INPUT_TYPE_REMOTECONTROL = (1 << 7)
227 WFD_UIBC_INPUT_PATH_UNKNOWN = 0,
228 WFD_UIBC_INPUT_PATH_INFRARED = (1 << 0),
229 WFD_UIBC_INPUT_PATH_USB = (1 << 1),
230 WFD_UIBC_INPUT_PATH_BT = (1 << 2),
231 WFD_UIBC_INPUT_PATH_ZIGBEE = (1 << 3),
232 WFD_UIBC_INPUT_PATH_WIFI = (1 << 4),
233 WFD_UIBC_INPUT_PATH_NOSP = (1 << 5)
237 WFD_CONNECTOR_VGA = 0,
239 WFD_CONNECTOR_COMPOSITE,
240 WFD_CONNECTOR_COMPONENT,
244 WFD_CONNECTOR_RESERVED_7,
245 WFD_CONNECTOR_JAPANESE_D,
248 WFD_CONNECTOR_RESERVED_11,
250 WFD_CONNECTOR_NO = 254,
251 WFD_CONNECTOR_PHYSICAL = 255
272 guint min_slice_size;
273 guint slice_enc_params;
274 guint frame_rate_control_support;
275 } WFDVideoH264MiscParams;
282 WFDVideoH264MiscParams misc_params;
287 guint preferred_display_mode_supported;
288 WFDVideoH264Codec H264_codec;
297 guint video_3d_capability;
299 guint min_slice_size;
300 guint slice_enc_params;
301 guint frame_rate_control_support;
302 } WFD3DVideoH264MiscParams;
307 WFD3DVideoH264MiscParams misc_params;
310 } WFD3DVideoH264Codec;
314 guint preferred_display_mode_supported;
315 WFD3DVideoH264Codec H264_codec;
329 WFDHdcp2Spec *hdcp2_spec;
330 } WFDContentProtection;
333 guint edid_supported;
334 guint edid_block_count;
342 } WFDCoupled_sink_cap;
345 WFDCoupled_sink_cap *coupled_sink_cap;
349 gchar *wfd_trigger_method;
355 } WFDPresentationUrl;
376 } WFDAVFormatChangeTiming;
379 gboolean displaymodesupported;
393 WFDVideoH264Codec H264_codec;
394 } WFDPreferredDisplayMode;
398 }WFDInputCategoryList;
402 }WFDGenericCategoryList;
404 typedef struct _detailed_cap detailed_cap;
407 WFDUibcinp_type inp_type;
408 WFDUibcinp_path inp_path;
409 }WFDHIDCTypePathPair;
411 struct _detailed_cap {
412 WFDHIDCTypePathPair p;
419 }WFDHIDCCategoryList;
422 gboolean uibcsupported;
423 WFDInputCategoryList input_category_list;
424 WFDGenericCategoryList generic_cap_list;
425 WFDHIDCCategoryList hidc_cap_list;
430 gboolean uibc_setting;
434 gboolean standby_resume_cap;
435 } WFDStandbyResumeCapability;
438 gboolean wfd_standby;
443 gint32 connector_type;
447 gboolean idr_request;
450 /***********************************************************/
454 WFDAudioCodeclist *audio_codecs;
455 WFDVideoCodeclist *video_formats;
456 WFD3DFormats *video_3d_formats;
457 WFDContentProtection *content_protection;
458 WFDDisplayEdid *display_edid;
459 WFDCoupledSink *coupled_sink;
460 WFDTriggerMethod *trigger_method;
461 WFDPresentationUrl *presentation_url;
462 WFDClientRtpPorts *client_rtp_ports;
465 WFDAVFormatChangeTiming *av_format_change_timing;
466 WFDPreferredDisplayMode *preferred_display_mode;
467 WFDUibcCapability *uibc_capability;
468 WFDUibcSetting *uibc_setting;
469 WFDStandbyResumeCapability *standby_resume_capability;
471 WFDConnectorType *connector_type;
472 WFDIdrRequest *idr_request;
475 /* Session descriptions */
476 WFDResult wfdconfig_message_new (WFDMessage **msg);
477 WFDResult wfdconfig_message_init (WFDMessage *msg);
478 WFDResult wfdconfig_message_uninit (WFDMessage *msg);
479 WFDResult wfdconfig_message_free (WFDMessage *msg);
480 WFDResult wfdconfig_message_parse_buffer (const guint8 *data, guint size, WFDMessage *msg);
481 gchar* wfdconfig_message_as_text (const WFDMessage *msg);
482 gchar* wfdconfig_parameter_names_as_text (const WFDMessage *msg);
483 WFDResult wfdconfig_message_dump (const WFDMessage *msg);
486 WFDResult wfdconfig_set_supported_audio_format(WFDMessage *msg,
487 guint aCodec, guint aFreq, guint aChanels,
488 guint aBitwidth, guint32 aLatency);
489 WFDResult wfdconfig_set_prefered_audio_format(WFDMessage *msg,
490 WFDAudioFormats aCodec, WFDAudioFreq aFreq, WFDAudioChannels aChanels,
491 guint aBitwidth, guint32 aLatency);
492 WFDResult wfdconfig_get_supported_audio_format(WFDMessage *msg,
493 guint *aCodec, guint *aFreq, guint *aChanels,
494 guint *aBitwidth, guint32 *aLatency);
495 WFDResult wfdconfig_get_prefered_audio_format(WFDMessage *msg,
496 WFDAudioFormats *aCodec, WFDAudioFreq *aFreq, WFDAudioChannels *aChanels,
497 guint *aBitwidth, guint32 *aLatency);
499 WFDResult wfdconfig_set_supported_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
500 WFDVideoNativeResolution vNative, guint64 vNativeResolution,
501 guint64 vCEAResolution, guint64 vVESAResolution, guint64 vHHResolution,
502 guint vProfile, guint vLevel, guint32 vLatency, guint32 vMaxHeight,
503 guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
504 WFDResult wfdconfig_set_prefered_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
505 WFDVideoNativeResolution vNative, guint64 vNativeResolution,
506 WFDVideoCEAResolution vCEAResolution, WFDVideoVESAResolution vVESAResolution,
507 WFDVideoHHResolution vHHResolution, WFDVideoH264Profile vProfile,
508 WFDVideoH264Level vLevel, guint32 vLatency, guint32 vMaxHeight,
509 guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
510 WFDResult wfdconfig_get_supported_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
511 WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
512 guint64 *vCEAResolution, guint64 *vVESAResolution, guint64 *vHHResolution,
513 guint *vProfile, guint *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
514 guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
515 WFDResult wfdconfig_get_prefered_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
516 WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
517 WFDVideoCEAResolution *vCEAResolution, WFDVideoVESAResolution *vVESAResolution,
518 WFDVideoHHResolution *vHHResolution, WFDVideoH264Profile *vProfile,
519 WFDVideoH264Level *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
520 guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
522 // Todo wfd-3d-formats
524 WFDResult wfdconfig_set_contentprotection_type(WFDMessage *msg, WFDHDCPProtection hdcpversion, guint32 TCPPort);
525 WFDResult wfdconfig_get_contentprotection_type(WFDMessage *msg, WFDHDCPProtection *hdcpversion, guint32 *TCPPort);
527 WFDResult wfdconfig_set_display_EDID(WFDMessage *msg, gboolean edid_supported, guint32 edid_blockcount, gchar *edid_playload);
528 WFDResult wfdconfig_get_display_EDID(WFDMessage *msg, gboolean *edid_supported, guint32 *edid_blockcount, gchar **edid_playload);
531 WFDResult wfdconfig_set_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus status, gchar *sink_address);
532 WFDResult wfdconfig_get_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus *status, gchar **sink_address);
534 WFDResult wfdconfig_set_trigger_type(WFDMessage *msg, WFDTrigger trigger);
535 WFDResult wfdconfig_get_trigger_type(WFDMessage *msg, WFDTrigger *trigger);
537 WFDResult wfdconfig_set_presentation_url(WFDMessage *msg, gchar *wfd_url0, gchar *wfd_url1);
538 WFDResult wfdconfig_get_presentation_url(WFDMessage *msg, gchar **wfd_url0, gchar **wfd_url1);
540 WFDResult wfdconfig_set_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode trans, WFDRTSPProfile profile,
541 WFDRTSPLowerTrans lowertrans, guint32 rtp_port0, guint32 rtp_port1);
542 WFDResult wfdconfig_get_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode *trans, WFDRTSPProfile *profile,
543 WFDRTSPLowerTrans *lowertrans, guint32 *rtp_port0, guint32 *rtp_port1);
545 WFDResult wfdconfig_set_audio_sink_type(WFDMessage *msg, WFDSinkType sinktype);
546 WFDResult wfdconfig_get_audio_sink_type(WFDMessage *msg, WFDSinkType *sinktype);
548 WFDResult wfdconfig_set_I2C_port(WFDMessage *msg, gboolean i2csupport, guint32 i2cport);
549 WFDResult wfdconfig_get_I2C_port(WFDMessage *msg, gboolean *i2csupport, guint32 *i2cport);
551 WFDResult wfdconfig_set_av_format_change_timing(WFDMessage *msg, guint64 PTS, guint64 DTS);
552 WFDResult wfdconfig_get_av_format_change_timing(WFDMessage *msg, guint64 *PTS, guint64 *DTS);
554 // Todo wfd-preferred-display-mode
556 WFDResult wfdconfig_set_uibc_capability(WFDMessage *msg, guint32 input_category, guint32 inp_type, WFDHIDCTypePathPair *inp_pair,
557 guint32 inp_type_path_count, guint32 tcp_port);
558 WFDResult wfdconfig_get_uibc_capability(WFDMessage *msg, guint32 *input_category, guint32 *inp_type, WFDHIDCTypePathPair **inp_pair,
559 guint32 *inp_type_path_count, guint32 *tcp_port);
561 WFDResult wfdconfig_set_uibc_status(WFDMessage *msg, gboolean uibc_enable);
562 WFDResult wfdconfig_get_uibc_status(WFDMessage *msg, gboolean *uibc_enable);
564 WFDResult wfdconfig_set_standby_resume_capability(WFDMessage *msg, gboolean supported);
565 WFDResult wfdconfig_get_standby_resume_capability(WFDMessage *msg, gboolean *supported);
567 WFDResult wfdconfig_set_standby(WFDMessage *msg, gboolean standby_enable);
568 WFDResult wfdconfig_get_standby(WFDMessage *msg, gboolean *standby_enable);
570 WFDResult wfdconfig_set_connector_type(WFDMessage *msg, WFDConnector connector);
571 WFDResult wfdconfig_get_connector_type(WFDMessage *msg, WFDConnector *connector);
573 WFDResult wfdconfig_set_idr_request(WFDMessage *msg);
577 #endif /* __GST_WFD_CONFIG_MESSAGE_H__ */