2 * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
22 #ifndef __GST_WFD_CONFIG_MESSAGE_H__
23 #define __GST_WFD_CONFIG_MESSAGE_H__
31 * @WFD_OK: A successful return value
32 * @WFD_EINVAL: a function was given invalid parameters
34 * Return values for the WFD_CONFIG functions.
42 WFD_AUDIO_UNKNOWN = 0,
43 WFD_AUDIO_LPCM = (1 << 0),
44 WFD_AUDIO_AAC = (1 << 1),
45 WFD_AUDIO_AC3 = (1 << 2)
50 WFD_FREQ_44100 = (1 << 0),
51 WFD_FREQ_48000 = (1 << 1)
55 WFD_CHANNEL_UNKNOWN = 0,
56 WFD_CHANNEL_2 = (1 << 0),
57 WFD_CHANNEL_4 = (1 << 1),
58 WFD_CHANNEL_6 = (1 << 2),
59 WFD_CHANNEL_8 = (1 << 3)
64 WFD_VIDEO_UNKNOWN = 0,
65 WFD_VIDEO_H264 = (1 << 0)
69 WFD_VIDEO_CEA_RESOLUTION = 0,
70 WFD_VIDEO_VESA_RESOLUTION,
71 WFD_VIDEO_HH_RESOLUTION
72 }WFDVideoNativeResolution;
76 WFD_CEA_640x480P60 = (1 << 0),
77 WFD_CEA_720x480P60 = (1 << 1),
78 WFD_CEA_720x480I60 = (1 << 2),
79 WFD_CEA_720x576P50 = (1 << 3),
80 WFD_CEA_720x576I50 = (1 << 4),
81 WFD_CEA_1280x720P30 = (1 << 5),
82 WFD_CEA_1280x720P60 = (1 << 6),
83 WFD_CEA_1920x1080P30= (1 << 7),
84 WFD_CEA_1920x1080P60= (1 << 8),
85 WFD_CEA_1920x1080I60= (1 << 9),
86 WFD_CEA_1280x720P25 = (1 << 10),
87 WFD_CEA_1280x720P50 = (1 << 11),
88 WFD_CEA_1920x1080P25= (1 << 12),
89 WFD_CEA_1920x1080P50= (1 << 13),
90 WFD_CEA_1920x1080I50= (1 << 14),
91 WFD_CEA_1280x720P24 = (1 << 15),
92 WFD_CEA_1920x1080P24= (1 << 16)
93 }WFDVideoCEAResolution;
97 WFD_VESA_800x600P30 = (1 << 0),
98 WFD_VESA_800x600P60 = (1 << 1),
99 WFD_VESA_1024x768P30 = (1 << 2),
100 WFD_VESA_1024x768P60 = (1 << 3),
101 WFD_VESA_1152x864P30 = (1 << 4),
102 WFD_VESA_1152x864P60 = (1 << 5),
103 WFD_VESA_1280x768P30 = (1 << 6),
104 WFD_VESA_1280x768P60 = (1 << 7),
105 WFD_VESA_1280x800P30 = (1 << 8),
106 WFD_VESA_1280x800P60 = (1 << 9),
107 WFD_VESA_1360x768P30 = (1 << 10),
108 WFD_VESA_1360x768P60 = (1 << 11),
109 WFD_VESA_1366x768P30 = (1 << 12),
110 WFD_VESA_1366x768P60 = (1 << 13),
111 WFD_VESA_1280x1024P30 = (1 << 14),
112 WFD_VESA_1280x1024P60 = (1 << 15),
113 WFD_VESA_1400x1050P30 = (1 << 16),
114 WFD_VESA_1400x1050P60 = (1 << 17),
115 WFD_VESA_1440x900P30 = (1 << 18),
116 WFD_VESA_1440x900P60 = (1 << 19),
117 WFD_VESA_1600x900P30 = (1 << 20),
118 WFD_VESA_1600x900P60 = (1 << 21),
119 WFD_VESA_1600x1200P30 = (1 << 22),
120 WFD_VESA_1600x1200P60 = (1 << 23),
121 WFD_VESA_1680x1024P30 = (1 << 24),
122 WFD_VESA_1680x1024P60 = (1 << 25),
123 WFD_VESA_1680x1050P30 = (1 << 26),
124 WFD_VESA_1680x1050P60 = (1 << 27),
125 WFD_VESA_1920x1200P30 = (1 << 28),
126 WFD_VESA_1920x1200P60 = (1 << 29)
127 }WFDVideoVESAResolution;
131 WFD_HH_800x480P30 = (1 << 0),
132 WFD_HH_800x480P60 = (1 << 1),
133 WFD_HH_854x480P30 = (1 << 2),
134 WFD_HH_854x480P60 = (1 << 3),
135 WFD_HH_864x480P30 = (1 << 4),
136 WFD_HH_864x480P60 = (1 << 5),
137 WFD_HH_640x360P30 = (1 << 6),
138 WFD_HH_640x360P60 = (1 << 7),
139 WFD_HH_960x540P30 = (1 << 8),
140 WFD_HH_960x540P60 = (1 << 9),
141 WFD_HH_848x480P30 = (1 << 10),
142 WFD_HH_848x480P60 = (1 << 11)
143 }WFDVideoHHResolution;
146 WFD_H264_UNKNOWN_PROFILE= 0,
147 WFD_H264_BASE_PROFILE = (1 << 0),
148 WFD_H264_HIGH_PROFILE = (1 << 1)
149 }WFDVideoH264Profile;
152 WFD_H264_LEVEL_UNKNOWN = 0,
153 WFD_H264_LEVEL_3_1 = (1 << 0),
154 WFD_H264_LEVEL_3_2 = (1 << 1),
155 WFD_H264_LEVEL_4 = (1 << 2),
156 WFD_H264_LEVEL_4_1 = (1 << 3),
157 WFD_H264_LEVEL_4_2 = (1 << 4)
162 WFD_HDCP_2_0 = (1 << 0),
163 WFD_HDCP_2_1 = (1 << 1)
167 WFD_SINK_UNKNOWN = -1,
168 WFD_SINK_NOT_COUPLED = 0,
170 WFD_SINK_TEARDOWN_COUPLING,
172 }WFDCoupledSinkStatus;
175 WFD_TRIGGER_UNKNOWN = 0,
178 WFD_TRIGGER_TEARDOWN,
183 WFD_RTSP_TRANS_UNKNOWN = 0,
184 WFD_RTSP_TRANS_RTP = (1 << 0),
185 WFD_RTSP_TRANS_RDT = (1 << 1)
189 WFD_RTSP_PROFILE_UNKNOWN = 0,
190 WFD_RTSP_PROFILE_AVP = (1 << 0),
191 WFD_RTSP_PROFILE_SAVP = (1 << 1)
195 WFD_RTSP_LOWER_TRANS_UNKNOWN = 0,
196 WFD_RTSP_LOWER_TRANS_UDP = (1 << 0),
197 WFD_RTSP_LOWER_TRANS_UDP_MCAST = (1 << 1),
198 WFD_RTSP_LOWER_TRANS_TCP = (1 << 2),
199 WFD_RTSP_LOWER_TRANS_HTTP = (1 << 3)
203 WFD_PRIMARY_SINK = 0,
208 WFD_UIBC_INPUT_CAT_UNKNOWN = 0,
209 WFD_UIBC_INPUT_CAT_GENERIC = (1 << 0),
210 WFD_UIBC_INPUT_CAT_HIDC = (1 << 1),
214 WFD_UIBC_INPUT_TYPE_UNKNOWN = 0,
215 WFD_UIBC_INPUT_TYPE_KEYBOARD = (1 << 0),
216 WFD_UIBC_INPUT_TYPE_MOUSE = (1 << 1),
217 WFD_UIBC_INPUT_TYPE_SINGLETOUCH = (1 << 2),
218 WFD_UIBC_INPUT_TYPE_MULTITOUCH = (1 << 3),
219 WFD_UIBC_INPUT_TYPE_JOYSTICK = (1 << 4),
220 WFD_UIBC_INPUT_TYPE_CAMERA = (1 << 5),
221 WFD_UIBC_INPUT_TYPE_GESTURE = (1 << 6),
222 WFD_UIBC_INPUT_TYPE_REMOTECONTROL = (1 << 7)
226 WFD_UIBC_INPUT_PATH_UNKNOWN = 0,
227 WFD_UIBC_INPUT_PATH_INFRARED = (1 << 0),
228 WFD_UIBC_INPUT_PATH_USB = (1 << 1),
229 WFD_UIBC_INPUT_PATH_BT = (1 << 2),
230 WFD_UIBC_INPUT_PATH_ZIGBEE = (1 << 3),
231 WFD_UIBC_INPUT_PATH_WIFI = (1 << 4),
232 WFD_UIBC_INPUT_PATH_NOSP = (1 << 5)
236 WFD_CONNECTOR_VGA = 0,
238 WFD_CONNECTOR_COMPOSITE,
239 WFD_CONNECTOR_COMPONENT,
243 WFD_CONNECTOR_RESERVED_7,
244 WFD_CONNECTOR_JAPANESE_D,
247 WFD_CONNECTOR_RESERVED_11,
249 WFD_CONNECTOR_NO = 254,
250 WFD_CONNECTOR_PHYSICAL = 255
271 guint min_slice_size;
272 guint slice_enc_params;
273 guint frame_rate_control_support;
274 } WFDVideoH264MiscParams;
281 WFDVideoH264MiscParams misc_params;
286 guint preferred_display_mode_supported;
287 WFDVideoH264Codec H264_codec;
296 guint video_3d_capability;
298 guint min_slice_size;
299 guint slice_enc_params;
300 guint frame_rate_control_support;
301 } WFD3DVideoH264MiscParams;
306 WFD3DVideoH264MiscParams misc_params;
309 } WFD3DVideoH264Codec;
313 guint preferred_display_mode_supported;
314 WFD3DVideoH264Codec H264_codec;
328 WFDHdcp2Spec *hdcp2_spec;
329 } WFDContentProtection;
332 guint edid_supported;
333 guint edid_block_count;
341 } WFDCoupled_sink_cap;
344 WFDCoupled_sink_cap *coupled_sink_cap;
348 gchar *wfd_trigger_method;
354 } WFDPresentationUrl;
375 } WFDAVFormatChangeTiming;
378 gboolean displaymodesupported;
392 WFDVideoH264Codec H264_codec;
393 } WFDPreferredDisplayMode;
397 }WFDInputCategoryList;
401 }WFDGenericCategoryList;
403 typedef struct _detailed_cap detailed_cap;
406 WFDUibcinp_type inp_type;
407 WFDUibcinp_path inp_path;
408 }WFDHIDCTypePathPair;
410 struct _detailed_cap {
411 WFDHIDCTypePathPair p;
418 }WFDHIDCCategoryList;
421 gboolean uibcsupported;
422 WFDInputCategoryList input_category_list;
423 WFDGenericCategoryList generic_cap_list;
424 WFDHIDCCategoryList hidc_cap_list;
429 gboolean uibc_setting;
433 gchar *standby_resume_cap;
434 } WFDStandbyResumeCapability;
437 gboolean wfd_standby;
442 gint32 connector_type;
446 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;
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);
580 #endif /* __GST_WFD_CONFIG_MESSAGE_H__ */