【Android多媒体(重采样与混频)】重采样等基本概念

本文介绍了音频重采样和混频的基本概念,详细讲解了Android系统中如何进行重采样和混频。在Android多媒体系统中,录音线程通过AudioResampler进行重采样,播放线程则根据是否硬解码来决定是否需要重采样。AudioMixer主要负责将音轨数据混合并输出,并且也利用AudioResampler进行重采样工作。AudioResampler提供了不同插值方法的重采样选项。文章最后提到了对相关接口的分析。
摘要由CSDN通过智能技术生成

重采样和混频的概念

关于音频采样,百度上面找到这样的解答:

频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化电平数为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16次方。采样大小相对采样率更难理解,因为要显得抽象点,举个简单例子:假设对一个波进行8次采样,采样点分别对应的能量值分别为A1-A8,但我们只使用2bit的采样大小,结果我们只能保留A1-A8中4个点的值而舍弃另外4个。如果我们进行3bit的采样大小,则刚好记录下8个点的所有信息。采样率和采样大小的值越大,记录的波形更接近原始信号

而重采样,就是为了满足播放与存储的需求,使用某种插值或者抽取的算法,改变采样率的过程。

Android系统中间的重采样与混频

再android多媒体系统中间:
录音线程RecordThread直接调用AudioResampler进行重采样
播放线程分为两种情况:

  • 硬解码播放线程OffloadThread不会对音频进行重采样
  • 非硬解码使用MixerThread线程播放,将会对音频按照需要使用AudioMixer进行重采样,实际上AudioMixer也是调用AudioResampler进行重采样工作。
    -

从AudioMixer提供的接口方法分析

主要作用是重采样,将各个音轨的数据混合在一起输出给音频设备

主要通过接收参数,执行相关操作,
参考路径:
frameworks/av/services/audioflinger/AudioMixer.h
参数设置接口:
setParameter(int name, int target, int param, void *value);

  enum { // names

        // track names (MAX_NUM_TRACKS units)
        TRACK0          = 0x1000,

        // 0x2000 is unused

        // setParameter targets
        TRACK           = 0x3000,
        RESAMPLE        = 0x3001,
        RAMP_VOLUME     = 0x3002, // ramp to new volume
        VOLUME          = 0x3003, // don't ramp
        TIMESTRETCH     = 0x3004,

        // set Parameter names
        // for target TRACK
        CHANNEL_MASK    = 0x4000,
        FORMAT          = 0x4001,
        MAIN_BUFFER     = 0x4002,
        AUX_BUFFER      = 0x4003,
        DOWNMIX_TYPE    = 0X4004,
        MIXER_FORMAT    = 0x4005, // AUDIO_FORMAT_PCM_(F
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值