Wim Taymans
c8db05d610
rtpsource: update receiver stats for sender
...
An internal sender in a session is also a receiver of its own packets so update
the receiver stats. Other senders in the session will use this info to generate
correct RB blocks in their SR reports.
2013-11-07 16:24:30 +01:00
Olivier Crête
b9ceafe5af
rtpsession: Demux RTCP buffers from the RTP stream
...
If there are RTCP buffers in the RTP stream, process them as
RTCP. This way, we want receive streams following RFC 5761
https://bugzilla.gnome.org/show_bug.cgi?id=687657
2013-09-13 16:25:49 +02:00
Wim Taymans
28e5f90988
rtpbin: use PacketInfo for the sender
...
Avoid mapping the packet multiple times when sending RTP.
2013-09-13 14:34:28 +02:00
Wim Taymans
a02c9473d8
rtpbin: store more in the PacketInfo
...
Store all info in the PacketInfo so that we can avoid mapping the packet
multiple times.
2013-09-13 14:34:28 +02:00
Wim Taymans
e5c789abd6
session: store more in the PacketInfo structure
2013-09-13 14:34:28 +02:00
Wim Taymans
47662f9ca4
rtpbin: RTPArrivalStats -> RTPPacketInfo
...
Rename a structure because we are also going to use this for the sender
bits.
2013-09-13 14:34:28 +02:00
Wim Taymans
f1106cde66
session: only update next check time when reconsidering
...
Don't update the next RTCP check time in all cases but only when we
reconsidered. This avoids delaying sending a full RTCP packet when we
are doing early feedback.
2013-08-27 09:55:52 +02:00
Wim Taymans
47065db0b6
session: add more debug
2013-08-27 09:55:52 +02:00
Wim Taymans
4b7bcc2ec1
rtsession: fix locking
...
We need to take the session lock when getting and manipulating the
source.
2013-08-26 11:50:27 +02:00
Wim Taymans
3f46527f75
rtpsession: add some more debug
2013-08-26 11:50:13 +02:00
Wim Taymans
5fe18ee432
session: add some docs
2013-08-19 22:04:49 +02:00
Wim Taymans
482dacfb54
session: handle NACK feedback and generate events
...
Handle and parse the feedback NACK packets and generate a Retransmission
event for each NACKed packet
2013-08-19 22:04:49 +02:00
Wim Taymans
48174164eb
session: add NACK feedback in RTCP
2013-08-06 15:50:19 +02:00
Wim Taymans
50638b8106
session: handle Retransmission event and schedule NACK
...
Handle the retransmission event from downstream and use it to schedule a NACK
request.
2013-08-06 15:50:19 +02:00
Wim Taymans
0bddbd682d
session: pass data to remove func
...
Pass the data to the remove function because we are going to deref it when there
is pli or fir.
2013-08-06 15:50:19 +02:00
Wim Taymans
3c82de59f9
session: use common send_rtcp method
...
Reuse the send_rtcp method that already asks for the current time when
requesting a keyframe.
2013-08-05 15:02:59 +02:00
Wim Taymans
3c14c6021c
session: Don't use ClockTimeDiff for unsigned delays
2013-08-05 15:02:59 +02:00
Tim-Philipp Müller
7469cd3a4c
rtpmanager: use generic marshaller
2013-08-04 11:03:07 +01:00
Wim Taymans
9613e481ad
session: add FIR and PLI like other RTCP packets
...
Add the FIR and PLI packets like the other RTCP packet instead of from the
on-sending-rtcp default signal handler.
2013-08-03 00:33:24 +02:00
Wim Taymans
02359f9219
session: don't make buffer writable prematurely
...
There is no reason to make the SR buffer writable at this point. This is better
delayed until needed.
2013-07-26 22:31:41 +02:00
Wim Taymans
0261199fc4
session: ignore RTCP for inactive sources
2013-07-26 22:31:23 +02:00
Wim Taymans
a4b4ca53c0
session: small cleanup
2013-07-26 22:25:17 +02:00
Wim Taymans
e0abd2e9b5
session: handle partial RTCP report blocks
...
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-26 17:29:10 +02:00
Wim Taymans
6cce6fb04c
session: create SSRC before doing session cleanup
...
Make the internal source before we do session cleanup
2013-07-26 17:29:10 +02:00
Wim Taymans
5b0298c63e
session: reorganize the report block code
2013-07-26 17:29:10 +02:00
Wim Taymans
3c44cd7c83
session: refactor active and sender checks
2013-07-26 14:21:40 +02:00
Wim Taymans
e952f7ba43
session: remove internal sources on timeout
...
When an internal source times out and becomes a receiver, remove it.
2013-07-26 12:18:01 +02:00
Wim Taymans
e9e2fe3950
session: create an internal source for RTCP
...
When we need to do RTCP and we don't have an internal source yet,
make one.
2013-07-26 12:18:01 +02:00
Wim Taymans
bd0709c15c
session: remove old code to change SSRC
...
Remove code used to change the SSRC after a collision. We now send
a RECONFIGURE event upstream to make the upstream element change the SSRC.
2013-07-26 12:18:01 +02:00
Wim Taymans
abc90da1dc
session: delay allocation of internal source
...
Allocate the internal source when we receive a caps with the SSRC or when we see
a buffer with the SSRC.
2013-07-26 12:18:01 +02:00
Wim Taymans
e0a1ce1291
session: generate reconfigure on collision
...
When we detect a collision, change the SSRC that we suggest upstream
and trigger RECONFIGURE. This should make upstream select a new SSRC.
2013-07-26 12:18:01 +02:00
Wim Taymans
495d43c089
session: produce RTCP for all internal sources
...
Loop over all the internal sources and produce RTCP. We also need
to queue the RTCP packets and send them when we are finished.
2013-07-26 12:18:00 +02:00
Wim Taymans
9505fd4150
session: deprecate internal source and ssrc properties
...
Deprecate the internal source and internal ssrc properties. There might
be more than one internal source.
2013-07-26 12:17:59 +02:00
Wim Taymans
3d6ee1fb5e
session: internal sources don't use probation
2013-07-26 12:17:59 +02:00
Wim Taymans
0e53e9109e
session: give caps to session
...
Let the session parse the caps and update its SSRC when needed.
2013-07-26 12:17:59 +02:00
Wim Taymans
c06482a2cb
session: make method to suggest available SSRC
...
Make a method to suggest the best available SSRC. This is the SSRC of the last
created internal source and is used to instruct upstream to produce this
SSRC.
2013-07-26 12:17:59 +02:00
Wim Taymans
33ce50e8b1
session: keep SDES and set on new internal sources
...
Keep track of the SDES ourselves and set it on all newly created
internal sources.
2013-07-26 12:17:59 +02:00
Wim Taymans
5652f02b76
session: make method to make internal sources
...
Add a method to obtain an internal source and use it to create
our internal source
2013-07-26 12:17:59 +02:00
Wim Taymans
7f83927c95
session: count internal sources and how many are senders
2013-07-26 12:17:58 +02:00
Wim Taymans
719343c206
rtpsession: separate BYE marking and scheduling
...
First mark sources with BYE and then schedule the BYE RTCP message.
2013-07-26 12:17:58 +02:00
Wim Taymans
391943ba82
session: get SSRC from RTCP packet itself
...
Get the SSRC from the RTCP packet instead.
2013-07-26 12:17:57 +02:00
Wim Taymans
a3f75a17ef
session: fix bandwidth calculation
...
We iterate over all sources and the internal one is also in the
hashtable so avoid adding it twice.
2013-07-26 12:17:57 +02:00
Wim Taymans
9eaef9d332
session: add some docs
2013-07-26 12:17:56 +02:00
Wim Taymans
2163355a47
session: Rearrange RTCP reporting a little
...
Make a function to generate an RTCP packet for a source, pass the source as a
parameter.
Move timeout of collisions to session cleanup phase.
2013-07-26 12:17:56 +02:00
Wim Taymans
a3bf374351
session: move check for is_early around
...
Move the check for the early RTCP to where it is needed and used.
2013-07-26 12:17:56 +02:00
Wim Taymans
b069db6a2e
session: parse packet outside of the session lock
2013-07-26 12:17:56 +02:00
Wim Taymans
57c27ec319
session: do nicer checks for internal sources
2013-07-26 12:17:56 +02:00
Wim Taymans
93d07298ff
session: let source keep track if it sent BYE
2013-07-26 12:17:56 +02:00
Wim Taymans
1d02496d15
source: also use the source for bye_reason
...
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-26 12:17:56 +02:00
Wim Taymans
ddd071e54c
session: configure sdes with structure only
...
Remove code to configure the SDES with methods and types, only
allow configuration with GstStructure
2013-07-26 12:17:55 +02:00
Wim Taymans
0060e1d45d
session: refactor add and find source
...
Make functions to find and add a source to the hashtable.
2013-07-26 12:17:55 +02:00
Wim Taymans
adb0d68c07
session: remove source from sync_rtcp
...
We don't need to know the sender source of the session in the
callback, the SR packet is for all participants in the session.
2013-07-26 12:17:55 +02:00
Wim Taymans
dece8413ef
rtpsession: don't use invalid times in RTCP timeouts
...
An invalid timeout can be calculated when we disabled RTCP by setting the
bandwidth to 0. Make sure all code can handle this case.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674626
2013-07-23 17:41:48 +02:00
Wim Taymans
25e0f0d6b6
rtpsession: lock session when changing bandwidth
...
Take the session lock when changing the bandwidth properties so that we don't
end up with inconsistent behaviour.
2013-07-23 17:41:48 +02:00
Wim Taymans
c337265ee4
session: reset some RTCP variables
...
The early_send time was set to 0 and always triggering an early RTCP packet.
2013-07-23 17:41:48 +02:00
Wim Taymans
51c9f7989f
rtpsession: Use the right hashtable to calculate bandwidth
...
Don't use an unused hashtable to iterate source to calculate bandwidth.
Remove unused code.
2013-06-13 16:02:19 +02:00
Paul HENRYS
10802cae73
rtpsession: Fix wrong code organisation in case of collision
...
change_ssrc field of RTPSession should be set before calling
rtp_session_schedule_bye_locked () as this function will call reconsider function
that will wake up rtcp_thread which will call rtp_session_on_timeout () that will
check change_ssrc to change the ssrc.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=694184
2013-02-22 09:28:07 +02:00
Wim Taymans
2971ed44ee
rtpsession: remove dead code
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=668355
2013-02-07 15:06:40 +01:00
Wim Taymans
6b7d05ac57
rtpsession: improve debug
2013-01-07 14:22:48 +01:00
Tim-Philipp Müller
230cf41cc9
Fix FSF address
...
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:07:18 +00:00
Wim Taymans
d5fd524a0c
rtsession: fix compiler warning
2012-10-17 13:55:45 +02:00
Wim Taymans
f17db5c4ed
rtpsession: update caps in the source
...
Inform the source when caps changed. This was removed in the port to 1.0
leaving the source unaware of the clock-rate and unable to interpollate
rtp timestamps for SR packets.
2012-10-17 13:22:40 +02:00
Wim Taymans
5b394385b9
session: also stop probatation on existing sources
...
Receiving an RTCP packet should also stop probation on sources we have seen
before.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=683065
2012-08-30 22:07:24 +02:00
Aleix Conchillo Flaque
4a200b670f
rtp: make rtp packet probation configurable (bug #682512 )
2012-08-30 21:49:57 +02:00
Wim Taymans
51371d26ee
update for RTP buffer api changes
2012-07-17 16:38:27 +02:00
Pascal Buhler
8161daef4a
rtpsession: creation should be signaled before validation
...
https://bugzilla.gnome.org/show_bug.cgi?id=667850
2012-05-09 10:36:18 +02:00
Wim Taymans
af59f573b5
rtpsession: don't leak the address
2012-03-13 19:26:47 +01:00
Mark Nauwelaerts
f189f62b13
Merge branch 'master' into 0.11
...
Conflicts:
ext/wavpack/gstwavpackenc.c
tests/check/elements/audioiirfilter.c
tests/examples/v4l2/probe.c
2012-03-01 11:29:50 +01:00
Edward Hervey
9beda57c3a
Suppress deprecation warnings in selected files, for g_value_array_* mostly
2012-02-27 14:47:25 +01:00
Wim Taymans
225e98d623
Merge branch 'master' into 0.11
...
Conflicts:
ext/flac/gstflacenc.c
ext/jack/gstjackaudioclient.c
ext/jack/gstjackaudiosink.c
ext/jack/gstjackaudiosrc.c
ext/pulse/plugin.c
ext/shout2/gstshout2.c
gst/matroska/matroska-mux.c
gst/rtp/gstrtph264pay.c
2012-02-10 16:23:14 +01:00
Olivier Crête
b850741430
rtpsession: Keep the buffer mapped while it is being modified
2012-01-27 19:05:23 +01:00
Olivier Crête
aeec2d5f7e
rtpsession: Initialise the address pointer to NULL
2012-01-27 19:05:23 +01:00
Tim-Philipp Müller
5525e40970
rtpmanager: don't pretend our random hostnames are fully-qualified domain names
2012-01-25 13:19:12 +00:00
Sebastian Dröge
0b517ce9fb
Merge branch '0.11' of ssh://git.freedesktop.org/git/gstreamer/gst-plugins-good into 0.11
2012-01-25 12:49:34 +01:00
Sebastian Dröge
10554b271f
Merge branch 'master' into 0.11
...
Conflicts:
ext/flac/gstflacdec.c
ext/jpeg/gstjpegenc.c
ext/pulse/pulsesink.c
sys/v4l2/gstv4l2src.c
2012-01-25 12:49:11 +01:00
Wim Taymans
b4630dd3e0
more memory API porting
2012-01-25 12:30:29 +01:00
Tim-Philipp Müller
a476d529d2
rtpmanager: don't reveal the user's username, hostname or real name by default
...
Send a randomly made-up user@hostname as CNAME and don't
send a NAME at all by default.
https://bugzilla.gnome.org/show_bug.cgi?id=668320
2012-01-23 13:47:08 +00:00
Wim Taymans
1584806634
port to new gthread API
2012-01-19 11:33:53 +01:00
Sebastian Dröge
cb789e32ad
rtpmanager: Port to GIO
2012-01-17 13:08:42 +01:00
Sebastian Dröge
93e3ed5a86
Merge branch 'master' into 0.11
...
Conflicts:
ext/cairo/gsttextoverlay.c
ext/pulse/pulseaudiosink.c
gst/audioparsers/gstaacparse.c
gst/avi/gstavimux.c
gst/flv/gstflvmux.c
gst/interleave/interleave.c
gst/isomp4/gstqtmux.c
gst/matroska/matroska-demux.c
gst/matroska/matroska-mux.c
gst/matroska/matroska-mux.h
gst/matroska/matroska-read-common.c
gst/multifile/gstmultifilesink.c
gst/multipart/multipartmux.c
gst/shapewipe/gstshapewipe.c
gst/smpte/gstsmpte.c
gst/udp/gstmultiudpsink.c
gst/videobox/gstvideobox.c
gst/videocrop/gstaspectratiocrop.c
gst/videomixer/videomixer.c
gst/videomixer/videomixer2.c
gst/wavparse/gstwavparse.c
po/ja.po
po/lv.po
po/sr.po
tests/check/Makefile.am
tests/check/elements/qtmux.c
tests/check/elements/rgvolume.c
2012-01-10 14:32:32 +01:00
Tim-Philipp Müller
66f6e12888
Work around deprecated thread API in glib master
...
Add private replacements for deprecated functions such as
g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
to avoid the deprecation warnings. We'll change these
over to the new API once we depend on glib >= 2.32.
2011-12-12 09:46:27 +00:00
Wim Taymans
439e2f1cfd
rtp: fix marshallers
...
Remove custom marshallers for minobject.
Init RTCP buffer correctly.
Handle results from setcaps
Remove asserts.
2011-12-09 10:51:14 +01:00
Edward Hervey
86a57e3546
rtpmanager: Initialize GstRTPBuffer before usage
2011-12-05 18:40:12 +01:00
Wim Taymans
07cc855b24
Merge branch 'master' into 0.11
...
Conflicts:
ext/speex/gstspeexenc.c
gst/rtpmanager/rtpsession.c
2011-11-17 17:17:11 +01:00
Olivier Crête
79a9564c68
rtpsession: Send FIR requests in response to key unit requests with all-headers=TRUE
...
https://bugzilla.gnome.org/show_bug.cgi?id=658419
2011-11-14 12:26:27 +01:00
Olivier Crête
12a6b9613b
rtpsession: Put the PLI requests in each RTPSource
...
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-14 12:26:27 +01:00
Olivier Crête
59c028a4ce
rtpsession: Hack to FIR because Google doesn't set the sender ssrc correctly
...
https://bugzilla.gnome.org/show_bug.cgi?id=658419
2011-11-14 12:26:27 +01:00
Olivier Crête
0ad78db0a3
rtpsession: Process received Full Intra Requests
...
Process FIR requests according to RFC 5104
https://bugzilla.gnome.org/show_bug.cgi?id=658419
2011-11-14 12:26:27 +01:00
Wim Taymans
6cbd6afc0b
update for new net library
2011-11-03 16:43:00 +01:00
Wim Taymans
83ccefb24e
update for netbuffer api change
2011-11-02 09:06:38 +01:00
Wim Taymans
75e0c6052f
update for netaddress change
2011-11-02 09:06:38 +01:00
Wim Taymans
9a8a8e72c8
structure: fix for api update
2011-11-02 09:06:37 +01:00
Wim Taymans
161310fa23
bufferlist: update for new API
2011-11-02 09:06:37 +01:00
Wim Taymans
fc4684f4c6
fix compilation
2011-10-27 16:03:17 +02:00
Wim Taymans
87fbd1e784
Merge branch 'master' into 0.11
...
Conflicts:
common
ext/pulse/pulsesink.c
ext/soup/gstsouphttpclientsink.c
gst/audioparsers/gstaacparse.c
gst/audioparsers/gstac3parse.c
gst/rtp/gstrtph264depay.c
gst/rtpmanager/gstrtpjitterbuffer.c
gst/rtpmanager/rtpjitterbuffer.c
gst/rtsp/gstrtspsrc.c
sys/ximage/gstximagesrc.c
2011-09-28 12:44:59 +02:00
Mark Nauwelaerts
e2179cbb74
rtpsession: avoid source premature timing out
...
Use slightly adjusted sender interval to determine sender timeout rather than
our own sender side interval (which may have been forced small).
2011-09-19 11:56:44 +02:00
Mark Nauwelaerts
f65d4c8300
rtpsession: avoid timing out source too quickly
...
... following a PAUSE/PLAY cycle, particularly applicable when operating
with a short RTCP interval (possibly forced so server-side).
2011-09-19 11:56:44 +02:00
Mark Nauwelaerts
afd26f0078
rtpsession: trigger reconsideration if rtcp interval set
2011-09-19 11:51:50 +02:00
Wim Taymans
33f18b8ea4
Merge branch 'master' into 0.11
...
Conflicts:
gst/audioparsers/gstamrparse.c
gst/isomp4/qtdemux.c
2011-09-06 16:06:25 +02:00
Olivier Crête
b2e8362767
rtpsession: Initialise the last_keyframe_request variable
2011-09-02 19:24:46 -04:00