mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Update chan_console to natively use a 16 kHz sample rate. If it is talking
to an 8 kHz endpoint, then codec_resample will automatically be used to properly resample the audio before sending it to/from chan_console. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@95527 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -67,28 +67,22 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
|||||||
/*!
|
/*!
|
||||||
* \brief The sample rate to request from PortAudio
|
* \brief The sample rate to request from PortAudio
|
||||||
*
|
*
|
||||||
* \note This should be changed to 16000 once there is a translator for going
|
* \todo Make this optional. If this is only going to talk to 8 kHz endpoints,
|
||||||
* between SLINEAR and SLINEAR16. Making it a configuration parameter
|
* then it makes sense to use 8 kHz natively.
|
||||||
* would be even better, but 16 kHz should be the default.
|
|
||||||
*
|
|
||||||
* \note If this changes, NUM_SAMPLES will need to change, as well.
|
|
||||||
*/
|
*/
|
||||||
#define SAMPLE_RATE 8000
|
#define SAMPLE_RATE 16000
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief The number of samples to configure the portaudio stream for
|
* \brief The number of samples to configure the portaudio stream for
|
||||||
*
|
*
|
||||||
* 160 samples (20 ms) is the most common frame size in Asterisk. So, the code
|
* 320 samples (20 ms) is the most common frame size in Asterisk. So, the code
|
||||||
* in this module reads 160 sample frames from the portaudio stream and queues
|
* in this module reads 320 sample frames from the portaudio stream and queues
|
||||||
* them up on the Asterisk channel. Frames of any sizes can be written to a
|
* them up on the Asterisk channel. Frames of any size can be written to a
|
||||||
* portaudio stream, but the portaudio documentation does say that for high
|
* portaudio stream, but the portaudio documentation does say that for high
|
||||||
* performance applications, the data should be written to Pa_WriteStream in
|
* performance applications, the data should be written to Pa_WriteStream in
|
||||||
* the same size as what is used to initialize the stream.
|
* the same size as what is used to initialize the stream.
|
||||||
*
|
|
||||||
* \note This will need to be dynamic once the sample rate can be something
|
|
||||||
* other than 8 kHz.
|
|
||||||
*/
|
*/
|
||||||
#define NUM_SAMPLES 160
|
#define NUM_SAMPLES 320
|
||||||
|
|
||||||
/*! \brief Mono Input */
|
/*! \brief Mono Input */
|
||||||
#define INPUT_CHANNELS 1
|
#define INPUT_CHANNELS 1
|
||||||
@@ -198,10 +192,8 @@ static int console_fixup(struct ast_channel *oldchan, struct ast_channel *newcha
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Formats natively supported by this module.
|
* \brief Formats natively supported by this module.
|
||||||
*
|
|
||||||
* \note Once 16 kHz is supported, AST_FORMAT_SLINEAR16 needs to be added.
|
|
||||||
*/
|
*/
|
||||||
#define SUPPORTED_FORMATS ( AST_FORMAT_SLINEAR )
|
#define SUPPORTED_FORMATS ( AST_FORMAT_SLINEAR16 )
|
||||||
|
|
||||||
static const struct ast_channel_tech console_tech = {
|
static const struct ast_channel_tech console_tech = {
|
||||||
.type = "Console",
|
.type = "Console",
|
||||||
@@ -243,7 +235,7 @@ static void *stream_monitor(void *data)
|
|||||||
PaError res;
|
PaError res;
|
||||||
struct ast_frame f = {
|
struct ast_frame f = {
|
||||||
.frametype = AST_FRAME_VOICE,
|
.frametype = AST_FRAME_VOICE,
|
||||||
.subclass = AST_FORMAT_SLINEAR,
|
.subclass = AST_FORMAT_SLINEAR16,
|
||||||
.src = "console_stream_monitor",
|
.src = "console_stream_monitor",
|
||||||
.data = buf,
|
.data = buf,
|
||||||
.datalen = sizeof(buf),
|
.datalen = sizeof(buf),
|
||||||
@@ -335,9 +327,9 @@ static struct ast_channel *console_new(struct console_pvt *pvt, const char *ext,
|
|||||||
}
|
}
|
||||||
|
|
||||||
chan->tech = &console_tech;
|
chan->tech = &console_tech;
|
||||||
chan->nativeformats = AST_FORMAT_SLINEAR;
|
chan->nativeformats = AST_FORMAT_SLINEAR16;
|
||||||
chan->readformat = AST_FORMAT_SLINEAR;
|
chan->readformat = AST_FORMAT_SLINEAR16;
|
||||||
chan->writeformat = AST_FORMAT_SLINEAR;
|
chan->writeformat = AST_FORMAT_SLINEAR16;
|
||||||
chan->tech_pvt = pvt;
|
chan->tech_pvt = pvt;
|
||||||
|
|
||||||
pvt->owner = chan;
|
pvt->owner = chan;
|
||||||
|
Reference in New Issue
Block a user