webrtcbin: an element that handles the transport aspects of webrtc connections
[platform/upstream/gst-plugins-bad.git] / gst-libs / gst / webrtc / webrtc_fwd.h
1 /* GStreamer
2  * Copyright (C) 2017 Matthew Waters <matthew@centricular.com>
3  *
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.
8  *
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.
13  *
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., 51 Franklin St, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19
20 #ifndef __GST_WEBRTC_FWD_H__
21 #define __GST_WEBRTC_FWD_H__
22
23 #ifndef GST_USE_UNSTABLE_API
24 #warning "The WebRTC library from gst-plugins-bad is unstable API and may change in future."
25 #warning "You can define GST_USE_UNSTABLE_API to avoid this warning."
26 #endif
27
28 #include <gst/gst.h>
29 #include <gst/webrtc/webrtc-enumtypes.h>
30
31 typedef struct _GstWebRTCDTLSTransport GstWebRTCDTLSTransport;
32 typedef struct _GstWebRTCDTLSTransportClass GstWebRTCDTLSTransportClass;
33
34 typedef struct _GstWebRTCICETransport GstWebRTCICETransport;
35 typedef struct _GstWebRTCICETransportClass GstWebRTCICETransportClass;
36
37 typedef struct _GstWebRTCRTPReceiver GstWebRTCRTPReceiver;
38 typedef struct _GstWebRTCRTPReceiverClass GstWebRTCRTPReceiverClass;
39
40 typedef struct _GstWebRTCRTPSender GstWebRTCRTPSender;
41 typedef struct _GstWebRTCRTPSenderClass GstWebRTCRTPSenderClass;
42
43 typedef struct _GstWebRTCSessionDescription GstWebRTCSessionDescription;
44
45 typedef struct _GstWebRTCRTPTransceiver GstWebRTCRTPTransceiver;
46 typedef struct _GstWebRTCRTPTransceiverClass GstWebRTCRTPTransceiverClass;
47
48 /**
49  * GstWebRTCDTLSTransportState:
50  * GST_WEBRTC_DTLS_TRANSPORT_STATE_NEW: new
51  * GST_WEBRTC_DTLS_TRANSPORT_STATE_CLOSED: closed
52  * GST_WEBRTC_DTLS_TRANSPORT_STATE_FAILED: failed
53  * GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTING: connecting
54  * GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTED: connected
55  */
56 typedef enum /*< underscore_name=gst_webrtc_dtls_transport_state >*/
57 {
58   GST_WEBRTC_DTLS_TRANSPORT_STATE_NEW,
59   GST_WEBRTC_DTLS_TRANSPORT_STATE_CLOSED,
60   GST_WEBRTC_DTLS_TRANSPORT_STATE_FAILED,
61   GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTING,
62   GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTED,
63 } GstWebRTCDTLSTransportState;
64
65 /**
66  * GstWebRTCICEGatheringState:
67  * GST_WEBRTC_ICE_GATHERING_STATE_NEW: new
68  * GST_WEBRTC_ICE_GATHERING_STATE_GATHERING: gathering
69  * GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE: complete
70  *
71  * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate">http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate</ulink>
72  */
73 typedef enum /*< underscore_name=gst_webrtc_ice_gathering_state >*/
74 {
75   GST_WEBRTC_ICE_GATHERING_STATE_NEW,
76   GST_WEBRTC_ICE_GATHERING_STATE_GATHERING,
77   GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE,
78 } GstWebRTCICEGatheringState; /*< underscore_name=gst_webrtc_ice_gathering_state >*/
79
80 /**
81  * GstWebRTCICEConnectionState:
82  * GST_WEBRTC_ICE_CONNECTION_STATE_NEW: new
83  * GST_WEBRTC_ICE_CONNECTION_STATE_CHECKING: checking
84  * GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED: connected
85  * GST_WEBRTC_ICE_CONNECTION_STATE_COMPLETED: completed
86  * GST_WEBRTC_ICE_CONNECTION_STATE_FAILED: failed
87  * GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED: disconnected
88  * GST_WEBRTC_ICE_CONNECTION_STATE_CLOSED: closed
89  *
90  * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate">http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate</ulink>
91  */
92 typedef enum /*< underscore_name=gst_webrtc_ice_connection_state >*/
93 {
94   GST_WEBRTC_ICE_CONNECTION_STATE_NEW,
95   GST_WEBRTC_ICE_CONNECTION_STATE_CHECKING,
96   GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED,
97   GST_WEBRTC_ICE_CONNECTION_STATE_COMPLETED,
98   GST_WEBRTC_ICE_CONNECTION_STATE_FAILED,
99   GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED,
100   GST_WEBRTC_ICE_CONNECTION_STATE_CLOSED,
101 } GstWebRTCICEConnectionState;
102
103 /**
104  * GstWebRTCSignalingState:
105  * GST_WEBRTC_SIGNALING_STATE_STABLE: stable
106  * GST_WEBRTC_SIGNALING_STATE_CLOSED: closed
107  * GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_OFFER: have-local-offer
108  * GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_OFFER: have-remote-offer
109  * GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_PRANSWER: have-local-pranswer
110  * GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_PRANSWER: have-remote-pranswer
111  *
112  * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate">http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate</ulink>
113  */
114 typedef enum /*< underscore_name=gst_webrtc_signaling_state >*/
115 {
116   GST_WEBRTC_SIGNALING_STATE_STABLE,
117   GST_WEBRTC_SIGNALING_STATE_CLOSED,
118   GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_OFFER,
119   GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_OFFER,
120   GST_WEBRTC_SIGNALING_STATE_HAVE_LOCAL_PRANSWER,
121   GST_WEBRTC_SIGNALING_STATE_HAVE_REMOTE_PRANSWER,
122 } GstWebRTCSignalingState;
123
124 /**
125  * GstWebRTCPeerConnectionState:
126  * GST_WEBRTC_PEER_CONNECTION_STATE_NEW: new
127  * GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTING: connecting
128  * GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTED: connected
129  * GST_WEBRTC_PEER_CONNECTION_STATE_DISCONNECTED: disconnected
130  * GST_WEBRTC_PEER_CONNECTION_STATE_FAILED: failed
131  * GST_WEBRTC_PEER_CONNECTION_STATE_CLOSED: closed
132  *
133  * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate">http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate</ulink>
134  */
135 typedef enum /*< underscore_name=gst_webrtc_peer_connection_state >*/
136 {
137   GST_WEBRTC_PEER_CONNECTION_STATE_NEW,
138   GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTING,
139   GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTED,
140   GST_WEBRTC_PEER_CONNECTION_STATE_DISCONNECTED,
141   GST_WEBRTC_PEER_CONNECTION_STATE_FAILED,
142   GST_WEBRTC_PEER_CONNECTION_STATE_CLOSED,
143 } GstWebRTCPeerConnectionState;
144
145 /**
146  * GstWebRTCIceRole:
147  * GST_WEBRTC_ICE_ROLE_CONTROLLED: controlled
148  * GST_WEBRTC_ICE_ROLE_CONTROLLING: controlling
149  */
150 typedef enum /*< underscore_name=gst_webrtc_ice_role >*/
151 {
152   GST_WEBRTC_ICE_ROLE_CONTROLLED,
153   GST_WEBRTC_ICE_ROLE_CONTROLLING,
154 } GstWebRTCIceRole;
155
156 /**
157  * GstWebRTCIceComponent:
158  * GST_WEBRTC_ICE_COMPONENT_RTP,
159  * GST_WEBRTC_ICE_COMPONENT_RTCP,
160  */
161 typedef enum /*< underscore_name=gst_webrtc_ice_component >*/
162 {
163   GST_WEBRTC_ICE_COMPONENT_RTP,
164   GST_WEBRTC_ICE_COMPONENT_RTCP,
165 } GstWebRTCICEComponent;
166
167 /**
168  * GstWebRTCSDPType:
169  * GST_WEBRTC_SDP_TYPE_OFFER: offer
170  * GST_WEBRTC_SDP_TYPE_PRANSWER: pranswer
171  * GST_WEBRTC_SDP_TYPE_ANSWER: answer
172  * GST_WEBRTC_SDP_TYPE_ROLLBACK: rollback
173  *
174  * See <ulink url="http://w3c.github.io/webrtc-pc/#rtcsdptype">http://w3c.github.io/webrtc-pc/#rtcsdptype</ulink>
175  */
176 typedef enum /*< underscore_name=gst_webrtc_sdp_type >*/
177 {
178   GST_WEBRTC_SDP_TYPE_OFFER = 1,
179   GST_WEBRTC_SDP_TYPE_PRANSWER,
180   GST_WEBRTC_SDP_TYPE_ANSWER,
181   GST_WEBRTC_SDP_TYPE_ROLLBACK,
182 } GstWebRTCSDPType;
183
184 /**
185  * GstWebRTCRtpTransceiverDirection:
186  * GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_NONE: none
187  * GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_INACTIVE: inactive
188  * GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY: sendonly
189  * GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY: recvonly
190  * GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV: sendrecv
191  */
192 typedef enum /*< underscore_name=gst_webrtc_rtp_transceiver_direction >*/
193 {
194   GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_NONE,
195   GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_INACTIVE,
196   GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY,
197   GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY,
198   GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV,
199 } GstWebRTCRTPTransceiverDirection;
200
201 /**
202  * GstWebRTCDTLSSetup:
203  * GST_WEBRTC_DTLS_SETUP_NONE: none
204  * GST_WEBRTC_DTLS_SETUP_ACTPASS: actpass
205  * GST_WEBRTC_DTLS_SETUP_ACTIVE: sendonly
206  * GST_WEBRTC_DTLS_SETUP_PASSIVE: recvonly
207  */
208 typedef enum /*< underscore_name=gst_webrtc_dtls_setup >*/
209 {
210   GST_WEBRTC_DTLS_SETUP_NONE,
211   GST_WEBRTC_DTLS_SETUP_ACTPASS,
212   GST_WEBRTC_DTLS_SETUP_ACTIVE,
213   GST_WEBRTC_DTLS_SETUP_PASSIVE,
214 } GstWebRTCDTLSSetup;
215
216 /**
217  * GstWebRTCStatsType:
218  * GST_WEBRTC_STATS_CODEC: codec
219  * GST_WEBRTC_STATS_INBOUND_RTP: inbound-rtp
220  * GST_WEBRTC_STATS_OUTBOUND_RTP: outbound-rtp
221  * GST_WEBRTC_STATS_REMOTE_INBOUND_RTP: remote-inbound-rtp
222  * GST_WEBRTC_STATS_REMOTE_OUTBOUND_RTP: remote-outbound-rtp
223  * GST_WEBRTC_STATS_CSRC: csrc
224  * GST_WEBRTC_STATS_PEER_CONNECTION: peer-connectiion
225  * GST_WEBRTC_STATS_DATA_CHANNEL: data-channel
226  * GST_WEBRTC_STATS_STREAM: stream
227  * GST_WEBRTC_STATS_TRANSPORT: transport
228  * GST_WEBRTC_STATS_CANDIDATE_PAIR: candidate-pair
229  * GST_WEBRTC_STATS_LOCAL_CANDIDATE: local-candidate
230  * GST_WEBRTC_STATS_REMOTE_CANDIDATE: remote-candidate
231  * GST_WEBRTC_STATS_CERTIFICATE: certificate
232  */
233 typedef enum /*< underscore_name=gst_webrtc_stats_type >*/
234 {
235   GST_WEBRTC_STATS_CODEC = 1,
236   GST_WEBRTC_STATS_INBOUND_RTP,
237   GST_WEBRTC_STATS_OUTBOUND_RTP,
238   GST_WEBRTC_STATS_REMOTE_INBOUND_RTP,
239   GST_WEBRTC_STATS_REMOTE_OUTBOUND_RTP,
240   GST_WEBRTC_STATS_CSRC,
241   GST_WEBRTC_STATS_PEER_CONNECTION,
242   GST_WEBRTC_STATS_DATA_CHANNEL,
243   GST_WEBRTC_STATS_STREAM,
244   GST_WEBRTC_STATS_TRANSPORT,
245   GST_WEBRTC_STATS_CANDIDATE_PAIR,
246   GST_WEBRTC_STATS_LOCAL_CANDIDATE,
247   GST_WEBRTC_STATS_REMOTE_CANDIDATE,
248   GST_WEBRTC_STATS_CERTIFICATE,
249 } GstWebRTCStatsType;
250
251 #endif /* __GST_WEBRTC_FWD_H__ */