2 * Copyright (C) 2017 Matthew Waters <matthew@centricular.com>
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., 51 Franklin St, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
20 #ifndef __GST_WEBRTC_FWD_H__
21 #define __GST_WEBRTC_FWD_H__
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."
29 #include <gst/webrtc/webrtc-enumtypes.h>
31 typedef struct _GstWebRTCDTLSTransport GstWebRTCDTLSTransport;
32 typedef struct _GstWebRTCDTLSTransportClass GstWebRTCDTLSTransportClass;
34 typedef struct _GstWebRTCICETransport GstWebRTCICETransport;
35 typedef struct _GstWebRTCICETransportClass GstWebRTCICETransportClass;
37 typedef struct _GstWebRTCRTPReceiver GstWebRTCRTPReceiver;
38 typedef struct _GstWebRTCRTPReceiverClass GstWebRTCRTPReceiverClass;
40 typedef struct _GstWebRTCRTPSender GstWebRTCRTPSender;
41 typedef struct _GstWebRTCRTPSenderClass GstWebRTCRTPSenderClass;
43 typedef struct _GstWebRTCSessionDescription GstWebRTCSessionDescription;
45 typedef struct _GstWebRTCRTPTransceiver GstWebRTCRTPTransceiver;
46 typedef struct _GstWebRTCRTPTransceiverClass GstWebRTCRTPTransceiverClass;
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
56 typedef enum /*< underscore_name=gst_webrtc_dtls_transport_state >*/
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;
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
71 * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate">http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate</ulink>
73 typedef enum /*< underscore_name=gst_webrtc_ice_gathering_state >*/
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 >*/
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
90 * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate">http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate</ulink>
92 typedef enum /*< underscore_name=gst_webrtc_ice_connection_state >*/
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;
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
112 * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate">http://w3c.github.io/webrtc-pc/#dom-rtcsignalingstate</ulink>
114 typedef enum /*< underscore_name=gst_webrtc_signaling_state >*/
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;
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
133 * See <ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate">http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate</ulink>
135 typedef enum /*< underscore_name=gst_webrtc_peer_connection_state >*/
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;
147 * GST_WEBRTC_ICE_ROLE_CONTROLLED: controlled
148 * GST_WEBRTC_ICE_ROLE_CONTROLLING: controlling
150 typedef enum /*< underscore_name=gst_webrtc_ice_role >*/
152 GST_WEBRTC_ICE_ROLE_CONTROLLED,
153 GST_WEBRTC_ICE_ROLE_CONTROLLING,
157 * GstWebRTCIceComponent:
158 * GST_WEBRTC_ICE_COMPONENT_RTP,
159 * GST_WEBRTC_ICE_COMPONENT_RTCP,
161 typedef enum /*< underscore_name=gst_webrtc_ice_component >*/
163 GST_WEBRTC_ICE_COMPONENT_RTP,
164 GST_WEBRTC_ICE_COMPONENT_RTCP,
165 } GstWebRTCICEComponent;
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
174 * See <ulink url="http://w3c.github.io/webrtc-pc/#rtcsdptype">http://w3c.github.io/webrtc-pc/#rtcsdptype</ulink>
176 typedef enum /*< underscore_name=gst_webrtc_sdp_type >*/
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,
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
192 typedef enum /*< underscore_name=gst_webrtc_rtp_transceiver_direction >*/
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;
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
208 typedef enum /*< underscore_name=gst_webrtc_dtls_setup >*/
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;
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
233 typedef enum /*< underscore_name=gst_webrtc_stats_type >*/
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;
251 #endif /* __GST_WEBRTC_FWD_H__ */