Trait gstreamer_rtsp_server::prelude::RTSPStreamExt

source ·
pub trait RTSPStreamExt: IsA<RTSPStream> + Sealed + 'static {
Show 86 methods // Provided methods fn add_multicast_client_address( &self, destination: &str, rtp_port: u32, rtcp_port: u32, family: SocketFamily, ) -> bool { ... } fn add_transport( &self, trans: &impl IsA<RTSPStreamTransport>, ) -> Result<(), BoolError> { ... } fn address_pool(&self) -> Option<RTSPAddressPool> { ... } fn buffer_size(&self) -> u32 { ... } fn caps(&self) -> Option<Caps> { ... } fn control(&self) -> Option<GString> { ... } fn current_seqnum(&self) -> u16 { ... } fn dscp_qos(&self) -> i32 { ... } fn index(&self) -> u32 { ... } fn joined_bin(&self) -> Option<Bin> { ... } fn max_mcast_ttl(&self) -> u32 { ... } fn mtu(&self) -> u32 { ... } fn multicast_address(&self, family: SocketFamily) -> Option<RTSPAddress> { ... } fn multicast_client_addresses(&self) -> GString { ... } fn multicast_iface(&self) -> Option<GString> { ... } fn profiles(&self) -> RTSPProfile { ... } fn protocols(&self) -> RTSPLowerTrans { ... } fn pt(&self) -> u32 { ... } fn publish_clock_mode(&self) -> RTSPPublishClockMode { ... } fn is_rate_control(&self) -> bool { ... } fn rates(&self) -> Option<(f64, f64)> { ... } fn retransmission_pt(&self) -> u32 { ... } fn retransmission_time(&self) -> Option<ClockTime> { ... } fn rtcp_multicast_socket(&self, family: SocketFamily) -> Option<Socket> { ... } fn rtcp_socket(&self, family: SocketFamily) -> Option<Socket> { ... } fn rtp_multicast_socket(&self, family: SocketFamily) -> Option<Socket> { ... } fn rtp_socket(&self, family: SocketFamily) -> Option<Socket> { ... } fn rtpinfo(&self) -> Option<(u32, u32, u32, Option<ClockTime>)> { ... } fn rtpsession(&self) -> Option<Object> { ... } fn sinkpad(&self) -> Option<Pad> { ... } fn srcpad(&self) -> Option<Pad> { ... } fn srtp_encoder(&self) -> Option<Element> { ... } fn ssrc(&self) -> u32 { ... } fn is_ulpfec_enabled(&self) -> bool { ... } fn ulpfec_percentage(&self) -> u32 { ... } fn ulpfec_pt(&self) -> u32 { ... } fn handle_keymgmt(&self, keymgmt: &str) -> bool { ... } fn has_control(&self, control: Option<&str>) -> bool { ... } fn is_bind_mcast_address(&self) -> bool { ... } fn is_blocking(&self) -> bool { ... } fn is_client_side(&self) -> bool { ... } fn is_complete(&self) -> bool { ... } fn is_receiver(&self) -> bool { ... } fn is_sender(&self) -> bool { ... } fn join_bin( &self, bin: &impl IsA<Bin>, rtpbin: &impl IsA<Element>, state: State, ) -> Result<(), BoolError> { ... } fn leave_bin( &self, bin: &impl IsA<Bin>, rtpbin: &impl IsA<Element>, ) -> Result<(), BoolError> { ... } fn recv_rtcp(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError> { ... } fn recv_rtp(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError> { ... } fn remove_transport( &self, trans: &impl IsA<RTSPStreamTransport>, ) -> Result<(), BoolError> { ... } fn request_aux_receiver(&self, sessid: u32) -> Option<Element> { ... } fn request_aux_sender(&self, sessid: u32) -> Option<Element> { ... } fn request_ulpfec_decoder( &self, rtpbin: &impl IsA<Element>, sessid: u32, ) -> Option<Element> { ... } fn request_ulpfec_encoder(&self, sessid: u32) -> Option<Element> { ... } fn reserve_address( &self, address: &str, port: u32, n_ports: u32, ttl: u32, ) -> Option<RTSPAddress> { ... } fn seekable(&self) -> bool { ... } fn set_address_pool(&self, pool: Option<&impl IsA<RTSPAddressPool>>) { ... } fn set_bind_mcast_address(&self, bind_mcast_addr: bool) { ... } fn set_blocked(&self, blocked: bool) -> Result<(), BoolError> { ... } fn set_buffer_size(&self, size: u32) { ... } fn set_client_side(&self, client_side: bool) { ... } fn set_control(&self, control: Option<&str>) { ... } fn set_dscp_qos(&self, dscp_qos: i32) { ... } fn set_max_mcast_ttl(&self, ttl: u32) -> bool { ... } fn set_mtu(&self, mtu: u32) { ... } fn set_multicast_iface(&self, multicast_iface: Option<&str>) { ... } fn set_profiles(&self, profiles: RTSPProfile) { ... } fn set_protocols(&self, protocols: RTSPLowerTrans) { ... } fn set_pt_map(&self, pt: u32, caps: &Caps) { ... } fn set_publish_clock_mode(&self, mode: RTSPPublishClockMode) { ... } fn set_rate_control(&self, enabled: bool) { ... } fn set_retransmission_pt(&self, rtx_pt: u32) { ... } fn set_retransmission_time(&self, time: impl Into<Option<ClockTime>>) { ... } fn set_seqnum_offset(&self, seqnum: u16) { ... } fn set_ulpfec_percentage(&self, percentage: u32) { ... } fn set_ulpfec_pt(&self, pt: u32) { ... } fn transport_filter( &self, func: Option<&mut dyn FnMut(&RTSPStream, &RTSPStreamTransport) -> RTSPFilterResult>, ) -> Vec<RTSPStreamTransport> { ... } fn unblock_linked(&self) -> Result<(), BoolError> { ... } fn unblock_rtcp(&self) { ... } fn update_crypto( &self, ssrc: u32, crypto: Option<&Caps>, ) -> Result<(), BoolError> { ... } fn verify_mcast_ttl(&self, ttl: u32) -> bool { ... } fn connect_new_rtcp_encoder<F: Fn(&Self, &Element) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId { ... } fn connect_new_rtp_encoder<F: Fn(&Self, &Element) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId { ... } fn connect_new_rtp_rtcp_decoder<F: Fn(&Self, &Element) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId { ... } fn connect_control_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId { ... } fn connect_profiles_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId { ... } fn connect_protocols_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId { ... }
}
Expand description

