I have discovered the cause: When the video first appears, after the first buffer period, the first few presentation times (PCRs) - before the RTCP sync occurs - are just 'guesses' made by the receiving code (based on the receiver's system clock and the RTP timestamp). Once the RTCP sync report (SR) occurs, all subsequent presentation times will be accurate, but the ones in the buffer from before the SR are inaccurate.
In the VLC log, I very clearly see this:
Code: Select all
live555 debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
main error: ES_OUT_RESET_PCR called
I need to tell VLC to hold off on rendering until after the RTCP SR arrives and not show video using those 'guessed' values before the SR arrives. Can anyone tell me how?