1 EVRC
協議演進:3558->4788->5188
EVRC0淨荷格式見3558
EVRC-WB淨荷格式見5188
EVRC編解碼算法以鬆散碼激勵線性預測(RCELP)算法爲基礎,具有線性預性和差錯控制功能,EVRC家庭各種編碼見下圖:
2 多幀格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP Header [4] |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|R|R| LLL | NNN | MMM | Count | TOC | ... | TOC |padding|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| one or more codec data frames, one per TOC entry |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
RR:Reserved,兩位保留位,暫未用;
LLL:交錯長度,爲0表示一種特殊的交錯幀,捆綁幀,即多幀之間的幀距爲0;
NNN:交錯幀索引;
MMM:模式請求號說明;
Count:TOC數量,例如取值爲c,則TOC數量則爲c+1
Padding:爲字節對齊而引入的填充位,顯然,TOC項如果爲爲奇數則不要填充位,爲偶數則需要;
TOC:表項,即幀類型,取值如下表各種速率,目前取值不在該表內的幀非法;
0 1 2 3
+-+-+-+-+
|fr type|
+-+-+-+-+
Value Rate Total codec data frame size (in octets)
---------------------------------------------------------
0 Blank 0 (0 bit)
1 1/8 2 (16 bits)
2 1/4 5 (40 bits; not valid for EVRC) //3558定義沒有,但後面的協議已經支持
3 1/2 10 (80 bits)
4 1 22 (171 bits; 5 padded at end with zeros)
5 Erasure 0 (SHOULD NOT be transmitted by sender)
3 單幀淨荷不帶頭域格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP Header [4] |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| |
+ ONLY one codec data frame +-+-+-+-+-+-+-+-+
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
通過淨荷的長度在區分是哪個模式
4 多幀複用類型
a. 交錯幀Interleaving
Count>0,Count+1幀複用
LLL=L,每兩個幀間隔L+1
First RTP Packet in Interleave group:
LLL=L, NNN=0
Frame 0, Frame L+1, Frame 2(L+1), Frame 3(L+1), ... for a total of
B frames
Second RTP Packet in Interleave group:
LLL=L, NNN=1
Frame 1, Frame 1+L+1, Frame 1+2(L+1), Frame 1+3(L+1), ... for a
total of B frames
按協議裏的說明,使用交錯幀可以把降低數據丟失的比率,但如果有丟包,聲音質量呈指數下降,質量下降可以理解,但爲什麼可以降低數據丟失的比率,根據從何而來?//待解惑
b. 捆綁幀
Count=0,同交錯幀,只是多幀中幀間間隔爲0。
5 信令協商內容
m=audio 49120 RTP/AVP 97
a=rtpmap:97 EVRC1/8000
a=fmtp:97 fixedrate=0.5 //可選
a=maxptime:120 //可選,多幀複用的幀數折算成打包時長必須小於maxptime的值
fmtp可帶的屬性:
maxinterleave,最大交錯幀數;
dtxmax,dtxmin,silencesupp,hangover等用於靜音抑制,見3551,3558;