Wim Taymans
aeacbfed3e
jitterbuffer: flesh out buffering mode some more
...
Add a buffering state to the jitterbuffer and wait until buffering ends before
pushing out packets.
2010-02-12 17:22:52 +01:00
Wim Taymans
56b29c9a6b
jitterbuffer: hook up the mode property
...
Expose a mode property on the jitterbuffer.
Fix the case where timestamps are -1 in the check for outgoing timestamps.
2010-02-12 17:22:52 +01:00
Wim Taymans
be4517a6b8
jitterbuffer: add buffering mode options
...
Add getters and setters for different buffering modes that the jitterbuffer will
support. Default to the current slave mode.
2010-02-12 17:22:52 +01:00
Wim Taymans
99a581215f
jitterbuffer: add some more debug info
2010-02-12 13:53:57 +01:00
Wim Taymans
05418f1687
rtpbin: avoid some structure copies
...
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-22 22:27:21 +01:00
Pascal Buhler
c3448f978e
rtpmanager: improve SDES handling
...
Store SDES internally as a struct to support multiple PRIV values.
Include all values set in SDES struct when sending RTCP SDES.
2009-12-22 21:43:25 +01:00
Wim Taymans
9734699788
rtpbin: add property to remove pads automatically
...
Add a property called autoremove to automatically remove the pads of sources
that timed out.
Fixes #554839
2009-12-21 15:07:44 +01:00
Wim Taymans
c611bbaa8e
ssrcdemux: fix comparison
...
A NULL means no pad was found.
2009-12-21 15:07:34 +01:00
Aurelien Grimaud
07f27f0efd
rtpsession: avoid buffer ref/unref pairs for CSRCs
...
We ref the buffer before pushing it downstream in order to get the CSRCs of it
after pushing. This causes performance problems when downstream elements want to
change the metadata because the buffer needs to be subbuffered.
Instead, read and store the CSRCs of the buffer in an array before pushing it
and process the array after pushing the buffer. This allows us to remove the
ref/unref pair.
Fixes #603376
2009-11-30 15:59:50 +01:00
Wim Taymans
8070ae967b
jitterbuffer: avoid using wrong clock-rate
...
Check for a valid clock-rate before attempting to estimate the npt
stop time.
2009-11-25 10:38:23 -06:00
Wim Taymans
5682e2bf01
rtpbin: fix typo in comments
2009-11-25 10:37:30 -06:00
Stefan Kost
9ee0815e85
docs: more links and better short description
...
Fix spelling of GstRtpSsrcDemux to get it linked. Add more links. Change
the short description to be more meaningful.
2009-11-20 11:25:49 +02:00
Wim Taymans
f52859432f
jitterbuffer: release lock before emiting signals
...
Release the jbuf lock before emiting the request-pt-map signal to avoid
deadlocks. We also need to catch the shutdown case when locking again.
Fixes #593354
2009-11-18 10:50:44 +01:00
Stefan Kost
e43eb89449
tests: add a jitterbuffer test
...
Tests pushing a few buffers in various order and asserting the order sent by the
jitterbuffer. Contains two disabled tests that need more work.
2009-10-22 13:35:57 +03:00
Stefan Kost
6904e46ef2
build: use gst-glib-gen.mak to fix the glib build rules.
...
The build rules in glib-gen.mak were using pattern rules in a non save way.
2009-10-16 11:53:38 +03:00
Håvard Graff
58b9de4cca
rtpptdemux: only forward the lost-event to the last seen pt-number
...
forward all events on all pads except for the PacketLost event, which we want to
forward to the last seen pt pad.
Fixes #598377
2009-10-14 12:28:55 +02:00
Stefan Kost
e0cdd879b4
build: fprintf, sprintf, sscanf need stdio.h
2009-10-07 14:03:20 +03:00
Wim Taymans
0040d01265
rtpbin: use locking around the sessions
2009-10-05 16:07:24 +02:00
Wim Taymans
8fb77403c5
jitterbuffer: cache latency in nanoseconds
...
Cache the latency in nanoseconds units to avoid having to convert the
milliseconds value to nanoseconds all the time.
2009-10-01 12:52:40 +02:00
Wim Taymans
c262735164
jitterbuffer: handle -1 input timestamps
...
Don't try to check a -1 timestamp against the max delay.
2009-10-01 12:12:09 +02:00
Stefan Kost
0a7ef67ad0
docs: fix gtk-doc warnings
2009-09-10 10:28:48 +03:00
Marc Leeman
6b46aeb6a3
rtpbin: add ignore-pt parameter
...
Add a parameter 'ignore-pt' that disables creating a gstrtpptdemux module and
ghosts the pads of gstrtpjitterbuffer instead of the ones of gstrtpptdemux.
Fixes #594490
2009-09-08 17:38:32 +02:00
Håvard Graff
2912b21d14
rtpbin: propagate payload-type-change signal from demuxer
...
fixes #594254
2009-09-08 13:59:56 +02:00
Havard Graff
a52309eff7
jitterbuffer: change severity of clock-rate change debug
...
Make log GST_DEBUG under normal circumstances, GST_WARNING otherwise.
Fixes #594253
2009-09-08 13:44:49 +02:00
Håvard Graff
40549278c3
jitterbuffer: avoid throwing reordered buffers with same timestamps
...
When we receive a reordered packet with the same timestamp as the previous one
(which can happen for fragmented packets) don't consider the packet as lost but
instead wait for the reordered packet to arrive.
Switch the warning-level, so that a reordering does not get a warning, only
an actual produced lost-packet.
Fixes #594251
2009-09-08 13:39:31 +02:00
Stig Sandnes
8f3299c547
rtpbin: make free_session() remove stream references
...
When receiving a sync-packet, all sessions with the same cname will be compared
and synced together. In this process, there could still be references to a
session that has been shut down in the meanwhile.
This patch makes sure that these references are removed when shutting down a
session, so that the syncing can be done safely.
Fixes #594283
2009-09-08 13:18:29 +02:00
Havard Graff
e08e610db0
rtpbin: use locked state on internal bins
...
Set the locked state on internal elements to make sure that they don't change
back to another state when shutting down.
Fixes #594248
2009-09-08 12:41:52 +02:00
Laurent Glayal
371875c57a
rtpsource: fix memleak
...
Don't leak the input buffer when the received and expected seqnum are different when
in probation.
fixes #594039
2009-09-03 19:37:10 +02:00
Olivier Crête
f542f710cf
rtpjitterbuffer: Lock clock_rate variable
...
The priv->clock_rate variable could become -1 between when its checked to not
be -1 and when its used, causing an assertion. Fixed by taking the mutex
earlier in the chain() function.
Fixes #593955
2009-09-03 19:17:00 +02:00
Wim Taymans
3fcde4486d
rtpsource: whitespace fixes
2009-09-03 19:17:00 +02:00
Wim Taymans
3f629f6001
rtpsession: whitespace fixes
2009-09-03 19:16:59 +02:00
Peter Kjellerstedt
fdf18653b7
rtpmanager: Fixed a copy & paste error
2009-09-01 15:06:46 +02:00
Peter Kjellerstedt
dc4f9575be
rtpmanager: Removed unused variable priv
...
The variable priv was initialized in a lot of functions but then never
used for anything.
2009-09-01 13:21:23 +02:00
Peter Kjellerstedt
57adc2a803
rtpmanager: A little clean up
...
Make the code flow of gst_rtp_session_send_rtcp() and
gst_rtp_session_sync_rtcp() identical.
2009-09-01 13:04:14 +02:00
Peter Kjellerstedt
923b5b495a
rtpmanager: Make sure that used caps are not freed already (take 2)
...
This reintroduces the fix for bug #593391 . It also applies it in
gst_rtp_session_sync_rtcp() which has very similar code to
gst_rtp_session_send_rtcp().
2009-09-01 13:04:14 +02:00
Wim Taymans
8d924611e7
jitterbuffer: make sure time does not go backwards
...
When we construct a timestamp that would result in a timestamp that is earlier
than when the packet was received, reset the skew calculation as this is
probably a sign that the sender restarted or paused.
Fixes #593354
2009-09-01 12:48:28 +02:00
Peter Kjellerstedt
bfb1260af4
rtpmanager: Set caps in gst_rtp_session_send_rtcp() correctly again
...
The test for when to set an RTCP caps on the output pad in
gst_rtp_session_send_rtcp() accidentally got inverted in the last commit.
2009-09-01 11:32:41 +02:00
Wim Taymans
a74c385b7b
rtpsession: use proper locking for pads and caps
...
Use the sesion lock and shotdown variable to protect and ref the pads we are
going to push on.
fixes #561825
2009-08-31 16:38:27 +02:00
Wim Taymans
a522a2d4d2
rtpbin: whitespace fixes
2009-08-31 16:33:26 +02:00
Wim Taymans
a26a2a9ff5
jitterbuffer: add slope estimation code and debug
...
Add some code to measure the sender speed vs the receiver speed. This can be
used to detect bursts.
2009-08-31 13:02:16 +02:00
Wim Taymans
4814d899c2
jitterbuffer: reset skew when timestamps change
...
Refactor the jitterbuffer resync code.
Reset the skew correction when we detect a big timestamp discont.
See #593354
2009-08-31 12:57:32 +02:00
Wim Taymans
e254936e34
jitterbuffer: make sure time never goes invalid
...
Since the skew can be negative, we might end up with invalid timestamps. Check
for negative results and clamp to 0.
See #593354
2009-08-31 12:47:15 +02:00
Sebastian Dröge
041fa82179
rtpsession: Make sure that used caps are not freed already
...
Fixes bug #593391 .
2009-08-31 08:09:09 +02:00
Sebastian Dröge
000a483d31
rtp: Use new gst_iterator_new_single() for the internal linked pads iteration
2009-08-31 08:09:09 +02:00
Sebastian Dröge
a1cddb3fd6
rtpsession: Use iterate internal links instead of deprecated get internal links
2009-08-31 08:09:09 +02:00
Sebastian Dröge
c8c02d2c7a
jitterbuffer: Use iterate internal links instead of deprecated get internal links
2009-08-31 08:09:08 +02:00
Sebastian Dröge
97cb7bdb6c
rtpssrcdemux: Use iterate internal links instead of deprecated get internal links
2009-08-31 08:09:08 +02:00
Olivier Crête
7f569ca9c8
rtpbin: Fix reference leak
...
Fixes #591476 .
2009-08-14 13:47:18 +01:00
ric
92abe07e80
rtpsource: avoid buffer leak on bad seqnum
...
Fixes #590797
2009-08-11 02:30:47 +01:00
Wim Taymans
9f68303a2e
rtpsource: allow for NULL caps on buffers
...
Add the NULL caps check where it matters and also cover another case of
potential NULL caps.
Fixes #590030
2009-08-11 02:30:47 +01:00
Olivier Crête
e37844fdc7
rtpsource: Incoming buffers do not always have caps
2009-08-11 02:30:47 +01:00
Wim Taymans
3091137217
rtpsession: avoid doing lip-sync in BYE
...
When we get a BYE packet, don't do lip-sync with the SR inside because some
senders have trouble constructing valid SR packets after BYE.
2009-08-11 02:30:47 +01:00
Wim Taymans
3747ede14a
rtpbin: don't do lip-sync after a BYE
...
After a BYE packet from a source, stop forwarding the SR packets for lip-sync
to rtpbin. Some senders don't update their SR packets correctly after sending a
BYE and then we break lip-sync. We prefer to let the jitterbuffers drain with
the current lip-sync instead.
2009-08-11 02:30:47 +01:00
Wim Taymans
d2ef095b80
rtpbin: only reconsider once for BYE
...
When iterating the sources of a BYE packet, don't signal a reconsideration for
each of them but signal after we handled all sources.
2009-08-11 02:30:47 +01:00
Olivier Crête
e8c6bcdf8d
rtpsession: Free conflicting addresses on finalize
2009-08-11 02:30:46 +01:00
Wim Taymans
428368b44a
rtpbin: use new method for netaddress to string
2009-08-11 02:30:46 +01:00
Wim Taymans
512ba93159
rtpbin: do better cleanup of the src ghostpads
...
Connect to the pad-removed signal of the ptdemux elements so that we remove the
ghostpads for them. Fixes cleanup when going to NULL as well as when releasing
the sinkpads.
Fixes #561752
2009-08-11 02:30:46 +01:00
Wim Taymans
d7a8663e05
rtpsession: add a comment
2009-08-11 02:30:46 +01:00
Wim Taymans
c53e595d23
rtpbin: add SDES property
...
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-11 02:30:46 +01:00
Wim Taymans
9f330992f5
rtpbin: add SDES property that takes GstStructure
...
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-11 02:30:46 +01:00
Wim Taymans
d8496fb105
rtpbin: removed old gstrtpclient
2009-08-11 02:30:45 +01:00
Branko Subasic
779f67adc4
rtpbin: add support for buffer-list
...
Add support for sending buffer-lists.
Add unit test for testing that the buffer-list passed through rtpbin.
fixes #585839
2009-08-11 02:30:45 +01:00
Tim-Philipp Müller
c5793a6a45
Make build without warnings with debugging disabled
2009-08-11 02:30:45 +01:00
Olivier Crête
cf873498d2
rtpbin: Transform the right session sdes message
...
Fixes #584165
2009-08-11 02:30:45 +01:00
Olivier Crête
dee142a945
Add ssrc to application/x-rtp-source-sdes structure
2009-08-11 02:30:45 +01:00
Wim Taymans
bf15048f42
rtpsouce: the network address is in network order
...
Bring the network address in netowkr byte order to the host order.
2009-08-11 02:30:45 +01:00
Wim Taymans
91eef69131
rtpsource: byteswap the port from GstNetAddress
...
Since the port in GstNetAddress is in network order we might need to byteswap it
before adding it to the source statistics.
2009-08-11 02:30:45 +01:00
Wim Taymans
51251d0fa8
rtpbin: remove ptdemux ghostpads
2009-08-11 02:30:44 +01:00
Wim Taymans
7d9c2d20df
rtpbin: add to new signal to remove SSRC pads
2009-08-11 02:30:44 +01:00
Ali Sabil
6c684e59c6
ssrcdemux: emit signal when pads are removed
...
Add action signal to clear an SSRC in the ssrc demuxer.
Add signal to notify of removed ssrc.
See #554839
2009-08-11 02:30:44 +01:00
Wim Taymans
48872d8215
rtpbin: use our ghostpads instead of its target
...
Since we keep a reference to our ghostpads, we can use them to track sessions.
This avoid us having to mess with the target of the ghostpad.
2009-08-11 02:30:44 +01:00
Wim Taymans
901b7f3b69
rtpbin: don't warn when getting request pads twice
...
Allow getting the request pads multiple times, just return the previously
created pads.
2009-08-11 02:30:44 +01:00
Wim Taymans
0ae6e3603b
rtpsource: add RTP and RTCP source address
...
Add the RTP and RTCP sender addresses in the stats structure.
2009-08-11 02:30:44 +01:00
Wim Taymans
62727e8fab
rtpsession: reuse source code for SDES
...
Reuse the RTPSource object property instead of duplicating code.
2009-08-11 02:30:44 +01:00
Wim Taymans
1719af9113
rtpbin: set target state on new elements
...
Set the state on newly added elements to the state of the parent.
Add some debug info and do some cleanups
2009-08-11 02:30:43 +01:00
Wim Taymans
9c92ee6209
rtpbin: unref requests pads after releasing
2009-08-11 02:30:43 +01:00
Olivier Crête
a1c0bb2488
rtpbin: Implement releasing the streams
...
See #561752
2009-08-11 02:30:43 +01:00
Olivier Crête
e77542d350
rtpbin: Keep jb signals handler
...
Keep the signal handlers so they can be disconnected at release time
See #561752
2009-08-11 02:30:43 +01:00
Wim Taymans
59d0590cd7
rtpbin: use the right lock for the sessions
...
Use the right lock when iterating the sessions.
2009-08-11 02:30:42 +01:00
Olivier Crête
a9d6f3558c
rtpbin: Free session if request pads are released
...
Free the session when all the request pads are released.
Don't mess with the session list in free_session as it is called from a foreach
on that list.
Set the state of the upstream element to NULL first.
See #561752
2009-08-11 02:30:42 +01:00
Olivier Crête
46388b767f
rtpbin: Implement relasing of the rtp recv pad
2009-08-11 02:30:42 +01:00
Olivier Crête
3509098468
rtpbin: Implement releasing of rtp send pads
2009-08-11 02:30:42 +01:00
Olivier Crête
2f6e9d7bf2
rtpbin: Implement release of the recv rtcp pad
...
See #561752
2009-08-11 02:30:42 +01:00
Olivier Crête
47d4bb90c1
rtpbin: Implement releasing of rtcp src pad
...
See #561752
2009-08-11 02:30:41 +01:00
Wim Taymans
11607c4d63
rtpssrcdemux: drop unexpected RTCP packets
...
We usually only get SR packets in our chain function but if an invalid packet
contains the SR packet after the RR packet, we must not fail but simply ignore
the malformed packet.
Fixes #581375
2009-08-11 02:30:41 +01:00
Olivier Crete
3482b47666
rtpsouce: make WARNING into LOG
...
Since neither rtpmanager nor any of the payloaders properly implement
pad allocation, there is no way for the rtpmanager to inform downstream elements
of the new SSRC if there is an SSRC collision. So the warning is emitted all the
time and it is confusing.
Fixes #580144
2009-08-11 02:30:41 +01:00
Olivier Crete
63636b1290
rtpsession: notify when SSRC changes
...
Emit a g_object_notify when the SSRc changes because of a collision.
Fixes #580144
2009-08-11 02:30:41 +01:00
Wim Taymans
d45d18c735
rtpsession: join the RTCP thread
...
Avoid a case where a joinable thread would be left unjoined, which leaked the
thread structure.
Fixes #577318 .
2009-08-11 02:30:41 +01:00
Wim Taymans
64046416cc
jitterbuffer: prevent overflow in EOS estimation
...
Use a guint64 instead of a guint to hold a 64bit value to prevent completely
bogues EOS estimation values due to overflows.
2009-08-11 02:30:41 +01:00
Wim Taymans
d6c623e90c
rtpbin: we should not provide a clock
...
There is no need to provide a clock.
2009-08-11 02:30:41 +01:00
Wim Taymans
5ece6ae4e3
jitterbuffer: more estimated EOS fixes
...
Do more accurate EOS estimate and guard against backward timestamps.
2009-08-11 02:30:41 +01:00
Wim Taymans
cbad89600c
jitterbuffer: release lock before pushing EOS
...
Make sure we release the jitterbuffer lock before we start pushing out data
because else we might deadlock.
2009-08-11 02:30:41 +01:00
Wim Taymans
918c9448f2
rtpbin: add on_npt_stop signal
...
Add the on_npt_stop signal to rtpbin and rtpjitterbuffer to notify the
application that the NPT stop position has been reached.
2009-08-11 02:30:41 +01:00
Wim Taymans
55c3da71c1
rtpbin: don't return FALSE on seek events
...
Silently ignore the seek event instead of returning FALSE.
2009-08-11 02:30:41 +01:00
Olivier Crête
109874ed50
gstrtpbin: Don't forward revc events to sender
...
Don't send events from the receiver to the sender side.
Fixes #572900 .
2009-08-11 02:30:40 +01:00
Stefan Kost
7ae3923ac6
docs: various doc fixes
...
No short-desc as we have them in the element details.
Also keep things (Makefile.am and sections.txt) sorted.
Reword ambigous returns. No text after since please.
2009-08-11 02:30:40 +01:00
Wim Taymans
2c6ab34114
Send BYE packets immediatly for small sessions
...
When the number of participants is less than 50, the RFC allows for sending the
BYE packet immediatly instead of using the regular BYE timeout.
Fixes #567828 .
2009-08-11 02:30:40 +01:00
Wim Taymans
7f0b100db5
Unlock the jitterbuffer before pushing out the packet-lost events.
...
Move some code before we do the unlock to make the jitterbuffer state
consistent while we are unlocked.
2009-08-11 02:30:40 +01:00
Olivier Crete
dfdc9b6662
gst/rtpmanager/: When an SSRC is found on the caps of the sender RTP, use this as the internal SSRC. Fixes #565910 .
...
Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_setcaps_send_rtp), (create_send_rtp_sink):
* gst/rtpmanager/rtpsession.c: (rtp_session_set_internal_ssrc):
When an SSRC is found on the caps of the sender RTP, use this as the
internal SSRC. Fixes #565910 .
2009-08-11 02:30:40 +01:00
Wim Taymans
0ad92e7da6
gst/rtpmanager/: Rename a method to better reflect what it really does.
...
Original commit message from CVS:
* gst/rtpmanager/gstrtpsession.c:
(gst_rtp_session_event_send_rtp_sink),
(gst_rtp_session_getcaps_send_rtp):
* gst/rtpmanager/rtpsession.c: (check_collision),
(rtp_session_schedule_bye_locked), (rtp_session_schedule_bye):
* gst/rtpmanager/rtpsession.h:
Rename a method to better reflect what it really does.
2009-08-11 02:30:40 +01:00