[Live-devel] understanding the normalzerFilter in the ProxyServerMediaSubsession::createNewStreamSource
Ross Finlayson
finlayson at live555.com
Wed Dec 30 12:57:06 PST 2015
The “PresentationTimeSessionNormalizer" and “PresentationTimeSubsessionNormalizer” classes are used to ensure that the presentation times - sent by the proxy server to the ‘front-end’ clients - are aligned with ‘wall clock’ time. This is important for ensuring that RTCP “SR” report packets (also sent by the proxy server to the ‘front-end’ clients) allow the clients to properly compute the presentation times.
The proxy server *cannot* simply pass on - untranslated - the presentation times that it sees from its ‘back end’ server, because then the RTCP “SR” packets - sent by the proxy server - would not allow the clients to properly compute the presentation times. Instead, the proxy server ‘shifts’ the incoming presentation times so that they are aligned with ‘wall clock’ time; that’s the role of the “PresentationTimeSessionNormalizer" and “PresentationTimeSubsessionNormalizer” classes, which much always be used.
Note that - as always - the presentation times that clients receive are not considered accurate until the client receives the first RTCP “SR” packet from the proxy server; see
http://live555.com/liveMedia/faq.html#rtcp-synchronization-issue
Note also that the proxy server does not start sending RTCP “SR” packets towards its client(s) until after it has received the first RTCP “SR” packet from its ‘back end’ server - i.e., not until it knows that the back end stream’s presentation times are accurate.
Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
More information about the live-devel
mailing list