• 首页
  • 文件
  • 下载
  • 状态
  • 常见问题
  • 邮件列表
  • 应用程序
  • 外部链结
  • 版权
  • 志愿者
  • 联络

示范程序:音讯转向

音讯转向是在两个不同的音讯设备上,将音讯输入直接转到音讯输出。使用这个功能时,麦克风与扩音喇叭的距离最好保持相当程 度,否则会造成增益迴响。

要使用转向功能,必须在您的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                                                                   ;
}