Trait containing all RTSPStream methods.

§Implementors

RTSPStream

Provided Methods§

source

fn add_multicast_client_address( &self, destination: &str, rtp_port: u32, rtcp_port: u32, family: SocketFamily, ) -> bool

Add multicast client address to stream. At this point, the sockets that will stream RTP and RTCP data to destination are supposed to be allocated.

§destination

a multicast address to add

§rtp_port

RTP port

§rtcp_port

RTCP port

§family

socket family

§Returns

true if destination can be addedd and handled by self.

source

fn add_transport( &self, trans: &impl IsA<RTSPStreamTransport>, ) -> Result<(), BoolError>

Add the transport in trans to self. The media of self will then also be send to the values configured in trans. Adding the same transport twice will not add it a second time.

self must be joined to a bin.

trans must contain a valid GstRTSPTransport.

§trans

a RTSPStreamTransport

§Returns

true if trans was added

source

fn address_pool(&self) -> Option<RTSPAddressPool>

Get the RTSPAddressPool used as the address pool of self.

§Returns

the RTSPAddressPool of self. g_object_unref() after usage.

source

fn buffer_size(&self) -> u32

Get the size of the UDP transmission buffer (in bytes)

§Returns

the size of the UDP TX buffer

source

fn caps(&self) -> Option<Caps>

Retrieve the current caps of self.

§Returns

the gst::Caps of self. use gst_caps_unref() after usage.

source

fn control(&self) -> Option<GString>

Get the control string to identify this stream.

§Returns

the control string. g_free() after usage.

source

fn current_seqnum(&self) -> u16

source

fn dscp_qos(&self) -> i32

Get the configured DSCP QoS in of the outgoing sockets.

§Returns

the DSCP QoS value of the outgoing sockets, or -1 if disbled.

source

fn index(&self) -> u32

Get the stream index.

§Returns

the stream index.

source

fn joined_bin(&self) -> Option<Bin>

Get the previous joined bin with join_bin() or NULL.

§Returns

the joined bin or NULL.

source

fn max_mcast_ttl(&self) -> u32

Get the the maximum time-to-live value of outgoing multicast packets.

§Returns

the maximum time-to-live value of outgoing multicast packets.

source

fn mtu(&self) -> u32

Get the configured MTU in the payloader of self.

§Returns

the MTU of the payloader.

source

fn multicast_address(&self, family: SocketFamily) -> Option<RTSPAddress>

Get the multicast address of self for family. The original RTSPAddress is cached and copy is returned, so freeing the return value won’t release the address from the pool.

§family

the gio::SocketFamily

§Returns

