[][src]Trait gstreamer_rtsp_server::prelude::RTSPStreamExt

pub trait RTSPStreamExt: 'static {
    fn add_multicast_client_address(
        &self,
        destination: &str,
        rtp_port: u32,
        rtcp_port: u32,
        family: SocketFamily
    ) -> bool;
fn add_transport<P: IsA<RTSPStreamTransport>>(
        &self,
        trans: &P
    ) -> Result<(), BoolError>;
fn get_address_pool(&self) -> Option<RTSPAddressPool>;
fn get_buffer_size(&self) -> u32;
fn get_caps(&self) -> Option<Caps>;
fn get_control(&self) -> Option<GString>;
fn get_current_seqnum(&self) -> u16;
fn get_dscp_qos(&self) -> i32;
fn get_index(&self) -> u32;
fn get_joined_bin(&self) -> Option<Bin>;
fn get_max_mcast_ttl(&self) -> u32;
fn get_mtu(&self) -> u32;
fn get_multicast_address(&self, family: SocketFamily) -> Option<RTSPAddress>;
fn get_multicast_client_addresses(&self) -> Option<GString>;
fn get_multicast_iface(&self) -> Option<GString>;
fn get_profiles(&self) -> RTSPProfile;
fn get_protocols(&self) -> RTSPLowerTrans;
fn get_pt(&self) -> u32;
fn get_publish_clock_mode(&self) -> RTSPPublishClockMode;
fn get_rate_control(&self) -> bool;
fn get_rates(&self) -> Option<(f64, f64)>;
fn get_retransmission_pt(&self) -> u32;
fn get_retransmission_time(&self) -> ClockTime;
fn get_rtcp_multicast_socket(&self, family: SocketFamily) -> Option<Socket>;
fn get_rtcp_socket(&self, family: SocketFamily) -> Option<Socket>;
fn get_rtp_multicast_socket(&self, family: SocketFamily) -> Option<Socket>;
fn get_rtp_socket(&self, family: SocketFamily) -> Option<Socket>;
fn get_rtpinfo(&self) -> Option<(u32, u32, u32, ClockTime)>;
fn get_rtpsession(&self) -> Option<Object>;
fn get_sinkpad(&self) -> Option<Pad>;
fn get_srcpad(&self) -> Option<Pad>;
fn get_srtp_encoder(&self) -> Option<Element>;
fn get_ssrc(&self) -> u32;
fn get_ulpfec_enabled(&self) -> bool;
fn get_ulpfec_percentage(&self) -> u32;
fn get_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<P: IsA<Bin>, Q: IsA<Element>>(
        &self,
        bin: &P,
        rtpbin: &Q,
        state: State
    ) -> Result<(), BoolError>;
fn leave_bin<P: IsA<Bin>, Q: IsA<Element>>(
        &self,
        bin: &P,
        rtpbin: &Q
    ) -> Result<(), BoolError>;
fn remove_transport<P: IsA<RTSPStreamTransport>>(
        &self,
        trans: &P
    ) -> Result<(), BoolError>;
fn request_aux_receiver(&self, sessid: u32) -> Option<Element>;
fn request_aux_sender(&self, sessid: u32) -> Option<Element>;
fn request_ulpfec_decoder<P: IsA<Element>>(
        &self,
        rtpbin: &P,
        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<P: IsA<RTSPAddressPool>>(&self, pool: Option<&P>);
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: 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 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_property_control_notify<F: Fn(&Self) + Send + Sync + 'static>(
        &self,
        f: F
    ) -> SignalHandlerId;
fn connect_property_profiles_notify<F: Fn(&Self) + Send + Sync + 'static>(
        &self,
        f: F
    ) -> SignalHandlerId;
fn connect_property_protocols_notify<F: Fn(&Self) + Send + Sync + 'static>(
        &self,
        f: F
    ) -> SignalHandlerId; }

Trait containing all RTSPStream methods.

Implementors

RTSPStream

Required methods

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.

Feature: v1_16

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.

fn add_transport<P: IsA<RTSPStreamTransport>>(
    &self,
    trans: &P
) -> 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 gst_rtsp::RTSPTransport.

trans

a RTSPStreamTransport

Returns

true if trans was added

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

Get the RTSPAddressPool used as the address pool of self.

Returns

the RTSPAddressPool of self. gobject::ObjectExt::unref after usage.

fn get_buffer_size(&self) -> u32

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

Returns

the size of the UDP TX buffer

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

Retrieve the current caps of self.

Returns

the gst::Caps of self. use gst::Caps::unref after usage.

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

Get the control string to identify this stream.

Returns

the control string. g_free after usage.

fn get_current_seqnum(&self) -> u16

fn get_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.

fn get_index(&self) -> u32

Get the stream index.

Returns

the stream index.

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

Get the previous joined bin with RTSPStreamExt::join_bin or NULL.

Returns

the joined bin or NULL.

fn get_max_mcast_ttl(&self) -> u32

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

Feature: v1_16

Returns

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

fn get_mtu(&self) -> u32

Get the configured MTU in the payloader of self.

Returns

the MTU of the payloader.

fn get_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. RTSPAddress::free after usage.

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

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

Feature: v1_16

Returns

A comma separated list of host:port pairs with destinations

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

Get the multicast interface used for self.

Returns

the multicast interface for self. g_free after usage.

fn get_profiles(&self) -> RTSPProfile

Get the allowed profiles of self.

Returns

a gst_rtsp::RTSPProfile

fn get_protocols(&self) -> RTSPLowerTrans

Get the allowed protocols of self.

Returns

a gst_rtsp::RTSPLowerTrans

fn get_pt(&self) -> u32

Get the stream payload type.

Returns

the stream payload type.

fn get_publish_clock_mode(&self) -> RTSPPublishClockMode

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

Returns

The GstRTSPPublishClockMode

fn get_rate_control(&self) -> bool

Feature: v1_18

Returns

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

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

Retrieve the current rate and/or applied_rate.

Feature: v1_18

rate

the configured rate

applied_rate

the configured applied_rate

Returns

true if rate and/or applied_rate could be determined.

fn get_retransmission_pt(&self) -> u32

Get the payload-type used for retransmission of this stream

Returns

The retransmission PT.

fn get_retransmission_time(&self) -> ClockTime

Get the amount of time to store retransmission data.

Returns

the amount of time to store retransmission data.

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

Get the multicast RTCP socket from self for a family.

Feature: v1_14

family

the socket family

Returns

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

fn get_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

fn get_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

fn get_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

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

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

rtptime

result RTP timestamp

seq

result RTP seqnum

clock_rate

the clock rate

running_time

result running-time

Returns

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

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

Get the RTP session of this stream.

Returns

The RTP session of this stream. Unref after usage.

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

Get the sinkpad associated with self.

Returns

the sinkpad. Unref after usage.

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

Get the srcpad associated with self.

Returns

the srcpad. Unref after usage.

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

Get the SRTP encoder for this stream.

Returns

The SRTP encoder for this stream. Unref after usage.

fn get_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.

ssrc

result ssrc

fn get_ulpfec_enabled(&self) -> bool

fn get_ulpfec_percentage(&self) -> u32

Feature: v1_16

Returns

the amount of redundancy applied when creating ULPFEC protection packets.

fn get_ulpfec_pt(&self) -> u32

Feature: v1_16

Returns

the payload type used for ULPFEC protection packets

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

Parse and handle a KeyMgmt header.

Feature: v1_16

keymgmt

a keymgmt header

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

fn is_bind_mcast_address(&self) -> bool

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

Feature: v1_16

Returns

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

fn is_blocking(&self) -> bool

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

Returns

true if self is blocking

fn is_client_side(&self) -> bool

See RTSPStreamExt::set_client_side

Returns

TRUE if this RTSPStream is client-side.

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.

Feature: v1_14

Returns

true if the stream contains at least one sink element.

fn is_receiver(&self) -> bool

Checks whether the stream is a receiver.

Feature: v1_14

Returns

true if the stream is a receiver and false otherwise.

fn is_sender(&self) -> bool

Checks whether the stream is a sender.

Feature: v1_14

Returns

true if the stream is a sender and false otherwise.

fn join_bin<P: IsA<Bin>, Q: IsA<Element>>(
    &self,
    bin: &P,
    rtpbin: &Q,
    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.

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

Remove the elements of self from bin.

bin

a gst::Bin

rtpbin

a rtpbin gst::Element

Returns

true on success.

fn remove_transport<P: IsA<RTSPStreamTransport>>(
    &self,
    trans: &P
) -> 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 gst_rtsp::RTSPTransport.

trans

a RTSPStreamTransport

Returns

true if trans was removed

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

Creating a rtxreceive bin

Feature: v1_16

sessid

the session id

Returns

a gst::Element.

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

Creating a rtxsend bin

sessid

the session id

Returns

a gst::Element.

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

Creating a rtpulpfecdec element

Feature: v1_16

Returns

a gst::Element.

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

Creating a rtpulpfecenc element

Feature: v1_16

Returns

a gst::Element.

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. RTSPAddress::free after usage.

fn seekable(&self) -> bool

Checks whether the individual self is seekable.

Feature: v1_14

Returns

true if self is seekable, else false.

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

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

pool

a RTSPAddressPool

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.

Feature: v1_16

bind_mcast_addr

the new value

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

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

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.

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

Set the control string in self.

control

a control string

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)

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

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

Feature: v1_16

ttl

the new multicast ttl value

Returns

true if the requested ttl has been set successfully.

fn set_mtu(&self, mtu: u32)

Configure the mtu in the payloader of self to mtu.

mtu

a new MTU

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

configure multicast_iface to be used for self.

multicast_iface

a multicast interface name

fn set_profiles(&self, profiles: RTSPProfile)

Configure the allowed profiles for self.

profiles

the new profiles

fn set_protocols(&self, protocols: RTSPLowerTrans)

Configure the allowed lower transport for self.

protocols

the new flags

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

Configure a pt map between pt and caps.

pt

the pt

caps

a gst::Caps

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

fn set_rate_control(&self, enabled: bool)

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

Feature: v1_18

fn set_retransmission_pt(&self, rtx_pt: u32)

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

rtx_pt

a guint

fn set_retransmission_time(&self, time: ClockTime)

Set the amount of time to store retransmission packets.

time

a gst::ClockTime

fn set_seqnum_offset(&self, seqnum: u16)

fn set_ulpfec_percentage(&self, percentage: u32)

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

Feature: v1_16

fn set_ulpfec_pt(&self, pt: u32)

Set the payload type to be used for ULPFEC protection packets

Feature: v1_16

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 glib::List of this function..

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

func

a callback

user_data

user data passed to func

Returns

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

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

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

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

Check if the requested multicast ttl value is allowed.

Feature: v1_16

ttl

a requested multicast ttl

Returns

TRUE if the requested ttl value is allowed.

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_property_control_notify<F: Fn(&Self) + Send + Sync + 'static>(
    &self,
    f: F
) -> SignalHandlerId

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

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

Loading content...

Implementors

impl<O: IsA<RTSPStream>> RTSPStreamExt for O[src]

Loading content...