forked from Mirrors/freeswitch
222 lines
8.8 KiB
XML
222 lines
8.8 KiB
XML
<configuration name="portaudio.conf" description="Soundcard Endpoint">
|
|
<settings>
|
|
<!-- indev, outdev, ringdev:
|
|
partial case sensitive string match on something in the name
|
|
or the device number prefixed with # eg "#1" (or blank for default) -->
|
|
|
|
<!-- device to use for input -->
|
|
<param name="indev" value=""/>
|
|
<!-- device to use for output -->
|
|
<param name="outdev" value=""/>
|
|
|
|
<!--device to use for inbound ring -->
|
|
<!--<param name="ringdev" value=""/>-->
|
|
<!--File to play as the ring sound -->
|
|
<!--<param name="ring-file" value="/sounds/ring.wav"/>-->
|
|
<!--Number of seconds to pause between rings -->
|
|
<!--<param name="ring-interval" value="5"/>-->
|
|
<!--Enable or Disable dual_streams-->
|
|
<!--<param name="dual-streams" value="true"/>-->
|
|
|
|
<!--file to play when calls are on hold-->
|
|
<param name="hold-file" value="$${hold_music}"/>
|
|
<!--Timer to use for hold music (i'd leave this one commented)-->
|
|
<!--<param name="timer-name" value="soft"/>-->
|
|
|
|
<!--Default dialplan and caller-id info -->
|
|
<param name="dialplan" value="XML"/>
|
|
<param name="cid-name" value="$${outbound_caller_name}"/>
|
|
<param name="cid-num" value="$${outbound_caller_id}"/>
|
|
|
|
<!--audio sample rate and interval -->
|
|
<param name="sample-rate" value="48000"/>
|
|
<param name="codec-ms" value="20"/>
|
|
|
|
<!--uncomment the following line to make mod_portaudio fail to load if it fails to find a device-->
|
|
<!-- <param name="unload-on-device-fail" value="true"/> -->
|
|
</settings>
|
|
|
|
<!--
|
|
mod_portaudio "streams"
|
|
|
|
The portaudio streams were introduced to support multiple devices and multiple channels in mod_portaudio.
|
|
For example, if you have a sound card that supports multiple channels or have multiple sound cards and you
|
|
want to use them at the same time, you can do it configuring streams and endpoints here.
|
|
|
|
A "stream" is just a logical container for some settings required by portaudio in order to stream audio and
|
|
define a friendly name for that configuration. Streams in itself do not do anything else than contain configs.
|
|
Once you have your streams defined you can proceed to define "endpoints". Go to the "<endpoints>" section
|
|
for more information on endpoints.
|
|
|
|
You can use the command "pa shstreams" (portaudio shared streams) to show the configured streams.
|
|
-->
|
|
<streams>
|
|
<!--
|
|
In this example we define 2 streams, one for a usb audio device and another for the usual Mac defaults
|
|
The name="" attribute in the <stream> tag must uniquely identify the stream configuration and can be
|
|
later used when creating endpoints in the "instream" and "outstream" parameters of the endpoint.
|
|
-->
|
|
|
|
<!-- This sample "usb1" configuration was tested with a USB Griffin iMic device -->
|
|
<stream name="usb1">
|
|
<!--
|
|
Which device to use for input in this stream
|
|
The value for this parameter must be either in the form '#devno',
|
|
for example '#2' for device number 2, or 'device-name', like 'iMic USB audio system'
|
|
The output of command "pa devlist" will show you device names and numbers as enumerated
|
|
by portaudio.
|
|
-->
|
|
<param name="indev" value="#2" />
|
|
|
|
<!--
|
|
Same as the indev but for output. In this case the device is capable of input and output
|
|
Some devices are capable of input only or output only (see the default example)
|
|
-->
|
|
<param name="outdev" value="#2" />
|
|
|
|
<!-- The sample rate to use for this stream -->
|
|
<param name="sample-rate" value="48000" />
|
|
|
|
<!--
|
|
Size of the packets in milliseconds. The smaller the number the less latency you'll have
|
|
The minimum value is 10ms
|
|
-->
|
|
<param name="codec-ms" value="10" />
|
|
|
|
<!--
|
|
How many channels to open for this stream.
|
|
If you're device is stereo, you can choose 2 here. However, bear in mind that then
|
|
your left and right channels will be separated and when creating endpoints you will have
|
|
to either choose the left or right channel. This may or may not be what you want. This separation
|
|
means that you can have 2 separate FreeSWITCH calls, listening to one of them in your left channel
|
|
and the other in the right chanel.
|
|
-->
|
|
<param name="channels" value="2" />
|
|
</stream>
|
|
|
|
<!-- This default stream was tested using the default Macbook Pro input/output devices -->
|
|
<stream name="default">
|
|
<!-- The default system input device -->
|
|
<param name="indev" value="#0" />
|
|
<!-- The default system output device -->
|
|
<param name="outdev" value="#1" />
|
|
<!-- CD quality sampling rate ftw -->
|
|
<param name="sample-rate" value="48000" />
|
|
<!-- Low latency -->
|
|
<param name="codec-ms" value="10" />
|
|
<!-- Choosing 1 channel allows to hear in both left-right channel when using a headset -->
|
|
<param name="channels" value="1" />
|
|
</stream>
|
|
</streams>
|
|
|
|
<!--
|
|
mod_portaudio "endpoints"
|
|
|
|
Endpoints is a way to define the input and output that a given portaudio channel will use.
|
|
There is a lot of flexibility. You can create endpoints which are "send-only", which means
|
|
audio will be read from FreeSWITCH and sent down to the provided stream, but no audio will
|
|
be read from that stream and only silence provided back to FreeSWITCH.
|
|
|
|
send-only endpoint:
|
|
(FS CORE) ->-> audio ->-> sound-card-x
|
|
|
|
You can also create a read-only endpoint.
|
|
|
|
read-only-endpoint:
|
|
(FS CORE) <-<- audio <-<- sound-card-x
|
|
|
|
And of course you can create a bidirectional endpoint:
|
|
bidirectional-endpoint:
|
|
(FS CORE) <-> audio <-> sound-card-x
|
|
|
|
You can also define a stream which uses only the left or only the right channel of a given device stream.
|
|
This means you can have 2 SIP calls connected to the same device haring one call in your left ear and
|
|
the other call to your right ear :-)
|
|
|
|
The name="parameter" of the endpoint allows you to use it in the FreeSWITCH dial plan to dial, ie:
|
|
|
|
<action application="bridge" data="portaudio/endpoint/usb1out-left" />
|
|
|
|
You can use the command "pa endpoints" to show the configured endpoints.
|
|
-->
|
|
<endpoints>
|
|
|
|
<!--
|
|
An endpoint is a handle name to refer to a configuration that determines where to read media from
|
|
and write media to. The endpoint can use any input/output stream combination for that purpose as
|
|
long as the streams match the sampling rate and codec-ms (see <streams> XML tag).
|
|
You can also omit the instream or the outstream parameter (but obviously not both).
|
|
-->
|
|
|
|
<!--
|
|
Configuration for a "default" bidirectional endpoint that uses the default stream defined previously in
|
|
the <streams> section.
|
|
-->
|
|
<endpoint name="default">
|
|
<!--
|
|
The instream, outstream is the name of the stream and channel to use. The stream
|
|
name is the same you configured in the <streams> section. This parameters follow
|
|
the syntax <stream-name>:<channel index>. You can omit either the outstream
|
|
or the instream, but not both! The channel index is zero-based and must be consistent
|
|
with the number of channels available for that stream (as configured in the <stream> section).
|
|
You cannot use index 1 if you chose channels=1 in the stream configuration.
|
|
-->
|
|
<param name="instream" value="default:0" />
|
|
<param name="outstream" value="default:0" />
|
|
</endpoint>
|
|
|
|
<!--
|
|
This endpoint uses the USB stream defined previously in the <streams> section and
|
|
is 'send-only' or 'output-only' and uses the channel index 0 (left channel in a stereo device)
|
|
-->
|
|
<endpoint name="usb1out-left">
|
|
<param name="outstream" value="usb1:0" />
|
|
</endpoint>
|
|
|
|
<!--
|
|
This endpoint uses the USB stream defined previously in the <streams> section and
|
|
is 'send-only' or 'output-only' and uses the channel index 1 (right channel in a stereo device)
|
|
-->
|
|
<endpoint name="usb1out-right">
|
|
<param name="outstream" value="usb1:1" />
|
|
</endpoint>
|
|
|
|
<!--
|
|
This endpoint uses the USB stream defined previously in the <streams> section and
|
|
is 'receive-only' or 'input-only' and uses the channel index 0 (left channel in a stereo device)
|
|
-->
|
|
<endpoint name="usb1in-left">
|
|
<param name="instream" value="usb1:0" />
|
|
</endpoint>
|
|
|
|
<!--
|
|
This endpoint uses the USB stream defined previously in the <streams> section and
|
|
is 'receive-only' or 'input-only' and uses the channel index 1 (right channel in a stereo device)
|
|
-->
|
|
<endpoint name="usb1in-right">
|
|
<param name="instream" value="usb1:1" />
|
|
</endpoint>
|
|
|
|
<!--
|
|
This endpoint uses the USB stream defined previously in the <streams> section and
|
|
is 'bidirectional' or 'send-receive' and uses the channel index 0 (left channel in a stereo device)
|
|
-->
|
|
<endpoint name="usb1-left">
|
|
<param name="instream" value="usb1:0" />
|
|
<param name="outstream" value="usb1:0" />
|
|
</endpoint>
|
|
|
|
<!--
|
|
This endpoint uses the USB stream defined previously in the <streams> section and
|
|
is 'bidirectional' or 'send-receive' and uses the channel index 1 (right channel in a stereo device)
|
|
-->
|
|
<endpoint name="usb1-right">
|
|
<param name="instream" value="usb1:1" />
|
|
<param name="outstream" value="usb1:1" />
|
|
</endpoint>
|
|
|
|
</endpoints>
|
|
|
|
</configuration>
|
|
|