From 067fcc2a032e0bf5cf3b28c83c6fa5f5a08d365b Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Mon, 31 Dec 2007 21:33:45 +0000
Subject: [PATCH] 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
---
 channels/chan_console.c | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/channels/chan_console.c b/channels/chan_console.c
index 54f375225f..110ecb9ac6 100644
--- a/channels/chan_console.c
+++ b/channels/chan_console.c
@@ -67,28 +67,22 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 /*! 
  * \brief The sample rate to request from PortAudio 
  *
- * \note This should be changed to 16000 once there is a translator for going
- *       between SLINEAR and SLINEAR16.  Making it a configuration parameter
- *       would be even better, but 16 kHz should be the default.
- *
- * \note If this changes, NUM_SAMPLES will need to change, as well.
+ * \todo Make this optional.  If this is only going to talk to 8 kHz endpoints,
+ *       then it makes sense to use 8 kHz natively.
  */
-#define SAMPLE_RATE      8000
+#define SAMPLE_RATE      16000
 
 /*! 
  * \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
- * in this module reads 160 sample frames from the portaudio stream and queues
- * them up on the Asterisk channel.  Frames of any sizes can be written to a
+ * 320 samples (20 ms) is the most common frame size in Asterisk.  So, the code
+ * in this module reads 320 sample frames from the portaudio stream and queues
+ * 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
  * performance applications, the data should be written to Pa_WriteStream in
  * 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 */
 #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.
- *
- * \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 = {
 	.type = "Console",
@@ -243,7 +235,7 @@ static void *stream_monitor(void *data)
 	PaError res;
 	struct ast_frame f = {
 		.frametype = AST_FRAME_VOICE,
-		.subclass = AST_FORMAT_SLINEAR,
+		.subclass = AST_FORMAT_SLINEAR16,
 		.src = "console_stream_monitor",
 		.data = 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->nativeformats = AST_FORMAT_SLINEAR;
-	chan->readformat = AST_FORMAT_SLINEAR;
-	chan->writeformat = AST_FORMAT_SLINEAR;
+	chan->nativeformats = AST_FORMAT_SLINEAR16;
+	chan->readformat = AST_FORMAT_SLINEAR16;
+	chan->writeformat = AST_FORMAT_SLINEAR16;
 	chan->tech_pvt = pvt;
 
 	pvt->owner = chan;
-- 
GitLab