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 gboolean standby_resume_cap;
434 } WFDStandbyResumeCapability;
437 gboolean wfd_standby;
442 gint32 connector_type;
446 gboolean idr_request;
449 /***********************************************************/
453 WFDAudioCodeclist *audio_codecs;
454 WFDVideoCodeclist *video_formats;
455 WFD3DFormats *video_3d_formats;
456 WFDContentProtection *content_protection;
457 WFDDisplayEdid *display_edid;
458 WFDCoupledSink *coupled_sink;
459 WFDTriggerMethod *trigger_method;
460 WFDPresentationUrl *presentation_url;
461 WFDClientRtpPorts *client_rtp_ports;
464 WFDAVFormatChangeTiming *av_format_change_timing;
465 WFDPreferredDisplayMode *preferred_display_mode;
466 WFDUibcCapability *uibc_capability;
467 WFDUibcSetting *uibc_setting;
468 WFDStandbyResumeCapability *standby_resume_capability;
470 WFDConnectorType *connector_type;
471 WFDIdrRequest *idr_request;
476 /* Session descriptions */
477 WFDResult wfdconfig_message_new (WFDMessage **msg);
478 WFDResult wfdconfig_message_init (WFDMessage *msg);
479 WFDResult wfdconfig_message_uninit (WFDMessage *msg);
480 WFDResult wfdconfig_message_free (WFDMessage *msg);
481 WFDResult wfdconfig_message_parse_buffer (const guint8 *data, guint size, WFDMessage *msg);
482 gchar* wfdconfig_message_as_text (const WFDMessage *msg);
483 gchar* wfdconfig_parameter_names_as_text (const WFDMessage *msg);
484 WFDResult wfdconfig_message_dump (const WFDMessage *msg);
487 WFDResult wfdconfig_set_supported_audio_format(WFDMessage *msg,
488 guint aCodec, guint aFreq, guint aChanels,
489 guint aBitwidth, guint32 aLatency);
490 WFDResult wfdconfig_set_prefered_audio_format(WFDMessage *msg,
491 WFDAudioFormats aCodec, WFDAudioFreq aFreq, WFDAudioChannels aChanels,
492 guint aBitwidth, guint32 aLatency);
493 WFDResult wfdconfig_get_supported_audio_format(WFDMessage *msg,
494 guint *aCodec, guint *aFreq, guint *aChanels,
495 guint *aBitwidth, guint32 *aLatency);
496 WFDResult wfdconfig_get_prefered_audio_format(WFDMessage *msg,
497 WFDAudioFormats *aCodec, WFDAudioFreq *aFreq, WFDAudioChannels *aChanels,
498 guint *aBitwidth, guint32 *aLatency);
500 WFDResult wfdconfig_set_supported_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
501 WFDVideoNativeResolution vNative, guint64 vNativeResolution,
502 guint64 vCEAResolution, guint64 vVESAResolution, guint64 vHHResolution,
503 guint vProfile, guint vLevel, guint32 vLatency, guint32 vMaxHeight,
504 guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
505 WFDResult wfdconfig_set_prefered_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
506 WFDVideoNativeResolution vNative, guint64 vNativeResolution,
507 WFDVideoCEAResolution vCEAResolution, WFDVideoVESAResolution vVESAResolution,
508 WFDVideoHHResolution vHHResolution, WFDVideoH264Profile vProfile,
509 WFDVideoH264Level vLevel, guint32 vLatency, guint32 vMaxHeight,
510 guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
511 WFDResult wfdconfig_get_supported_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
512 WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
513 guint64 *vCEAResolution, guint64 *vVESAResolution, guint64 *vHHResolution,
514 guint *vProfile, guint *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
515 guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
516 WFDResult wfdconfig_get_prefered_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
517 WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
518 WFDVideoCEAResolution *vCEAResolution, WFDVideoVESAResolution *vVESAResolution,
519 WFDVideoHHResolution *vHHResolution, WFDVideoH264Profile *vProfile,
520 WFDVideoH264Level *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
521 guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
523 // Todo wfd-3d-formats
525 WFDResult wfdconfig_set_contentprotection_type(WFDMessage *msg, WFDHDCPProtection hdcpversion, guint32 TCPPort);
526 WFDResult wfdconfig_get_contentprotection_type(WFDMessage *msg, WFDHDCPProtection *hdcpversion, guint32 *TCPPort);
528 WFDResult wfdconfig_set_display_EDID(WFDMessage *msg, gboolean edid_supported, guint32 edid_blockcount, gchar *edid_playload);
529 WFDResult wfdconfig_get_display_EDID(WFDMessage *msg, gboolean *edid_supported, guint32 *edid_blockcount, gchar **edid_playload);
532 WFDResult wfdconfig_set_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus status, gchar *sink_address);
533 WFDResult wfdconfig_get_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus *status, gchar **sink_address);
535 WFDResult wfdconfig_set_trigger_type(WFDMessage *msg, WFDTrigger trigger);
536 WFDResult wfdconfig_get_trigger_type(WFDMessage *msg, WFDTrigger *trigger);
538 WFDResult wfdconfig_set_presentation_url(WFDMessage *msg, gchar *wfd_url0, gchar *wfd_url1);
539 WFDResult wfdconfig_get_presentation_url(WFDMessage *msg, gchar **wfd_url0, gchar **wfd_url1);
541 WFDResult wfdconfig_set_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode trans, WFDRTSPProfile profile,
542 WFDRTSPLowerTrans lowertrans, guint32 rtp_port0, guint32 rtp_port1);
543 WFDResult wfdconfig_get_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode *trans, WFDRTSPProfile *profile,
544 WFDRTSPLowerTrans *lowertrans, guint32 *rtp_port0, guint32 *rtp_port1);
546 WFDResult wfdconfig_set_audio_sink_type(WFDMessage *msg, WFDSinkType sinktype);
547 WFDResult wfdconfig_get_audio_sink_type(WFDMessage *msg, WFDSinkType *sinktype);
549 WFDResult wfdconfig_set_I2C_port(WFDMessage *msg, gboolean i2csupport, guint32 i2cport);
550 WFDResult wfdconfig_get_I2C_port(WFDMessage *msg, gboolean *i2csupport, guint32 *i2cport);
552 WFDResult wfdconfig_set_av_format_change_timing(WFDMessage *msg, guint64 PTS, guint64 DTS);
553 WFDResult wfdconfig_get_av_format_change_timing(WFDMessage *msg, guint64 *PTS, guint64 *DTS);
555 // Todo wfd-preferred-display-mode
557 WFDResult wfdconfig_set_uibc_capability(WFDMessage *msg, guint32 input_category, guint32 inp_type, WFDHIDCTypePathPair *inp_pair,
558 guint32 inp_type_path_count, guint32 tcp_port);
559 WFDResult wfdconfig_get_uibc_capability(WFDMessage *msg, guint32 *input_category, guint32 *inp_type, WFDHIDCTypePathPair *inp_pair,
560 guint32 *inp_type_path_count, guint32 *tcp_port);
562 WFDResult wfdconfig_set_uibc_status(WFDMessage *msg, gboolean uibc_enable);
563 WFDResult wfdconfig_get_uibc_status(WFDMessage *msg, gboolean *uibc_enable);
565 WFDResult wfdconfig_set_standby_resume_capability(WFDMessage *msg, gboolean supported);
566 WFDResult wfdconfig_get_standby_resume_capability(WFDMessage *msg, gboolean *supported);
568 WFDResult wfdconfig_set_standby(WFDMessage *msg, gboolean standby_enable);
569 WFDResult wfdconfig_get_standby(WFDMessage *msg, gboolean *standby_enable);
571 WFDResult wfdconfig_set_connector_type(WFDMessage *msg, WFDConnector connector);
572 WFDResult wfdconfig_get_connector_type(WFDMessage *msg, WFDConnector *connector);
574 WFDResult wfdconfig_set_idr_request(WFDMessage *msg);
578 #endif /* __GST_WFD_CONFIG_MESSAGE_H__ */