Fix to use string for wfd rtsp message.
[archive/platform/core/multimedia/libmm-scmirroring-common.git] / wfdconfig / include / wfdconfigmessage.h
1 /*
2  * wfdconfig messages
3  *
4  * Copyright (c) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
5  *
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>
8  *
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
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
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.
20  *
21  */
22
23 #ifndef __GST_WFD_CONFIG_MESSAGE_H__
24 #define __GST_WFD_CONFIG_MESSAGE_H__
25
26 #include <glib.h>
27
28 G_BEGIN_DECLS
29
30 #define STRING_WFD_AUDIO_CODECS               "wfd_audio_codecs"
31 #define STRING_WFD_VIDEO_FORMATS              "wfd_video_formats"
32 #define STRING_WFD_3D_VIDEO_FORMATS           "wfd_3d_video_formats"
33 #define STRING_WFD_CONTENT_PROTECTION         "wfd_content_protection"
34 #define STRING_WFD_DISPLAY_EDID               "wfd_display_edid"
35 #define STRING_WFD_COUPLED_SINK               "wfd_coupled_sink"
36 #define STRING_WFD_TRIGGER_METHOD             "wfd_trigger_method"
37 #define STRING_WFD_PRESENTATION_URL           "wfd_presentation_URL"
38 #define STRING_WFD_CLIENT_RTP_PORTS           "wfd_client_rtp_ports"
39 #define STRING_WFD_ROUTE                      "wfd_route"
40 #define STRING_WFD_I2C                        "wfd_I2C"
41 #define STRING_WFD_AV_FORMAT_CHANGE_TIMING    "wfd_av_format_change_timing"
42 #define STRING_WFD_PREFERRED_DISPLAY_MODE     "wfd_preferred_display_mode"
43 #define STRING_WFD_UIBC_CAPABILITY            "wfd_uibc_capability"
44 #define STRING_WFD_UIBC_SETTING               "wfd_uibc_setting"
45 #define STRING_WFD_STANDBY_RESUME_CAPABILITY  "wfd_standby_resume_capability"
46 #define STRING_WFD_STANDBY                    "wfd_standby"
47 #define STRING_WFD_CONNECTOR_TYPE             "wfd_connector_type"
48 #define STRING_WFD_IDR_REQUEST                "wfd_idr_request"
49 #define STRING_WFD_NONE                       "none"
50 #define STRING_WFD_ENABLE                     "enable"
51 #define STRING_WFD_DISABLE                    "disable"
52 #define STRING_WFD_CRLF                       "\r\n"
53 #define STRING_WFD_SPACE                      " "
54 #define STRING_WFD_INPUT_CATEGORY_LIST        "input_category_list"
55 #define STRING_WFD_GENERIC                    "GENERIC"
56 #define STRING_WFD_HIDC                       "HIDC"
57 #define STRING_WFD_GENERIC_CAP_LIST           "generic_cap_list"
58 #define STRING_WFD_KEYBOARD                   "Keyboard"
59 #define STRING_WFD_MOUSE                      "Mouse"
60 #define STRING_WFD_SINGLE_TOUCH               "SingleTouch"
61 #define STRING_WFD_MULTI_TOUCH                "MultiTouch"
62 #define STRING_WFD_JOYSTICK                   "Joystick"
63 #define STRING_WFD_CAMERA                     "Camera"
64 #define STRING_WFD_GESTURE                    "Gesture"
65 #define STRING_WFD_REMOTE_CONTROL             "RemoteControl"
66 #define STRING_WFD_HIDC_CAP_LIST              "hidc_cap_list"
67 #define STRING_WFD_INFRARED                   "Infrared"
68 #define STRING_WFD_USB                        "USB"
69 #define STRING_WFD_BT                         "BT"
70 #define STRING_WFD_ZIGBEE                     "Zigbee"
71 #define STRING_WFD_WIFI                       "Wi-Fi"
72 #define STRING_WFD_NO_SP                      "No-SP"
73 #define STRING_WFD_PORT                       "port"
74 #define STRING_WFD_SUPPORTED                  "supported"
75 #define STRING_WFD_LPCM                       "LPCM"
76 #define STRING_WFD_AAC                        "AAC"
77 #define STRING_WFD_AC3                        "AC3"
78 #define STRING_WFD_HDCP2_0                    "HDCP2.0"
79 #define STRING_WFD_HDCP2_1                    "HDCP2.1"
80 #define STRING_WFD_SETUP                      "SETUP"
81 #define STRING_WFD_PAUSE                      "PAUSE"
82 #define STRING_WFD_TEARDOWN                   "TEARDOWN"
83 #define STRING_WFD_PLAY                       "PLAY"
84 #define STRING_WFD_RTP                        "RTP"
85 #define STRING_WFD_RDT                        "RDT"
86 #define STRING_WFD_AVP                        "AVP"
87 #define STRING_WFD_SAVP                       "SAVP"
88 #define STRING_WFD_UDP                        "UDP"
89 #define STRING_WFD_TCP                        "TCP"
90 #define STRING_WFD_UNICAST                    "unicast"
91 #define STRING_WFD_MULTICAST                  "multicast"
92 #define STRING_WFD_TCP_HTTP                   "HTTP"
93 #define STRING_WFD_PRIMARY                    "primary"
94 #define STRING_WFD_SECONDARY                  "secondary"
95
96 /**
97  * WFDResult:
98  * @WFD_OK: A successful return value
99  * @WFD_EINVAL: a function was given invalid parameters
100  *
101  * Return values for the WFD_CONFIG functions.
102  */
103 typedef enum {
104         WFD_OK     = 0,
105         WFD_EINVAL = -1,
106         WFD_NOT_IMPLEMENTED = -2,
107         WFD_NOT_SUPPORTED = -3
108 } WFDResult;
109
110 typedef enum {
111         WFD_AUDIO_UNKNOWN       = 0,
112         WFD_AUDIO_LPCM          = (1 << 0),
113         WFD_AUDIO_AAC           = (1 << 1),
114         WFD_AUDIO_AC3           = (1 << 2)
115 } WFDAudioFormats;
116
117 typedef enum {
118         WFD_FREQ_UNKNOWN = 0,
119         WFD_FREQ_44100   = (1 << 0),
120         WFD_FREQ_48000   = (1 << 1)
121 } WFDAudioFreq;
122
123 typedef enum {
124         WFD_CHANNEL_UNKNOWN = 0,
125         WFD_CHANNEL_2           = (1 << 0),
126         WFD_CHANNEL_4           = (1 << 1),
127         WFD_CHANNEL_6           = (1 << 2),
128         WFD_CHANNEL_8           = (1 << 3)
129 } WFDAudioChannels;
130
131
132 typedef enum {
133         WFD_VIDEO_UNKNOWN = 0,
134         WFD_VIDEO_H264    = (1 << 0)
135 } WFDVideoCodecs;
136
137 typedef enum {
138         WFD_VIDEO_CEA_RESOLUTION = 0,
139         WFD_VIDEO_VESA_RESOLUTION,
140         WFD_VIDEO_HH_RESOLUTION
141 } WFDVideoNativeResolution;
142
143 typedef enum {
144         WFD_CEA_UNKNOWN         = 0,
145         WFD_CEA_640x480P60      = (1 << 0),
146         WFD_CEA_720x480P60      = (1 << 1),
147         WFD_CEA_720x480I60      = (1 << 2),
148         WFD_CEA_720x576P50      = (1 << 3),
149         WFD_CEA_720x576I50      = (1 << 4),
150         WFD_CEA_1280x720P30     = (1 << 5),
151         WFD_CEA_1280x720P60     = (1 << 6),
152         WFD_CEA_1920x1080P30 = (1 << 7),
153         WFD_CEA_1920x1080P60 = (1 << 8),
154         WFD_CEA_1920x1080I60 = (1 << 9),
155         WFD_CEA_1280x720P25     = (1 << 10),
156         WFD_CEA_1280x720P50     = (1 << 11),
157         WFD_CEA_1920x1080P25 = (1 << 12),
158         WFD_CEA_1920x1080P50 = (1 << 13),
159         WFD_CEA_1920x1080I50 = (1 << 14),
160         WFD_CEA_1280x720P24     = (1 << 15),
161         WFD_CEA_1920x1080P24 = (1 << 16)
162 } WFDVideoCEAResolution;
163
164 typedef enum {
165         WFD_VESA_UNKNOWN                = 0,
166         WFD_VESA_800x600P30     = (1 << 0),
167         WFD_VESA_800x600P60             = (1 << 1),
168         WFD_VESA_1024x768P30    = (1 << 2),
169         WFD_VESA_1024x768P60    = (1 << 3),
170         WFD_VESA_1152x864P30    = (1 << 4),
171         WFD_VESA_1152x864P60    = (1 << 5),
172         WFD_VESA_1280x768P30    = (1 << 6),
173         WFD_VESA_1280x768P60    = (1 << 7),
174         WFD_VESA_1280x800P30    = (1 << 8),
175         WFD_VESA_1280x800P60    = (1 << 9),
176         WFD_VESA_1360x768P30    = (1 << 10),
177         WFD_VESA_1360x768P60    = (1 << 11),
178         WFD_VESA_1366x768P30    = (1 << 12),
179         WFD_VESA_1366x768P60    = (1 << 13),
180         WFD_VESA_1280x1024P30   = (1 << 14),
181         WFD_VESA_1280x1024P60   = (1 << 15),
182         WFD_VESA_1400x1050P30   = (1 << 16),
183         WFD_VESA_1400x1050P60   = (1 << 17),
184         WFD_VESA_1440x900P30    = (1 << 18),
185         WFD_VESA_1440x900P60    = (1 << 19),
186         WFD_VESA_1600x900P30    = (1 << 20),
187         WFD_VESA_1600x900P60    = (1 << 21),
188         WFD_VESA_1600x1200P30   = (1 << 22),
189         WFD_VESA_1600x1200P60   = (1 << 23),
190         WFD_VESA_1680x1024P30   = (1 << 24),
191         WFD_VESA_1680x1024P60   = (1 << 25),
192         WFD_VESA_1680x1050P30   = (1 << 26),
193         WFD_VESA_1680x1050P60   = (1 << 27),
194         WFD_VESA_1920x1200P30   = (1 << 28),
195         WFD_VESA_1920x1200P60   = (1 << 29)
196 } WFDVideoVESAResolution;
197
198 typedef enum {
199         WFD_HH_UNKNOWN          = 0,
200         WFD_HH_800x480P30       = (1 << 0),
201         WFD_HH_800x480P60       = (1 << 1),
202         WFD_HH_854x480P30       = (1 << 2),
203         WFD_HH_854x480P60       = (1 << 3),
204         WFD_HH_864x480P30       = (1 << 4),
205         WFD_HH_864x480P60       = (1 << 5),
206         WFD_HH_640x360P30       = (1 << 6),
207         WFD_HH_640x360P60       = (1 << 7),
208         WFD_HH_960x540P30       = (1 << 8),
209         WFD_HH_960x540P60       = (1 << 9),
210         WFD_HH_848x480P30       = (1 << 10),
211         WFD_HH_848x480P60       = (1 << 11)
212 } WFDVideoHHResolution;
213
214 typedef enum {
215         WFD_H264_UNKNOWN_PROFILE = 0,
216         WFD_H264_BASE_PROFILE   = (1 << 0),
217         WFD_H264_HIGH_PROFILE   = (1 << 1)
218 } WFDVideoH264Profile;
219
220 typedef enum {
221         WFD_H264_LEVEL_UNKNOWN = 0,
222         WFD_H264_LEVEL_3_1   = (1 << 0),
223         WFD_H264_LEVEL_3_2   = (1 << 1),
224         WFD_H264_LEVEL_4       = (1 << 2),
225         WFD_H264_LEVEL_4_1   = (1 << 3),
226         WFD_H264_LEVEL_4_2   = (1 << 4)
227 } WFDVideoH264Level;
228
229 typedef enum {
230         WFD_HDCP_NONE   = 0,
231         WFD_HDCP_2_0    = (1 << 0),
232         WFD_HDCP_2_1    = (1 << 1)
233 } WFDHDCPProtection;
234
235 typedef enum {
236         WFD_SINK_UNKNOWN = -1,
237         WFD_SINK_NOT_COUPLED    = 0,
238         WFD_SINK_COUPLED,
239         WFD_SINK_TEARDOWN_COUPLING,
240         WFD_SINK_RESERVED
241 } WFDCoupledSinkStatus;
242
243 typedef enum {
244         WFD_TRIGGER_UNKNOWN = 0,
245         WFD_TRIGGER_SETUP,
246         WFD_TRIGGER_PAUSE,
247         WFD_TRIGGER_TEARDOWN,
248         WFD_TRIGGER_PLAY
249 } WFDTrigger;
250
251 typedef enum {
252         WFD_RTSP_TRANS_UNKNOWN =  0,
253         WFD_RTSP_TRANS_RTP     = (1 << 0),
254         WFD_RTSP_TRANS_RDT     = (1 << 1)
255 } WFDRTSPTransMode;
256
257 typedef enum {
258         WFD_RTSP_PROFILE_UNKNOWN =  0,
259         WFD_RTSP_PROFILE_AVP     = (1 << 0),
260         WFD_RTSP_PROFILE_SAVP    = (1 << 1)
261 } WFDRTSPProfile;
262
263 typedef enum {
264         WFD_RTSP_LOWER_TRANS_UNKNOWN   = 0,
265         WFD_RTSP_LOWER_TRANS_UDP       = (1 << 0),
266         WFD_RTSP_LOWER_TRANS_UDP_MCAST = (1 << 1),
267         WFD_RTSP_LOWER_TRANS_TCP       = (1 << 2),
268         WFD_RTSP_LOWER_TRANS_HTTP      = (1 << 3)
269 } WFDRTSPLowerTrans;
270
271 typedef enum {
272         WFD_PRIMARY_SINK   = 0,
273         WFD_SECONDARY_SINK
274 } WFDSinkType;
275
276 typedef enum {
277         WFD_UIBC_INPUT_CAT_UNKNOWN   = 0,
278         WFD_UIBC_INPUT_CAT_GENERIC   = (1 << 0),
279         WFD_UIBC_INPUT_CAT_HIDC      = (1 << 1),
280 } WFDUibcinput_cat;
281
282 typedef enum {
283         WFD_UIBC_INPUT_TYPE_UNKNOWN        = 0,
284         WFD_UIBC_INPUT_TYPE_KEYBOARD       = (1 << 0),
285         WFD_UIBC_INPUT_TYPE_MOUSE          = (1 << 1),
286         WFD_UIBC_INPUT_TYPE_SINGLETOUCH    = (1 << 2),
287         WFD_UIBC_INPUT_TYPE_MULTITOUCH     = (1 << 3),
288         WFD_UIBC_INPUT_TYPE_JOYSTICK       = (1 << 4),
289         WFD_UIBC_INPUT_TYPE_CAMERA         = (1 << 5),
290         WFD_UIBC_INPUT_TYPE_GESTURE        = (1 << 6),
291         WFD_UIBC_INPUT_TYPE_REMOTECONTROL  = (1 << 7)
292 } WFDUibcinp_type;
293
294 typedef enum {
295         WFD_UIBC_INPUT_PATH_UNKNOWN   = 0,
296         WFD_UIBC_INPUT_PATH_INFRARED  = (1 << 0),
297         WFD_UIBC_INPUT_PATH_USB       = (1 << 1),
298         WFD_UIBC_INPUT_PATH_BT        = (1 << 2),
299         WFD_UIBC_INPUT_PATH_ZIGBEE    = (1 << 3),
300         WFD_UIBC_INPUT_PATH_WIFI      = (1 << 4),
301         WFD_UIBC_INPUT_PATH_NOSP      = (1 << 5)
302 } WFDUibcinp_path;
303
304 typedef enum {
305         WFD_CONNECTOR_VGA           = 0,
306         WFD_CONNECTOR_S,
307         WFD_CONNECTOR_COMPOSITE,
308         WFD_CONNECTOR_COMPONENT,
309         WFD_CONNECTOR_DVI,
310         WFD_CONNECTOR_HDMI,
311         WFD_CONNECTOR_LVDS,
312         WFD_CONNECTOR_RESERVED_7,
313         WFD_CONNECTOR_JAPANESE_D,
314         WFD_CONNECTOR_SDI,
315         WFD_CONNECTOR_DP,
316         WFD_CONNECTOR_RESERVED_11,
317         WFD_CONNECTOR_UDI,
318         WFD_CONNECTOR_NO           = 254,
319         WFD_CONNECTOR_PHYSICAL     = 255
320 } WFDConnector;
321
322
323 typedef struct {
324         gchar   *audio_format;
325         guint32 modes;
326         guint latency;
327 } WFDAudioCodec;
328
329 typedef struct {
330         guint   count;
331         WFDAudioCodec *list;
332 } WFDAudioCodeclist;
333
334
335 typedef struct {
336         guint CEA_Support;
337         guint VESA_Support;
338         guint HH_Support;
339         guint latency;
340         guint min_slice_size;
341         guint slice_enc_params;
342         guint frame_rate_control_support;
343 } WFDVideoH264MiscParams;
344
345 typedef struct {
346         guint profile;
347         guint level;
348         guint max_hres;
349         guint max_vres;
350         WFDVideoH264MiscParams misc_params;
351 } WFDVideoH264Codec;
352
353 typedef struct {
354         guint   native;
355         guint preferred_display_mode_supported;
356         WFDVideoH264Codec H264_codec;
357 } WFDVideoCodec;
358
359 typedef struct {
360         guint                   count;
361         WFDVideoCodec *list;
362 } WFDVideoCodeclist;
363
364 typedef struct {
365         guint64 video_3d_capability;
366         guint latency;
367         guint min_slice_size;
368         guint slice_enc_params;
369         guint frame_rate_control_support;
370 } WFD3DVideoH264MiscParams;
371
372 typedef struct {
373         guint profile;
374         guint level;
375         WFD3DVideoH264MiscParams misc_params;
376         guint max_hres;
377         guint max_vres;
378 } WFD3DVideoH264Codec;
379
380 typedef struct {
381         guint native;
382         guint preferred_display_mode_supported;
383         WFD3DVideoH264Codec H264_codec;
384 } WFD3dCapList;
385
386 typedef struct {
387         guint                   count;
388         WFD3dCapList *list;
389 } WFD3DFormats;
390
391 typedef struct {
392         gchar *hdcpversion;
393         gchar *TCPPort;
394 } WFDHdcp2Spec;
395
396 typedef struct {
397         WFDHdcp2Spec *hdcp2_spec;
398 } WFDContentProtection;
399
400 typedef struct {
401         guint edid_supported;
402         guint edid_block_count;
403         gchar *edid_payload;
404 } WFDDisplayEdid;
405
406
407 typedef struct {
408         guint status;
409         gchar *sink_address;
410 } WFDCoupled_sink_cap;
411
412 typedef struct {
413         WFDCoupled_sink_cap *coupled_sink_cap;
414 } WFDCoupledSink;
415
416 typedef struct {
417         gchar *wfd_trigger_method;
418 } WFDTriggerMethod;
419
420 typedef struct {
421         gchar *wfd_url0;
422         gchar *wfd_url1;
423 } WFDPresentationUrl;
424
425 typedef struct {
426         gchar *profile;
427         guint32 rtp_port0;
428         guint32 rtp_port1;
429         gchar *mode;
430 } WFDClientRtpPorts;
431
432 typedef struct {
433         gchar *destination;
434 } WFDRoute;
435
436 typedef struct {
437         gboolean I2CPresent;
438         guint32 I2C_port;
439 } WFDI2C;
440
441 typedef struct {
442         guint64 PTS;
443         guint64 DTS;
444 } WFDAVFormatChangeTiming;
445
446 typedef struct {
447         gboolean displaymodesupported;
448         guint64 p_clock;
449         guint32 H;
450         guint32 HB;
451         guint32 HSPOL_HSOFF;
452         guint32 HSW;
453         guint32 V;
454         guint32 VB;
455         guint32 VSPOL_VSOFF;
456         guint32 VSW;
457         guint VBS3D;
458         guint R;
459         guint V2d_s3d_modes;
460         guint P_depth;
461         WFDVideoH264Codec H264_codec;
462 } WFDPreferredDisplayMode;
463
464 typedef struct {
465         guint32 input_cat;
466 } WFDInputCategoryList;
467
468 typedef struct {
469         guint32 inp_type;
470 } WFDGenericCategoryList;
471
472 typedef struct _detailed_cap detailed_cap;
473
474 typedef struct {
475         WFDUibcinp_type inp_type;
476         WFDUibcinp_path inp_path;
477 } WFDHIDCTypePathPair;
478
479 struct _detailed_cap {
480         WFDHIDCTypePathPair p;
481         detailed_cap *next;
482 };
483
484 typedef struct {
485         guint cap_count;
486         detailed_cap *next;
487 } WFDHIDCCategoryList;
488
489 typedef struct {
490         gboolean uibcsupported;
491         WFDInputCategoryList input_category_list;
492         WFDGenericCategoryList generic_cap_list;
493         WFDHIDCCategoryList hidc_cap_list;
494         guint32 tcp_port;
495 } WFDUibcCapability;
496
497 typedef struct {
498         gboolean uibc_setting;
499 } WFDUibcSetting;
500
501 typedef struct {
502         gboolean standby_resume_cap;
503 } WFDStandbyResumeCapability;
504
505 typedef struct {
506         gboolean wfd_standby;
507 } WFDStandby;
508
509 typedef struct {
510         gboolean supported;
511         gint32 connector_type;
512 } WFDConnectorType;
513
514 typedef struct {
515         gboolean idr_request;
516 } WFDIdrRequest;
517
518 /***********************************************************/
519
520 typedef struct {
521
522         WFDAudioCodeclist *audio_codecs;
523         WFDVideoCodeclist *video_formats;
524         WFD3DFormats *video_3d_formats;
525         WFDContentProtection *content_protection;
526         WFDDisplayEdid *display_edid;
527         WFDCoupledSink *coupled_sink;
528         WFDTriggerMethod *trigger_method;
529         WFDPresentationUrl *presentation_url;
530         WFDClientRtpPorts *client_rtp_ports;
531         WFDRoute *route;
532         WFDI2C *I2C;
533         WFDAVFormatChangeTiming *av_format_change_timing;
534         WFDPreferredDisplayMode *preferred_display_mode;
535         WFDUibcCapability *uibc_capability;
536         WFDUibcSetting *uibc_setting;
537         WFDStandbyResumeCapability *standby_resume_capability;
538         WFDStandby *standby;
539         WFDConnectorType *connector_type;
540         WFDIdrRequest *idr_request;
541 } WFDMessage;
542
543 /* Session descriptions */
544 WFDResult wfdconfig_message_new(WFDMessage **msg);
545 WFDResult wfdconfig_message_init(WFDMessage *msg);
546 WFDResult wfdconfig_message_uninit(WFDMessage *msg);
547 WFDResult wfdconfig_message_free(WFDMessage *msg);
548 WFDResult wfdconfig_message_parse_buffer(const guint8 *data, guint size, WFDMessage *msg);
549 gchar *wfdconfig_message_as_text(const WFDMessage *msg);
550 gchar *wfdconfig_parameter_names_as_text(const WFDMessage *msg);
551 WFDResult wfdconfig_message_dump(const WFDMessage *msg);
552
553
554 WFDResult wfdconfig_set_supported_audio_format(WFDMessage *msg,
555                                                guint aCodec, guint aFreq, guint aChanels,
556                                                guint aBitwidth, guint32 aLatency);
557 WFDResult wfdconfig_set_prefered_audio_format(WFDMessage *msg,
558                                               WFDAudioFormats aCodec, WFDAudioFreq aFreq, WFDAudioChannels aChanels,
559                                               guint aBitwidth, guint32 aLatency);
560 WFDResult wfdconfig_get_supported_audio_format(WFDMessage *msg,
561                                                guint *aCodec, guint *aFreq, guint *aChanels,
562                                                guint *aBitwidth, guint32 *aLatency);
563 WFDResult wfdconfig_get_prefered_audio_format(WFDMessage *msg,
564                                               WFDAudioFormats *aCodec, WFDAudioFreq *aFreq, WFDAudioChannels *aChanels,
565                                               guint *aBitwidth, guint32 *aLatency);
566
567 WFDResult wfdconfig_set_supported_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
568                                                WFDVideoNativeResolution vNative, guint64 vNativeResolution,
569                                                guint64 vCEAResolution, guint64 vVESAResolution, guint64 vHHResolution,
570                                                guint vProfile, guint vLevel, guint32 vLatency, guint32 vMaxHeight,
571                                                guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
572 WFDResult wfdconfig_set_prefered_video_format(WFDMessage *msg, WFDVideoCodecs vCodec,
573                                               WFDVideoNativeResolution vNative, guint64 vNativeResolution,
574                                               WFDVideoCEAResolution vCEAResolution, WFDVideoVESAResolution vVESAResolution,
575                                               WFDVideoHHResolution vHHResolution,       WFDVideoH264Profile vProfile,
576                                               WFDVideoH264Level vLevel, guint32 vLatency, guint32 vMaxHeight,
577                                               guint32 vMaxWidth, guint32 min_slice_size, guint32 slice_enc_params, guint frame_rate_control);
578 WFDResult wfdconfig_get_supported_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
579                                                WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
580                                                guint64 *vCEAResolution, guint64 *vVESAResolution, guint64 *vHHResolution,
581                                                guint *vProfile, guint *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
582                                                guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
583 WFDResult wfdconfig_get_prefered_video_format(WFDMessage *msg, WFDVideoCodecs *vCodec,
584                                               WFDVideoNativeResolution *vNative, guint64 *vNativeResolution,
585                                               WFDVideoCEAResolution *vCEAResolution, WFDVideoVESAResolution *vVESAResolution,
586                                               WFDVideoHHResolution *vHHResolution,      WFDVideoH264Profile *vProfile,
587                                               WFDVideoH264Level *vLevel, guint32 *vLatency, guint32 *vMaxHeight,
588                                               guint32 *vMaxWidth, guint32 *min_slice_size, guint32 *slice_enc_params, guint *frame_rate_control);
589
590 /* Todo wfd-3d-formats */
591
592 WFDResult wfdconfig_set_contentprotection_type(WFDMessage *msg, WFDHDCPProtection hdcpversion, guint32 TCPPort);
593 WFDResult wfdconfig_get_contentprotection_type(WFDMessage *msg, WFDHDCPProtection *hdcpversion, guint32 *TCPPort);
594
595 WFDResult wfdconfig_set_display_EDID(WFDMessage *msg, gboolean edid_supported, guint32 edid_blockcount, gchar *edid_playload);
596 WFDResult wfdconfig_get_display_EDID(WFDMessage *msg, gboolean *edid_supported, guint32 *edid_blockcount, gchar **edid_playload);
597
598
599 WFDResult wfdconfig_set_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus status, gchar *sink_address);
600 WFDResult wfdconfig_get_coupled_sink(WFDMessage *msg, WFDCoupledSinkStatus *status, gchar **sink_address);
601
602 WFDResult wfdconfig_set_trigger_type(WFDMessage *msg, WFDTrigger trigger);
603 WFDResult wfdconfig_get_trigger_type(WFDMessage *msg, WFDTrigger *trigger);
604
605 WFDResult wfdconfig_set_presentation_url(WFDMessage *msg, gchar *wfd_url0, gchar *wfd_url1);
606 WFDResult wfdconfig_get_presentation_url(WFDMessage *msg, gchar **wfd_url0, gchar **wfd_url1);
607
608 WFDResult wfdconfig_set_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode trans, WFDRTSPProfile profile,
609                                            WFDRTSPLowerTrans lowertrans, guint32 rtp_port0, guint32 rtp_port1);
610 WFDResult wfdconfig_get_prefered_RTP_ports(WFDMessage *msg, WFDRTSPTransMode *trans, WFDRTSPProfile *profile,
611                                            WFDRTSPLowerTrans *lowertrans, guint32 *rtp_port0, guint32 *rtp_port1);
612
613 WFDResult wfdconfig_set_audio_sink_type(WFDMessage *msg, WFDSinkType sinktype);
614 WFDResult wfdconfig_get_audio_sink_type(WFDMessage *msg, WFDSinkType *sinktype);
615
616 WFDResult wfdconfig_set_I2C_port(WFDMessage *msg, gboolean i2csupport, guint32 i2cport);
617 WFDResult wfdconfig_get_I2C_port(WFDMessage *msg, gboolean *i2csupport, guint32 *i2cport);
618
619 WFDResult wfdconfig_set_av_format_change_timing(WFDMessage *msg, guint64 PTS, guint64 DTS);
620 WFDResult wfdconfig_get_av_format_change_timing(WFDMessage *msg, guint64 *PTS, guint64 *DTS);
621
622 /* Todo wfd-preferred-display-mode */
623
624 WFDResult wfdconfig_set_uibc_capability(WFDMessage *msg, guint32 input_category, guint32 inp_type, WFDHIDCTypePathPair *inp_pair,
625                                         guint32 inp_type_path_count, guint32 tcp_port);
626 WFDResult wfdconfig_get_uibc_capability(WFDMessage *msg, guint32 *input_category, guint32 *inp_type, WFDHIDCTypePathPair **inp_pair,
627                                         guint32 *inp_type_path_count, guint32 *tcp_port);
628
629 WFDResult wfdconfig_set_uibc_status(WFDMessage *msg, gboolean uibc_enable);
630 WFDResult wfdconfig_get_uibc_status(WFDMessage *msg, gboolean *uibc_enable);
631
632 WFDResult wfdconfig_set_standby_resume_capability(WFDMessage *msg, gboolean supported);
633 WFDResult wfdconfig_get_standby_resume_capability(WFDMessage *msg, gboolean *supported);
634
635 WFDResult wfdconfig_set_standby(WFDMessage *msg, gboolean standby_enable);
636 WFDResult wfdconfig_get_standby(WFDMessage *msg, gboolean *standby_enable);
637
638 WFDResult wfdconfig_set_connector_type(WFDMessage *msg, WFDConnector connector);
639 WFDResult wfdconfig_get_connector_type(WFDMessage *msg, WFDConnector *connector);
640
641 WFDResult wfdconfig_set_idr_request(WFDMessage *msg);
642
643 G_END_DECLS
644
645 #endif /* __GST_WFD_CONFIG_MESSAGE_H__ */