G711編碼的聲音清晰度好,語音自然度高,但壓縮效率低,數據量大常在32Kbps以上。常用於電話語音(推薦使用64Kbps),sampling rate為8K,壓縮率為2,即把S16格式的數據壓縮為8bit,分為a-law和u-law。
a-law也叫g711a,輸入的是13位(其實是S16的高13位),使用在歐洲和其他地區,這種格式是經過特別設計的,便於數字設備進行快速運算。
運算過程如下:
(1) 取符號位並取反得到s,
(2) 獲取強度位eee,獲取方法如圖所示
(3) 獲取高位樣本位wxyz
(4) 組合為seeewxyz,將seeewxyz逢偶數為取補數,編碼完畢
示例:
輸入pcm數據為3210,二進制對應為(0000 1100 1000 1010)
二進制變換下排列組合方式(0 0001 1001 0001010)
(1) 獲取符號位最高位為0,取反,s=1
(2) 獲取強度位0001,查表,編碼制應該是eee=100
(3) 獲取高位樣本wxyz=1001
(4) 組合為11001001,逢偶數為取反為10011100
編碼完畢。
u-law也叫g711u,使用在北美和日本,輸入的是14位,編碼算法就是查表,沒啥復雜算法,就是基礎值+平均偏移值,具體示例如下:
pcm=2345
(1)取得范圍值
+4062 to +2015 in 16 intervals of 128
(2)得到基礎值0x90,
(3)間隔數128,
(4)區間基本值4062,
(5)當前值2345和區間基本值差異4062-2345=1717,
(6)偏移值=1717/間隔數=1717/128,取整得到13,
(7)輸出為0x90+13=0x9D
參考https://blog.csdn.net/szfhy/article/details/52448906