[RK3288][Android6.0] Audio中的HW Params设置流程

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

这部分内容比较繁琐,,先从初始化开始了解里面参数意义,以period size

这个参数为线索来追终代码流程.

pcm_native.c
snd_pcm_hw_constraints_init():
int snd_pcm_hw_constraints_init(struct snd_pcm_substream *substream)
{
    struct snd_pcm_runtime *runtime = substream->runtime;
    //ASOC对应hw params有参数大小限制,一定要在它的范围内,否则设置无效.
    //相关信息都保存在hw_constraints中.
    struct snd_pcm_hw_constraints *constrs = &runtime->hw_constraints;
    int k, err;
......
    //每个hw参数规则都会被添加进去来作追踪.
    err = snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE,
                  snd_pcm_hw_rule_mulkdiv, (void*) 8,
                  SNDRV_PCM_HW_PARAM_PERIOD_BYTES, SNDRV_PCM_HW_PARAM_FRAME_BITS, -1);
......
}
struct snd_pcm_hw_constraints {
    //mask用来表示后面的intervals是否能访问,没有设置是不行的.
    struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
             SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
    //保存所有hw param值.
    struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL -
                 SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
    //目前已有规则总数
    unsigned int rules_num;
    //存规则势必要分配空间,当rules_num达到rules_all的时候,
    //会每次分配16个存储空间,而不是一次分配一个,这样可以提高效率,
    //因此rules_all总是>=rules_num.
    unsigned int rules_all;
    //所有规则用此结构表示.
    struct snd_pcm_hw_rule *rules;
};
snd_pcm_hw_rule_add():
int snd_pcm_hw_rule_add(struct snd_pcm_runtime *runtime, unsigned int cond,
            int var,
            snd_pcm_hw_rule_func_t func, void *private,
            int dep, ...)
{
    struct snd_pcm_hw_constraints *constrs = &runtime->hw_constraints;
    struct snd_pcm_hw_rule *c;
......
    //每添加一个interval,constrs->rules_num就会随着增加,
    //当超过constrs->rules_all,就需要分配新空间用于存储interval.
    if (constrs->rules_num >= constrs->rules_all) {
        struct snd_pcm_hw_rule *new;
        //基于效率,每次直接分配16个.
        unsigned int n
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rk3288 android 6.固件是一款基于Rockchip RK3288芯片的Android 6.操作系统固件。该固件具有稳定性高、功能丰富、操作简便等特点,适用于各种智能设备的开发和应用。如果您需要使用该固件,请注意选择适合您设备的版本,并按照相关的安装步骤进行操作。同时,为了保证设备的安全和稳定性,请务必备份好重要数据,并遵守相关的使用规定。 ### 回答2: RK3288 Android 6.0固件是一种为RK3288芯片设计的操作系统,旨在提供更高效、稳定和安全的用户体验。这款固件在保持原版Android特点的同时,针对RK3288芯片进行了优化,充分利用了硬件性能和资源,提高了设备的响应能力和运行速度。以下是该固件的主要特点和优势: 1.更稳定的操作系统:RK3288 Android 6.0固件采用了最新的安卓系统6.0,加上对RK3288硬件平台的深度优化,使得这个固件的稳定性和兼容性得到了提升。 2.更流畅的用户体验:该固件针对RK3288芯片进行了深度优化,充分发挥了其强大的处理能力,从而提高了设备的响应速度和运行效率,让用户感受更加流畅的使用体验。 3.更丰富的应用支持:由于RK3288 Android 6.0固件是基于最新的安卓操作系统开发,因此可以支持更多的第三方应用程序和游戏,满足用户的不同需求和使用场景。 4.更安全的系统保护:该固件采用了安全性更强的编码技术,增强了系统的安全性和稳定性,为用户提供更加安全的使用环境。 总之,RK3288 Android 6.0固件是一款功能强大、性能优越、稳定性高、兼容性好,而且完全免费的操作系统。它可以带给用户更加流畅的使用体验、更加丰富的应用体验和更加安全的系统保护,是一款值得尝试和使用的操作系统。 ### 回答3: RK3288是一款由瑞芯微(Rockchip)公司生产的基于ARM Cortex-A17的处理器芯片,适用于智能电视、平板电脑、工业控制等领域。这款处理器拥有强大的性能和图像处理能力,在市场上受到了广泛的认可和应用。 Android 6.0Android移动操作系统的一个版本,也被称为Marshmallow。它是Android 5.0 Lollipop的后继版本,具有更多的功能、改进的安全性和更好的性能。作为一个主流的移动操作系统,Android 6.0提供了许多应用程序和工具,可以为用户提供更流畅、更高效、更安全的使用体验。 固件指针对某种硬件平台的操作系统及其所需的应用程序和驱动程序的一种集合。RK3288 Android 6.0固件,便是基于RK3288平台的Android 6.0操作系统以及与之配合的应用程序和驱动程序的一个集合。 在使用,这种固件的优越性非常明显。它可以让基于RK3288处理器的设备能够运行更为高效的Android 6.0系统,同时, RK3288 Android 6.0固件还可以为这些设备提供更丰富的应用程序和功能。例如Android 6.0移植了Google Now on Tap的新功能,可以根据用户的输入智能推测出用户所需要的信息,减少用户的搜索次数,提高用户效率。 综上所述,RK3288 Android 6.0固件可谓是一款非常优秀的固件,它让基于RK3288处理器的设备平台能够拥有更为高效、便捷和安全的移动操作系统,提升了用户的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值