Opened 8 years ago

Closed 8 years ago

#1410 closed defect (fixed)

Assertion and noise when using AMR-WB with multiple frames per packet (thanks Olle Frimanson for the report)

Reported by: nanang Owned by: nanang
Priority: normal Milestone: release-1.12
Component: pjmedia Version: 1.x-branch
Keywords: Cc:
Backport to 1.x milestone: Backported:

Description

Assertion line:

amr_helper.h:922: pjmedia_codec_amr_pack: Assertion `FT <= SID_FT || FT == 14 || FT == 15' failed.

After investigation, a fatal bug is found in ipp_codecs.c pack_amr() in setting up AMR-WB frame size, i.e: using AMR-NB frame size table instead of AMR-WB's.

This will cause wrong AMR-WB data pointers returned by the encoder (only the first frame gets the correct pointer) and the RTP payload generated (by AMR packetizer) will contain corrupted bitstream. So even if assertion is not raised, e.g: release mode or accidentally packetizer always read valid frame types in the wrong data pointer, this will definitely cause noise.

Note that in single frame per packet this issue is never raised as the first frame pointer always points to correct AMR bistream and the AMR packetizer doesn't really read the frame size info supplied by encoder (it uses AMR frame size lookup table instead).

Change History (1)

comment:1 Changed 8 years ago by nanang

  • Resolution set to fixed
  • Status changed from new to closed

(In [3879]) Fix #1410:

  • Fixed bug in ipp_codecs.c pack_amr() in setting up AMR-WB frame size, i.e: using AMR-NB frame size table instead of AMR-WB's.
  • Updated AMR-WB default setting to use two frames-per-packet.
Note: See TracTickets for help on using tickets.