webrtcbin
A bin for webrtc connections
Hierarchy
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstElement ╰──GstBin ╰──webrtcbin
Implemented interfaces
Factory details
Authors: – Matthew Waters
Classification: – Filter/Network/WebRTC
Rank – primary
Plugin – webrtc
Package – GStreamer Bad Plug-ins
Pad Templates
sink_%u
application/x-rtp:
src_%u
application/x-rtp:
Signals
add-ice-candidate
add_ice_candidate_callback (GstElement * object, guint mline_index, gchararray ice-candidate, gpointer udata)
def add_ice_candidate_callback (object, mline_index, ice-candidate, udata):
#python callback for the 'add-ice-candidate' signal
function add_ice_candidate_callback(object: GstElement * object, mline_index: guint mline_index, ice-candidate: gchararray ice-candidate, udata: gpointer udata): {
// javascript callback for the 'add-ice-candidate' signal
}
Parameters:
object
–
the webrtcbin
mline_index
–
the index of the media description in the SDP
ice-candidate
–
an ice candidate
udata
–
add-transceiver
GstWebRTCRTPTransceiver * add_transceiver_callback (GstElement * object, GstWebRTCRTPTransceiverDirection * direction, GstCaps * caps, gpointer udata)
def add_transceiver_callback (object, direction, caps, udata):
#python callback for the 'add-transceiver' signal
function add_transceiver_callback(object: GstElement * object, direction: GstWebRTCRTPTransceiverDirection * direction, caps: GstCaps * caps, udata: gpointer udata): {
// javascript callback for the 'add-transceiver' signal
}
Parameters:
object
–
the webrtcbin
direction
–
the direction of the new transceiver
caps
–
the codec preferences for this transceiver
udata
–
the new GstWebRTCRTPTransceiver
add-turn-server
gboolean add_turn_server_callback (GstElement * object, gchararray uri, gpointer udata)
def add_turn_server_callback (object, uri, udata):
#python callback for the 'add-turn-server' signal
function add_turn_server_callback(object: GstElement * object, uri: gchararray uri, udata: gpointer udata): {
// javascript callback for the 'add-turn-server' signal
}
Add a turn server to obtain ICE candidates from
Parameters:
object
–
the GstWebRTCBin
uri
–
The uri of the server of the form turn(s)://username:password@host:port
udata
–
create-answer
create_answer_callback (GstElement * object, GstStructure * options, GstPromise * promise, gpointer udata)
def create_answer_callback (object, options, promise, udata):
#python callback for the 'create-answer' signal
function create_answer_callback(object: GstElement * object, options: GstStructure * options, promise: GstPromise * promise, udata: gpointer udata): {
// javascript callback for the 'create-answer' signal
}
Parameters:
object
–
the webrtcbin
options
–
create-answer options
promise
–
a GstPromise which will contain the answer
udata
–
create-data-channel
GstWebRTCDataChannel * create_data_channel_callback (GstElement * param_0, gchararray arg0, GstStructure * arg1, gpointer udata)
def create_data_channel_callback (param_0, arg0, arg1, udata):
#python callback for the 'create-data-channel' signal
function create_data_channel_callback(param_0: GstElement * param_0, arg0: gchararray arg0, arg1: GstStructure * arg1, udata: gpointer udata): {
// javascript callback for the 'create-data-channel' signal
}
Parameters:
param_0
–
arg0
–
arg1
–
udata
–
create-offer
create_offer_callback (GstElement * object, GstStructure * options, GstPromise * promise, gpointer udata)
def create_offer_callback (object, options, promise, udata):
#python callback for the 'create-offer' signal
function create_offer_callback(object: GstElement * object, options: GstStructure * options, promise: GstPromise * promise, udata: gpointer udata): {
// javascript callback for the 'create-offer' signal
}
Parameters:
object
–
the webrtcbin
options
–
create-offer options
promise
–
a GstPromise which will contain the offer
udata
–
get-stats
get_stats_callback (GstElement * object, GstPad * pad, GstPromise * promise, gpointer udata)
def get_stats_callback (object, pad, promise, udata):
#python callback for the 'get-stats' signal
function get_stats_callback(object: GstElement * object, pad: GstPad * pad, promise: GstPromise * promise, udata: gpointer udata): {
// javascript callback for the 'get-stats' signal
}
The promise will contain the result of retrieving the session statistics. The structure will be named 'application/x-webrtc-stats and contain the following based on the webrtc-stats spec available from https://www.w3.org/TR/webrtc-stats/. As the webrtc-stats spec is a draft and is constantly changing these statistics may be changed to fit with the latest spec.
Each field key is a unique identifier for each RTCStats (https://www.w3.org/TR/webrtc/#rtcstats-dictionary) value (another GstStructure) in the RTCStatsReport (https://www.w3.org/TR/webrtc/#rtcstatsreport-object). Each supported field in the RTCStats subclass is outlined below.
Each statistics structure contains the following values as defined by the RTCStats dictionary (https://www.w3.org/TR/webrtc/#rtcstats-dictionary).
"timestamp" G_TYPE_DOUBLE timestamp the statistics were generated "type" GST_TYPE_WEBRTC_STATS_TYPE the type of statistics reported "id" G_TYPE_STRING unique identifier
RTCCodecStats supported fields (https://w3c.github.io/webrtc-stats/#codec-dict*)
"payload-type" G_TYPE_UINT the rtp payload number in use "clock-rate" G_TYPE_UINT the rtp clock-rate
RTCRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#streamstats-dict*)
"ssrc" G_TYPE_STRING the rtp sequence src in use "transport-id" G_TYPE_STRING identifier for the associated RTCTransportStats for this stream "codec-id" G_TYPE_STRING identifier for the associated RTCCodecStats for this stream "fir-count" G_TYPE_UINT FIR requests received by the sender (only for local statistics) "pli-count" G_TYPE_UINT PLI requests received by the sender (only for local statistics) "nack-count" G_TYPE_UINT NACK requests received by the sender (only for local statistics)
RTCReceivedStreamStats supported fields (https://w3c.github.io/webrtc-stats/#receivedrtpstats-dict*)
"packets-received" G_TYPE_UINT64 number of packets received (only for local inbound) "bytes-received" G_TYPE_UINT64 number of bytes received (only for local inbound) "packets-lost" G_TYPE_UINT number of packets lost "jitter" G_TYPE_DOUBLE packet jitter measured in secondss
RTCInboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#inboundrtpstats-dict*)
"remote-id" G_TYPE_STRING identifier for the associated RTCRemoteOutboundRTPStreamStats
RTCRemoteInboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#remoteinboundrtpstats-dict*)
"local-id" G_TYPE_STRING identifier for the associated RTCOutboundRTPSTreamStats "round-trip-time" G_TYPE_DOUBLE round trip time of packets measured in seconds
RTCSentRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#sentrtpstats-dict*)
"packets-sent" G_TYPE_UINT64 number of packets sent (only for local outbound) "bytes-sent" G_TYPE_UINT64 number of packets sent (only for local outbound)
RTCOutboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#outboundrtpstats-dict*)
"remote-id" G_TYPE_STRING identifier for the associated RTCRemoteInboundRTPSTreamStats
RTCRemoteOutboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#remoteoutboundrtpstats-dict*)
"local-id" G_TYPE_STRING identifier for the associated RTCInboundRTPSTreamStats
Parameters:
object
–
the webrtcbin
promise
–
a GstPromise for the result
udata
–
get-transceiver
GstWebRTCRTPTransceiver * get_transceiver_callback (GstElement * object, gint idx, gpointer udata)
def get_transceiver_callback (object, idx, udata):
#python callback for the 'get-transceiver' signal
function get_transceiver_callback(object: GstElement * object, idx: gint idx, udata: gpointer udata): {
// javascript callback for the 'get-transceiver' signal
}
Parameters:
object
–
the GstWebRTCBin
idx
–
The index of the transceiver
udata
–
the GstWebRTCRTPTransceiver, or NULL
Since : 1.16
get-transceivers
GArray * get_transceivers_callback (GstElement * object, gpointer udata)
def get_transceivers_callback (object, udata):
#python callback for the 'get-transceivers' signal
function get_transceivers_callback(object: GstElement * object, udata: gpointer udata): {
// javascript callback for the 'get-transceivers' signal
}
on-data-channel
on_data_channel_callback (GstElement * object, GstWebRTCDataChannel * candidate, gpointer udata)
def on_data_channel_callback (object, candidate, udata):
#python callback for the 'on-data-channel' signal
function on_data_channel_callback(object: GstElement * object, candidate: GstWebRTCDataChannel * candidate, udata: gpointer udata): {
// javascript callback for the 'on-data-channel' signal
}
Parameters:
object
–
the GstWebRTCBin
candidate
–
the new GstWebRTCDataChannel
udata
–
Flags: Run Last
on-ice-candidate
on_ice_candidate_callback (GstElement * object, guint mline_index, gchararray candidate, gpointer udata)
def on_ice_candidate_callback (object, mline_index, candidate, udata):
#python callback for the 'on-ice-candidate' signal
function on_ice_candidate_callback(object: GstElement * object, mline_index: guint mline_index, candidate: gchararray candidate, udata: gpointer udata): {
// javascript callback for the 'on-ice-candidate' signal
}
Parameters:
object
–
the webrtcbin
mline_index
–
the index of the media description in the SDP
candidate
–
the ICE candidate
udata
–
Flags: Run Last
on-negotiation-needed
on_negotiation_needed_callback (GstElement * object, gpointer udata)
def on_negotiation_needed_callback (object, udata):
#python callback for the 'on-negotiation-needed' signal
function on_negotiation_needed_callback(object: GstElement * object, udata: gpointer udata): {
// javascript callback for the 'on-negotiation-needed' signal
}
Flags: Run Last
on-new-transceiver
on_new_transceiver_callback (GstElement * object, GstWebRTCRTPTransceiver * candidate, gpointer udata)
def on_new_transceiver_callback (object, candidate, udata):
#python callback for the 'on-new-transceiver' signal
function on_new_transceiver_callback(object: GstElement * object, candidate: GstWebRTCRTPTransceiver * candidate, udata: gpointer udata): {
// javascript callback for the 'on-new-transceiver' signal
}
Parameters:
object
–
the webrtcbin
candidate
–
the new GstWebRTCRTPTransceiver
udata
–
Flags: Run Last
set-local-description
set_local_description_callback (GstElement * object, GstWebRTCSessionDescription * desc, GstPromise * promise, gpointer udata)
def set_local_description_callback (object, desc, promise, udata):
#python callback for the 'set-local-description' signal
function set_local_description_callback(object: GstElement * object, desc: GstWebRTCSessionDescription * desc, promise: GstPromise * promise, udata: gpointer udata): {
// javascript callback for the 'set-local-description' signal
}
Parameters:
object
–
the GstWebRTCBin
desc
–
a GstWebRTCSessionDescription description
promise
–
a GstPromise to be notified when it's set
udata
–
set-remote-description
set_remote_description_callback (GstElement * object, GstWebRTCSessionDescription * desc, GstPromise * promise, gpointer udata)
def set_remote_description_callback (object, desc, promise, udata):
#python callback for the 'set-remote-description' signal
function set_remote_description_callback(object: GstElement * object, desc: GstWebRTCSessionDescription * desc, promise: GstPromise * promise, udata: gpointer udata): {
// javascript callback for the 'set-remote-description' signal
}
Parameters:
object
–
the GstWebRTCBin
desc
–
a GstWebRTCSessionDescription description
promise
–
a GstPromise to be notified when it's set
udata
–
Properties
bundle-policy
“bundle-policy” GstWebRTCBundlePolicy *
The policy to apply for bundling
Flags : Read / Write
Default value : none (0)
connection-state
“connection-state” GstWebRTCPeerConnectionState *
The overall connection state of this element
Flags : Read
Default value : new (0)
current-local-description
“current-local-description” GstWebRTCSessionDescription *
The local description that was successfully negotiated the last time the connection transitioned into the stable state
Flags : Read
current-remote-description
“current-remote-description” GstWebRTCSessionDescription *
The last remote description that was successfully negotiated the last time the connection transitioned into the stable state plus any remote candidates that have been supplied via addIceCandidate since the offer or answer was created
Flags : Read
ice-connection-state
“ice-connection-state” GstWebRTCICEConnectionState *
The collective connection state of all ICETransport's
Flags : Read
Default value : new (0)
ice-gathering-state
“ice-gathering-state” GstWebRTCICEGatheringState *
The collective gathering state of all ICETransport's
Flags : Read
Default value : new (0)
ice-transport-policy
“ice-transport-policy” GstWebRTCICETransportPolicy *
The policy to apply for ICE transport
Flags : Read / Write
Default value : all (0)
latency
“latency” guint
Default duration to buffer in the jitterbuffers (in ms)
Flags : Read / Write
Default value : 0
local-description
“local-description” GstWebRTCSessionDescription *
The local SDP description in use for this connection. Favours a pending description over the current description
Flags : Read
pending-local-description
“pending-local-description” GstWebRTCSessionDescription *
The local description that is in the process of being negotiated plus any local candidates that have been generated by the ICE Agent since the offer or answer was created
Flags : Read
pending-remote-description
“pending-remote-description” GstWebRTCSessionDescription *
The remote description that is in the process of being negotiated, complete with any remote candidates that have been supplied via addIceCandidate since the offer or answer was created
Flags : Read
remote-description
“remote-description” GstWebRTCSessionDescription *
The remote SDP description to use for this connection. Favours a pending description over the current description
Flags : Read
signaling-state
“signaling-state” GstWebRTCSignalingState *
The signaling state of this element
Flags : Read
Default value : stable (0)
stun-server
“stun-server” gchararray
The STUN server of the form stun://hostname:port
Flags : Read / Write
Default value : NULL
turn-server
“turn-server” gchararray
The TURN server of the form turn(s)://username:password@host:port. This is a convenience property, use GstWebRTCBin::add-turn-server if you wish to use multiple TURN servers
Flags : Read / Write
Default value : NULL
GstWebRTCBinPad
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstPad ╰──GstProxyPad ╰──GstGhostPad ╰──GstWebRTCBinPad
Properties
transceiver
“transceiver” GstWebRTCRTPTransceiver *
Transceiver associated with this pad
Flags : Read
GstWebRTCICE
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstWebRTCICE
Signals
GstWebRTCICE::add-local-ip-address
gboolean GstWebRTCICE::add_local_ip_address_callback (GstElement * object, gchararray address, gpointer udata)
def GstWebRTCICE::add_local_ip_address_callback (object, address, udata):
#python callback for the 'add-local-ip-address' signal
function GstWebRTCICE::add_local_ip_address_callback(object: GstElement * object, address: gchararray address, udata: gpointer udata): {
// javascript callback for the 'add-local-ip-address' signal
}
Add a local IP address to use for ICE candidate gathering. If none are supplied, they will be discovered automatically. Calling this signal stops automatic ICE gathering.
Parameters:
object
–
the GstWebRTCICE
address
–
The local IP address
udata
–
whether the address could be added.
Properties
agent
“agent” NiceAgent*
ICE agent in use by this object. WARNING! Accessing this property may have disastrous consequences for the operation of webrtcbin. Other ICE implementations may not have the same interface.
Flags : Read
ice-tcp
“ice-tcp” gboolean
Whether the agent should use ICE-TCP when gathering candidates
Flags : Read / Write
Default value : true
ice-udp
“ice-udp” gboolean
Whether the agent should use ICE-UDP when gathering candidates
Flags : Read / Write
Default value : true
The results of the search are