Opened 11 years ago

Closed 10 years ago

Last modified 10 years ago

#762 closed defect (fixed)

Possibility of infinite loop in jitter buffer (thanks Michael Broughton for the report).

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

Description (last modified by bennylp)

The full report can be found in this thread.

The problem seems to be caused by modification in ticket #744.

The corresponding ticket for 1.0.x branch is ticket #763

Change History (9)

comment:1 Changed 10 years ago by nanang

In r2578:

  • Updated loop condition in put_frame() to avoid possibility of infinite loop.
  • Added JB capabilities to handle sequence restart & jump.
  • Updated jitter calculation, e.g: reset max_hist_level after updating prefetch, avoid updating prefetch when burst level is exceeding max_burst.
  • Updated shrinking method to be less agressive (only shrink JB when JB size is twice larger than burst level).
  • Updated the way JB switching status from 'initializing' to 'processing' by waiting for some OP switch cycles.
  • Few simplifications in framelist process, e.g: replacing fields 'empty' & 'tail' with 'size'.
  • Minor updates: comments, shortened framelist field names, added some JB states for reporting/monitoring purpose.

comment:2 Changed 10 years ago by nanang

In r2579, updated JB test:

  • Added support for more scenarios, e.g: frame loss, late, sequence restart, etc.
  • Added automatic test result checks based on specified condition.
  • Updated test data.

comment:3 Changed 10 years ago by nanang

In r2583:

  • Fixed jbuf in handling far sequence jump (the distance is over jbuf capacity) while jbuf is empty.

comment:4 Changed 10 years ago by nanang

In r2585:

  • Updated delay calculation method & added statistic report in jbuf_destroy().

comment:5 Changed 10 years ago by nanang

In r2587:

  • Replaced stricmp() with pj_ansi_stricmp() in jbuf_test.c for cross platform compatibility.

comment:6 Changed 10 years ago by bennylp

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

comment:7 Changed 10 years ago by nanang

In r2662:

  • Cleaned up jbuf.c of unused function jb_framelist_origin().

comment:8 Changed 10 years ago by nanang

In r2672:

  • Fixed jitter buffer in handling DTX with relative short period of 'keep alive', e.g: Speex DTX seems to periodically send a keep alive frame every 20 silence frames.

comment:9 Changed 10 years ago by bennylp

  • Description modified (diff)
Note: See TracTickets for help on using tickets.