一 概念
1.24bit音频:
24bit 指使用 3 个字节记录振幅值,意味可以记录 16,777,216 种声音振幅的变化,动态范围可达 144 dB(人耳听觉的动态范围是120dB,超过 120dB 人耳会痛,所以 120dB 又称痛阀)。下面是三种常见的音频采样比对表:
2.24位一般是采样深度的概念,还有一个采样率的概念,比如,16k,48k等。这两者的关系下图可以清晰的展现:
二 实例解析:
下面直接给出两份源码,就是24bit和16bit的相互转换实例:
#include <stdio.h> typedef unsigned char uint8_t; typedef unsigned int uint32_t; short array_16bit[] = {0,22618,31999,22654,50,-22582,-31999,-22690,-114}; uint8_t pcm24[200]; void dump8(uint8_t *data,uint32_t len) { for (uint32_t i = 0; i < len; i++) { /* code */ printf("0x%x,",data[i]); } printf("\n\r"); } uint32_t pcm16_to_pcm24(short *data,uint32_t len) { uint32_t j = 0; for(uint32_t iss = 0;iss < len; iss++) { int value = ((float)data[iss]/0x7fff)*16777216; printf("value is:%d \n\r",value); pcm24[j++] = value & 0xff; pcm24[j++] = (value & 0xff00)>>8; pcm24[j++] = (value & 0xff0000)>>16; } return j; } int main() { uint32_t len = pcm16_to_pcm24(array_16bit,9); printf("pcm16_to_24bit len is:%d \n\r",len); dump8(pcm24,len); return 0; }
三 总结
24bit音频在实际应用中十分广泛。作为一个音频解决方案商,研究和应用它是一个非常重要的任务。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |