Wim Taymans [Wed, 21 Aug 2013 08:03:52 +0000 (10:03 +0200)]
rtpgstpay: reset on state change
Do full reset on state change to READY
Wim Taymans [Wed, 21 Aug 2013 07:55:20 +0000 (09:55 +0200)]
rtpgstpay: reset on FLUSH_STOP
Clear the adapter and pending buffer list on FLUSH_STOP.
Wim Taymans [Wed, 21 Aug 2013 07:39:30 +0000 (09:39 +0200)]
rtpgstpay: don't use clock for config interval
We can't use the clock to time our config-interval because we are not
live (or there might not be a clock or the clock might not be running).
Instead just simply take the timestamp diff.
Wim Taymans [Wed, 21 Aug 2013 07:33:04 +0000 (09:33 +0200)]
rtpgstay: don't use // comments
Youness Alaoui [Thu, 8 Aug 2013 15:55:22 +0000 (11:55 -0400)]
rtspsrc: Fix response argument in handle-request signal
Youness Alaoui [Thu, 8 Aug 2013 15:54:41 +0000 (11:54 -0400)]
rtspsrc: Add sdes property and proxy it to rtpbin
Youness Alaoui [Wed, 7 Aug 2013 13:47:35 +0000 (09:47 -0400)]
Send a stream-start whenever we send tags
This is to make sure tags are cleared on the client if the
stream-start was previously lost, otherwise, the client may end
up with a merged taglist of multiple songs
Youness Alaoui [Fri, 26 Jul 2013 01:12:05 +0000 (21:12 -0400)]
rtpgstpay: Add a config-interval property to resend the caps/tags at a regular interval
This is useful in case the packet containing the inlined caps was lost
or if new client joins an already running RTP stream and they missed
the previous tag events.
This also makes the payloader keep a list of merged tags so the retransmitted
tag event contains all previously received. A STREAM_START event will
flush the list of tags.
Youness Alaoui [Fri, 26 Jul 2013 01:10:10 +0000 (21:10 -0400)]
rtpgstpay: Refactor the setcaps and use new method to send arbitrary caps at any time
Youness Alaoui [Fri, 26 Jul 2013 01:03:34 +0000 (21:03 -0400)]
rtpgstpay: Do not flush events for stream-start and avoid conflict between event and pending inline caps
Youness Alaoui [Fri, 26 Jul 2013 00:54:50 +0000 (20:54 -0400)]
rtpgstpay: Add a create_from_adapter API and use a list of GstBufferList
This is necessary to fix event/caps sending. If we send a STREAM_START
packet, it will cause an error because the stream didn't receive its
caps and new-segment events, so we must wait for the first buffer before
sending the stream-start event buffer. However, the caps will be sent
at the same time and so the 'inline caps' will be set for the event.
We need to be able to payload individual packets (data, caps or events)
and only send them when we call flush.
Youness Alaoui [Thu, 25 Jul 2013 21:56:38 +0000 (17:56 -0400)]
rtpgstpay: Add etype=4 for payloading GST_EVENT_STREAM_START
Youness Alaoui [Thu, 25 Jul 2013 21:52:16 +0000 (17:52 -0400)]
rtpgstpay: Fix typo, GST_EVENT_CUSTOM_BOTH has etype of 3
Wim Taymans [Tue, 20 Aug 2013 12:36:59 +0000 (14:36 +0200)]
jitterbuffer: handle EOS
When the queue is empty, and we received EOS, pause and push an EOS
event downstream.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=706387
Wim Taymans [Tue, 20 Aug 2013 08:26:15 +0000 (10:26 +0200)]
jitterbuffer: update docs
Wim Taymans [Tue, 20 Aug 2013 08:25:17 +0000 (10:25 +0200)]
jitterbuffer: update all timers
Keep looping over all registered timers so that we can mark them lost instead of
stopping as soon as we find the timer for the current seqnum.
Wim Taymans [Tue, 20 Aug 2013 06:55:50 +0000 (08:55 +0200)]
jitterbuffer: remove unused variables
Wim Taymans [Mon, 19 Aug 2013 19:10:00 +0000 (21:10 +0200)]
jitterbuffer: reorganize timer handling
Restructure handling of incomming packet and the gap with the expected seqnum
and register all timers from the _chain function.
Convert a timer to a LOST packet timer when the max amount of retransmission
requests has been reached.
Wim Taymans [Mon, 19 Aug 2013 19:37:44 +0000 (21:37 +0200)]
jitterbuffer: refactor packet spacing calculation
Wim Taymans [Mon, 19 Aug 2013 19:34:38 +0000 (21:34 +0200)]
jitterbuffer: keep track of last seqnum and dts
Wim Taymans [Mon, 19 Aug 2013 19:29:49 +0000 (21:29 +0200)]
jitterbuffer: small cleanups
Wim Taymans [Mon, 19 Aug 2013 19:21:08 +0000 (21:21 +0200)]
jitterbuffer: reset retransmission timers in add/reschedule
Reset the retransmission timers when adding and rescheduling a timer.
Wim Taymans [Mon, 19 Aug 2013 19:12:13 +0000 (21:12 +0200)]
jitterbuffer: rename variables for packet spacing
Wim Taymans [Mon, 19 Aug 2013 12:58:01 +0000 (14:58 +0200)]
jitterbuffer: remove lost timer when we get the packet
When we receive a packet, also remove the LOST timer for it.
Wim Taymans [Mon, 19 Aug 2013 12:56:49 +0000 (14:56 +0200)]
jitterbuffer: expected seqnum must increase
Only update the expected seqnum when it is bigger than the previous expected
seqnum.
Wim Taymans [Mon, 19 Aug 2013 12:55:49 +0000 (14:55 +0200)]
jitterbuffer: add more debug
Wim Taymans [Mon, 12 Aug 2013 14:15:54 +0000 (16:15 +0200)]
rtxqueue: add retransmission queue element
Wim Taymans [Mon, 12 Aug 2013 12:53:33 +0000 (14:53 +0200)]
session: add some docs
Wim Taymans [Tue, 6 Aug 2013 14:29:54 +0000 (16:29 +0200)]
session: handle NACK feedback and generate events
Handle and parse the feedback NACK packets and generate a Retransmission
event for each NACKed packet
Olivier Crête [Mon, 19 Aug 2013 17:19:42 +0000 (13:19 -0400)]
v4l2: Add forward declaration for gst_v4l2_object_get_format_list
Olivier Crête [Mon, 22 Oct 2012 21:58:07 +0000 (17:58 -0400)]
v4l2: De-duplicate caps probing between src and sink
Olivier Crête [Tue, 13 Aug 2013 21:32:17 +0000 (17:32 -0400)]
pulse: Remove unused GstPulseProbe
Olivier Crête [Mon, 19 Aug 2013 16:46:45 +0000 (12:46 -0400)]
v4l2: Use G_DEFINE_ macros for added thread safety
Thibault Saunier [Sat, 17 Aug 2013 09:28:13 +0000 (11:28 +0200)]
videomixer: Do not send flush_stop ourself after a flush_start
When we receive a flush_start, we should wait for the next flush_stop
and foward it, not create a flush_stop ourself.
Wim Taymans [Fri, 16 Aug 2013 15:10:31 +0000 (17:10 +0200)]
h264depay: init debug category early
Init the debug variable when we register the element because it is also used by
the payloader element when it calls the add_sps_pps method.
Sebastian Dröge [Fri, 16 Aug 2013 11:26:28 +0000 (13:26 +0200)]
flacenc: Properly set headers via the base class instead of just pushing them downstream
Prevents buffers from being send before the caps and segment events.
Chris Bass [Thu, 15 Aug 2013 09:59:10 +0000 (10:59 +0100)]
qtdemux: check denominator isn't zero before scaling duration.
When gst_qtdemux_configure_stream sets fps_d, check that n_samples is
non-zero before using it as a denominator to scale the stream duration.
https://bugzilla.gnome.org/show_bug.cgi?id=706076
Sebastian Dröge [Thu, 15 Aug 2013 13:08:05 +0000 (15:08 +0200)]
ext: Use new flush vfunc of video codec base classes and remove reset implementations
Wim Taymans [Wed, 14 Aug 2013 14:19:32 +0000 (16:19 +0200)]
jitterbuffer: forward flush before stopping dataflow
First forward the flush event and then stop our loop function.
Tim-Philipp Müller [Wed, 14 Aug 2013 12:10:32 +0000 (13:10 +0100)]
configure: require libsoup >= 2.38
Bump libsoup requirement for newer API used, like headers_get_one().
2.38 is from early 2012 and is in linen with our GLib requirement.
Tim-Philipp Müller [Wed, 14 Aug 2013 10:54:19 +0000 (11:54 +0100)]
soup: don't use deprecated soup_message_headers_get() API
Edward Hervey [Tue, 13 Aug 2013 15:44:50 +0000 (17:44 +0200)]
.gitignore: Ignore files from automake test-driver
Olivier Crête [Mon, 12 Aug 2013 19:28:34 +0000 (15:28 -0400)]
rtph264pay: Use the SPS/PPS handling function from the depayloader
Remove duplicated copies
https://bugzilla.gnome.org/show_bug.cgi?id=705553
Olivier Crête [Mon, 12 Aug 2013 19:26:08 +0000 (15:26 -0400)]
rtph264depay: Make the SPS/PPS deduplication function generic
Make it not touch any internals of the depayloader
https://bugzilla.gnome.org/show_bug.cgi?id=705553
Chris Bass [Tue, 13 Aug 2013 13:09:20 +0000 (14:09 +0100)]
aacparse: allow conversion from raw AAC to ADTS
This patch will prepend ADTS headers to raw AAC audio frames, allowing
upstream elements to link to decoders that only support AAC in ADTS format.
Note that no error correction bits are added to ADTS frames in this code.
https://bugzilla.gnome.org/show_bug.cgi?id=615740
Sebastian Dröge [Tue, 13 Aug 2013 10:44:11 +0000 (12:44 +0200)]
rtspsrc: Only free GCheckSum after its last usage
https://bugzilla.gnome.org/show_bug.cgi?id=705760
Andoni Morales Alastruey [Tue, 13 Aug 2013 10:02:29 +0000 (12:02 +0200)]
souphttpsrc: fix critical setting a NULL uri redirection
Andoni Morales Alastruey [Fri, 12 Jul 2013 23:50:56 +0000 (01:50 +0200)]
souphttpsrc: add redirection to the URI query
Matej Knopp [Wed, 31 Jul 2013 08:42:07 +0000 (10:42 +0200)]
qtdemux: elst should offset samples instead of buffers
The current approach where buffers are offset is not ideal, as during seek
and loop current time is compared to sample times.
https://bugzilla.gnome.org/show_bug.cgi?id=700264
Thibault Saunier [Wed, 7 Aug 2013 17:32:07 +0000 (19:32 +0200)]
videomixer: Send EOS if buf_end >= segment.stop
That means the whole segment is already played, and we are sure we
are EOS at that point.
Also handle segment seeks, and do not send EOS in that case.
Matej Knopp [Sun, 4 Aug 2013 12:40:38 +0000 (14:40 +0200)]
avidemux: send proper stream_start event
https://bugzilla.gnome.org//show_bug.cgi?id=705449
Sebastian Dröge [Thu, 8 Aug 2013 09:51:17 +0000 (11:51 +0200)]
matroskademux: Don't print warnings during flushing and stop as soon as possible
https://bugzilla.gnome.org//show_bug.cgi?id=705442
Tim-Philipp Müller [Wed, 7 Aug 2013 10:14:38 +0000 (11:14 +0100)]
rtpvp8depay: mark key frames and delta frames properly
https://bugzilla.gnome.org/show_bug.cgi?id=705550
Wim Taymans [Mon, 5 Aug 2013 21:23:57 +0000 (23:23 +0200)]
session: add NACK feedback in RTCP
Wim Taymans [Mon, 5 Aug 2013 21:22:16 +0000 (23:22 +0200)]
source: add methods to register NACK
Add a method to register a missing packet for an ssrc along with
methods to get the missing packets and clear them.
Wim Taymans [Sun, 4 Aug 2013 21:05:36 +0000 (23:05 +0200)]
session: handle Retransmission event and schedule NACK
Handle the retransmission event from downstream and use it to schedule a NACK
request.
Wim Taymans [Mon, 5 Aug 2013 21:20:29 +0000 (23:20 +0200)]
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.
Thibault Saunier [Tue, 6 Aug 2013 13:28:50 +0000 (15:28 +0200)]
qtdemux: Fix compilation
Thibault Saunier [Tue, 6 Aug 2013 13:17:44 +0000 (15:17 +0200)]
qtdemux: Raw buffer DTS should always be CLOCK_TIME_NONE
Thibault Saunier [Tue, 6 Aug 2013 09:58:38 +0000 (11:58 +0200)]
videomixer: Make sure to send EOS if the buffer end time equals the segment end time
Otherwize EOS never gets sent in that particular case.
Sjoerd Simons [Mon, 5 Aug 2013 06:49:50 +0000 (08:49 +0200)]
goom: Ensure src caps are writable
In some cases the src caps determined by goom weren't writable, causing
a bunch of assertion failures and failed caps. Fixed by always
explicitely making the caps writable
https://bugzilla.gnome.org/show_bug.cgi?id=705475
Wim Taymans [Sun, 4 Aug 2013 21:18:29 +0000 (23:18 +0200)]
session: use common send_rtcp method
Reuse the send_rtcp method that already asks for the current time when
requesting a keyframe.
Wim Taymans [Sun, 4 Aug 2013 21:12:50 +0000 (23:12 +0200)]
session: Don't use ClockTimeDiff for unsigned delays
Edward Hervey [Sun, 4 Aug 2013 14:52:15 +0000 (16:52 +0200)]
qtmux: Use buffer PTS if DTS is not set
Avoids ending up with completely bogus scaled duration/pts when new
buffers have invalid DTS.
Tim-Philipp Müller [Sun, 4 Aug 2013 13:32:47 +0000 (14:32 +0100)]
tests: skip https test if there's no TLS support in soup/glib
Tim-Philipp Müller [Sun, 4 Aug 2013 10:20:41 +0000 (11:20 +0100)]
rtpdec: use generic marshaller
Tim-Philipp Müller [Sun, 4 Aug 2013 09:52:33 +0000 (10:52 +0100)]
v4l2: remove unused enumtypes and use generic marshaller
Tim-Philipp Müller [Sun, 4 Aug 2013 09:47:38 +0000 (10:47 +0100)]
udp: remove unused marshal and enumtypes files
Tim-Philipp Müller [Sun, 4 Aug 2013 08:38:19 +0000 (09:38 +0100)]
rtpmanager: use generic marshaller
Wim Taymans [Sat, 3 Aug 2013 22:13:07 +0000 (00:13 +0200)]
jitterbuffer: send event in right direction
David Schleef [Sat, 3 Aug 2013 00:38:34 +0000 (17:38 -0700)]
tests: create/remove orc directory at proper time
Before automake creates .deps directories, and during distclean.
Wim Taymans [Fri, 2 Aug 2013 22:25:44 +0000 (00:25 +0200)]
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.
Wim Taymans [Fri, 2 Aug 2013 15:22:55 +0000 (17:22 +0200)]
jitterbuffer: fix property ranges
Wim Taymans [Fri, 2 Aug 2013 14:42:52 +0000 (16:42 +0200)]
jitterbuffer: push retransmission events
Lubosz Sarnecki [Fri, 2 Aug 2013 12:12:16 +0000 (14:12 +0200)]
build: add subdir-objects to AM_INIT_AUTOMAKE
Fixes warnings with automake 1.14
https://bugzilla.gnome.org/show_bug.cgi?id=705350
Wim Taymans [Fri, 2 Aug 2013 12:54:56 +0000 (14:54 +0200)]
jitterbuffer: add support for retransmission retry
When we didn't receive a packet after requesting retransmission, retry
asking for retransmission for a certain period.
Wim Taymans [Fri, 2 Aug 2013 12:19:54 +0000 (14:19 +0200)]
jitterbuffer: add properties
Add properties to control retransmission parameters
Wim Taymans [Fri, 2 Aug 2013 10:44:58 +0000 (12:44 +0200)]
jitterbuffer: use corrected timeout when rescheduling
When we recalculate the timeout, use the corrected timeout value depending on
the timer type.
Wim Taymans [Fri, 2 Aug 2013 10:43:00 +0000 (12:43 +0200)]
jitterbuffer: update timers after queueing
Else we might update the timer needlessly for duplicates.
Wim Taymans [Fri, 2 Aug 2013 10:42:08 +0000 (12:42 +0200)]
jitterbuffer: move method up
Wim Taymans [Fri, 2 Aug 2013 04:28:32 +0000 (06:28 +0200)]
jitterbuffer: small cleanup
Wim Taymans [Thu, 1 Aug 2013 21:26:06 +0000 (23:26 +0200)]
jitterbuffer: unschedule old expected packets
When we receive a new packet, unschedule old outstanding packets when their
seqnum is too far away.
Wim Taymans [Thu, 1 Aug 2013 21:29:23 +0000 (23:29 +0200)]
jitterbuffer: refactor timer update
Wim Taymans [Thu, 1 Aug 2013 21:24:29 +0000 (23:24 +0200)]
jitterbuffer: update timers when removing
Update the timers when we remove a timer.
Handle canceled timers, make them unschedule the current timer and
trigger the timeout code.
Wim Taymans [Thu, 1 Aug 2013 21:22:02 +0000 (23:22 +0200)]
jitterbuffer: fix typo
Wim Taymans [Thu, 1 Aug 2013 13:40:52 +0000 (15:40 +0200)]
jitterbuffer: improve timeout management
If we change the seqnum of an existing timer and we were waiting for
that timer, unschedule it. If we change the timeout of an existing timer and we
were waiting on it, only unschedule when the new time is smaller.
Wim Taymans [Thu, 1 Aug 2013 13:05:35 +0000 (15:05 +0200)]
jitterbuffer: install timer for expected arrival
Install a timer that is triggered when the expected arrival time of a packet
expired.
Wim Taymans [Thu, 1 Aug 2013 12:56:00 +0000 (14:56 +0200)]
jitterbuffer: improve unschedule of timers
Conflicts:
gst/rtpmanager/gstrtpjitterbuffer.c
Wim Taymans [Thu, 1 Aug 2013 10:21:53 +0000 (12:21 +0200)]
jitterbuffer: move code around
Wim Taymans [Thu, 1 Aug 2013 10:07:11 +0000 (12:07 +0200)]
jitterbuffer: estimate inter packet spacing
When we see two packets with consecutive seqnums and a different RTP time, use
the DTS difference as the inter packet spacing estimate.
Wim Taymans [Thu, 1 Aug 2013 10:01:15 +0000 (12:01 +0200)]
jitterbuffer: keep track of current timeout
Wim Taymans [Thu, 1 Aug 2013 09:49:10 +0000 (11:49 +0200)]
jitterbuffer: cleanup timer handling
Wim Taymans [Thu, 1 Aug 2013 09:40:41 +0000 (11:40 +0200)]
jitterbuffer: reset is only possible with a GAP
Wim Taymans [Thu, 1 Aug 2013 09:29:32 +0000 (11:29 +0200)]
jitterbuffer: operate on DTS
Make the jitterbuffer schedule the timeouts based on the DTS instead
of the PTS. This makes it all smoother with reordered frames and gives
the decoder time to reorder the frames in time.
Wim Taymans [Thu, 1 Aug 2013 09:14:12 +0000 (11:14 +0200)]
jitterbuffer: rename timout variable
Wim Taymans [Wed, 31 Jul 2013 15:08:58 +0000 (17:08 +0200)]
jitterbuffer: small cleanup
Wim Taymans [Wed, 31 Jul 2013 14:59:58 +0000 (16:59 +0200)]
jitterbuffer: block output in paused or buffering
Wim Taymans [Wed, 31 Jul 2013 14:59:09 +0000 (16:59 +0200)]
jitterbuffer: store pts in timer
Only store the pts in the timer so that we can both do timeouts with timings on
the input and output of the jitterbuffer.
Wim Taymans [Tue, 30 Jul 2013 21:14:24 +0000 (23:14 +0200)]
rtpjitterbuffer: refactor jitterbuffer
Refactor the jitterbuffer code. Make separate function for peeking a buffer,
pushing the next buffer, waiting for timeouts and handling the timeouts.
The main loop now tries to push as many buffers as it can until it runs out of
buffers or when it detects a seqnum discont. Then it will wait for some event to
happen before attempting to push more buffers.
Make methods to register timeouts in an array. These timeouts are registered
when we detect a missing packet, sync for the first packet or when we find an
estimation for the end-of-stream.
This greatly simplifies and clarifies the code and also makes it possible to
register more complicated timeout schemes later.
Wim Taymans [Tue, 30 Jul 2013 16:52:58 +0000 (18:52 +0200)]
rtpjitterbuffer: use NULL to ignore percent
If we pass NULL to pop and push we ignore the percent result.