Commit graph

18352 commits

Author SHA1 Message Date
Sebastian Dröge
c4608b410c rtprawdepay: Don't get rid of the buffer pool on FLUSH_STOP
We expect there to be a pool as long as the caps are known and
FLUSH_STOP is not resetting the caps. Getting rid of the pool would
cause assertions.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/584
2019-05-01 10:00:51 +03:00
Danny Smith
037d70c01b rtpbin: Free storage when freeing session 2019-04-29 10:57:38 +02:00
Sebastian Dröge
0c7c31d197 matroskamux: Fix typo in error message 2019-04-25 21:52:42 +03:00
Sebastian Dröge
4881ea95b0 imagefreeze: Only set the DISCONT flag on the first buffer after segment start 2019-04-25 08:20:14 +00:00
okuoku
05089a7092 jack: Use jack_free(3) to release ports
Port objects acquired with jack_get_ports() need to be freed with
jack_free(3), not stdlib free().

On Windows, Jack may be linked against different libc than GStreamer
libraries so free()ing port objects directly might cause crash because
of libc mismatch.
2019-04-24 02:38:32 +09:00
Philippe Normand
aadfa5f20f scaletempo: Advertise interleaved layout in caps templates
Scaletempo doesn't support non-interleaved layout. Not explicitely stating this
would trigger critical warnings and a caps negotiation failure when scaletempo
is used as playbin audio-filter.

Patch suggested by George Kiagiadakis <george.kiagiadakis@collabora.com>.

