initial reworking for mod_portaudio multiple enpoint support
This commit is contained in:
parent
8cb2bad004
commit
df43e51ca5
|
@ -5,12 +5,14 @@
|
||||||
or the device number prefixed with # eg "#1" (or blank for default) -->
|
or the device number prefixed with # eg "#1" (or blank for default) -->
|
||||||
|
|
||||||
<!-- device to use for input -->
|
<!-- device to use for input -->
|
||||||
<param name="indev" value=""/>
|
<param name="indev" value="Built-in Input"/>
|
||||||
<!-- device to use for output -->
|
<!-- device to use for output -->
|
||||||
<param name="outdev" value=""/>
|
<!--<param name="outdev" value="Built-in Output"/>-->
|
||||||
|
<param name="outdev" value="#2"/>
|
||||||
|
|
||||||
<!--device to use for inbound ring -->
|
<!--device to use for inbound ring -->
|
||||||
<!--<param name="ringdev" value=""/>-->
|
<param name="ringdev" value="Built-in Output"/>
|
||||||
|
|
||||||
<!--File to play as the ring sound -->
|
<!--File to play as the ring sound -->
|
||||||
<!--<param name="ring-file" value="/sounds/ring.wav"/>-->
|
<!--<param name="ring-file" value="/sounds/ring.wav"/>-->
|
||||||
<!--Number of seconds to pause between rings -->
|
<!--Number of seconds to pause between rings -->
|
||||||
|
@ -29,7 +31,30 @@
|
||||||
<param name="cid-num" value="$${outbound_caller_id}"/>
|
<param name="cid-num" value="$${outbound_caller_id}"/>
|
||||||
|
|
||||||
<!--audio sample rate and interval -->
|
<!--audio sample rate and interval -->
|
||||||
<param name="sample-rate" value="48000"/>
|
<!--<param name="sample-rate" value="48000"/>-->
|
||||||
|
<param name="sample-rate" value="8000"/>
|
||||||
<param name="codec-ms" value="20"/>
|
<param name="codec-ms" value="20"/>
|
||||||
</settings>
|
</settings>
|
||||||
|
|
||||||
|
<shared-devices>
|
||||||
|
<device friendly-name="usb1" device="#2">
|
||||||
|
<param name="channels" value="2" />
|
||||||
|
<param name="sample-rate" value="8000" />
|
||||||
|
<param name="codec-ms" value="20" />
|
||||||
|
</device>
|
||||||
|
</shared-devices>
|
||||||
|
|
||||||
|
<endpoints>
|
||||||
|
|
||||||
|
<endpoint name="usbout-left">
|
||||||
|
<param name="outdev" value="usb1:0" />
|
||||||
|
</endpoint>
|
||||||
|
|
||||||
|
<endpoint name="usbout-right">
|
||||||
|
<param name="outdev" value="usb1:1" />
|
||||||
|
</endpoint>
|
||||||
|
|
||||||
|
</endpoints>
|
||||||
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
||||||
|
|
|
@ -106,6 +106,34 @@ struct audio_stream {
|
||||||
};
|
};
|
||||||
typedef struct audio_stream audio_stream_t;
|
typedef struct audio_stream audio_stream_t;
|
||||||
|
|
||||||
|
typedef struct _pa_shared_device {
|
||||||
|
/*! Sampling rate */
|
||||||
|
int sample_rate;
|
||||||
|
/*! */
|
||||||
|
int codec_ms;
|
||||||
|
/*! Device number */
|
||||||
|
int devno;
|
||||||
|
/*! Running stream (if a stream is already running for devno) */
|
||||||
|
audio_stream_t *stream;
|
||||||
|
/*! The actual portaudio device number */
|
||||||
|
/*! It's a shared device after all */
|
||||||
|
switch_mutex_t *mutex;
|
||||||
|
} pa_shared_device_t;
|
||||||
|
|
||||||
|
typedef struct _pa_endpoint {
|
||||||
|
/*! Input device for this endpoint */
|
||||||
|
pa_shared_device_t *indev;
|
||||||
|
|
||||||
|
/*! Output device for this endpoint */
|
||||||
|
pa_shared_device_t *outdev;
|
||||||
|
|
||||||
|
/*! Channel index within the input device stream */
|
||||||
|
int inchan;
|
||||||
|
|
||||||
|
/*! Channel index within the input device stream */
|
||||||
|
int outchan;
|
||||||
|
} pa_endpoint_t;
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
int debug;
|
int debug;
|
||||||
int port;
|
int port;
|
||||||
|
|
|
@ -56,17 +56,19 @@ extern "C" {
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
typedef struct {
|
#define MAX_IO_CHANNELS 2
|
||||||
PaUtilRingBuffer inFIFO;
|
typedef struct {
|
||||||
PaUtilRingBuffer outFIFO;
|
PaStream *istream;
|
||||||
PaStream *istream;
|
PaStream *ostream;
|
||||||
PaStream *ostream;
|
PaStream *iostream;
|
||||||
PaStream *iostream;
|
int bytesPerFrame;
|
||||||
int bytesPerFrame;
|
int do_dual;
|
||||||
int do_dual;
|
int has_in;
|
||||||
int has_in;
|
int has_out;
|
||||||
int has_out;
|
PaUtilRingBuffer inFIFOs[2]
|
||||||
} PABLIO_Stream;
|
PaUtilRingBuffer outFIFOs[2]
|
||||||
|
int channelCount;
|
||||||
|
} PABLIO_Stream;
|
||||||
|
|
||||||
/* Values for flags for OpenAudioStream(). */
|
/* Values for flags for OpenAudioStream(). */
|
||||||
#define PABLIO_READ (1<<0)
|
#define PABLIO_READ (1<<0)
|
||||||
|
|
Loading…
Reference in New Issue