Thibault Saunier
1fc591238b
multifilesrc: Implement seeking in case of multiple images
...
https://bugzilla.gnome.org/show_bug.cgi?id=712254
2013-11-22 18:52:54 -03:00
Wim Taymans
4c9474905b
rtpjitterbuffer: pass downstream flowreturn to upstream
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=712722
2013-11-22 12:27:31 +01:00
Tim-Philipp Müller
d9c2914c90
g_memmove() is deprecated
...
Just use plain memmove(), g_memmove() is deprecated in
recent GLib versions.
https://bugzilla.gnome.org/show_bug.cgi?id=712811
2013-11-21 15:30:34 +00:00
Wim Taymans
3a1199c2f7
rtpvorbisdepay: handle packets > 0xffff
...
Handle input packet sizes larger than 16 bits in the depayloader.
Remove size restrictions on the payloader.
2013-11-21 11:32:15 +01:00
Wim Taymans
43e9b56122
rtptheoradepay: handle packets > 0xffff
...
Reorganize some things in the depayloader so that it can handle packets larger
than 16 bits.
Remove the size restriction on the payloader.
2013-11-21 11:30:28 +01:00
Jan Schmidt
81e2c8130a
isomp4: Handle mp4s subpicture streams better.
...
Clean up the handling of mp4s streams. Use the generic esds
descriptor function to extract the palette, instead of hard coding
a wrong magic offset.
Add some more size safety checks when parsing ES descriptors, and
replace magic numbers with the descriptive constants that are already
defined.
Enhance dump output for stsd atoms.
Streams from both bug 712643 and historic bug 568278 now both work
correctly.
Fixes : #712643
2013-11-21 02:28:27 +11:00
Jan Schmidt
217d2d8deb
qtdemux: Sort fourcc declarations and remove duplicates
2013-11-20 22:08:25 +11:00
Jan Schmidt
b6f581eecc
qtdemux: Merge all the fourcc headers into one
...
Remove qtdemux_fourcc.h and ftypcc.h and put it all in fourcc.h
2013-11-20 21:48:03 +11:00
Wim Taymans
0c6f4efe4a
rtpjitterbuffer: avoid mapping the buffer
...
Reuse the parsed structure to get the timestamps.
2013-11-19 10:12:00 +01:00
Tim-Philipp Müller
28f524a551
rtspsrc: fix 'make check'
...
Fix generic/states check. Also, g_return_if_fail() is
not for internal state checking.
2013-11-18 17:13:49 +00:00
Tim-Philipp Müller
d506409af5
docs: get rid of 'Since: 0.10.x' markers
...
And some gtk-doc markup fixes.
2013-11-18 14:47:35 +00:00
Tim-Philipp Müller
548e756e0a
rtpmanager: fix Since markers
...
Should be next stable release series version
2013-11-16 12:15:14 +00:00
George Kiagiadakis
387e3b918a
rtpjitterbuffer: Fix stats property field names and documentation
2013-11-15 16:23:34 +02:00
Torrie Fischer
acf74435e3
gstrtpsession: Implement a number of feedback packet statistics
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=711693
2013-11-15 15:21:19 +01:00
Thiago Santos
cfdadd4114
qtdemux: remove math operation from loop
...
The elst_offset doesn't change inside the loop, so compute it
outside
2013-11-14 18:15:20 -03:00
Stefan Sauer
1a4e7338d9
qtmux: fix playback regression
...
In ae1150e85c
flipping a condition misaligned the
else branch, where for there condition that was change there is none.
Fixes #712303
2013-11-14 20:56:36 +01:00
Wim Taymans
b450d31503
rtpjitterbuffer: rename property to 'stats'
...
This makes the unit test work.
We can later also add more stats, not specific to retransmission.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=711411
2013-11-14 09:24:26 +01:00
Torrie Fischer
22ceb80ba9
rtpjitterbuffer: implement rtx statistics
2013-11-14 09:24:26 +01:00
Wim Taymans
2e5b462ae3
jitterbuffer: advance expected seqnum after dropping
...
After dropping a buffer, move our expected seqnum
Conflicts:
gst/rtpmanager/gstrtpjitterbuffer.c
2013-11-13 12:02:57 +01:00
Wim Taymans
a065b4fcde
gstpay: only send one caps
...
Only send one caps in a packet. Two caps can happen when setcaps is called and
the config-interval expires at the same time.
2013-11-13 12:02:57 +01:00
Sebastian Dröge
9ae6981578
rtspsrc: Use the synced buffer mode in auto mode if a clock provider is in the SDP
2013-11-13 10:54:19 +01:00
Wim Taymans
e4bc81d7d2
rtpsession: remove collision reconfigure event
...
Remove bogus reconfigure event on collision, we don't want to send the event on
the receiving RTP pad and the collision event is now handling this
case.
See https://bugzilla.gnome.org/show_bug.cgi?id=711560
2013-11-11 15:27:18 +01:00
Julien Isorce
b32fc6f416
gstrtpsession: send custom upstream event "GstRTPCollision" on send_rtp_sink pad
...
See https://bugzilla.gnome.org/show_bug.cgi?id=711560
2013-11-11 15:25:52 +01:00
Mark Nauwelaerts
49d52a64d6
ac3parse: correctly handle timestamps when parsing x-private1-ac3
...
... the way it has always worked fine in a52dec.
2013-11-11 13:35:29 +01:00
George Kiagiadakis
b81b2efa3e
rtpjitterbuffer: fix crash when do-retransmission=true and a lot of buffers are lost
...
The problem here was that the jitterbuffer lock was unlocked to push
the event, but that caused another thread to remove the timer currently
being processed, probably because the amount of rtx events
(and therefore timers) was getting too high. The solution is to
unlock and push the event only after timer processing has finished.
fixes https://bugzilla.gnome.org/show_bug.cgi?id=711131
2013-11-11 11:51:45 +01:00
Per x Johansson
b3e0b1dbca
matroskademux: Avoid division by zero assert in gst_matroska_demux_search_pos
...
https://bugzilla.gnome.org/show_bug.cgi?id=711829
2013-11-11 11:30:54 +01:00
Philippe Normand
0ee332378b
wavenc: generate a non-empty data header
...
Restore the behavior of the element to the state before commit
db29522a43
. A non-empty header is
generated and when the EOS event is received the header is generated
again, this time with the correct size.
https://bugzilla.gnome.org/show_bug.cgi?id=711699
2013-11-09 11:22:12 +01:00
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
Wim Taymans
268a75e705
rtpsource: refactor receiver stats update
2013-11-07 16:24:30 +01:00
Thiago Santos
33ebda8ecf
qtdemux: handle fragmented files with mdat before moofs
...
Assume a file with atoms in the following order: moov, mdat, moof,
mdat, moof ...
The first moov usually doesn't contain any sample entries atoms (or
they are all set to 0 length), because the real samples are signaled
at the moofs. In push mode, qtdemux parses the moov and then finds the mdat,
but then it has 0 entries and assumes it is EOS.
This patch makes it continue parsing in case it is a fragmented file so that
it might find the moofs and play the media.
https://bugzilla.gnome.org/show_bug.cgi?id=710623
2013-11-07 11:22:04 -03:00
Thiago Santos
0e78ffc9d6
qtdemux: When using a buffered mdat, store all received data for later use
...
In push mode, when qtdemux can't use a seek to skip the mdat buffer it has
to buffer it for later use.
The issue is that after parsing the next moov/moof, there might be some
trailing bytes from the next atom in the file. This data was being discarded
along with the already parsed moov/moof and playback would fail to continue
after the contents of this moov/moof are played.
This is particularly bad on fragmented files that have the mdat before the
corresponding moof. So you'd get:
mdat|moof|mdat|moof ...
When a moof was received, it usually came with some extra bytes that would
belong to the next mdat (because upstream doesn't care about atoms alignment).
So those bytes were being discarded and playback would fail.
This patch makes qtdemux store those extra bytes to reuse them later after the
mdat is emptied.
https://bugzilla.gnome.org/show_bug.cgi?id=710623
2013-11-07 11:22:03 -03:00
Sebastian Dröge
fd89e36c8a
multiudpsink: Also use the bind-port property if no bind-address was given
2013-11-07 09:50:39 +01:00
Sebastian Dröge
111982de28
rtpvp8pay: Make Picture ID mode configurable and default to no picture ID
...
Some implementations (linphone) only support no picture at all in the
stream and will fail if one is provided.
https://bugzilla.gnome.org/show_bug.cgi?id=711497
2013-11-05 17:26:49 +01:00
Paul HENRYS
8eceb8f327
Add call to gst_rtp_h264_pay_clear_sps_pps() when receiving a STREAM_START event
...
https://bugzilla.gnome.org/show_bug.cgi?id=692787
2013-11-04 14:36:28 -05:00
Rico Tzschichholz
b137f79581
rtsp: Add missing gio-2.0 deps and includes
2013-11-02 23:12:13 +01:00
Sebastian Dröge
f180f3d1ba
audioiirfilter: Fix initialization coefficient handling
...
Broke unit test.
2013-11-01 18:31:36 +01:00
Aleix Conchillo Flaque
82b8374af8
rtspsrc: allow setting tls certificate validation flags
...
Added a new property "tls-validation-flags". If the url transport is
TLS, the validation flags will be set to the rtsp connection.
https://bugzilla.gnome.org/show_bug.cgi?id=711230
2013-11-01 16:47:36 +01:00
Sebastian Dröge
2559557ff1
audioiirfilter: Don't crash if no filter coefficients are provided
...
...and by default use a identity filter.
https://bugzilla.gnome.org/show_bug.cgi?id=710215
2013-10-31 22:43:49 +01:00
Wim Taymans
e96f8f519c
rtspsrc: proxy new buffer mode
2013-10-31 10:38:35 +01:00
Wim Taymans
43645d5981
jitterbuffer: add new timestamp mode
...
Add a new timestamp mode that assumes the local and remote clock are
synchronized. It takes the first timestamp as a base time and then uses the RTP
timestamps for the output PTS.
2013-10-31 10:15:25 +01:00
Sebastian Dröge
4a8082856a
matroska-demux: Fix compiler warning
...
matroska-demux.c: In function 'gst_matroska_demux_add_stream':
matroska-demux.c:1379:7: error: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'guint64' [-Werror=format=]
"%03u", context->uid);
^
2013-10-30 22:13:06 +01:00
Matthieu Bouron
52d0588c21
videomixer: remove unneeded guint comparaison
...
https://bugzilla.gnome.org/show_bug.cgi?id=711010
2013-10-29 16:38:26 +00:00
Matthieu Bouron
ec8c141d6a
y4menc: fix uninitialized variable warning
...
https://bugzilla.gnome.org/show_bug.cgi?id=711011
2013-10-28 14:20:13 +00:00
Thiago Santos
2eec7909aa
qtdemux: check if the end_time is defined before using it
...
Avoids sending EOS too soon because of overflow. Can happen on
fragmented mp4 playback.
2013-10-25 11:30:36 -03:00
Thiago Santos
673301ef48
qtdemux: use correct unref function
...
Events aren't GstObjects, but GstMiniObjects
2013-10-23 13:38:56 -03:00
Stefan Sauer
ae1150e85c
qtdemux: rename chunks_are_chunks to chunks_are_samples and flip the logic
...
As the variable name suggests, sometimes chunks are chunks. Rename the variable
to tell what they are when they are not chunks.
2013-10-15 09:53:30 +02:00
Stefan Sauer
6789ba1ece
qtdemux: fix typos and add more logging for unhandled parts
2013-10-15 09:53:30 +02:00
Ognyan Tonchev
c81ce6b152
multiudpsink: Fix memory leak
...
Unmap all GstMemory of the current buffer when flushing.
https://bugzilla.gnome.org/show_bug.cgi?id=710110
2013-10-14 18:21:54 +02:00
Tim-Philipp Müller
771ffe5609
flvmux: fix broken sample pipeline
...
which was muxing raw audio and video into flvmux, which won't work,
even if there were converters.
2013-10-12 20:44:31 +01:00
Tim-Philipp Müller
29effb522a
flvmux: require stream-format=raw for mpeg-2 too, but don't require framed field
...
raw implies that it's framed already. Fixes .. ! faac ! flvmux
2013-10-12 20:37:41 +01:00
Sebastian Dröge
b8f9e966d5
wavenc: A-Law and Mu-Law don't have width/depth/signed caps fields
...
https://bugzilla.gnome.org/show_bug.cgi?id=709614
2013-10-08 11:28:04 +02:00
Sebastian Dröge
a5bf9f24c9
deinterlace: Fix handling of planar video formats in greedyh method
...
https://bugzilla.gnome.org/show_bug.cgi?id=709507
2013-10-07 12:54:11 +02:00
Reynaldo H. Verdejo Pinochet
38c5e5efdc
matroska: Trivial grammar fix on debug msg
2013-10-06 10:02:09 -07:00
Reynaldo H. Verdejo Pinochet
1cb31eeacc
matroskamux: Add context flag for WebM
...
WebM has a couple of specific requirements we need to handle.
Idea is to set this flag once and just rely on mux->is_webm
at run time instead of repeatedly figuring this out from
GST_MATROSKA_DOCTYPE_WEBM (which requires a strcmp()).
2013-10-06 09:54:28 -07:00
Reynaldo H. Verdejo Pinochet
edeed575ae
matroska: Do not write SegmentUID for WebM mux
...
WebM spec states SegmentUID is Unsupported. Files produced
with gstreamer without this change will spit an error like
this when passed to mkvalidator:
ERR201: Invalid 'SegmentUID' for profile 'webm' in Info at 192
2013-10-06 08:12:50 -07:00
Matej Knopp
cf12017ef8
matroskademux: make dvd palette change event sticky
...
So they don't get lost.
https://bugzilla.gnome.org/show_bug.cgi?id=709454
2013-10-05 10:55:03 +01:00
Nicolas Dufresne
ed77b22f2b
videoflip: Add automatic flip mode driven by image-orientation tag
...
https://bugzilla.gnome.org/show_bug.cgi?id=709312
2013-10-04 14:52:57 -04:00
Wim Taymans
d4892859d4
jitterbuffer: fix race in flush-start/flush-stop
...
When flush-stop arrives before we process the result of the _push() in the
loop function, we might pause even though we are not flushing anymore. Fix this
race by waiting for the srcpad loop function to completely pause after doing the
flush-start.
2013-10-04 12:35:18 +02:00
Mathieu Duponchelle
ef548c2b28
videomixer: Update videoconvert copy
...
https://bugzilla.gnome.org/show_bug.cgi?id=709390
2013-10-04 10:57:36 +02:00
Mathieu Duponchelle
3d780c5c6d
videomixer: Check if the pad needs reconfiguration in collected
...
https://bugzilla.gnome.org/show_bug.cgi?id=709384
2013-10-04 10:53:26 +02:00
Sebastian Dröge
21947f9d13
qtdemux: Add support for the mp2v fourcc for MPEG-2 video
...
https://bugzilla.gnome.org/show_bug.cgi?id=709270
2013-10-03 11:59:25 +02:00
Ognyan Tonchev
30f62a2eec
matroskademux: Fix memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=709266
2013-10-02 16:17:33 +02:00
Sreerenj Balachandran
e779b6587b
qtdemux: Add HEVC support
...
https://bugzilla.gnome.org/show_bug.cgi?id=709093
2013-10-02 11:54:24 +02:00
Ognyan Tonchev
93d5e182d2
rtpgstpay: Fix memory leak
...
We were leaking the GList nodes of the pending buffers.
https://bugzilla.gnome.org/show_bug.cgi?id=709079
2013-10-02 11:07:16 +02:00
Wim Taymans
00056965e8
rtpjitterbuffer: fix race when updating the next_seqnum
...
If we were not waiting for the missing seqnum when we insert the lost packet
event in the jitterbuffer, we end up not updating the next_seqnum and wait
forever for the lost packets to arrive. Instead, keep track of the amount of
packets contained by the jitterbuffer item and update the next expected
seqnum only after pushing the buffer/event. This makes sure we correctly handle
GAPS in the sequence numbers.
2013-09-30 12:31:00 +02:00
Wim Taymans
fde438791e
rtpjitterbuffer: small debug improvement
2013-09-30 12:30:23 +02:00
Wim Taymans
6e7d547be4
rtpjitterbuffer: reset skew does not reset clock-rate
...
Don't reset the clock-rate when we reset the skew correction algorithm.
Reset the skew correction algorithm when we change the clock-rate.
2013-09-30 11:53:08 +02:00
Wim Taymans
03d520eb69
rtpjitterbuffer: pause timer when PAUSED
...
Also pause the timer when we go to the PAUSED state. It is possible that we
don't have a clock or base-time in PAUSED to perform the timeouts.
2013-09-30 11:16:32 +02:00
Wim Taymans
4a31aec513
rtpjitterbuffer: improve debug
2013-09-30 11:15:25 +02:00
Hans Månsson
041946423a
mp4mux: Do not require framerate in peer video caps
...
Remove the framerate restriction on the caps.
Reference: https://bugzilla.gnome.org/show_bug.cgi?id=708864
2013-09-28 13:02:11 +02:00
Wim Taymans
8c5ce0dbdc
rtspsrc: also go into the loop function after connect
...
When we have opened the stream, go into the loop function so that we can
receive messages from the server.
2013-09-27 15:08:31 +02:00
Matej Knopp
40c0586c17
matroskademux: move the check for subtitle buffer being null terminated before validating UTF-8
...
https://bugzilla.gnome.org/show_bug.cgi?id=707933
2013-09-27 14:38:19 +02:00
Wim Taymans
d4b4b4e924
rtpjitterbuffer: don't calculate skew without rtptime
...
Skip trying to calculate the skew when we don't have an rtptime.
It causes problems when lost packet events are placed in the jitterbuffer.
2013-09-26 16:21:33 +02:00
Wim Taymans
6095e2e859
rtspsrc: disable checks when linking pads
...
We know the pad links will work (and we don't check the return value
anyway).
2013-09-25 17:42:02 +02:00
Wim Taymans
2efd58fc84
rtpbin: avoid some pad link checks
...
Link pads without checks, we know it will work.
2013-09-25 17:38:31 +02:00
Sebastian Dröge
4a91a93d4e
qtmux: Don't error out if downstream is not seekable for non-fragmented variants
...
Doing so would be a regression over 1.0 and breaks the unit test.
However the result will be most likely unusable, so let's post
a warning message on the bus.
2013-09-25 13:25:34 +02:00
Wim Taymans
97f4674655
rtpjitterbuffer: calculate some stats
2013-09-25 10:50:05 +02:00
Wim Taymans
b1d29483bb
rtpjitterbuffer: move send_lost_event function
...
Move the send_lost_event function to the do_lost_event handling, there is no
need to have a separate function.
2013-09-25 10:50:05 +02:00
Thiago Santos
dc02d91c14
qtdemux: add code to parse creation time earlier than 1970
...
Use g_date_time seconds manipulation to allow to cover the quicktime
spec for creation_time. It uses seconds since 1904.
Both paths could be done using the generic approach of seconds since
1904 with GDateTime handling, but the first path using seconds from
1970 should be more commonly found and avoids a few objects creation and
ref/unref, so keep it there for performance.
Additionally, the code for handling seconds since 1970 changed from >
to >= because having 0 seconds since 1970 is also a valid case for that
path to handle.
https://bugzilla.gnome.org/show_bug.cgi?id=707975
2013-09-24 15:16:54 -07:00
Matej Knopp
a1a493dae4
matroskademux: update stream->pos when sending buffers so that gap events are not sent unnecessarily
...
https://bugzilla.gnome.org/show_bug.cgi?id=708505
2013-09-24 15:12:44 -07:00
Wim Taymans
adf5d96044
rtpmanager: update docs
2013-09-23 16:34:15 +02:00
Wim Taymans
e5019de80d
docs: update docs with 1.0 element names
2013-09-23 15:36:47 +02:00
Wim Taymans
8ce674da87
rtpjitterbuffer: always store lost event in jitterbuffer
...
Always prepare a lost event in the jitterbuffer, it is to wake up and make the
pushing thread continue. We drop the event when we are not supposed to push lost
events downstream.
2013-09-23 14:45:27 +02:00
Wim Taymans
9f3345fcc2
rtpjitterbuffer: schedule lost event differently
...
Schedule the lost event by placing it inside the jitterbuffer with the seqnum
that was lost so that the pushing thread can interleave and push it properly.
2013-09-23 14:45:27 +02:00
Wim Taymans
ae389aeb0c
rtpjitterbuffer: remove list debug
2013-09-23 14:45:26 +02:00
Wim Taymans
28641e3145
rtpjitterbuffer: add type to the item
...
So that the upper layer can know what data is contained in the item.
2013-09-23 14:45:26 +02:00
Wim Taymans
479c7642fd
rtpjitterbuffer: fix flush
...
Pass function to flush to properly free the queue items.
2013-09-23 14:45:25 +02:00
Wim Taymans
0cc887eb98
rtpjitterbuffer: append seqnum -1 packets
2013-09-23 14:45:25 +02:00
Wim Taymans
39a2ba669d
rtpjitterbuffer: use structure to hold packet information
...
Make the jitterbuffer operate on a structure containing all the packet
information. This avoids mapping the buffer multiple times just to get the RTP
information. It will also make it possible to store other miniobjects such as
events later.
2013-09-23 14:45:25 +02:00
Wim Taymans
1760817005
rtpjitterbuffer: update expected timer when possible
...
When we receive a packet and we have some missing packets, we can update their
estimated arrival times based on the timestamp difference.
2013-09-23 14:45:25 +02:00
Wim Taymans
fdc1ed1680
rtpjitterbuffer: fix order of timeout events
...
Improve the order of the timeout events, if there are timers with the same
timeout, we want to trigger the lowest seqnum first. For this we need to loop
over the complete array of timers to find the best one before triggering the
timeout.
2013-09-23 14:45:25 +02:00
Wim Taymans
0b1a7edfea
rtpjitterbuffer: send lost event before signaling next buffer
...
First send the lost event, then update the next_seqnum counter and then
send the signal to the pushing thread that it can retry to push a buffer. This
avoids pushing out buffers before the lost event is pushed.
2013-09-23 14:45:25 +02:00
Wim Taymans
5051f51f0a
jitterbuffer: configure clock-rate on jitterbuffer
...
Add a get and setter to configure the clock-rate in the jitterbuffer instead of
passing it as an argument to the insert method.
2013-09-23 14:45:24 +02:00
Wim Taymans
3c421e7e48
rtpjitterbuffer: add option to reset retransmission timers
2013-09-23 14:45:24 +02:00
Wim Taymans
6f4deab298
rtpjitterbuffer: stop the timer thread
...
The timeout code could release the lock so we need to check if we are allowed to
wait for the clock some more.
2013-09-23 14:45:24 +02:00
Wim Taymans
cba4e6a707
rtpjitterbuffer: unlock only once
2013-09-23 14:45:24 +02:00
Wim Taymans
5dc207948c
rtpjitterbuffer: improve flush and shutdown
...
There is no need to unschedule the timer in flush-start, flush-stop will remove
the timers and unschedule.
Unschedule the current timer before attempting to join the timer thread.
2013-09-23 14:45:23 +02:00
Wim Taymans
a512cc2d3c
rtpjitterbuffer: set correct expected time
...
When we already have a timer for a packet, skip it but don't forget to adjust
the dts to the expected dts of the next packet.
2013-09-23 14:45:23 +02:00
Wim Taymans
517ea0f4d9
jitterbuffer: improve debug
2013-09-23 14:45:23 +02:00
Wim Taymans
c395bf62dd
alpha: use POFFSET instead of OFFSET
...
Use the more correct POFFSET macro to get the offset of a component in its
plane. The offset macro gives the offset of the component relative to the start
of the frame.
2013-09-23 14:45:23 +02:00
Sebastian Dröge
94ad6724ba
goom: Fix MMX assembly compilation with clang
...
clang does not want or need a clobber list for emms:
error: clobbers must be last on the x87 stack
Patch taken from the FreeBSD ports, provided by
Dan McGregor <dan.mcgregor@usask.ca>
2013-09-21 18:48:19 +02:00
Sebastian Dröge
d8841b4832
matroska-demux: Make sure that subtitle buffers are \0-terminated
...
https://bugzilla.gnome.org/show_bug.cgi?id=707933
2013-09-20 10:22:40 +02:00
Andoni Morales Alastruey
cfefdaebb6
qtmux: handle issues correctly when downstream is not seekable
...
The streamable property only make sense for fragmented formats.
For regular MP4, when downstream is not seekable we can't rewrite
the headers, so qtmux can only work with fast-start=TRUE, where
the headers are written finishing the file.
For fragmented MP4, when streamable is not seekable and the streamable
property is FALSE, we must enforce streamable=TRUE warning the user
about this change
https://bugzilla.gnome.org/show_bug.cgi?id=707242
2013-09-20 10:09:48 +02:00
Andoni Morales Alastruey
9ae5082204
qtmux: make "streamable" TRUE as default
...
The most common use case for fragmented MP4 (Dash and Smooth Streaming)
is producing streamable content (even for VOD). streamable=FALSE would only
be used to generate fragmented MP4 with and index of MOOF's that could
be reproduced without a playlist/manifest
https://bugzilla.gnome.org/show_bug.cgi?id=707242
2013-09-20 10:09:48 +02:00
Andoni Morales Alastruey
5732684e18
qtmux: deprecate the streamable property for non-fragmented MP4
...
The streamable property only makes sense for fragmented MP4.
https://bugzilla.gnome.org/show_bug.cgi?id=707242
2013-09-20 10:09:48 +02:00
Wim Taymans
926e2fa93b
alpha: don't assume planar formats have just 1 block
...
Don't assume planar formats have just one memory block with the data but use the
macros to access the right memory block where a component can be found.
2013-09-19 16:50:44 +02:00
Wim Taymans
fd6c57cf10
rtpjitterbuffer: keep delay as a separate variable in timer
...
Keep a separate delay in the timer so that we still know the original timestamp
of the packet that this timer refers to. We can then place the correct
running-time in the Retransmission event.
2013-09-19 14:32:48 +02:00
Wim Taymans
d34184dd03
rtpjitterbuffer: fix writability of properties
2013-09-19 14:32:48 +02:00
Wim Taymans
6bb2626498
rtpjitterbuffer: reevaluate the current timer after timeout
...
When we trigger the timeout logic of a timer, reevaluate it because it is
possible that it still has the lowest timeout.
2013-09-18 16:33:40 +02:00
Wim Taymans
8d021b6ede
rtpjitterbuffer: don't update time when unscheduled
...
Don't try to estimate the current time when we got unscheduled.
2013-09-18 16:31:26 +02:00
Wim Taymans
65606a25bf
rtpjitterbuffer: init packet spacing on first buffer
...
Already init the packet spacing variables on the first buffer so that we can
calculate the spacing on the second buffer already.
2013-09-18 16:29:37 +02:00
Wim Taymans
f2efdf28f5
rtpjitterbuffer: push the lost event from the timer thread
...
Instead of pushing the lost event from the chain function, schedule a timeout
that will push the lost event from the timer thread. This avoid blocking the
upstream thread while we push and sync the event.
2013-09-18 14:57:09 +02:00
Wim Taymans
5d5fc03e04
rtpjitterbuffer: round gap duration to multiple of duration
...
Make sure the gap duration in the lost event is a multiple of the packet
duration.
Enable another test.
2013-09-18 14:12:47 +02:00
Wim Taymans
6e4a051d40
rtpjitterbuffer: keep track of duration
...
Keep track of the estimated duration of missing packets and use it in the lost
event.
Enable another unit test
2013-09-18 12:29:38 +02:00
Wim Taymans
ac3bb3acf6
rtpjitterbuffer: handle large gaps with one lost event
...
When we have a large number of missing packets, generate one lost event for all
the packets that have no chance of being pushed out in time.
Fix and activate unit test for large gaps.
2013-09-18 11:59:28 +02:00
Wim Taymans
26402e1c21
rtpjitterbuffer: refactor lost event sending
...
Also make sure we only increment the expected seqnum and last
output timestamp.
2013-09-18 11:57:06 +02:00
Wim Taymans
f49981a597
jitterbuffer: refactor timeout triggers
2013-09-17 23:29:56 +02:00
Wim Taymans
047021c443
jitterbuffer: simplify the timeout code
...
Keep track of the current time in the timeout loop.
Loop over all timers and trigger all the expired ones, we can do this in the
same loop that selects the new best timer.
2013-09-17 23:29:56 +02:00
Wim Taymans
fa1ef3328b
jitterbuffer: rearrange timer update code
...
Also update the timers when retransmission is disabled. We need to
do this because when we added LOST timers when we detected missing packets and
we need to remove those timers when the packet finally arrives.
2013-09-17 23:29:56 +02:00
Tim-Philipp Müller
7a76595b22
videomixer: link to libm for maths stuff
...
Fixes undefined references to rint and pow on ubuntu
build bot.
2013-09-17 22:02:04 +01:00
Wim Taymans
232fdd8b56
jitterbuffer: release lock on shutdown
2013-09-17 15:19:42 +02:00
Matej Knopp
b2982bb749
qtmux: remove MAX_TOLERATED_LATENESS
...
https://bugzilla.gnome.org/show_bug.cgi?id=707411
2013-09-16 11:11:12 -03:00
Wim Taymans
4de919a17a
jitterbuffer: use separate thread for timeouts
...
Use a separate thread for scheduling the timeouts instead of using the
downstream streaming thread that might block at any time.
2013-09-16 15:55:55 +02:00
Matej Knopp
b363832c2c
qtmux: set first_ts to DTS for streams that have DTS
...
https://bugzilla.gnome.org/show_bug.cgi?id=707340
2013-09-16 12:14:00 +02:00
Matej Knopp
39f7e52266
qtmux: make sure duration is a valid number for last buffer
...
https://bugzilla.gnome.org/show_bug.cgi?id=707340
2013-09-16 12:14:00 +02:00
Matej Knopp
4e3c13c87c
qtmux: use segment.start or last buffer end time in case of missing DTS
...
https://bugzilla.gnome.org/show_bug.cgi?id=707340
2013-09-16 12:14:00 +02:00
Matej Knopp
85728c04c4
Revert qtmux: Use buffer PTS if DTS is not set"
...
This reverts commit f72c3cf71fde622067f41f31a53978ba4c94469d.
https://bugzilla.gnome.org/show_bug.cgi?id=707340
2013-09-16 12:13:54 +02:00
Sebastian Dröge
d646a34681
videomixer: Update orc generated files
...
https://bugzilla.gnome.org/show_bug.cgi?id=708131
2013-09-16 11:03:06 +02: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
Jan Schmidt
299d3f5c42
rtp: Remove bogus extra caps from L24 template.
...
The extra caps entry in the template was making it sometimes
get plugged for any dynamically allocated payload type.
2013-09-13 23:27:49 +10: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
c795b72988
source: small cleanups
2013-09-13 14:34:27 +02:00
Thiago Santos
566b0dce40
qtdemux: only update stop position if seek requests it
...
Check for GST_SEEK_TYPE_NONE for stop poistion and only update
the stop time if it is requested. Otherwise just maintain whatever
was stored at the segment
https://bugzilla.gnome.org/show_bug.cgi?id=707530
2013-09-13 09:21:12 -03:00
Rico Tzschichholz
8ed1ff6821
rtp: Add missing headers tp fix make dist
...
In addition to a956a6ceb2
2013-09-13 14:06:13 +02:00
Sebastian Dröge
b95ddd55cd
flacparse: Make sure we have enough data to read image tags
...
Thanks to iputinei for reporting this on IRC.
2013-09-12 15:39:51 +02:00
Wim Taymans
9f9ba21404
jitterbuffer: handle segments with non-0 start
...
We keep the DTS and PTS in running-time inside the jitterbuffer. Make sure to
transform it back to a buffer timestamp before pushing out the buffer.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707931
2013-09-12 15:04:30 +02:00
Seán de Búrca
9d3dbd6581
matroskademux: Fix off-by-one in validation of UTF-8
...
https://bugzilla.gnome.org/show_bug.cgi?id=707933
2013-09-12 09:19:15 +02:00
Thibault Saunier
9f4a8ccdf4
videomixer: Do not check if caps are empty when they are NULL
...
In the case the caps are actually NULL, we should just concider it the
same way as empty caps in that case.
2013-09-11 14:33:31 -03:00
Seán de Búrca
268058eb37
videomixer: fix build if orc is not installed
...
https://bugzilla.gnome.org/show_bug.cgi?id=707886
2013-09-11 00:17:44 +01:00
Thiago Santos
193ce9110e
matroskademux: Preserve seqnum when pushing seek upstream
...
After converting a seek from time to bytes, use the same seqnum
on the event that goes upstream
2013-09-10 17:57:49 -03:00
Thiago Santos
be0eeae491
qtdemux: track streams that are EOS on push mode to finish earlier
...
When the segment has a defined stop position, qtdemux should check
when streams reach this position and mark those as EOS. When all
streams are EOS it will return GST_FLOW_EOS to upstream to allow
the pipeline to finish instead of continuously consume buffers
from upstream that are not useful for the segment.
https://bugzilla.gnome.org/show_bug.cgi?id=707530
2013-09-10 16:43:17 -03:00
Thiago Santos
33cf8b679d
qtdemux: preserve stop of segment when doing seeks in push mode
...
When handling seeks in push mode, qtdemux converts the seek to bytes
and pushes upstream. It needs to keep track of the seek and the
subsequent segment to be able to map them back to the requested
seek time and properly preserve the segment stop of the seek.
This is done by using the start offset in bytes of the seek,
that should be the same of the segment from upstream. And this
is also backwards compatible with what qtdemux already was using.
https://bugzilla.gnome.org/show_bug.cgi?id=707530
2013-09-10 16:42:36 -03:00
Mathieu Duponchelle
8db40a8c7f
videomixer: Add colorspace conversion
...
https://bugzilla.gnome.org/show_bug.cgi?id=704950
2013-09-10 10:37:23 +02:00
Mathieu Duponchelle
707e39fe7a
videomixer: Don't send reconfigure event when formats or PAR are different
...
It is racy with multiple pads.
https://bugzilla.gnome.org/show_bug.cgi?id=704950
2013-09-10 10:36:48 +02:00
Mathieu Duponchelle
8db3648544
videomixer: Bundle private copies of videoconvert code
...
Ideally, this would be part of libgstvideo.
Prefixes videoconvert symbols with videomixer_.
https://bugzilla.gnome.org/show_bug.cgi?id=704950
2013-09-10 10:36:30 +02:00
Wim Taymans
9f9bcbc405
rtspsrc: only wait if we flushed
...
Only wait for the STREAM_LOCK when we flushed something when sending
a command for PAUSED or PLAYING.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707611
2013-09-09 15:13:46 +02:00
Wim Taymans
7b2e002879
rtspsrc: return when a flush was issued
...
Make gst_rtspsrc_loop_send_cmd() return TRUE when the current
action has been flushed
2013-09-09 15:13:46 +02:00
David Holroyd
a956a6ceb2
rtp: add L24 pay and depayloader
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=707734
2013-09-09 15:13:46 +02:00
Matej Knopp
a5ceab82dd
matroskademux: fix leaking buffer and caps
...
https://bugzilla.gnome.org/show_bug.cgi?id=707688
2013-09-07 15:50:36 +01:00
Tim-Philipp Müller
60e72b0254
udpsrc: fix build on win32
...
gstudpsrc.c:855:15: error: #if with no expression
2013-09-05 19:46:37 +01:00
Wim Taymans
5d2ff288b3
avidemux: handle unseekable streams
...
Handle streams that we can't seek in and ignore them in the
seek logic.
2013-09-04 15:53:05 +02:00
Wim Taymans
6f0e8a8b87
avidemux: only check video compression for video streams
...
Or else we might deref a stream with a NULL strf.vids and segfault
2013-09-04 15:53:05 +02:00
Alex Ashley
a965185dee
qtdemux: Add support for the avc3 sample entry format of the AVC file format
...
Amendment 2 of ISO/IEC 14496-15 (AVC file format) is defining a new
structure for fragmented MP4 called "avc3". The principal difference
between AVC1 and AVC3 is the location of the codec initialisation
data (e.g. SPS, PPS). In AVC1 this data is placed in the initial
MOOV box (moov.trak.mdia.minf.stbl.stsd.avc1) but in AVC3 this data
goes in the first sample of every fragment (i.e. the first sample in
each mdat box). The principal reason for avc3 is to make it easier
for client implementations, because it removes the requirement to
insert the SPS+PPS in to the decoder pipeline every time there is a
representation change.
This commit adds support for the "avc3" atom, which is almost identical
to the "avc1" atom, except it does not contain any SPS or PPS data.
https://bugzilla.gnome.org/show_bug.cgi?id=702004
2013-09-04 13:33:22 +02:00
Mathieu Duponchelle
b68f419b6f
videomixer: Don't set EOS to FALSE when the collectpad *is* EOS
...
https://bugzilla.gnome.org/show_bug.cgi?id=707238
2013-09-04 11:09:04 +02:00
Matej Knopp
349afc633a
flacparse: cleanup on error after state change
...
https://bugzilla.gnome.org/show_bug.cgi?id=707229
2013-09-03 18:06:18 +02:00
Sebastian Dröge
7f59436979
udpsrc: Bind to multicast addresses on non-Windows systems
...
On Windows it's not possible to bind to a multicast address
but the OS will make sure to filter out all packets that
arrive not for the multicast address the socket joined.
On Linux and others it is necessary to bind to a multicast
address to let the OS filter out all packets that are received
on the same port but for different addresses than the multicast
address
And deprecate the multicast-group property and replace it with the
address property.
https://bugzilla.gnome.org/show_bug.cgi?id=707042
2013-09-03 11:23:24 +02:00
Matej Knopp
73751dbbe7
flacparse: Free GstBaseParseFrame if pushing a header failed
2013-09-03 10:10:49 +02:00
Sebastian Dröge
edf6d28765
udpsrc: Refactor address resolval into its own function
2013-09-03 10:10:49 +02:00
Tim-Philipp Müller
966f848edb
replaygain: fix taglist leak in rganalysis
...
And add some FIXMEs.
2013-09-02 23:00:29 +01:00
Sebastian Dröge
1971c43279
flacparse: Properly propagate downstream flow returns upstream
...
https://bugzilla.gnome.org/show_bug.cgi?id=707229
2013-09-02 11:56:33 +02:00
Tim-Philipp Müller
1dfc1f2686
Don't use setlocale in plugins()
...
Only apps should call setlocale(), not libraries.
2013-09-01 21:18:38 +01:00
Wim Taymans
d851b8a8b4
rtpmpvpay: Fix RTP buffer allocation in rtpmpvpay
...
RTP buffer allocation should not be done with padding for the specific MPEG2
header as the padding is done at the end of the buffer and the last byte is
the size of the padding.
https://bugzilla.gnome.org/show_bug.cgi?id=706970
2013-08-29 13:15:15 +02:00
Bernhard Miller
f7528d274b
autovideosink: add sync property
...
https://bugzilla.gnome.org/show_bug.cgi?id=706955
2013-08-29 12:23:24 +02:00
Bernhard Miller
2fa68fce07
autoaudiosink: introduce sync property
...
https://bugzilla.gnome.org/show_bug.cgi?id=706955
2013-08-29 12:23:23 +02:00
Thiago Santos
9549289a18
qtdemux: push buffers after segment stop until reaching a keyframe
...
This should make decoders able to precisely push buffers until the stop
time in case they need the next keyframe to do it.
Also, according to gst_segment_clip, it should only push a buffer that
the starting ts is strictly smaller than the segment stop, so we change
the min < comparison for <=
2013-08-28 12:58:56 -03:00
Sebastian Dröge
76293efd72
Release 1.1.4
2013-08-28 12:52:25 +02:00
Wim Taymans
2a8566ddec
matroska-mux: remove framerate restriction
...
Remove the framerate restriction on the caps.
2013-08-27 15:25:16 +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
454d75951e
jitterbuffer: fix types of the retransmission event
2013-08-27 09:55:52 +02:00
Wim Taymans
dd4af0d11c
jitterbuffer: only timeout EXPECTED timers on gap
...
Only timeout the EXPECTED timers when we detect a large seqnum gap.
2013-08-27 09:44:18 +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
Mathieu Duponchelle
5d21f8f2e3
videomixer: don't send flush_stop twice.
...
If we get flush start and a seek we need to only send flush_stop once.
More info at #706441
2013-08-23 20:17:11 -04:00
Tim-Philipp Müller
9b0bcc01a0
multipartdemux: propagate discont
2013-08-23 15:57:46 +01:00
Tim-Philipp Müller
c3af414cbf
multipartdemux: remove dynamic sourcpads when going from PAUSED to READY
2013-08-23 15:57:46 +01:00
Tim-Philipp Müller
7d78a68c8d
multipartdemux: timestamp output buffers based on first input buffer that provided bytes not last
...
https://bugzilla.gnome.org/show_bug.cgi?id=637754
2013-08-23 15:57:46 +01:00
Wim Taymans
54e7e7547a
rtxqueue: add property to configure queue size
2013-08-23 15:47:25 +02:00
Wim Taymans
84833bed11
rtpbin: proxy jitterbuffer do-retransmission property
2013-08-23 12:10:19 +02:00
Michael Olbrich
23d4044e2c
avimux: unmap the correct buffer
...
The audio buffer was mapped so unmap it and not the video buffer
https://bugzilla.gnome.org/show_bug.cgi?id=706642
2013-08-23 11:32:52 +02:00
Wim Taymans
89b9019e3e
rtx: various improvements
...
Use locking
Don't push from the event handler, collected packets in a queue and push from
the chain function.
Clear queues on shutdown.
2013-08-21 17:02:27 +02:00
Wim Taymans
ee15bc9284
session: generate events correctly
...
Do correct shifting of the bitmask for lost packets.
2013-08-21 17:02:27 +02:00
Wim Taymans
67523d3ecb
rtp: register rtx element better
2013-08-21 17:02:26 +02:00
Wim Taymans
f626e29897
jpegdepay: add some more debug
2013-08-21 12:56:35 +02:00
Wim Taymans
77ed44a88a
rtpgstdepay: only push events when they changed
...
Keep track of the STREAM_START and TAG events and only push them
when they changed.
2013-08-21 12:10:00 +02:00
Wim Taymans
b144809b7c
rtpgstpay: taglists should not be merged in 1.0
2013-08-21 10:52:59 +02:00
Wim Taymans
69b0dcd7df
rtpgstdepay: flush on FLUSH_STOP event
2013-08-21 10:28:50 +02:00
Wim Taymans
5ff9093843
rtpgstpay: reset on state change
...
Do full reset on state change to READY
2013-08-21 10:03:52 +02:00
Wim Taymans
ae9239aac7
rtpgstpay: reset on FLUSH_STOP
...
Clear the adapter and pending buffer list on FLUSH_STOP.
2013-08-21 09:55:20 +02:00
Wim Taymans
2e8955df39
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.
2013-08-21 09:39:30 +02:00
Wim Taymans
182f96ff79
rtpgstay: don't use // comments
2013-08-21 09:33:04 +02:00
Youness Alaoui
e22f7e91c4
rtspsrc: Fix response argument in handle-request signal
2013-08-21 09:06:02 +02:00
Youness Alaoui
6636efd31a
rtspsrc: Add sdes property and proxy it to rtpbin
2013-08-21 09:06:02 +02:00
Youness Alaoui
62a6f58697
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
2013-08-21 09:06:01 +02:00
Youness Alaoui
05bcfee5a3
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.
2013-08-21 09:06:01 +02:00
Youness Alaoui
1f4ca28868
rtpgstpay: Refactor the setcaps and use new method to send arbitrary caps at any time
2013-08-21 09:06:01 +02:00
Youness Alaoui
9257409613
rtpgstpay: Do not flush events for stream-start and avoid conflict between event and pending inline caps
2013-08-21 09:06:01 +02:00
Youness Alaoui
2d53289b6b
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.
2013-08-21 09:06:01 +02:00
Youness Alaoui
0070ba76f2
rtpgstpay: Add etype=4 for payloading GST_EVENT_STREAM_START
2013-08-21 09:06:01 +02:00
Youness Alaoui
6155b27971
rtpgstpay: Fix typo, GST_EVENT_CUSTOM_BOTH has etype of 3
2013-08-21 09:06:01 +02:00
Wim Taymans
587dc055e9
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
2013-08-20 14:36:59 +02:00
Wim Taymans
533f26fc99
jitterbuffer: update docs
2013-08-20 10:26:15 +02:00
Wim Taymans
c7f9ef8012
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.
2013-08-20 10:25:17 +02:00
Wim Taymans
5debda9ca1
jitterbuffer: remove unused variables
2013-08-20 08:55:50 +02:00
Wim Taymans
a88db5fa2c
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.
2013-08-19 22:04:51 +02:00
Wim Taymans
d9d6eac4bb
jitterbuffer: refactor packet spacing calculation
2013-08-19 22:04:50 +02:00
Wim Taymans
c4dc159656
jitterbuffer: keep track of last seqnum and dts
2013-08-19 22:04:50 +02:00
Wim Taymans
652ce95ca6
jitterbuffer: small cleanups
2013-08-19 22:04:50 +02:00
Wim Taymans
b4a35bbe82
jitterbuffer: reset retransmission timers in add/reschedule
...
Reset the retransmission timers when adding and rescheduling a timer.
2013-08-19 22:04:50 +02:00
Wim Taymans
cf8a0652f3
jitterbuffer: rename variables for packet spacing
2013-08-19 22:04:50 +02:00
Wim Taymans
ec82e4ab7c
jitterbuffer: remove lost timer when we get the packet
...
When we receive a packet, also remove the LOST timer for it.
2013-08-19 22:04:50 +02:00
Wim Taymans
2f03b43b21
jitterbuffer: expected seqnum must increase
...
Only update the expected seqnum when it is bigger than the previous expected
seqnum.
2013-08-19 22:04:50 +02:00
Wim Taymans
c5bf376bb5
jitterbuffer: add more debug
2013-08-19 22:04:50 +02:00
Wim Taymans
ff825a2919
rtxqueue: add retransmission queue element
2013-08-19 22:04:50 +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
Thibault Saunier
e47ffb203b
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.
2013-08-17 11:40:27 +02:00
Wim Taymans
db90f6e68d
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.
2013-08-16 17:12:19 +02:00
Chris Bass
3e9dea3f8c
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
2013-08-16 10:14:30 +02:00
Wim Taymans
f11c2c9b3b
jitterbuffer: forward flush before stopping dataflow
...
First forward the flush event and then stop our loop function.
2013-08-14 16:19:32 +02:00
Olivier Crête
4c6e636720
rtph264pay: Use the SPS/PPS handling function from the depayloader
...
Remove duplicated copies
https://bugzilla.gnome.org/show_bug.cgi?id=705553
2013-08-13 10:38:23 -04:00
Olivier Crête
742b90747d
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
2013-08-13 10:38:23 -04:00
Chris Bass
b40bf67526
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
2013-08-13 15:58:23 +02:00
Sebastian Dröge
282afae244
rtspsrc: Only free GCheckSum after its last usage
...
https://bugzilla.gnome.org/show_bug.cgi?id=705760
2013-08-13 12:44:11 +02:00
Matej Knopp
2269ac8f28
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
2013-08-12 13:48:04 +02:00
Thibault Saunier
6c349d6ec3
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.
2013-08-11 19:05:18 +02:00
Matej Knopp
96afba915a
avidemux: send proper stream_start event
...
https://bugzilla.gnome.org//show_bug.cgi?id=705449
2013-08-08 11:57:32 +02:00
Sebastian Dröge
9863e08839
matroskademux: Don't print warnings during flushing and stop as soon as possible
...
https://bugzilla.gnome.org//show_bug.cgi?id=705442
2013-08-08 11:53:15 +02:00
Tim-Philipp Müller
957c8e3e61
rtpvp8depay: mark key frames and delta frames properly
...
https://bugzilla.gnome.org/show_bug.cgi?id=705550
2013-08-07 11:14:38 +01:00
Wim Taymans
48174164eb
session: add NACK feedback in RTCP
2013-08-06 15:50:19 +02:00
Wim Taymans
4379ed1dee
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.
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
Thibault Saunier
38946bd9f4
qtdemux: Fix compilation
2013-08-06 15:31:38 +02:00
Thibault Saunier
593a31f2b4
qtdemux: Raw buffer DTS should always be CLOCK_TIME_NONE
2013-08-06 15:17:44 +02:00
Thibault Saunier
c5fa4666b7
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.
2013-08-06 12:21:33 +02:00
Sjoerd Simons
d14d4c436c
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
2013-08-05 15:33:39 +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
Edward Hervey
4f4f6432cc
qtmux: Use buffer PTS if DTS is not set
...
Avoids ending up with completely bogus scaled duration/pts when new
buffers have invalid DTS.
2013-08-04 17:15:38 +02:00
Tim-Philipp Müller
7272dec5fe
rtpdec: use generic marshaller
2013-08-04 11:20:41 +01:00
Tim-Philipp Müller
fe098e3aff
udp: remove unused marshal and enumtypes files
2013-08-04 11:03:07 +01:00
Tim-Philipp Müller
7469cd3a4c
rtpmanager: use generic marshaller
2013-08-04 11:03:07 +01:00
Wim Taymans
7584f91f31
jitterbuffer: send event in right direction
2013-08-04 00:24:36 +02: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
743e1b1191
jitterbuffer: fix property ranges
2013-08-02 17:22:55 +02:00
Wim Taymans
cd0164f4cc
jitterbuffer: push retransmission events
2013-08-02 16:43:59 +02:00
Wim Taymans
9a13267e85
jitterbuffer: add support for retransmission retry
...
When we didn't receive a packet after requesting retransmission, retry
asking for retransmission for a certain period.
2013-08-02 14:54:56 +02:00
Wim Taymans
e9ad5126db
jitterbuffer: add properties
...
Add properties to control retransmission parameters
2013-08-02 14:47:56 +02:00
Wim Taymans
a8c7ff7489
jitterbuffer: use corrected timeout when rescheduling
...
When we recalculate the timeout, use the corrected timeout value depending on
the timer type.
2013-08-02 12:44:58 +02:00
Wim Taymans
9c7e3e3455
jitterbuffer: update timers after queueing
...
Else we might update the timer needlessly for duplicates.
2013-08-02 12:43:00 +02:00
Wim Taymans
ebd6b8f8ab
jitterbuffer: move method up
2013-08-02 12:42:08 +02:00
Wim Taymans
f6b6797874
jitterbuffer: small cleanup
2013-08-02 06:28:32 +02:00
Wim Taymans
0e41414926
jitterbuffer: unschedule old expected packets
...
When we receive a new packet, unschedule old outstanding packets when their
seqnum is too far away.
2013-08-01 23:36:07 +02:00
Wim Taymans
70695466ed
jitterbuffer: refactor timer update
2013-08-01 23:32:00 +02:00
Wim Taymans
4ab3f5d3da
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.
2013-08-01 23:24:29 +02:00
Wim Taymans
b983cf675b
jitterbuffer: fix typo
2013-08-01 23:22:02 +02:00
Wim Taymans
f3c658cbe6
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.
2013-08-01 15:40:52 +02:00
Wim Taymans
77e5d320ab
jitterbuffer: install timer for expected arrival
...
Install a timer that is triggered when the expected arrival time of a packet
expired.
2013-08-01 15:11:13 +02:00
Wim Taymans
f08d98404e
jitterbuffer: improve unschedule of timers
...
Conflicts:
gst/rtpmanager/gstrtpjitterbuffer.c
2013-08-01 14:57:11 +02:00
Wim Taymans
9d3b824e2a
jitterbuffer: move code around
2013-08-01 12:21:53 +02:00
Wim Taymans
fe32e80c92
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.
2013-08-01 12:07:11 +02:00
Wim Taymans
255b7106f5
jitterbuffer: keep track of current timeout
2013-08-01 12:01:15 +02:00
Wim Taymans
7e43dba19b
jitterbuffer: cleanup timer handling
2013-08-01 11:49:10 +02:00
Wim Taymans
9d88ac9cbb
jitterbuffer: reset is only possible with a GAP
2013-08-01 11:40:41 +02:00
Wim Taymans
f864131227
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.
2013-08-01 11:36:56 +02:00
Wim Taymans
80c5934290
jitterbuffer: rename timout variable
2013-08-01 11:14:12 +02:00
Wim Taymans
aa951433ee
jitterbuffer: small cleanup
2013-07-31 17:08:58 +02:00
Wim Taymans
69c78f72d5
jitterbuffer: block output in paused or buffering
2013-07-31 16:59:58 +02:00
Wim Taymans
4fbbc53a49
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.
2013-07-31 16:59:09 +02:00
Wim Taymans
77846d35c6
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.
2013-07-30 23:24:23 +02:00
Wim Taymans
ea931d4f57
rtpjitterbuffer: use NULL to ignore percent
...
If we pass NULL to pop and push we ignore the percent result.
2013-07-30 23:24:23 +02:00
Wim Taymans
b3e8a85a54
jitterbuffer: refactor
...
Move eos estimation into separate function
2013-07-30 23:24:22 +02:00
Tim-Philipp Müller
a5532b4510
flvdemux: don't leak stream_id string
...
https://bugzilla.gnome.org/show_bug.cgi?id=705142
2013-07-30 14:28:19 +01:00
Sebastian Dröge
2e35b36aab
gst: Don't swap start/stop for negative rates in the SEGMENT query
2013-07-29 12:12:41 +02:00
Matej Knopp
47ed79fb1c
qtdemux: Check for data size when parsing h264 codec data from strf atom
2013-07-29 11:53:07 +02:00
Sebastian Dröge
722ef42196
matroskademux: Implement SEGMENT query
2013-07-29 10:53:54 +02:00
Sebastian Dröge
d135373beb
flvdemux: Implement SEGMENT query
2013-07-29 10:53:47 +02:00
Sebastian Dröge
4e78974c87
avidemux: Implement SEGMENT query
2013-07-29 10:50:59 +02:00
Matej Knopp
2dcdfe07f7
qtdemux: Support H264 fourcc
...
https://bugzilla.gnome.org/show_bug.cgi?id=704996
2013-07-29 09:11:39 +02:00
Sebastian Dröge
1fbb6d30a6
avidemux: Fix duration reporting in push mode
...
https://bugzilla.gnome.org/show_bug.cgi?id=700933
2013-07-28 17:38:56 +02:00
Sebastian Dröge
89a3dc2ecd
avidemux: Don't forget unmapping and unreffing buffer
2013-07-28 17:32:59 +02:00
Matej Knopp
1947587784
avidemux: unmap buffer
...
https://bugzilla.gnome.org/show_bug.cgi?id=704951
2013-07-28 17:32:59 +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
Matej Knopp
7335b81c47
matroskademux: fix memory leak in check_subtitle_buffer
...
https://bugzilla.gnome.org/show_bug.cgi?id=704921
2013-07-26 17:11:31 +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
88f5a5f355
source: don't update packet SSRC
...
Remove the code to update the SSRC in packets, it can never be called now that
we always use a source with matching packet 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