Android多媒体:AudioTrack


AudioTrack是和PlaybackThread中创建的Track一一对应的,Track是Bn,AudioTrack是Bp。音乐APP通过操作AudioTrack来进行音乐数据的传输。具体过程如下:


应用initAudioTrack ,new一个AudioTrack, 注意里面的flag(比如AUDIO_OUTPUT_FLAG_FAST,那说明这个output是需要FastMixer的)。并且调用了AudioTrack的set函数,注册了audioCallback做callback函数。这个callback是AT和应用交互数据的接口。

在set函数里,调用了AudioSystem::getOutput,然后是hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp调用了getOutput,这里会找一个完全满足输入参数如bit-depth的output,否则返回0。然后调用client的openOutput。client这里是AudioFLinger,所以findSuitableHwDev_l,open_output_stream,然后new Mixer。所以,一个Output对应一个playback线程。手机里面的output是由audio_policy.conf定义的。由各个厂家自己实现。

在set函数里,创建了AudioTrackThread线程,这个线程不停的执行threadLoop,除非有人pause或stop它。threadLoop中有一个重要的函

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值