the RTSPAddress of self or None when no address could be allocated. gst_rtsp_address_free() after usage.

source

fn multicast_client_addresses(&self) -> GString

Get all multicast client addresses that RTP data will be sent to

§Returns

A comma separated list of host:port pairs with destinations

source

fn multicast_iface(&self) -> Option<GString>

Get the multicast interface used for self.

§Returns

the multicast interface for self. g_free() after usage.

source

fn profiles(&self) -> RTSPProfile

Get the allowed profiles of self.

§Returns

a gst_rtsp::RTSPProfile

source

fn protocols(&self) -> RTSPLowerTrans

Get the allowed protocols of self.

§Returns

a gst_rtsp::RTSPLowerTrans

source

fn pt(&self) -> u32

Get the stream payload type.

§Returns

the stream payload type.

source

fn publish_clock_mode(&self) -> RTSPPublishClockMode

Gets if and how the stream clock should be published according to RFC7273.

§Returns

The GstRTSPPublishClockMode

source

fn is_rate_control(&self) -> bool

§Returns

whether self will follow the Rate-Control=no behaviour as specified in the ONVIF replay spec.

source

fn rates(&self) -> Option<(f64, f64)>

Retrieve the current rate and/or applied_rate.

§Returns

true if rate and/or applied_rate could be determined.

§rate

the configured rate

§applied_rate

the configured applied_rate

source

fn retransmission_pt(&self) -> u32

Get the payload-type used for retransmission of this stream

§Returns

The retransmission PT.

source

fn retransmission_time(&self) -> Option<ClockTime>

Get the amount of time to store retransmission data.

§Returns

the amount of time to store retransmission data.

source

fn rtcp_multicast_socket(&self, family: SocketFamily) -> Option<Socket>

Get the multicast RTCP socket from self for a family.

§family

the socket family

§Returns

the multicast RTCP socket or None if no socket could be allocated for family. Unref after usage

source

fn rtcp_socket(&self, family: SocketFamily) -> Option<Socket>

Get the RTCP socket from self for a family.

self must be joined to a bin.

§family

the socket family

§Returns

the RTCP socket or None if no socket could be allocated for family. Unref after usage

source

fn rtp_multicast_socket(&self, family: SocketFamily) -> Option<Socket>

Get the multicast RTP socket from self for a family.

§family

the socket family

§Returns

the multicast RTP socket or None if no

socket could be allocated for family. Unref after usage

source

fn rtp_socket(&self, family: SocketFamily) -> Option<Socket>

Get the RTP socket from self for a family.

self must be joined to a bin.

§family

the socket family

§Returns

the RTP socket or None if no socket could be allocated for family. Unref after usage

source

fn rtpinfo(&self) -> Option<(u32, u32, u32, Option<ClockTime>)>

Retrieve the current rtptime, seq and running-time. This is used to construct a RTPInfo reply header.

§Returns

true when rtptime, seq and running-time could be determined.

§rtptime

result RTP timestamp

§seq

result RTP seqnum

§clock_rate

the clock rate

§running_time

result running-time

source

fn rtpsession(&self) -> Option<Object>

Get the RTP session of this stream.

§Returns

The RTP session of this stream. Unref after usage.

source

fn sinkpad(&self) -> Option<Pad>

Get the sinkpad associated with self.

§Returns

the sinkpad. Unref after usage.

source

fn srcpad(&self) -> Option<Pad>

Get the srcpad associated with self.

§Returns

the srcpad. Unref after usage.

source

fn srtp_encoder(&self) -> Option<Element>

Get the SRTP encoder for this stream.

§Returns

The SRTP encoder for this stream. Unref after usage.

source

fn ssrc(&self) -> u32

Get the SSRC used by the RTP session of this stream. This function can only be called when self has been joined.

§Returns
§ssrc

result ssrc

source

fn is_ulpfec_enabled(&self) -> bool

source

fn ulpfec_percentage(&self) -> u32

§Returns

the amount of redundancy applied when creating ULPFEC protection packets.

source

fn ulpfec_pt(&self) -> u32

§Returns

the payload type used for ULPFEC protection packets

source

fn handle_keymgmt(&self, keymgmt: &str) -> bool

Parse and handle a KeyMgmt header.

§keymgmt

a keymgmt header

source

fn has_control(&self, control: Option<&str>) -> bool

Check if self has the control string control.

§control

a control string

§Returns

true is self has control as the control string

source

fn is_bind_mcast_address(&self) -> bool

Check if multicast sockets are configured to be bound to multicast addresses.

§Returns

true if multicast sockets are configured to be bound to multicast addresses.

