首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓棒棒糖中的AUDIO_FORMAT_PCM_32_BIT和AUDIO_FORMAT_PCM_8_24_BIT有什么不同?

安卓棒棒糖中的AUDIO_FORMAT_PCM_32_BIT和AUDIO_FORMAT_PCM_8_24_BIT有什么不同?
EN

Stack Overflow用户
提问于 2015-01-22 15:00:22
回答 2查看 1.1K关注 0票数 1

AUDIO_FORMAT_PCM_32_BIT和AUDIO_FORMAT_PCM_8_24_BIT是安卓棒棒糖中的两种高清音频格式。

它们似乎都是32位深度的。

谁知道它们之间的确切区别呢?

EN

回答 2

Stack Overflow用户

发布于 2015-01-22 16:18:15

您可以在audio.h中找到该信息

代码语言:javascript
复制
/* Audio format consists of a main format field (upper 8 bits) and a sub
   format field (lower 24 bits).

AUDIO_FORMAT_PCM_32_BITAUDIO_FORMAT_PCM_8_24_BIT的定义如下:

代码语言:javascript
复制
AUDIO_FORMAT_PCM_32_BIT          = (AUDIO_FORMAT_PCM |
                                    AUDIO_FORMAT_PCM_SUB_32_BIT),
AUDIO_FORMAT_PCM_8_24_BIT        = (AUDIO_FORMAT_PCM |
                                    AUDIO_FORMAT_PCM_SUB_8_24_BIT),

如果我们看一下AUDIO_FORMAT_PCM_SUB_32_BITAUDIO_FORMAT_PCM_8_24_BIT的定义,我们会发现一些有用的注释:

代码语言:javascript
复制
AUDIO_FORMAT_PCM_SUB_32_BIT          = 0x3, /* PCM signed .31 fixed point */
AUDIO_FORMAT_PCM_SUB_8_24_BIT        = 0x4, /* PCM signed 7.24 fixed point */
票数 2
EN

Stack Overflow用户

发布于 2021-01-27 01:31:42

为响应Michael's comment

signed .31表示符号为1位,整个部分为0位,小数部分为31位。signed 7.24表示符号为1位,整个部分为7位,小数部分为24位。如果你想了解更多关于定点算术的用法,请阅读定点算术。

AUDIO_FORMAT_PCM_8_24_BIT很可能指的是填充了8位的0,因为7.24固定点对PCM数据没有意义。这是因为PCM数据的范围是1.0 ..-1.0。(从技术上讲,它应该是8.23,否则7.24 == 25位!)所以使用“整型”数字部分是没有意义的。

AUDIO_FORMAT_PCM_8_24_BIT的单个样本将包含4个字节,其中只有3个字节将保存任何有意义的数据,其余的单个字节将全为零。

另一种方法是AUDIO_FORMAT_PCM_24_BIT_PACKED,每个样本只包含3个字节,没有填充。24位音频有一种奇怪的格式,它不适合数字音频的2次方。处理24位样本通常更容易,就像它是32位样本一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28082952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档