Opened 17 years ago
Last modified 17 years ago
#461 assigned enhancement
New Jitter Buffer Development
Reported by: | nanang | Owned by: | nanang |
---|---|---|---|
Priority: | normal | Milestone: | Known-Issues-and-Ideas |
Component: | pjmedia | Version: | users_nanang |
Keywords: | Cc: | ||
Backport to 1.x milestone: | Backported: |
Description
Main objectives are aiming optimum latency, drift handling, less noise, and good samples manipulation (insertion/deletion).
New jitter buffer works around playout buffering, packet reordering, decoder/PLC control, burst/jitter level calculation, drift calculation, samples insertion and deletion algorithms for drift compensation.
Related issues:
- DTX (silence frames and stop receiving/sending).
- White/grey noise generator.
- Codec switching on the fly (simultaneous codec).
- Jitter buffer re-usability for video.
Change History (9)
comment:1 Changed 17 years ago by nanang
comment:2 Changed 17 years ago by nanang
In r1771:
Added test for new jitter buffer (JB2).
The test will read text file that contains sequence of characters that simulate JB2 operations (PUT & GET).
This test is useful to analyze JB2 behaviour on jitter, DTX, drift, and packet lost.
comment:3 Changed 17 years ago by nanang
In r1772:
Added another test for JB2, which the objective is to measure the quality of drift compensation.
The test will read wav file (raw PCM) and supply frames to JB2 at rate controlled by pjmedia_clock so drift can be simulated via clock setting.
The sound device will regularly get the frames from JB2 at its own clock.
comment:4 Changed 17 years ago by nanang
In r1773:
Fixed bug in find_matched_window(), the ref pointer is not correctly set.
comment:5 Changed 17 years ago by nanang
- Status changed from new to assigned
In r1775:
- added JB phases(idle, learning, running)
- changed jb_vbuf_shrink_to() to jb_vbuf_shrink(), the size param specifies the shrink size
- added jb_vbuf_expand
- modified insert_samples(), automatically insert new frames needed to jb
comment:6 Changed 17 years ago by nanang
In r1776:
- added feature resample, to test the effect of drift compensation on resampling
- removed 'frame' options (specifies number of samples per frame)
- changed options 'file' (specifies inputfile) to argument
comment:7 Changed 17 years ago by nanang
In r1778:
- added param userdata to JB callbacks
- added a bit optimization on pjmedia_jb2_get_frame(): shifting pointer instead of shifting frame buffer(memmove) when only parts of PCM frame needed
- modified DTX handling mechanism: detects jumping timestamp but good sequence to generate noise/silence frames, instead of relying on abnormal drift.
- modified behaviour on failure of allocating frame
- moved abnormal drift detection from compensate_drift() to update_state()
- added/removed some log for debugging purpose
comment:8 Changed 17 years ago by nanang
In r1779:
Initial integration of the new jitter buffer into stream
comment:9 Changed 17 years ago by bennylp
- Milestone changed from release-0.9.0 to unassigned
In r1770:
Added the new jitter buffer, initial source.