source

fn is_blocking(&self) -> bool

Check if self is blocking on a gst::Buffer.

§Returns

true if self is blocking

source

fn is_client_side(&self) -> bool

See set_client_side()

§Returns

TRUE if this RTSPStream is client-side.

source

fn is_complete(&self) -> bool

Checks whether the stream is complete, contains the receiver and the sender parts. As the stream contains sink(s) element(s), it’s possible to perform seek operations on it.

§Returns

true if the stream contains at least one sink element.

source

fn is_receiver(&self) -> bool

Checks whether the stream is a receiver.

§Returns

true if the stream is a receiver and false otherwise.

source

fn is_sender(&self) -> bool

Checks whether the stream is a sender.

§Returns

true if the stream is a sender and false otherwise.

source

fn join_bin( &self, bin: &impl IsA<Bin>, rtpbin: &impl IsA<Element>, state: State, ) -> Result<(), BoolError>

Join the gst::Bin bin that contains the element rtpbin.

self will link to rtpbin, which must be inside bin. The elements added to bin will be set to the state given in state.

§bin

a gst::Bin to join

§rtpbin

a rtpbin element in bin

§state

the target state of the new elements

§Returns

true on success.

source

fn leave_bin( &self, bin: &impl IsA<Bin>, rtpbin: &impl IsA<Element>, ) -> Result<(), BoolError>

Remove the elements of self from bin.

§bin

a gst::Bin

§rtpbin

a rtpbin gst::Element

§Returns

true on success.

source

