首页 > 编程语言 >24位PCM采样数据和16位相互转换算法实例解析

24位PCM采样数据和16位相互转换算法实例解析

时间:2024-07-03 18:52:42浏览次数:18  
标签:24 16 ++ printf len value PCM pcm24 uint32

一 概念 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音频在实际应用中十分广泛。作为一个音频解决方案商,研究和应用它是一个非常重要的任务。

 

标签:24,16,++,printf,len,value,PCM,pcm24,uint32
From: https://www.cnblogs.com/dylancao/p/18282386

相关文章

  • 洛谷2404 自然数的拆分问题 【搜索】
    自然数的拆分问题题目描述任何一个大于111的自然数nnn,总可以拆......
  • 程序人生日记20240703|工作零食:十分米莲藕汁配饼干(减脂记录)
    程序员的工作饮食减脂记录打卡餐别:早餐零食详情:(同事给的不算统计内)零食名称:十分米莲藕汁配饼干饼干选择:全麦饼干或燕麦饼干。大致热量估算:莲藕汁约50卡,低脂全麦饼干2片约80卡,总计约130卡。初始数据:体重:90公斤目标:80公斤完成情况:完成。程序员自律宣言:程序猿不可以土肥圆......
  • 梁培利DeFi去中心化金融课程笔记2024版
    课程链接:https://space.bilibili.com/220951871/channel/collectiondetail?sid=2824381&ctype=0讲义仓库:https://github.com/liangpeili/defi-2024/tree/mainDeFi简介DeFi:Uniswap/AAVE/Curve/DAl/Compound等;GameFi:从CryptoKitties开始;SocailFi:nostr/Damus/friend.tech/xp......
  • 全球半导体CVD和ALD用前驱体行业现状、重点企业分析及项目可行性研究报告(2024-2030)
    2024年7月3日环洋市场咨询机构出版了一份详细的、综合性的调研分析报告【全球半导体CVD和ALD用前驱体行业总体规模、主要厂商及IPO上市调研报告,2024-2030】。本报告研究全球半导体CVD和ALD用前驱体总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分......
  • 2024年值得收藏的几款开源主机安全系统hids
    随着云技术的迅速发展,主机安全系统HIDS作为服务器安全的最后一道防线,无论传统的硬件厂商,还是各大云厂商如阿里、腾讯云非常重视并闷声发大财。HIDS主机安全开源的项目虽多,但能实际用的极少,笔者经过大量搜索,找到以下几款优秀的产品供大家参考:1、OpenHFWOpenHFW全称是OpenSourceH......
  • 2024.07.03【读书笔记】|医疗科技创新流程(第二章 创新创造 商业模式基础)
    目录一级目录二级目录三级目录4.4商业模式基础引言商业模式定义商业模式的重要性商业模型的筛选影响客户与创新互动的主要因素商业模式的选择商业模式的变革创新者的角色总结一级目录二级目录三级目录4.4商业模式基础引言在医疗设备领域,商业模式通常是指如......
  • 使用国内源安装新版docker(2024.7.3)
    前言最近dockerhub已经不能访问了,使用原先的方式安装docker,服务器上也总是连接不上,所以找了种可以在国内正常安装新版docker的方式适用系统:centos71.先删除本机旧的或者残留的dockersudoyumremovedocker\docker-client\docker-client......
  • ; 运行容量为4TB卷标是SD_4TB的闪迪E81移动固态硬盘中的程序 2024年7月3日
    ;运行容量为4TB卷标是SD_4TB的闪迪E81移动固态硬盘中的程序2024年7月3日;闪迪移动固态硬盘盘符可能会变化,此脚本会找到并运行所需的程序,实现智能化快捷方式 ;运行容量为4TB卷标是SD_4TB的闪迪E81移动固态硬盘中的程序;闪迪移动固态硬盘盘符可能会变化,此脚本会找到并......
  • 2024.07 别急记录
    1.CEOI2023-Balance考虑\(S=2\)。令\((a_{i,j},j+T)\)连一条无向边,若\(a_{i,j}\)度数为奇数则连\((a_{i,j},S+T+1)\),在这张图上跑出一个欧拉回路,则对边进行定向后每个题目入度与出度相同,去掉点\(S+T+1\)后入度与出度差\(1\),刚好符合题目要求。于是若欧拉回路中\(j+T......
  • 题目 3293: 蓝桥杯2024年第十五届决赛真题-数位翻转
    https://www.dotcpp.com/oj/problem3293.html 题目描述小明创造了一个函数f(x)用来翻转x的二进制的数位(无前导0)。比如f(11)=13,因为11=(1011)2,将其左右翻转后,变为13=(1101)2;再比如f(3)=3,f(0)=0,f(2)=f(4)=f(8)=1等等。小明随机出了一个长度为......