.TH "libpipewire-module-rtp-sap" 7 "1.6.7" "PipeWire" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libpipewire-module-rtp-sap \- SAP Announce and create RTP streams 
.SH DESCRIPTION
.PP
The \fRrtp-sap\fP module announces RTP streams that match the rules with the announce-stream action\&.

.PP
It will create source RTP streams that are announced with SAP when they match the rule with the create-stream action\&.

.PP
If no stream\&.rules are given, it will announce all streams with sess\&.sap\&.announce = true and it will create a receiver for all announced streams\&.

.PP
.SH "MODULE NAME"
.PP

.PP
\fRlibpipewire-module-rtp-sap\fP

.PP
.SH "MODULE OPTIONS"
.PP

.PP
Options specific to the behavior of this module

.PP
.IP "\(bu" 2
\fRlocal\&.ifname = <str>\fP: interface name to use
.IP "\(bu" 2
\fRsap\&.ip = <str>\fP: IP address of the SAP messages, default "224\&.0\&.0\&.56"
.IP "\(bu" 2
\fRsap\&.port = <int>\fP: port of the SAP messages, default 9875
.IP "\(bu" 2
\fRsap\&.cleanup\&.sec = <int>\fP: cleanup interval in seconds, default 90 seconds
.IP "\(bu" 2
\fRsource\&.ip =<str>\fP: source IP address, default "0\&.0\&.0\&.0"
.IP "\(bu" 2
\fRnet\&.ttl = <int>\fP: TTL to use, default 1
.IP "\(bu" 2
\fRnet\&.loop = <bool>\fP: loopback multicast, default false
.IP "\(bu" 2
\fRstream\&.rules\fP = <rules>: match rules, use create-stream and announce-stream actions
.IP "\(bu" 2
\fRsap\&.max-sessions = <int>\fP: maximum number of concurrent send/receive sessions to track
.IP "\(bu" 2
\fRsap\&.preamble-extra = [strings]\fP: extra attributes to add to the atomic SDP preamble
.IP "\(bu" 2
\fRsap\&.end-extra = [strings]\fP: extra attributes to add to the end of the SDP message
.PP

.PP
.SH "GENERAL OPTIONS"
.PP

.PP
Options with well-known behavior:

.PP
.IP "\(bu" 2
\fBremote.name\fP
.PP

.PP
.SH "EXAMPLE CONFIGURATION"
.PP

.PP
.PP
.nf
# ~/\&.config/pipewire/pipewire\&.conf\&.d/my\-rtp\-sap\&.conf

context\&.modules = [
{   name = libpipewire\-module\-rtp\-sap
    args = {
        #local\&.ifname = "eth0"
        #sap\&.ip = "224\&.0\&.0\&.56"
        #sap\&.port = 9875
        #sap\&.cleanup\&.sec = 5
        #source\&.ip = "0\&.0\&.0\&.0"
        #net\&.ttl = 1
        #net\&.loop = false
        stream\&.rules = [
            {   matches = [
                    # any of the items in matches needs to match, if one does,
                    # actions are emitted\&.
                    {   # all keys must match the value\&. ! negates\&. ~ starts regex\&.
                        #rtp\&.origin = "wim 3883629975 0 IN IP4 0\&.0\&.0\&.0"
                        #rtp\&.payload = "127"
                        #rtp\&.fmt = "L16/48000/2"
                        #rtp\&.session = "PipeWire RTP Stream on fedora"
                        #rtp\&.ts\-offset = 0
                        #rtp\&.ts\-refclk = "private"
                        sess\&.sap\&.announce = true
                    }
                ]
                actions = {
                    announce\-stream = {
                    }
                }
            }
            {   matches = [
                    {   # all keys must match the value\&. ! negates\&. ~ starts regex\&.
                        #rtp\&.origin = "wim 3883629975 0 IN IP4 0\&.0\&.0\&.0"
                        #rtp\&.payload = "127"
                        #rtp\&.fmt = "L16/48000/2"
                        #rtp\&.session = "PipeWire RTP Stream on fedora"
                        #rtp\&.ts\-offset = 0
                        #rtp\&.ts\-refclk = "private"
                        rtp\&.session = "~\&.*"
                    }
                ]
                actions = {
                    create\-stream = {
                        #sess\&.latency\&.msec = 100
                        #sess\&.ts\-direct = false
                        #target\&.object = ""
                    }
                }
            }
        ]
    }
}
]
.fi
.PP

.PP
\fBSince\fP
.RS 4
0\&.3\&.67 
.RE
.PP