fn recv_rtcp(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError>

Handle an RTCP buffer for the stream. This method is usually called when a message has been received from a client using the TCP transport.

This function takes ownership of buffer.

§buffer

a gst::Buffer

§Returns

a GstFlowReturn.

source

fn recv_rtp(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError>

Handle an RTP buffer for the stream. This method is usually called when a message has been received from a client using the TCP transport.

This function takes ownership of buffer.

§buffer

a gst::Buffer

§Returns

a GstFlowReturn.

source

fn remove_transport( &self, trans: &impl IsA<RTSPStreamTransport>, ) -> Result<(), BoolError>

Remove the transport in trans from self. The media of self will not be sent to the values configured in trans.

self must be joined to a bin.

trans must contain a valid GstRTSPTransport.

§trans

a RTSPStreamTransport

§Returns

true if trans was removed

source

fn request_aux_receiver(&self, sessid: u32) -> Option<Element>

Creating a rtxreceive bin

§sessid

the session id

§Returns

a gst::Element.

source

fn request_aux_sender(&self, sessid: u32) -> Option<Element>

Creating a rtxsend bin

§sessid

the session id

§Returns

a gst::Element.

source

fn request_ulpfec_decoder( &self, rtpbin: &impl IsA<Element>, sessid: u32, ) -> Option<Element>

Creating a rtpulpfecdec element

§Returns

a gst::Element.

source

fn request_ulpfec_encoder(&self, sessid: u32) -> Option<Element>

Creating a rtpulpfecenc element

§Returns

a gst::Element.

source

fn reserve_address( &self, address: &str, port: u32, n_ports: u32, ttl: u32, ) -> Option<RTSPAddress>

Reserve address and port as the address and port of self. The original RTSPAddress is cached and copy is returned, so freeing the return value won’t release the address from the pool.

§address

an address

§port

a port

§n_ports

n_ports

§ttl

a TTL

§Returns

the RTSPAddress of self or None when the address could not be reserved. gst_rtsp_address_free() after usage.

source

fn seekable(&self) -> bool

Checks whether the individual self is seekable.

§Returns

true if self is seekable, else false.

source

fn set_address_pool(&self, pool: Option<&impl IsA<RTSPAddressPool>>)

configure pool to be used as the address pool of self.

§pool

a RTSPAddressPool

source

fn set_bind_mcast_address(&self, bind_mcast_addr: bool)

Decide whether the multicast socket should be bound to a multicast address or INADDR_ANY.

§bind_mcast_addr

the new value

source

fn set_blocked(&self, blocked: bool) -> Result<(), BoolError>

Blocks or unblocks the dataflow on self.

§blocked

boolean indicating we should block or unblock

§Returns

true on success

source

fn set_buffer_size(&self, size: u32)

Set the size of the UDP transmission buffer (in bytes) Needs to be set before the stream is joined to a bin.

§size

the buffer size

source

fn set_client_side(&self, client_side: bool)

Sets the RTSPStream as a ‘client side’ stream - used for sending streams to an RTSP server via RECORD. This has the practical effect of changing which UDP port numbers are used when setting up the local side of the stream sending to be either the ‘server’ or ‘client’ pair of a configured UDP transport.

§client_side

TRUE if this RTSPStream is running on the ‘client’ side of an RTSP connection.

source

fn set_control(&self, control: Option<&str>)

Set the control string in self.

§control

a control string

source

fn set_dscp_qos(&self, dscp_qos: i32)

Configure the dscp qos of the outgoing sockets to dscp_qos.

§dscp_qos

a new dscp qos value (0-63, or -1 to disable)

source

fn set_max_mcast_ttl(&self, ttl: u32) -> bool

Set the maximum time-to-live value of outgoing multicast packets.

§ttl

the new multicast ttl value

§Returns

true if the requested ttl has been set successfully.

source

fn set_mtu(&self, mtu: u32)

Configure the mtu in the payloader of self to mtu.

§mtu

a new MTU

source

fn set_multicast_iface(&self, multicast_iface: Option<&str>)

configure multicast_iface to be used for self.

§multicast_iface

a multicast interface name

source

fn set_profiles(&self, profiles: RTSPProfile)

Configure the allowed profiles for self.

§profiles

the new profiles

source

fn set_protocols(&self, protocols: RTSPLowerTrans)

Configure the allowed lower transport for self.

§protocols

the new flags

source

fn set_pt_map(&self, pt: u32, caps: &Caps)

Configure a pt map between pt and caps.

§pt

the pt

§caps

a gst::Caps

source

fn set_publish_clock_mode(&self, mode: RTSPPublishClockMode)

Sets if and how the stream clock should be published according to RFC7273.

§mode

the clock publish mode

source

fn set_rate_control(&self, enabled: bool)

Define whether self will follow the Rate-Control=no behaviour as specified in the ONVIF replay spec.

source

fn set_retransmission_pt(&self, rtx_pt: u32)

Set the payload type (pt) for retransmission of this stream.

§rtx_pt

a guint

source

fn set_retransmission_time(&self, time: impl Into<Option<ClockTime>>)

Set the amount of time to store retransmission packets.

§time

a GstClockTime

source

fn set_seqnum_offset(&self, seqnum: u16)

source

fn set_ulpfec_percentage(&self, percentage: u32)

Sets the amount of redundancy to apply when creating ULPFEC protection packets.

source

fn set_ulpfec_pt(&self, pt: u32)

Set the payload type to be used for ULPFEC protection packets

source

fn transport_filter( &self, func: Option<&mut dyn FnMut(&RTSPStream, &RTSPStreamTransport) -> RTSPFilterResult>, ) -> Vec<RTSPStreamTransport>

Call func for each transport managed by self. The result value of func determines what happens to the transport. func will be called with self locked so no further actions on self can be performed from func.

If func returns RTSPFilterResult::Remove, the transport will be removed from self.

If func returns RTSPFilterResult::Keep, the transport will remain in self.

If func returns RTSPFilterResult::Ref, the transport will remain in self but will also be added with an additional ref to the result GList of this function..

When func is None, RTSPFilterResult::Ref will be assumed for each transport.

§func

a callback

§Returns

a GList with all transports for which func returned RTSPFilterResult::Ref. After usage, each element in the GList should be unreffed before the list is freed.

source

fn unblock_linked(&self) -> Result<(), BoolError>

source

fn unblock_rtcp(&self)

Remove blocking probe from the RTCP source. When creating an UDP source for RTCP it is initially blocked until this function is called. This functions should be called once the pipeline is ready for handling RTCP packets.

source

fn update_crypto( &self, ssrc: u32, crypto: Option<&Caps>, ) -> Result<(), BoolError>

Update the new crypto information for ssrc in self. If information for ssrc did not exist, it will be added. If information for ssrc existed, it will be replaced. If crypto is None, it will be removed from self.

§ssrc

the SSRC

§crypto

a gst::Caps with crypto info

§Returns

true if crypto could be updated

source

fn verify_mcast_ttl(&self, ttl: u32) -> bool

Check if the requested multicast ttl value is allowed.

§ttl

a requested multicast ttl

§Returns

TRUE if the requested ttl value is allowed.

source

fn connect_new_rtcp_encoder<F: Fn(&Self, &Element) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId

source

fn connect_new_rtp_encoder<F: Fn(&Self, &Element) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId

source

fn connect_new_rtp_rtcp_decoder<F: Fn(&Self, &Element) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId

source

fn connect_control_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId

source

fn connect_profiles_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId

source

fn connect_protocols_notify<F: Fn(&Self) + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId

Object Safety§

This trait is not object safe.

Implementors§