Android音频Provider系列
文章平均质量分 86
帅气好男人_Jack
找工作,求推荐成都地区的工作。
展开
-
Provider(6) - Reformat和ClampBufferProvider
ReformatBufferProvider就是用于转换输入和输出的数据format不一致,比如输入是float、输出是int32_t;ClampFloatBufferProvider则是将float类型的音频数据其能量限制在[-3dB,3dB]中。原创 2024-07-20 12:53:48 · 412 阅读 · 0 评论 -
Provider(5) - AdjustChannelsBufferProvider
adjust Channels更新是为了满足dst的channels配置,强行进行映射和填充,没有去确认dst和src的通道是不是对应,举个其实现的例子就明白了:|1|2|1|2| ===>>> |1|2|3|4|1|2|3|4| 3、4通道填充0|1|2|3|4| ==>>> |1|2|1|2|…|3|4|3|4|,多余的3、4通道拼接到数据末尾。原创 2024-07-20 12:53:00 · 465 阅读 · 0 评论 -
Provider(4) - RemixBufferProvider
Remix顾名思义,在音乐作品中代指重新编排歌曲,这里将对音频数据进行重新编排,也就是其数据的组合位置等,与上一边文章DownmixerBufferProvider区别的是,支持mix后的channel是多通道,而不仅限于channel_left和channel_right。原创 2024-07-20 12:52:01 · 676 阅读 · 0 评论 -
Provider(3)-Mix之DownmixerBufferProvider
看完后是不是觉得很简单,复杂的是如何和effect的downmix库建立连接,真正做downmix的也就是按照几个策略来做,DOWNMIX_TYPE_STRIP和DOWNMIX_TYPE_FOLD;找出音频数据源中,每个channel位置的数据,按照mix的策略进行加法即可。原创 2024-07-20 12:49:33 · 1073 阅读 · 0 评论 -
Provider(2)- SourceAudioBufferProvider
从Source源端出来的数据,通常是来自于应用层,但没有与应用层直接连接,通过MonoPipe相关类连接,其SourceAudioBufferProvider和MonoPipe相关类的包含关系图如下:如上图,SourceAudioBufferProvider持有MonoPipeReader,依次持有audio_utils_reader,而audio_utils_fifo是一个队列fifo的管理类,应用侧逻辑通过audio_utils_writer往fifo队列写数据,而audio_utils_reader原创 2024-07-13 17:55:13 · 832 阅读 · 0 评论 -
Provider(1)- 什么是AudioBufferProvider
顾名思义,Audio音频数据缓冲提供,就是提供音频数据的缓冲类,而且这个AudioBufferProvider派生出许多子类,每个子类有不同的用途,至关重要;那它在Android哪个地方使用呢?在PlaybackTread中,接收应用层传递而来的数据,那为什么要专门用这么多Provider类来处理呢?而不只是简单的转发,将应用层的数据转发到PlaybackThread就行了;No、No、No!原创 2024-07-13 17:52:46 · 873 阅读 · 0 评论