示范程序:音讯转向
音讯转向是在两个不同的音讯设备上,将音讯输入直接转到音讯输出。使用这个功能时,麦克风与扩音喇叭的距离最好保持相当程 度,否则会造成增益迴响。要使用转向功能,必须在您的C++编译设定上增加以下定义:
CAUTILITIES
- C++编译器:-DCAUTILITIES
- Qt:DEFINES += CAUTILITIES
函式
bool Redirect (int milliseconds = -1 ,
int samplerate = 44100 ,
int channels = 1 ,
int inputDevice = -1 ,
int outputDevice = -1 ,
int latency = 10 ,
Debugger * debugger = NULL ) ;
参数说明
参数名称 |
作用 |
milliseconds | 音讯转向总时间,milliseconds以后停止音讯转向。 如果milliseconds小于或等于0,则永远不停止音讯转向。 |
samplerate |
取样频率。 |
channels |
声道数量,并非所有的声道数量都是支持的。 |
inputDevice |
音讯输入设备编号,必须是实际的麦克风或网路音讯设备。 |
outputDevice |
音讯输出设备编号,必须是实际的麦克风或网路音讯设备。 |
latency |
输入到输出的延迟时间。 音讯输入基本上是先储存到缓冲区,然后才由音讯输出设备读取以后播放。 这个参数设定音讯输入设备启动的时间与音讯输出设备启动的时间的差值。 |
debugger |
除错物件。一般使用者不想要除错的话,仅需给予NULL参数即可。 |
CaPlay当中的示范
int Diversion(int argc,char ** argv)
{
int ms = -1 ;
int id = -1 ;
int od = -1 ;
int i = 2 ;
int samplerate = 8000 ;
int channels = 1 ;
int latency = 10 ;
Debugger * debugger = NULL ;
////////////////////////////////////////////////////////////////////////////
while ( i < argc ) {
if ( 0 == strcmp(argv[i],"--time") ) {
i++ ;
ms = atoi(argv[i]) ;
i++ ;
} else
if ( 0 == strcmp(argv[i],"--samplerate") ) {
i++ ;
samplerate = atoi(argv[i]) ;
i++ ;
} else
if ( 0 == strcmp(argv[i],"--channels") ) {
i++ ;
channels = atoi(argv[i]) ;
i++ ;
} else
if ( 0 == strcmp(argv[i],"--latency") ) {
i++ ;
latency = atoi(argv[i]) ;
i++ ;
} else
if ( 0 == strcmp(argv[i],"--output") ) {
i++ ;
od = atoi(argv[i]) ;
i++ ;
} else
if ( 0 == strcmp(argv[i],"--input") ) {
i++ ;
id = atoi(argv[i]) ;
i++ ;
} else
if ( 0 == strcmp(argv[i],"--debug" ) ) {
if ( NULL == debugger ) {
debugger = new Debugger ( ) ;
} ;
i++ ;
} ;
i++ ;
} ;
////////////////////////////////////////////////////////////////////////////
if (Redirect(ms,samplerate,channels,id,od,latency,debugger)) {
if ( NULL != debugger ) delete debugger ;
return 1 ;
} ;
if ( NULL != debugger ) delete debugger ;
////////////////////////////////////////////////////////////////////////////
return 0 ;
}