osmux: Generate AMR OA payload paddings bits as 0
Some AMR format's payload size doesn't necessarily fit octet boundaries. When AMR octet-aligned is used, padding bits are appended at the end to fill the octet. Until this patch, the padding bits where set with whatever payload fill pattern was provided. Instead of doing so, better set the padding bits to 0 to avoid conflicts when checking the received paytload later on, since those bits are potentially be going to be set to 0 (eg when converting to bandwidth-efficient). Related: SYS#6161 Change-Id: I5bc68eb05c2f5500a259f4c73d14b51794f7f078
This commit is contained in:
parent
389d7e061f
commit
30f0667a4d
|
@ -33,7 +33,13 @@ type enumerated AMRFT {
|
|||
const integer c_AMRFT_len[9] := {12, 13, 15, 17, 19, 20, 26, 31, 5};
|
||||
|
||||
function f_amrft_payload_len(INT4b amr_ft) return integer {
|
||||
return c_AMRFT_len[amr_ft];
|
||||
return c_AMRFT_len[amr_ft];
|
||||
}
|
||||
|
||||
const integer c_AMRFT_bits_len[9] := {95, 103, 118, 134, 148, 159, 204, 244, 39};
|
||||
|
||||
function f_amrft_payload_bits_len(INT4b amr_ft) return integer {
|
||||
return c_AMRFT_bits_len[amr_ft];
|
||||
}
|
||||
|
||||
type record RTP_AMR_Hdr {
|
||||
|
|
|
@ -374,12 +374,20 @@ private function f_txhandle_cid_add(OsmuxTxHandle hdl) runs on OSMUX_Emulation_C
|
|||
log2str("No Space in TxHandleList for ", hdl.cid));
|
||||
}
|
||||
|
||||
/* Generate correctly-sized AMR payload based on amr_ft, using tx_fixed_payload as a fill pattern. */
|
||||
function f_osmux_gen_expected_rx_rtp_payload(INT4b amr_ft, octetstring tx_fixed_payload) return octetstring {
|
||||
var integer payload_len_bits;
|
||||
var integer payload_len;
|
||||
var bitstring payload_truncated_bits;
|
||||
var octetstring payload_truncated;
|
||||
var integer i;
|
||||
|
||||
/* Generate the AMR payload as a bitstring, since some formats don't end up in octet boundary: */
|
||||
payload_len_bits := f_amrft_payload_bits_len(amr_ft);
|
||||
payload_truncated_bits := substr(oct2bit(tx_fixed_payload), 0, payload_len_bits);
|
||||
|
||||
/* Now convert it as an octet string filling final padding with zeroes: */
|
||||
payload_len := f_amrft_payload_len(amr_ft);
|
||||
payload_truncated := substr(tx_fixed_payload, 0, payload_len);
|
||||
payload_truncated := bit2oct(f_pad_bit(payload_truncated_bits, payload_len*8, '0'B));
|
||||
return payload_truncated;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue