summaryrefslogtreecommitdiff
path: root/gst/rtpmanager/rtpsource.h
AgeCommit message (Collapse)AuthorFilesLines
2020-11-03rtpsource: Report for which local SSRC is a remote RB reporting onOlivier Crête1-2/+2
This is useful in the Bundle case because there may be multiple local and remote SSRCs in the same session. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/776>
2019-04-05rtpsession: Send as many nack seqnum as possibleNicolas Dufresne1-3/+6
In order to do that, we now split the nacks registration from the actual FB nack packet construction. We then try and add as many FB Nacks as possible into the active packets and leave the remaining seqnums in the RTPSource. In order to avoid sending outdated NACK later on, we save the seqnum calculated deadline and cleanup the outdated seqnums before the next RTCP send. Fixes #583
2019-02-13rtp: Add property to disable RTCP reports per internal rtpsourceNicolas Dufresne1-0/+2
This is useful when implementing custom retransmission mechanism like RIST to prevent RTCP from being produces for the retransmitted SSRC. This would also be used in general for various purpose when customizing an RTP base pipeline.
2018-11-30rtpsource: properly prune RTCP packets out of feedback_retention_windowMiguel Paris1-0/+1
Closes #522
2017-03-16rtpsource: get clock-rate from pt if needed to generate SRMiguel París Díaz1-0/+2
https://bugzilla.gnome.org/show_bug.cgi?id=780105
2017-02-02rtpsession: relate received FIRs and PLIs to sourceMiguel París Díaz1-0/+1
This is needed in order to: - Avoid ignoring requests for different media sources. - Add SSRC field in the GstForceKeyUnit event. https://bugzilla.gnome.org/show_bug.cgi?id=778013
2015-10-07rtpmanager: Take into account packet rate for max-dropout and max-misorder ↵Miguel París Díaz1-0/+3
calculations https://bugzilla.gnome.org/show_bug.cgi?id=751311
2015-10-07rtpmanager: add "max-dropout-time" and "max-misorder-time" propsMiguel París Díaz1-0/+2
https://bugzilla.gnome.org/show_bug.cgi?id=751311
2015-06-02rtpsession: Add property for selecting RTP profile (AVP/AVPF/etc)Sebastian Dröge1-1/+1
And modify our RTCP scheduling algorithm accordingly. We now can send more RTCP packets if needed for feedback, but will throttle full RTCP packets by rtcp-min-interval (t-rr-int from RFC4585). In non-feedback mode, rtcp-min-interval is Tmin from RFC3550, which is statically set to 1s or 0s by RFC4585. Tmin defines how often we should send RTCP packets at most. https://bugzilla.gnome.org/show_bug.cgi?id=746543
2014-10-10rtpsource: Rename seqnum-base to seqnum-offset in capsOlivier Crête1-1/+1
This was modified back in 1.0 in GstRtpBasePayload
2014-05-03rtpsession: Keep local conflicting addresses in the sessionOlivier Crête1-1/+12
As we now replace the local RTPSource on a conflict, it's no longer possible to keep local conflicts in the RTPSource, so they instead need to be kept in the RTPSession. Also fix the rtpcollision test to generate multiple collisions instead of one by change the address, as otherwise we detected that it was a single one.
2013-12-12rtpsession: fix rb blocks disappearing after the first rtcp cycle with ↵George Kiagiadakis1-0/+2
multiple senders Previously, when the session had multiple internal sender SSRCs, it would issue SR reports with RB blocks only on the first RTCP timeout and afterwards SR reports would be sent empty. This was because the "generation" number in RTPSource would increase more than once during the same cycle and afterwards it would always be greater than the session's generation, which would cause it to be skipped from being included in RBs. This commit fixes this problem by: 1) Increasing the RTPSource generation only at the end of each cycle, which essentially fixes the problem but only when the internal senders are less than GST_RTCP_MAX_RB_COUNT. 2) Keeping for each RTPSource a set of SSRCs which stores which SSRC's SR the given RTPSource has been reported in, which also fixes the problem when the internal senders are more than GST_RTCP_MAX_RB_COUNT. This is necessary because of the fact that any RTPSource is marked as reported in itself's SR and makes it impossible to know if it has been reported in other SRs too or not, and which.
2013-09-13rtpbin: use PacketInfo for the senderWim Taymans1-2/+2
Avoid mapping the packet multiple times when sending RTP.
2013-09-13rtpbin: store more in the PacketInfoWim Taymans1-1/+1
Store all info in the PacketInfo so that we can avoid mapping the packet multiple times.
2013-09-13rtpbin: RTPArrivalStats -> RTPPacketInfoWim Taymans1-1/+1
Rename a structure because we are also going to use this for the sender bits.
2013-09-13source: small cleanupsWim Taymans1-2/+2
2013-08-06source: add methods to register NACKWim Taymans1-1/+8
Add a method to register a missing packet for an ssrc along with methods to get the missing packets and clear them.
2013-07-26session: handle partial RTCP report blocksWim Taymans1-0/+1
When we have more SSRCs to report than what fit in an RTCP packet, use a generation counter to make sure all of them end up in a packet eventually.
2013-07-26session: let source keep track if it sent BYEWim Taymans1-0/+1
2013-07-26source: also use the source for bye_reasonWim Taymans1-4/+12
Store the BYE reason in our internal source object. Rename the methods on the source object a little because now the BYE can be received in RTCP or set when the session wants to send BYE.
2013-07-26session: configure sdes with structure onlyWim Taymans1-3/+0
Remove code to configure the SDES with methods and types, only allow configuration with GstStructure
2012-11-04Fix FSF addressTim-Philipp Müller1-2/+2
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-08-30rtp: make rtp packet probation configurable (bug #682512)Aleix Conchillo Flaque1-2/+3
2012-01-17rtpmanager: Port to GIOSebastian Dröge1-10/+9
2011-11-17Merge branch 'master' into 0.11Wim Taymans1-0/+5
Conflicts: ext/speex/gstspeexenc.c gst/rtpmanager/rtpsession.c
2011-11-14rtpsession: Send FIR requests in response to key unit requests with ↵Olivier Crête1-0/+3
all-headers=TRUE https://bugzilla.gnome.org/show_bug.cgi?id=658419
2011-11-14rtpsession: Put the PLI requests in each RTPSourceOlivier Crête1-0/+2
Also refactor a bit and put all the keyframe request code in one place inside rtpsession.c https://bugzilla.gnome.org/show_bug.cgi?id=658419
2011-11-03update for new net libraryWim Taymans1-1/+1
2011-02-02rtpbin: Get and use the NTP time when receiving RTCPWim Taymans1-1/+1
When we receive an RTCP packet, get the current NTP time in nanseconds so that we can correctly calculate the round-trip time.
2011-02-01rtpsource: Retain RTCP Feedback packets for a specified amount of timeOlivier Crête1-1/+12
2010-12-23rtpsession: remember last sent RB values.Wim Taymans1-0/+1
2010-09-24rtpbin: Make cleaning up sources in rtp_session_on_timeout MT safePascal Buhler1-0/+1
Using _foreach_remove on the hashtable, while releasing the lock protecting that table inside the callback is not a good idea. The hashtable might then change (a source removed or added) while signals like on_timeout are being sent. This solution makes a copy of the table, performs the _foreach without actually removing any sources, but marks them for removal on a second iteration with the real list, but this time not letting go of the lock. Fixes #630452
2010-03-10rtpsession: Make it possible to favor new sources in case of SSRC conflictOlivier Crête1-1/+5
Add a "favor-new" property that tells the session to favor new sources when there is a SSRC conflict. This is useful for SIP calls and other such cases where a remote loop is extremely unlikely. Fixes #607615
2010-03-10rtpsession: Move SSRC conflicts lists into RTPSourceOlivier Crête1-0/+26
We will also need to track SSRC conflicts in remote sources. See #607615
2010-03-08rtpsource: refactor bitrate estimationWim Taymans1-0/+1
Don't reuse the same variable we need for stats for the bitrate estimation because we're updating it. Refactor the bitrate estimation code so that both sender and receivers use the same code path.
2010-02-15rtpbin: change how NTP time is calculated in RTCPWim Taymans1-6/+6
Don't calculate the NTP time based on the running_time of the pipeline but from the systemclock. This allows us to generate more accurate NTP timestamps in case the systemclock is synchronized with NTP or similar.
2009-12-22rtpbin: avoid some structure copiesWim Taymans1-2/+3
Don't make copied in the getter and setter for SDES in the RTPSource. This avoids a couple of copies of the SDES structure when generating RTCP packets.
2009-12-22rtpmanager: improve SDES handlingPascal Buhler1-8/+2
Store SDES internally as a struct to support multiple PRIV values. Include all values set in SDES struct when sending RTCP SDES.
2009-08-11rtpbin: add SDES property that takes GstStructureWim Taymans1-0/+3
Remove all individual SDES properties and use one sdes property that takes a GstStructure instead. This will allow us to add more custom stuff to the SDES messages later.
2009-08-11rtpbin: add support for buffer-listBranko Subasic1-1/+1
Add support for sending buffer-lists. Add unit test for testing that the buffer-list passed through rtpbin. fixes #585839
2009-08-11gst/rtpmanager/rtpsource.*: When no payload was specified on the caps but ↵Wim Taymans1-1/+1
there was a clock-rate, assume the clock-ra... Original commit message from CVS: * gst/rtpmanager/rtpsource.c: (rtp_source_init), (rtp_source_update_caps), (get_clock_rate): * gst/rtpmanager/rtpsource.h: When no payload was specified on the caps but there was a clock-rate, assume the clock-rate corresponds to the first payload type found in the RTP packets. Fixes #565509.
2009-08-11gst/rtpmanager/gstrtpsession.c: Pass the running time to the session when ↵Wim Taymans1-2/+8
processing RTP packets. Original commit message from CVS: * gst/rtpmanager/gstrtpsession.c: (get_current_times), (rtcp_thread), (gst_rtp_session_chain_recv_rtp): Pass the running time to the session when processing RTP packets. Improve the time function to provide more info. * gst/rtpmanager/rtpsession.c: (rtp_session_class_init), (rtp_session_init), (update_arrival_stats), (rtp_session_process_rtp), (rtp_session_process_sdes), (rtp_session_process_rtcp), (session_start_rtcp), (rtp_session_on_timeout): * gst/rtpmanager/rtpsession.h: Mark the internal source with a flag. Use running_time instead of the more useless timestamp. Validate a source when a valid SDES has been received. Pass the current system time when processing SR packets. * gst/rtpmanager/rtpsource.c: (rtp_source_class_init), (rtp_source_init), (rtp_source_create_stats), (rtp_source_get_property), (rtp_source_send_rtp), (rtp_source_process_rb), (rtp_source_get_new_rb), (rtp_source_get_last_rb): * gst/rtpmanager/rtpsource.h: Add property to get source stats. Mark params as STATIC_STRINGS. Calculate the bitrate at the sender SSRC. Avoid negative values in the round trip time calculations. * gst/rtpmanager/rtpstats.h: Update some docs and change some variable name to more closely reflect what it contains.
2009-08-11gst/rtpmanager/gstrtpbin.*: Add signal to notify listeners when a sender ↵Wim Taymans1-4/+0
becomes a receiver. Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (on_sender_timeout), (create_session), (gst_rtp_bin_associate), (gst_rtp_bin_sync_chain), (gst_rtp_bin_class_init), (gst_rtp_bin_request_new_pad): * gst/rtpmanager/gstrtpbin.h: Add signal to notify listeners when a sender becomes a receiver. Tweak lip-sync code, don't store our own copy of the ts-offset of the jitterbuffer, don't adjust sync if the change is less than 4msec. Get the RTP timestamp <-> GStreamer timestamp relation directly from the jitterbuffer instead of our inaccurate version from the source. * gst/rtpmanager/gstrtpjitterbuffer.c: (gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop), (gst_rtp_jitter_buffer_get_sync): * gst/rtpmanager/gstrtpjitterbuffer.h: Add G_LIKELY macros, use global defines for max packet reorder and dropouts. Reset the jitterbuffer clock skew detection when packets seqnums are changed unexpectedly. * gst/rtpmanager/gstrtpsession.c: (on_sender_timeout), (gst_rtp_session_class_init), (gst_rtp_session_init): * gst/rtpmanager/gstrtpsession.h: Add sender timeout signal. * gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew), (calculate_skew), (rtp_jitter_buffer_insert), (rtp_jitter_buffer_get_sync): * gst/rtpmanager/rtpjitterbuffer.h: Add some G_LIKELY macros. Keep track of the extended RTP timestamp so that we can report the RTP timestamp <-> GStreamer timestamp relation for lip-sync. Remove server timestamp gap detection code, the server can sometimes make a huge gap in timestamps (talk spurts,...) see #549774. Detect timetamp weirdness instead by observing the sender/receiver timestamp relation and resync if it changes more than 1 second. Add method to report about the current rtp <-> gst timestamp relation which is needed for lip-sync. * gst/rtpmanager/rtpsession.c: (rtp_session_class_init), (on_sender_timeout), (check_collision), (rtp_session_process_sr), (session_cleanup): * gst/rtpmanager/rtpsession.h: Add sender timeout signal. Remove inaccurate rtp <-> gst timestamp relation code, the jitterbuffer can now do an accurate reporting about this. * gst/rtpmanager/rtpsource.c: (rtp_source_init), (rtp_source_update_caps), (calculate_jitter), (rtp_source_process_rtp): * gst/rtpmanager/rtpsource.h: Remove inaccurate rtp <-> gst timestamp relation code. * gst/rtpmanager/rtpstats.h: Define global max-reorder and max-dropout constants for use in various subsystems.
2009-08-11gst/rtpmanager/: Also keep track of the first buffer timestamp together with ↵Wim Taymans1-0/+1
the first Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_associate), (gst_rtp_bin_sync_chain): * gst/rtpmanager/rtpsession.c: (update_arrival_stats), (rtp_session_process_sr), (rtp_session_on_timeout): * gst/rtpmanager/rtpsource.c: (rtp_source_init), (calculate_jitter): * gst/rtpmanager/rtpsource.h: * gst/rtpmanager/rtpstats.h: Also keep track of the first buffer timestamp together with the first RTP timestamp as they both are needed to construct the timing of outgoing packets in the jitterbuffer and are therefore also needed to manage lip-sync. This fixes lip-sync if the first RTP packets arrive with a wildly different gap.
2009-08-11gst/rtpmanager/rtpsession.*: Implement collision and loop detection in ↵Olivier Crete1-0/+2
rtpmanager. Original commit message from CVS: Patch by: Olivier Crete <tester at tester dot ca> * gst/rtpmanager/rtpsession.c: (find_add_conflicting_addresses), (check_collision), (obtain_source), (rtp_session_create_new_ssrc), (rtp_session_create_source), (rtp_session_process_rtp), (rtp_session_process_sr), (rtp_session_process_rr), (rtp_session_process_sdes), (rtp_session_process_bye), (rtp_session_send_bye_locked), (rtp_session_send_bye), (rtp_session_on_timeout): * gst/rtpmanager/rtpsession.h: Implement collision and loop detection in rtpmanager. Fixes #520626. * gst/rtpmanager/rtpsource.c: (rtp_source_reset), (rtp_source_init): * gst/rtpmanager/rtpsource.h: Add method to reset stats.
2009-08-11gst/rtpmanager/: Add signal to notify of an SDES change.Wim Taymans1-1/+1
Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (on_ssrc_sdes), (create_session), (gst_rtp_bin_class_init): * gst/rtpmanager/gstrtpbin.h: * gst/rtpmanager/gstrtpclient.c: * gst/rtpmanager/gstrtpclient.h: * gst/rtpmanager/gstrtpjitterbuffer.h: * gst/rtpmanager/gstrtpmanager.c: * gst/rtpmanager/gstrtpptdemux.c: * gst/rtpmanager/gstrtpptdemux.h: * gst/rtpmanager/gstrtpsession.c: (on_ssrc_sdes), (gst_rtp_session_class_init), (gst_rtp_session_init): * gst/rtpmanager/gstrtpsession.h: * gst/rtpmanager/gstrtpssrcdemux.c: * gst/rtpmanager/gstrtpssrcdemux.h: * gst/rtpmanager/rtpjitterbuffer.c: * gst/rtpmanager/rtpjitterbuffer.h: * gst/rtpmanager/rtpsession.c: (rtp_session_class_init), (on_ssrc_sdes), (rtp_session_process_sdes): * gst/rtpmanager/rtpsession.h: * gst/rtpmanager/rtpsource.c: * gst/rtpmanager/rtpsource.h: * gst/rtpmanager/rtpstats.c: * gst/rtpmanager/rtpstats.h: Add signal to notify of an SDES change. Fix object type in the signal callbacks.
2009-08-11gst/rtpmanager/: Update comment.Wim Taymans1-33/+53
Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (create_session): * gst/rtpmanager/rtpjitterbuffer.c: Update comment. * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init), (gst_rtp_session_set_property), (gst_rtp_session_get_property): Define some GObject properties to set SDES and other configuration. * gst/rtpmanager/rtpsession.c: (rtp_session_class_init), (rtp_session_init), (rtp_session_finalize), (rtp_session_set_property), (rtp_session_get_property), (on_ssrc_sdes), (rtp_session_set_bandwidth), (rtp_session_get_bandwidth), (rtp_session_set_rtcp_fraction), (rtp_session_get_rtcp_fraction), (rtp_session_set_sdes_string), (rtp_session_get_sdes_string), (obtain_source), (rtp_session_get_internal_source), (rtp_session_process_sdes), (rtp_session_send_rtp), (rtp_session_next_timeout), (session_sdes), (is_rtcp_time): * gst/rtpmanager/rtpsession.h: Add signal when new SDES infor has been found for a source. Create properties for SDES and other info. Simplify the SDES API. Add method for getting the internal source object of the session. * gst/rtpmanager/rtpsource.c: (rtp_source_class_init), (rtp_source_finalize), (rtp_source_set_property), (rtp_source_get_property), (rtp_source_set_callbacks), (rtp_source_get_ssrc), (rtp_source_set_as_csrc), (rtp_source_is_as_csrc), (rtp_source_is_active), (rtp_source_is_validated), (rtp_source_is_sender), (rtp_source_received_bye), (rtp_source_get_bye_reason), (rtp_source_set_sdes), (rtp_source_set_sdes_string), (rtp_source_get_sdes), (rtp_source_get_sdes_string), (rtp_source_get_new_sr), (rtp_source_get_new_rb): * gst/rtpmanager/rtpsource.h: Add GObject properties for various things. Don't leak the bye reason.
2009-08-11gst/rtpmanager/gstrtpbin.c: Use lock to protect variable.Wim Taymans1-8/+0
Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_set_property), (gst_rtp_bin_get_property): Use lock to protect variable. * gst/rtpmanager/gstrtpjitterbuffer.c: (gst_rtp_jitter_buffer_class_init), (gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_chain), (convert_rtptime_to_gsttime), (gst_rtp_jitter_buffer_loop): Reconstruct GST timestamp from RTP timestamps based on measured clock skew and sync offset. * gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_init), (rtp_jitter_buffer_set_tail_changed), (rtp_jitter_buffer_set_clock_rate), (rtp_jitter_buffer_get_clock_rate), (calculate_skew), (rtp_jitter_buffer_insert), (rtp_jitter_buffer_peek): * gst/rtpmanager/rtpjitterbuffer.h: Measure clock skew. Add callback to be notfied when a new packet was inserted at the tail. * gst/rtpmanager/rtpsource.c: (rtp_source_init), (calculate_jitter), (rtp_source_send_rtp): * gst/rtpmanager/rtpsource.h: Remove clock skew detection, it's move to the jitterbuffer now.
2009-08-11gst/rtpmanager/: Updated example pipelines in docs.Wim Taymans1-8/+27
Original commit message from CVS: * gst/rtpmanager/gstrtpbin-marshal.list: * gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_get_client), (gst_rtp_bin_associate), (gst_rtp_bin_sync_chain), (create_stream), (gst_rtp_bin_init), (caps_changed), (new_ssrc_pad_found), (create_recv_rtp), (create_recv_rtcp), (create_send_rtp): * gst/rtpmanager/gstrtpbin.h: Updated example pipelines in docs. Handle sync_rtcp buffers from the SSRC demuxer to perform lip-sync. Set the default latency correctly. Add some more points where we can get caps. * gst/rtpmanager/gstrtpjitterbuffer.c: (gst_rtp_jitter_buffer_class_init), (gst_jitter_buffer_sink_parse_caps), (gst_rtp_jitter_buffer_loop), (gst_rtp_jitter_buffer_query), (gst_rtp_jitter_buffer_set_property), (gst_rtp_jitter_buffer_get_property): Add ts-offset property to control timestamping. * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init), (gst_rtp_session_init), (gst_rtp_session_set_property), (gst_rtp_session_get_property), (get_current_ntp_ns_time), (rtcp_thread), (stop_rtcp_thread), (gst_rtp_session_change_state), (gst_rtp_session_send_rtcp), (gst_rtp_session_sync_rtcp), (gst_rtp_session_cache_caps), (gst_rtp_session_clock_rate), (gst_rtp_session_sink_setcaps), (gst_rtp_session_chain_recv_rtp), (gst_rtp_session_event_send_rtp_sink), (gst_rtp_session_chain_send_rtp), (create_recv_rtp_sink), (create_recv_rtcp_sink), (create_send_rtp_sink), (create_send_rtcp_src): Various cleanups. Feed rtpsession manager with NTP time based on pipeline clock when handling RTP packets and RTCP timeouts. Perform all RTCP with the system clock. Set caps on RTCP outgoing buffers. * gst/rtpmanager/gstrtpssrcdemux.c: (find_demux_pad_for_ssrc), (create_demux_pad_for_ssrc), (gst_rtp_ssrc_demux_base_init), (gst_rtp_ssrc_demux_init), (gst_rtp_ssrc_demux_sink_event), (gst_rtp_ssrc_demux_rtcp_sink_event), (gst_rtp_ssrc_demux_chain), (gst_rtp_ssrc_demux_rtcp_chain): * gst/rtpmanager/gstrtpssrcdemux.h: Also demux RTCP messages. * gst/rtpmanager/rtpsession.c: (rtp_session_set_callbacks), (update_arrival_stats), (rtp_session_process_rtp), (rtp_session_process_rb), (rtp_session_process_sr), (rtp_session_process_rr), (rtp_session_process_rtcp), (rtp_session_send_rtp), (rtp_session_send_bye), (session_start_rtcp), (session_report_blocks), (session_cleanup), (rtp_session_on_timeout): * gst/rtpmanager/rtpsession.h: Remove the get_time callback, the GStreamer part will feed us with enough timing information. Split sync timing and RTCP timing information. Factor out common RB handling for SR and RR. Send out SR RTCP packets for lip-sync. Move SR and RR packet info generation to the source. * gst/rtpmanager/rtpsource.c: (rtp_source_init), (rtp_source_update_caps), (get_clock_rate), (calculate_jitter), (rtp_source_process_rtp), (rtp_source_send_rtp), (rtp_source_process_sr), (rtp_source_process_rb), (rtp_source_get_new_sr), (rtp_source_get_new_rb), (rtp_source_get_last_sr): * gst/rtpmanager/rtpsource.h: * gst/rtpmanager/rtpstats.h: Use caps on incomming buffers to get timing information when they are there. Calculate clock scew of the receiver compared to the sender and adjust the rtp timestamps. Calculate the round trip in sources. Do SR and RR calculations in the source.
2009-08-11gst/rtpmanager/gstrtpsession.*: Distribute synchronisation parameters to the ↵Wim Taymans1-0/+2
session manager so that it can generate ... Original commit message from CVS: * gst/rtpmanager/gstrtpsession.c: (stop_rtcp_thread), (gst_rtp_session_change_state), (gst_rtp_session_event_send_rtp_sink): * gst/rtpmanager/gstrtpsession.h: Distribute synchronisation parameters to the session manager so that it can generate correct SR packets for lip-sync. * gst/rtpmanager/rtpsession.c: (rtp_session_set_base_time), (rtp_session_set_timestamp_sync), (session_start_rtcp): * gst/rtpmanager/rtpsession.h: Add methods for setting sync parameters. Set correct RTP time in SR packets using the sync params. * gst/rtpmanager/rtpsource.c: (rtp_source_send_rtp): * gst/rtpmanager/rtpsource.h: Record last RTP <-> GST timestamp so that we can use them to convert NTP to RTP timestamps in SR packets.