Commit 3a0c9723 authored by Sebastian Dröge's avatar Sebastian Dröge 🍵

WebRTC/SDP WIP

parent 9a3ef2e9
......@@ -12,6 +12,7 @@ members = [
"gstreamer-sdp",
"gstreamer-video",
"gstreamer-pbutils",
"gstreamer-webrtc",
"examples",
"tutorials",
]
......@@ -5,7 +5,7 @@ version = "1.0"
min_cfg_version = "1.8"
target_path = "gstreamer-sdp"
work_mode = "normal"
concurrency = "send+sync"
concurrency = "send"
generate_safety_asserts = true
doc_target_path = "docs/gstreamer-sdp/docs.md"
......@@ -28,7 +28,7 @@ generate = [
"GstSdp.MIKEYSecSRTP",
"GstSdp.MIKEYTSType",
"GstSdp.MIKEYType",
"GstSdp.SDPResult"
"GstSdp.SDPResult",
]
manual = [
......@@ -38,3 +38,23 @@ manual = [
name = "Gst.Caps"
status = "manual"
ref_mode = "ref"
[[object]]
name = "GstSdp.SDPMessage"
status = "generate"
use_boxed_functions = true
[[object.function]]
name = "new"
# special return type...
ignore = true
[[object.function]]
name = "uninit"
# unsafe
ignore = true
[[object]]
name = "GstSdp.SDPMedia"
status = "generate"
[options]
girs_dir = "gir-files"
library = "GstWebRTC"
version = "1.0"
min_cfg_version = "1.14"
target_path = "gstreamer-webrtc"
work_mode = "normal"
concurrency = "send+sync"
generate_safety_asserts = true
external_libraries = [
"GLib",
"GObject",
"Gst",
"GstSdp",
]
generate = [
"GstWebRTC.WebRTCDTLSTransportState",
"GstWebRTC.WebRTCICEGatheringState",
"GstWebRTC.WebRTCICEConnectionState",
"GstWebRTC.WebRTCICERole",
"GstWebRTC.WebRTCICEComponent",
"GstWebRTC.WebRTCSDPType",
]
manual = [
"GObject.Object",
"Gst.Structure",
"GstSdp.SDPMessage",
]
[[object]]
name = "GstWebRTC.WebRTCDTLSTransport"
status = "generate"
trait = false
[[object]]
name = "GstWebRTC.WebRTCICETransport"
status = "generate"
trait = false
[[object]]
name = "GstWebRTC.WebRTCRTPReceiver"
status = "generate"
trait = false
[[object]]
name = "GstWebRTC.WebRTCRTPSender"
status = "generate"
trait = false
[[object]]
name = "GstWebRTC.WebRTCRTPTransceiver"
status = "generate"
trait = false
[[object]]
name = "GstWebRTC.WebRTCSessionDescription"
status = "generate"
trait = false
<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations. -->
<repository version="1.2"
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
<include name="Gst" version="1.0"/>
<include name="GstSdp" version="1.0"/>
<package name="gstreamer-webrtc-1.0"/>
<c:include name="gst/webrtc/webrtc.h"/>
<namespace name="GstWebRTC"
version="1.0"
shared-library="libgstwebrtc-1.0.so.0"
c:identifier-prefixes="Gst"
c:symbol-prefixes="gst">
<enumeration name="WebRTCDTLSSetup" c:type="GstWebRTCDTLSSetup">
<doc xml:space="preserve">GST_WEBRTC_DTLS_SETUP_NONE: none
GST_WEBRTC_DTLS_SETUP_ACTPASS: actpass
GST_WEBRTC_DTLS_SETUP_ACTIVE: sendonly
GST_WEBRTC_DTLS_SETUP_PASSIVE: recvonly</doc>
<member name="none" value="0" c:identifier="GST_WEBRTC_DTLS_SETUP_NONE">
</member>
<member name="actpass"
value="1"
c:identifier="GST_WEBRTC_DTLS_SETUP_ACTPASS">
</member>
<member name="active"
value="2"
c:identifier="GST_WEBRTC_DTLS_SETUP_ACTIVE">
</member>
<member name="passive"
value="3"
c:identifier="GST_WEBRTC_DTLS_SETUP_PASSIVE">
</member>
</enumeration>
<class name="WebRTCDTLSTransport"
c:symbol-prefix="webrtc_dtls_transport"
c:type="GstWebRTCDTLSTransport"
parent="Gst.Object"
glib:type-name="GstWebRTCDTLSTransport"
glib:get-type="gst_webrtc_dtls_transport_get_type"
glib:type-struct="WebRTCDTLSTransportClass">
<constructor name="new" c:identifier="gst_webrtc_dtls_transport_new">
<return-value transfer-ownership="none">
<type name="WebRTCDTLSTransport" c:type="GstWebRTCDTLSTransport*"/>
</return-value>
<parameters>
<parameter name="session_id" transfer-ownership="none">
<type name="guint" c:type="guint"/>
</parameter>
<parameter name="rtcp" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</parameter>
</parameters>
</constructor>
<method name="set_transport"
c:identifier="gst_webrtc_dtls_transport_set_transport">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="transport" transfer-ownership="none">
<type name="WebRTCDTLSTransport" c:type="GstWebRTCDTLSTransport*"/>
</instance-parameter>
<parameter name="ice" transfer-ownership="none">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</parameter>
</parameters>
</method>
<property name="certificate" writable="1" transfer-ownership="none">
<type name="utf8" c:type="gchar*"/>
</property>
<property name="client" writable="1" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="remote-certificate" transfer-ownership="none">
<type name="utf8" c:type="gchar*"/>
</property>
<property name="rtcp"
writable="1"
construct-only="1"
transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="session-id"
writable="1"
construct-only="1"
transfer-ownership="none">
<type name="guint" c:type="guint"/>
</property>
<property name="state" introspectable="0" transfer-ownership="none">
<type/>
</property>
<property name="transport" transfer-ownership="none">
<type name="WebRTCICETransport"/>
</property>
<field name="parent">
<type name="Gst.Object" c:type="GstObject"/>
</field>
<field name="transport">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</field>
<field name="state">
<type name="WebRTCDTLSTransportState"
c:type="GstWebRTCDTLSTransportState"/>
</field>
<field name="is_rtcp">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="client">
<type name="gboolean" c:type="gboolean"/>
</field>
<field name="session_id">
<type name="guint" c:type="guint"/>
</field>
<field name="dtlssrtpenc">
<type name="Gst.Element" c:type="GstElement*"/>
</field>
<field name="dtlssrtpdec">
<type name="Gst.Element" c:type="GstElement*"/>
</field>
<field name="_padding">
<array zero-terminated="0" c:type="gpointer" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</class>
<record name="WebRTCDTLSTransportClass"
c:type="GstWebRTCDTLSTransportClass"
glib:is-gtype-struct-for="WebRTCDTLSTransport">
<field name="parent_class">
<type name="Gst.BinClass" c:type="GstBinClass"/>
</field>
<field name="_padding">
<array zero-terminated="0" c:type="gpointer" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<enumeration name="WebRTCDTLSTransportState"
c:type="GstWebRTCDTLSTransportState">
<doc xml:space="preserve">GST_WEBRTC_DTLS_TRANSPORT_STATE_NEW: new
GST_WEBRTC_DTLS_TRANSPORT_STATE_CLOSED: closed
GST_WEBRTC_DTLS_TRANSPORT_STATE_FAILED: failed
GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTING: connecting
GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTED: connected</doc>
<member name="new"
value="0"
c:identifier="GST_WEBRTC_DTLS_TRANSPORT_STATE_NEW">
</member>
<member name="closed"
value="1"
c:identifier="GST_WEBRTC_DTLS_TRANSPORT_STATE_CLOSED">
</member>
<member name="failed"
value="2"
c:identifier="GST_WEBRTC_DTLS_TRANSPORT_STATE_FAILED">
</member>
<member name="connecting"
value="3"
c:identifier="GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTING">
</member>
<member name="connected"
value="4"
c:identifier="GST_WEBRTC_DTLS_TRANSPORT_STATE_CONNECTED">
</member>
</enumeration>
<enumeration name="WebRTCICEComponent" c:type="GstWebRTCICEComponent">
<doc xml:space="preserve">GST_WEBRTC_ICE_COMPONENT_RTP,
GST_WEBRTC_ICE_COMPONENT_RTCP,</doc>
<member name="rtp" value="0" c:identifier="GST_WEBRTC_ICE_COMPONENT_RTP">
</member>
<member name="rtcp"
value="1"
c:identifier="GST_WEBRTC_ICE_COMPONENT_RTCP">
</member>
</enumeration>
<enumeration name="WebRTCICEConnectionState"
c:type="GstWebRTCICEConnectionState">
<doc xml:space="preserve">GST_WEBRTC_ICE_CONNECTION_STATE_NEW: new
GST_WEBRTC_ICE_CONNECTION_STATE_CHECKING: checking
GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED: connected
GST_WEBRTC_ICE_CONNECTION_STATE_COMPLETED: completed
GST_WEBRTC_ICE_CONNECTION_STATE_FAILED: failed
GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED: disconnected
GST_WEBRTC_ICE_CONNECTION_STATE_CLOSED: closed
See &lt;ulink url="http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate"&gt;http://w3c.github.io/webrtc-pc/#dom-rtciceconnectionstate&lt;/ulink&gt;</doc>
<member name="new"
value="0"
c:identifier="GST_WEBRTC_ICE_CONNECTION_STATE_NEW">
</member>
<member name="checking"
value="1"
c:identifier="GST_WEBRTC_ICE_CONNECTION_STATE_CHECKING">
</member>
<member name="connected"
value="2"
c:identifier="GST_WEBRTC_ICE_CONNECTION_STATE_CONNECTED">
</member>
<member name="completed"
value="3"
c:identifier="GST_WEBRTC_ICE_CONNECTION_STATE_COMPLETED">
</member>
<member name="failed"
value="4"
c:identifier="GST_WEBRTC_ICE_CONNECTION_STATE_FAILED">
</member>
<member name="disconnected"
value="5"
c:identifier="GST_WEBRTC_ICE_CONNECTION_STATE_DISCONNECTED">
</member>
<member name="closed"
value="6"
c:identifier="GST_WEBRTC_ICE_CONNECTION_STATE_CLOSED">
</member>
</enumeration>
<enumeration name="WebRTCICEGatheringState"
c:type="GstWebRTCICEGatheringState">
<doc xml:space="preserve">GST_WEBRTC_ICE_GATHERING_STATE_NEW: new
GST_WEBRTC_ICE_GATHERING_STATE_GATHERING: gathering
GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE: complete
See &lt;ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate"&gt;http://w3c.github.io/webrtc-pc/#dom-rtcicegatheringstate&lt;/ulink&gt;</doc>
<member name="new"
value="0"
c:identifier="GST_WEBRTC_ICE_GATHERING_STATE_NEW">
</member>
<member name="gathering"
value="1"
c:identifier="GST_WEBRTC_ICE_GATHERING_STATE_GATHERING">
</member>
<member name="complete"
value="2"
c:identifier="GST_WEBRTC_ICE_GATHERING_STATE_COMPLETE">
</member>
</enumeration>
<enumeration name="WebRTCICERole" c:type="GstWebRTCICERole">
<doc xml:space="preserve">GST_WEBRTC_ICE_ROLE_CONTROLLED: controlled
GST_WEBRTC_ICE_ROLE_CONTROLLING: controlling</doc>
<member name="controlled"
value="0"
c:identifier="GST_WEBRTC_ICE_ROLE_CONTROLLED">
</member>
<member name="controlling"
value="1"
c:identifier="GST_WEBRTC_ICE_ROLE_CONTROLLING">
</member>
</enumeration>
<class name="WebRTCICETransport"
c:symbol-prefix="webrtc_ice_transport"
c:type="GstWebRTCICETransport"
parent="Gst.Object"
abstract="1"
glib:type-name="GstWebRTCICETransport"
glib:get-type="gst_webrtc_ice_transport_get_type"
glib:type-struct="WebRTCICETransportClass">
<virtual-method name="gather_candidates">
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="transport" transfer-ownership="none">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</instance-parameter>
</parameters>
</virtual-method>
<method name="connection_state_change"
c:identifier="gst_webrtc_ice_transport_connection_state_change">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="ice" transfer-ownership="none">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</instance-parameter>
<parameter name="new_state" transfer-ownership="none">
<type name="WebRTCICEConnectionState"
c:type="GstWebRTCICEConnectionState"/>
</parameter>
</parameters>
</method>
<method name="gathering_state_change"
c:identifier="gst_webrtc_ice_transport_gathering_state_change">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="ice" transfer-ownership="none">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</instance-parameter>
<parameter name="new_state" transfer-ownership="none">
<type name="WebRTCICEGatheringState"
c:type="GstWebRTCICEGatheringState"/>
</parameter>
</parameters>
</method>
<method name="new_candidate"
c:identifier="gst_webrtc_ice_transport_new_candidate">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="ice" transfer-ownership="none">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</instance-parameter>
<parameter name="stream_id" transfer-ownership="none">
<type name="guint" c:type="guint"/>
</parameter>
<parameter name="component" transfer-ownership="none">
<type name="WebRTCICEComponent" c:type="GstWebRTCICEComponent"/>
</parameter>
<parameter name="attr" transfer-ownership="none">
<type name="utf8" c:type="gchar*"/>
</parameter>
</parameters>
</method>
<method name="selected_pair_change"
c:identifier="gst_webrtc_ice_transport_selected_pair_change">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="ice" transfer-ownership="none">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</instance-parameter>
</parameters>
</method>
<property name="component"
introspectable="0"
writable="1"
construct-only="1"
transfer-ownership="none">
<type/>
</property>
<property name="gathering-state"
introspectable="0"
transfer-ownership="none">
<type/>
</property>
<property name="state" introspectable="0" transfer-ownership="none">
<type/>
</property>
<field name="parent">
<type name="Gst.Object" c:type="GstObject"/>
</field>
<field name="role">
<type name="WebRTCICERole" c:type="GstWebRTCICERole"/>
</field>
<field name="component">
<type name="WebRTCICEComponent" c:type="GstWebRTCICEComponent"/>
</field>
<field name="state">
<type name="WebRTCICEConnectionState"
c:type="GstWebRTCICEConnectionState"/>
</field>
<field name="gathering_state">
<type name="WebRTCICEGatheringState"
c:type="GstWebRTCICEGatheringState"/>
</field>
<field name="src">
<type name="Gst.Element" c:type="GstElement*"/>
</field>
<field name="sink">
<type name="Gst.Element" c:type="GstElement*"/>
</field>
<field name="_padding">
<array zero-terminated="0" c:type="gpointer" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
<glib:signal name="on-new-candidate" when="last">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="object" transfer-ownership="none">
<type name="utf8" c:type="gchar*"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="on-selected-candidate-pair-change" when="last">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
</glib:signal>
</class>
<record name="WebRTCICETransportClass"
c:type="GstWebRTCICETransportClass"
glib:is-gtype-struct-for="WebRTCICETransport">
<field name="parent_class">
<type name="Gst.BinClass" c:type="GstBinClass"/>
</field>
<field name="gather_candidates">
<callback name="gather_candidates">
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="transport" transfer-ownership="none">
<type name="WebRTCICETransport" c:type="GstWebRTCICETransport*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="_padding">
<array zero-terminated="0" c:type="gpointer" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<enumeration name="WebRTCPeerConnectionState"
c:type="GstWebRTCPeerConnectionState">
<doc xml:space="preserve">GST_WEBRTC_PEER_CONNECTION_STATE_NEW: new
GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTING: connecting
GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTED: connected
GST_WEBRTC_PEER_CONNECTION_STATE_DISCONNECTED: disconnected
GST_WEBRTC_PEER_CONNECTION_STATE_FAILED: failed
GST_WEBRTC_PEER_CONNECTION_STATE_CLOSED: closed
See &lt;ulink url="http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate"&gt;http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnectionstate&lt;/ulink&gt;</doc>
<member name="new"
value="0"
c:identifier="GST_WEBRTC_PEER_CONNECTION_STATE_NEW">
</member>
<member name="connecting"
value="1"
c:identifier="GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTING">
</member>
<member name="connected"
value="2"
c:identifier="GST_WEBRTC_PEER_CONNECTION_STATE_CONNECTED">
</member>
<member name="disconnected"
value="3"
c:identifier="GST_WEBRTC_PEER_CONNECTION_STATE_DISCONNECTED">
</member>
<member name="failed"
value="4"
c:identifier="GST_WEBRTC_PEER_CONNECTION_STATE_FAILED">
</member>
<member name="closed"
value="5"
c:identifier="GST_WEBRTC_PEER_CONNECTION_STATE_CLOSED">
</member>
</enumeration>
<class name="WebRTCRTPReceiver"
c:symbol-prefix="webrtc_rtp_receiver"
c:type="GstWebRTCRTPReceiver"
parent="Gst.Object"
glib:type-name="GstWebRTCRTPReceiver"
glib:get-type="gst_webrtc_rtp_receiver_get_type"
glib:type-struct="WebRTCRTPReceiverClass">
<constructor name="new" c:identifier="gst_webrtc_rtp_receiver_new">
<return-value transfer-ownership="none">
<type name="WebRTCRTPReceiver" c:type="GstWebRTCRTPReceiver*"/>
</return-value>
</constructor>
<method name="set_rtcp_transport"
c:identifier="gst_webrtc_rtp_receiver_set_rtcp_transport">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="receiver" transfer-ownership="none">
<type name="WebRTCRTPReceiver" c:type="GstWebRTCRTPReceiver*"/>
</instance-parameter>
<parameter name="transport" transfer-ownership="none">
<type name="WebRTCDTLSTransport" c:type="GstWebRTCDTLSTransport*"/>
</parameter>
</parameters>
</method>
<method name="set_transport"
c:identifier="gst_webrtc_rtp_receiver_set_transport">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="receiver" transfer-ownership="none">
<type name="WebRTCRTPReceiver" c:type="GstWebRTCRTPReceiver*"/>
</instance-parameter>
<parameter name="transport" transfer-ownership="none">
<type name="WebRTCDTLSTransport" c:type="GstWebRTCDTLSTransport*"/>
</parameter>
</parameters>
</method>
<field name="parent">
<type name="Gst.Object" c:type="GstObject"/>
</field>
<field name="transport">
<type name="WebRTCDTLSTransport" c:type="GstWebRTCDTLSTransport*"/>
</field>
<field name="rtcp_transport">
<type name="WebRTCDTLSTransport" c:type="GstWebRTCDTLSTransport*"/>
</field>
<field name="_padding">
<array zero-terminated="0" c:type="gpointer" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</class>
<record name="WebRTCRTPReceiverClass"
c:type="GstWebRTCRTPReceiverClass"
glib:is-gtype-struct-for="WebRTCRTPReceiver">
<field name="parent_class">
<type name="Gst.ObjectClass" c:type="GstObjectClass"/>
</field>
<field name="_padding">
<array zero-terminated="0" c:type="gpointer" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<class name="WebRTCRTPSender"
c:symbol-prefix="webrtc_rtp_sender"
c:type="GstWebRTCRTPSender"
parent="Gst.Object"
glib:type-name="GstWebRTCRTPSender"
glib:get-type="gst_webrtc_rtp_sender_get_type"
glib:type-struct="WebRTCRTPSenderClass">
<constructor name="new" c:identifier="gst_webrtc_rtp_sender_new">
<return-value transfer-ownership="none">
<type name="WebRTCRTPSender" c:type="GstWebRTCRTPSender*"/>
</return-value>
</constructor>
<method name="set_rtcp_transport"
c:identifier="gst_webrtc_rtp_sender_set_rtcp_transport">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="sender" transfer-ownership="none">
<type name="WebRTCRTPSender" c:type="GstWebRTCRTPSender*"/>
</instance-parameter>