有关Full-Duplex Audio Example v2.0例子的说明

来源:互联网 发布:mac光盘安装win7 编辑:程序博客网 时间:2024/05/17 04:13

    这个例子的下载地址:

     http://sw.nokia.com/id/8b3a6ed3-e833-4f7c-aee1-4c773196f894/S60_Platform_Full-Duplex_Audio_Example_v2_0_en.zip

 

这个例子同步播放和记录语音,通过话筒说的话再通过扬声器放出来,在电话的一端产生话音的反馈环路。话音经过实时的编码或者解码后再被处理,这种编码格式是音频硬件支持的格式。

这个例子支持s60 2nd sp2sp3s60 3nd

一、重要文件和类:

    inc/fullduplexenginebase.h

    src/fullduplexengine.cpp

    src/inpustreamthread.cpp

    Symbian APIs CMMFDevSound

                  MDevSoundObserver

    Example classes CFullDuplexEngine

                    CInputStreamThread               

二、运行例子

    (一)当程序启动后,首先显示“Init complete”。通过菜单项就能启动和停止语音流,在屏幕上同步显示当前状态和可能的错误信息。

支持的编解码器:   

    - AMR-NB (default after initialization)

    - G.711

    - G.729

    - iLBC

(二)通过选项菜单“Options->Codec”能选择编解码器,需要注意的是有些设备不支持AMR-NB编码。

(三)利用两个CMMFDevSound实例,来实现全双工操作,一个实例是输入(录音),另一个是输出(播放)。一个线程处理输入语音流,主线程处理输出语音流,DevSound 对象读写一个语音缓冲区,这个缓冲区能被这两个线程访问。尽管全双工语音流不需要多线程来实现,但这两个线程还是通过信号灯实现语音流的同步。

三、有关说明

(一)在开始说话后如果有其它的任务运行,导致缓冲区变大,会造成语音中断或者在说话和听到话音之间的延迟。

(二)设置“custom preference / priority”的值能使设备支持全双工操作,但是,在s60 3nd中,使用非缺省的值需要MultimediaDD能力,而一个程序具备MultimediaDD能力需要ACS Publisher ID和制造商的支持,更多的信息请访问www.symbiansigned.com www.forum.nokia.com/testing

(三)我们不能控制音频输出的过程,在s60 2nd的手机中,音频直接输送到耳麦,在s60 3nd的手机中,音频直接输送到扬声器,没有公开的API能用来控制这种行为。

(四)这个例子仅能在手机上运行,因为模拟器不支持全双工音频。