1.PCM数据存储格式
分别使用不同的方式存储一段采集数据 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 总共8个字节
- 8位单声道: 按照数据采集时间顺序存储,即:0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88
- 8位双声道: L声道-R声道-L声道-R声道形式存储,即:0x11(左) 0x22(右) 0x33(左) 0x44(右) …
- 16位单声道(当使用一个以上的字节表示PCM样本时,必须知道字节顺序(大端与小端)。由于低端字节Intel CPU的广泛使用,低端字节PCM往往是最常见的字节方向,当位宽为16位(2字节)存储一个采集数据时,如:0x12ab,大端和小端分别是:big-endian: 0x12 0xab; little-endian: 0xab 0x12), 所以:
big-endian存储方式:0x1122 0x3344 0x5566 0x7788
little-endian存储方式:0x2211 0x4433 0x6655 0x8877 - 16位双声道: L声道-R声道-L声道-R声道形式存储:
big-endian:0x1122(左) 0x3344(右) 0x5566(左) 0x7788(右)
little-endian: 0x2211(左) 0x4433(右) 0x6655(左) 0x8877(右)
2.以2的n次方内存对齐
align_size必须是2的n次方:
向上对齐-----> #define ALIGN_UP(x,align_size) (((x)+(align_size) -1)&~((align_size - 1)))
向下对齐-----> #define ALIGN_DOWN(x,align_size) ((x)&~((align_szie) - 1))