Fixes #591
2019-04-23 13:39:20 +00:00
Seungha Yang
7fb8abf8bb meson: matroska: Ensure header dependency not only library
Library existence does not guarantee header.
2019-04-22 20:40:50 +09:00
Robert Rosengren
2476e9e4ae multidupsink: Use gst_net_utils_set_socket_tos for QoS DSCP
Util function in net library exists for setting QoS DSCP on socket, hence
use it to simplify code.
2019-04-22 09:16:20 +00:00
Tim-Philipp Müller
9031986713 Back to development 2019-04-19 11:00:06 +01:00
Tim-Philipp Müller
646dc1ef9b Release 1.16.0 2019-04-19 00:23:18 +01:00
Tim-Philipp Müller
93529e5ba1 Update docs 2019-04-19 00:23:16 +01:00
Tim-Philipp Müller
1c4a101ff4 Update translations 2019-04-19 00:23:14 +01:00
Benjamin Sigonneau
0375e53225 qmlglsink: fix compilation with Qt >= 5.5 on Windows
As of Qt >= 5.5, qmake do not link to opengl32 by default anymore. This commit adds opengl32.lib to the .pro
file so that the plugin can be build using QtCreator on Windows.
2019-04-18 17:14:18 +02:00
Nirbheek Chauhan
e40072630c meson: Build qt plugin in C++11 mode explicitly
This works implicitly most of the time, but we need to set it
explicitly for building with Android.
2019-04-17 15:48:26 +05:30
Guillaume Desmottes
443c16e1e3 v4l2: fix use after free when handling events
The sink_event parent function may consume the event so we shouldn't use
it after having calling it.
2019-04-16 14:53:15 +05:30
Tim-Philipp Müller
4040c01083 Release 1.15.90 2019-04-11 00:27:00 +01:00
Tim-Philipp Müller
ccdea7632a Update docs 2019-04-11 00:26:58 +01:00
Tim-Philipp Müller
c6c3bed095 rtpulpfecdec,enc: unbreak plugin gtk-doc build in autotools
Fix doc chunks to not use that syntax for links that have the
url as description, it will be put verbatim into the xml/*.xml
file and then the expat parser will throw a syntax error like:

  File "../../common/mangle-db.py", line 71, in <module>
    main()
  File "../../common/mangle-db.py", line 69, in main
    patch (details.replace("-details", ""), os.path.basename(details))
  File "../../common/mangle-db.py", line 20, in patch
    doc = xml.dom.minidom.parse(related)
  File "/usr/lib/python2.7/xml/dom/minidom.py", line 1918, in parse
    return expatbuilder.parse(file)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 924, in parse
    result = builder.parseFile(fp)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 207, in parseFile
    parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 84, column 7
2019-04-09 23:58:30 +01:00
Antonio Ospite
61c1385c42 rtpvrawpay: preserve GST_BUFFER_FLAG_DISCONT on the first outputted buffer
If the incoming frame buffer has GST_BUFFER_FLAG_DISCONT set this should
be preserved and set for the first output buffer too, like other
payloaders do.

Spotted with gst-validate-1.0 when adding integration tests for
rtpsession, a minimal test to reproduce the issue is:

$ gst-validate-1.0 videotestsrc num-buffers=1 ! rtpvrawpay ! identity ! fakesink
Starting pipeline
Pipeline started
   warning : Buffer didn't have expected DISCONT flag333 speed: 1.000000 />
             Detected on <identity0:sink>
             Detected on <identity0:src>
             Detected on <fakesink0:sink>
             Description : Buffers after SEGMENT and FLUSH must have a DISCONT flag

Issues found: 1

=======> Test PASSED (Return value: 0)
2019-04-09 09:32:43 +00:00
Olivier Crête
92138dc3d6 rtpulpfec*: Replace github URIs with gitlab.fdo ones 2019-04-09 08:17:28 +00:00
Olivier Crête
1bd81d3d33 rtpred*: Add example pipelines 2019-04-09 08:17:28 +00:00
Olivier Crête
11f3018170 rtpulpfec*: Improve documentation 2019-04-09 08:17:28 +00:00
Olivier Crête
070eacdd4f rtpstorage + rtpulpfecdec: Get the storage using a query as fallback
This allows it to be used using gst-launch for easier testing.
2019-04-09 08:17:28 +00:00
Dan Kegel
dfe1f6d803 osxvideo: fix mac os 10.14 build
lockFocusIfCanDraw is deprecated in mac os 10.14.  Apple suggests a
different way to do what that does, but for now, just suppress the deprecation.

There's no way to disable just that deprecation, so shut them all down.

OpenGL is also deprecated in mac os 10.14.  There is a gentle way to
turn off just those deprecations (GL_SILENCE_DEPRECATION), but since
this commit turns them all off, that's moot.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/577
2019-04-08 16:27:13 -07:00
Nicolas Dufresne
a8ea9f0d05 test: rtpsession: Verify on-sending-nacks callback 2019-04-07 12:00:49 -04:00
Nicolas Dufresne
ec06268ed8 rtpsession: Allow overriding NACK packet creation
This introduce a new signal on RTSession, on-sending-nacks is emited
right before the list of seqnums to be nacked are processed and
transformed into FB Nack. This allow implementing custom nacks
handling through another mechanism with APP feedback.
2019-04-05 18:36:36 -04:00
Mathieu Duponchelle
280d86a841 rtpsession: Add disable-sr-timestamp property
The Onvif Streaming Spec, in section 6.11, mandates that when
Rate-Control is disabled potential RTCP packets shall have
their timestamps set to 0.

<https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf>
2019-04-05 20:23:08 +02:00
Philipp Zabel
603c7a52fd v4l2: remove __user define from types-compat.h
Remove the now unused __user define.
2019-04-05 16:01:55 +00:00
Philipp Zabel
40db843efd v4l2object: use opRGB colorspace and xfer func defines
AdobeRGB defines have been renamed to opRGB in the kernel headers,
use the new names.
2019-04-05 16:01:55 +00:00
Philipp Zabel
e2ff87732d v4l2videodec: support orphaning
Recent kernels allow REQBUFS(0) on a queue that still has buffers in
use (mmapped or exported via dmabuf), orphaning all buffers on the queue.
If this is supported, the v4l2videodec element does not have to send a
drain request downstream.
2019-04-05 16:01:55 +00:00
Philipp Zabel
dfc20013cc v4l2bufferpool: support orphaning
Now that the v4l2allocator allows orphaning the V4L2 buffer queue, add
support for orphaning in the v4l2bufferpool. gst_v4l2_buffer_pool_orphan
can be used as a replacement for gst_v4l2_buffer_pool_stop, without
having to wait for buffers to be returned to the pool.
2019-04-05 16:01:55 +00:00
Philipp Zabel
0948ce0478 v4l2allocator: support orphaning
Recent kernels allow REQBUFS(0) on a queue that still has buffers in
use (mmapped or exported via dmabuf), orphaning all buffers on the queue.

Orphaning the allocator causes it to release all buffers with
REQBUFS(0), even if they are still in use. An orphaned allocator can
only be stopped. It can not be restarted or create new buffers.
2019-04-05 16:01:55 +00:00
Philipp Zabel
5d904530c1 v4l2: update kernel headers to latest from media tree
Update to the latest installed headers (output of make headers_install)
from the media tree, keeping the slight modifications to the includes.

This includes new HEVC controls, the AdobeRGB -> opRGB rename, a new
capabilities field for v4l2_requestbuffers and v4l2_create_buffers, new
32-bit YUV formats, and request_fd changes.
2019-04-05 16:01:55 +00:00
Nicolas Dufresne
bac8c00b85 shout2: Fix leak on error in start 2019-04-05 14:53:09 +00:00
Nicolas Dufresne
464ada3f29 test: rtpsession: Test FB Nack packing
We used to split the NACK if a smaller seqnum of a range of seqnum was
submited. This test also make sure that the three operations (append,
prepend, update) works properly.
2019-04-05 14:53:09 +00:00
Nicolas Dufresne
a31569713f test: rtpsession: Test handling of NACK surplus
This test verify that NACKs that didn't fit in one packet are properly
filtered and inserted into the following pipeline.
2019-04-05 14:53:09 +00:00
Nicolas Dufresne
6bb53e75fb rtpsession: Send as many nack seqnum as possible
In order to do that, we now split the nacks registration from the actual
FB nack packet construction. We then try and add as many FB Nacks as
possible into the active packets and leave the remaining seqnums in the
RTPSource. In order to avoid sending outdated NACK later on, we save the
seqnum calculated deadline and cleanup the outdated seqnums before the
next RTCP send.

Fixes #583
2019-04-05 14:53:09 +00:00
John Bassett
74a74bfc99 rtpsession: Fix race when sending PLI, FIR and NACK packets
Calling rtp_session_send_rtcp before marking the source as requiring a
pli/fir/nack meant the rtcp_thread could be scheduled and start running
before the source was updated. This meant the request would not be sent
early but instead was transmitted with the next regular RTCP packet.

Add test for nack generation.
2019-04-05 14:53:09 +00:00
Nicolas Dufresne
6b50d142f3 rtpsession: Fix early rtcp time comparision
If the current time is equal to the early rtcp time deadline, there is
no need to schedule a timer. This ensure that immediate feedback is
really immediate and simplify implementing unit tests with the test
clock, which stops perfectly on the timeout time.

This fix has been extracted from Pexip feature patch called
  "rtpsession: Allow instant transmission of RTCP packets"
2019-04-05 14:53:09 +00:00
Guillaume Desmottes
e3c4b80750 v4l2src: preserve features when fixating caps
The caps features were lost when sorting caps structures in
gst_v4l2src_fixate(). This was breaking alternate as
GST_CAPS_FEATURE_FORMAT_INTERLACED was removed from the caps.
2019-04-05 13:22:58 +00:00
Mathieu Duponchelle
74e3eb1f1d rtpgstpay: Set DELTA_UNIT flag when appropriate
When used in combination with a rtponviftimestamp element
downstream, forwarding this flag ensures it gets correctly
serialized in the ONVIF header extension.
2019-04-04 19:08:23 +02:00
Antonio Ospite
435f67debf docs: fix typo s/abonormally/abnormally/ 2019-04-03 16:42:26 +02:00
Antonio Ospite
d6939c4031 docs: fix typo s/incomming/incoming/ 2019-04-03 16:38:56 +02:00
Antonio Ospite
f7c8317668 rtp: fix indentation after G_DEFINE_TYPE
A missing colon after G_DEFINE_TYPE declaration was confusing gst-indent
and causing problem in the pre-commit hook.

Add the missing colon and fix the following function declaration to
follow the normal GStreamer style.
2019-04-03 16:37:34 +02:00
Antonio Ospite
114de8cc96 rtpsession: fix comment to refer to buffers instead of groups
One comments in gst_rtp_session_chain_send_rtp_common() is referring to
groups in a buffer list, however this concept of "group" comes from
GStreamer 0.10 and does not exist anymore in GStreamer 1.0, so update the
comment to refer to buffers instead.
2019-04-02 13:03:56 +02:00
Antonio Ospite
e98b0ca8da rtpsource: add comment to explain why probation queue is not always cleared 2019-04-02 13:03:56 +02:00
Antonio Ospite
6f12f1cecc test: rtpbin_buffer_list: add test to verify that stats are correct
Add a test to verify that stats about sent and received packets are
correct even when using buffer lists.

NOTE: the newly introduced get_session_source_stats() selects the
desired source (sender or receiver) by filtering them by type (using the
get_sender parameter) rather than by ssrc because this simplifies the
code and it's good enough for testing purposes as there is usually one
source per type in the test setup.

Filtering by ssrc would have required handling asynchronous signals like
"on-new-sender-ssrc", with the relative locking, just to retrieve the
actual ssrc of the sender.
2019-04-02 13:02:28 +02:00
Antonio Ospite
0fae88b5fd rtpsource: fix stats about received packets
The update_receiver_stats() function is called also when sending packets
in rtp_source_send_rtp(), and sending packets may happen using a buffer
list rather than individual buffers.

So update the stats using the actual number of packets sent.

NOTE: this is fine for the receive path too (rtp_process_send_rtp)
because the receive path does not support buffer lists and
pinfo->packets would always be equal to 1 in this case.
2019-04-02 09:26:03 +02:00
Antonio Ospite
a330012d6a test: rtpbin_buffer_list: move buffer list creation next to its validation
The tests create a buffer list and then use the chain_list callback to
verify that the correct packets have been pushed.

Move the creation and validation code next to each other so that the
reader can more easily understand what is going on.

While at it add some comments to introduce the two related functions.
2019-04-01 18:42:32 +00:00
Antonio Ospite
af8698e656 test: rtpbin_buffer_list: set the chain_list function directly in the test
The helper function set_chain_function does not really do anything useful, remove it.
2019-04-01 18:42:32 +00:00