If multiple new frames are encapsulated into the payload and robust payload sorting is not used, the payload is formed by concatenating the payload header, the ToC, optional CRC fields and the speech frames in the payload. However, the bits inside a frame are ordered into sensitivity order as defined in [2] for AMR and [4] for AMR-WB.
Simple payload sorting for bandwidth efficient operation
Simple payload sorting algorithm sorts Payload header, table of contents, payload frames and does padding and map into octets
/* payload header */
k=0; H=4;
for (i = 0; i < H; i++){
b(k++) = h(i);
}
/* table of contents */
T=6;
for (j = 0; j < N; j++){
for (i = 0; i < T; i++){
b(k++) = t(j,i);
}
}
/* payload frames */
for (j = 0; j < N; j++){
for (i = 0; i < F(j); i++){
b(k++) = f(j,i);
}
}
/* padding */
S = (k%8 == 0) ? 0 : 8 - k%8;
for (i = 0; i < S; i++){
b(k++) = 0;
}
/* map into octets */
for (i = 0; i < k; i++){
o(i/8,i%8)=b(i)
}
Simple payload sorting for octet aligned operation
/* payload header */
k=0; H=8;
if (interleaving){
H+=8; /* Interleaving extension */
}
for (i = 0; i < H; i++){
b(k++) = h(i);
}
/* table of contents */
T=8;
for (j = 0; j < N; j++){
for (i = 0; i < T; i++){
b(k++) = t(j,i);
}
}
/* CRCs, only if signaled */
if (crc) {
for (j = 0; j < N; j++){
for (i = 0; i < C(j); i++){
b(k++) = p(j,i);
}
}
}
/* payload frames */
for (j = 0; j < N; j++){
for (i = 0; i < F(j); i++){
b(k++) = f(j,i);
}
/* padding of each speech frame */
S = (k%8 == 0) ? 0 : 8 - k%8;
for (i = 0; i < S; i++){
b(k++) = 0;
}
}
/* map into octets */
for (i = 0; i < k; i++){
o(i/8,i%8)=b(i)
}
references:
https://www.ietf.org/proceedings/51/I-D/draft-ietf-avt-rtp-amr-10.txt
Simple payload sorting for bandwidth efficient operation
Simple payload sorting algorithm sorts Payload header, table of contents, payload frames and does padding and map into octets
/* payload header */
k=0; H=4;
for (i = 0; i < H; i++){
b(k++) = h(i);
}
/* table of contents */
T=6;
for (j = 0; j < N; j++){
for (i = 0; i < T; i++){
b(k++) = t(j,i);
}
}
/* payload frames */
for (j = 0; j < N; j++){
for (i = 0; i < F(j); i++){
b(k++) = f(j,i);
}
}
/* padding */
S = (k%8 == 0) ? 0 : 8 - k%8;
for (i = 0; i < S; i++){
b(k++) = 0;
}
/* map into octets */
for (i = 0; i < k; i++){
o(i/8,i%8)=b(i)
}
Simple payload sorting for octet aligned operation
/* payload header */
k=0; H=8;
if (interleaving){
H+=8; /* Interleaving extension */
}
for (i = 0; i < H; i++){
b(k++) = h(i);
}
/* table of contents */
T=8;
for (j = 0; j < N; j++){
for (i = 0; i < T; i++){
b(k++) = t(j,i);
}
}
/* CRCs, only if signaled */
if (crc) {
for (j = 0; j < N; j++){
for (i = 0; i < C(j); i++){
b(k++) = p(j,i);
}
}
}
/* payload frames */
for (j = 0; j < N; j++){
for (i = 0; i < F(j); i++){
b(k++) = f(j,i);
}
/* padding of each speech frame */
S = (k%8 == 0) ? 0 : 8 - k%8;
for (i = 0; i < S; i++){
b(k++) = 0;
}
}
/* map into octets */
for (i = 0; i < k; i++){
o(i/8,i%8)=b(i)
}
references:
https://www.ietf.org/proceedings/51/I-D/draft-ietf-avt-rtp-amr-10.txt
No comments:
Post a Comment