Broadcom Nexus学习(二):Audio

概念1:Audio Playback channel:

Audio Playback channel可以将之理解为“一个可以解析并播放PCM数据的硬件单元”。

既然是硬件,那就可以打开,关闭,设置,并向其中填充(PCM)数据.

 

1.1:Open Audio Playback channel:

打开硬件。

1.2: Setting Audio Playback channel and start :

设置硬件接收数据的格式,并开始播放。(但此时buffer 中没有数据,所以不会发出声音)

1.3: 将Audio Playback channel与硬件Output连起来:

Audio Playback channel就是一个解析和播放PCM的硬件,但这个硬件要与Output联系起来,才可以将声音播放出来。(注意,在关闭Audio Playback channel时,也要断开此连接)

1.4: Get Audio Playback channel Buffer.

得到向Audio Playback Buffer.

如果长度为0. 则表明当前没有可用的buffer用来传数据。此时则可以使用BKNI_WaitForEvent(event,1000)来等待buffer可用时回调函数发出的event.

在得到buffer头之后,可以向其中填充PCM数据。

 

1.5:通知Nexus Playback channel向buffer中填充了多少数据:

注意,因为之前已经使用NEXUS_AudioPlayback_Start()所以当向 Nexus Audio Playback Channel buffer中填充数据后,Hardware会去播放这些数据。

 

1.6:Audio Playback Stop Play :

停止播放数据并清空buffer.

 

1.7: 与Audio Output断开连接:

1.8: Close Audio Playback channel:

关闭硬件。

 

 

概念2:Mixer:

Mixer就是一个混音器,多路AudioPlayback和Audio Decoder可以作为Mixer的Input. 而Mixer又作为Audio Output(DAC)的Input. 这样就可以做到多路混音。


Audio Decoder应该是硬件接入的Audio信号(如DVR的麦)。我们主要讲Audio Playback.

Audio Playback可以有2路,所以就可以做到2路混音。

 

此时再按照上一节的例子,分别往2路Audio Playback Buffer中填充PCM数据。则可以发现成功混音了。

 

 

 概念3:Audio Output(DAC)

 Audio Output就是一个将数据转换为模拟信号发出的设备。简单的说,Audio Playback是将PCM数据解析出来,并把此数据传递给Audio Output。Audio Output 则将此数据转化为模拟信号。(模拟信号就是可以通过音响播放出来)

 

设置:

讲解:

NEXUS_AudioVolumeType volumeType; //音量设置单位

音量设置单位有2种:

NEXUS_AudioVolumeType_eDecibel: dB(Decibel:分贝)。

 NEXUS_AudioVolumeType_eLinear:线性变化。

 

如果设置如下:

volumeType = NEXUS_AudioVolumeType_eDecibel;

则音量 0 - -9000 之间变化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值