TMAudioDataCallback Class Referenceabstract

在TMModeCallback模式下的回调接口. 一般模式下可以忽略. More...

#include <TMAudioDataCallback.h>

Public Member Functions

virtual int onDataLoopBufferAllocated (unsigned int recordBufferSize, unsigned int playBufferSize)=0
 
virtual void onDataLoopBufferFree ()=0
 
virtual int onDataLoopStarted (int recordSampleRate, int recordChannels, int recordFormat, TMInputSource recordDeviceType, int playSampleRate, int playChannels, int playFormat)=0
 
virtual void onDataLoopPaused ()=0
 
virtual int onRecordDataReady (const char *buf, unsigned int bufsz)=0
 
virtual int onPlayDataNeeded (char **bufptr, unsigned int bufsz)=0
 

Detailed Description

在TMModeCallback模式下的回调接口. 一般模式下可以忽略.

在TMModeCallback模式下的回调接口

Client应该继承这个接口并且实现相应的函数, 混音线程会在每个特定的时间去调用这些接口. 具体什么时候请参见每个参数的文档.

在Callback模式下, Client可以最大限度的控制声音 混音线程所做的事情只是从

See also
TMControllerMode
class Callback : public TMAudioDataCallback {
... Implement is ignored.
};
TMAudioController *controller = new TMAudioController();
assert(controller->probe() == 0); // this must be called after KaraokeController#createReverb, otherwise will failed.
assert(controller->getMode() == TMModeControl);
controller->registerDataCallback(new Callback());

Member Function Documentation

virtual int TMAudioDataCallback::onDataLoopBufferAllocated ( unsigned int  recordBufferSize,
unsigned int  playBufferSize 
)
pure virtual

这个函数会在混音线程buffer分配完毕以后调用, 子类在这个回调里面主要做的是子类的buffer 分配 和Stared的主要区别就是这个回调在暂停的时候不会调用

virtual void TMAudioDataCallback::onDataLoopBufferFree ( )
pure virtual

这个回调会在混音线程buffer释放以后被调用.

virtual void TMAudioDataCallback::onDataLoopPaused ( )
pure virtual

这个函数会在混音线程暂停时候被调用 被调用表示混音线程因为某种原因,也许是系统需要Audio设备之类的原因暂停。

virtual int TMAudioDataCallback::onDataLoopStarted ( int  recordSampleRate,
int  recordChannels,
int  recordFormat,
TMInputSource  recordDeviceType,
int  playSampleRate,
int  playChannels,
int  playFormat 
)
pure virtual

这个函数会在混音线程开始混音的时候调到 参数分别是录音以及放音设备的一些属性, 会在混音线程开始活着恢复运行的时候调用。

Parameters
recordDeviceType表示输入设备是外置麦克风还是遥控上的麦克风,遥控上的麦克风需要做降噪处理。
Returns
> 0 表示成功 < 0 表示失败, 将不进行其他的Data调用
virtual int TMAudioDataCallback::onPlayDataNeeded ( char **  bufptr,
unsigned int  bufsz 
)
pure virtual

这个函数是混音线程让Client去填数据的 这些buffer会被放到音频设备中播放

Parameters
[out]bufptr需要实现把下一个要播放的buffer指针。
[in]bufsz是混音线程需要的buffer的大小, 混音线程控制buffer的大小,但是buffer的分配要由Client来做。
Returns
>= 0 表示成功,并且表示填写了多少数据 < 0 表示失败,不会播放该数据
virtual int TMAudioDataCallback::onRecordDataReady ( const char *  buf,
unsigned int  bufsz 
)
pure virtual

这个函数会在每次录音数据好了以后被调用

Returns
返回值等于0表示成功, -1 表示处理失败

The documentation for this class was generated from the following file: