Commit graph

18911 commits

Author SHA1 Message Date
Mathieu Duponchelle
39fcc7f58f vp9enc: expose row-mt property
With recent libvpx versions, multithreading can be enabled on
a per-tile basis, instead of on a per tile-column basis.

In combination with the new tile-rows property, this allows the
encoder to make much better use of the available CPU power.

Bump minimum libvpx version to 1.7.0

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/707>
2020-09-09 18:05:31 +00:00
Mathieu Duponchelle
fe6b59d0cc vpxenc: change default for deadline to good quality
Having the deadline set to best quality causes the encoder
to be absurdly slow, most real-life users will want the good
quality tradeoff instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/707>
2020-09-09 18:05:31 +00:00
Mathieu Duponchelle
13cf3fe2a6 vp9enc: expose tile-columns and tile-rows properties
Based on patch by Stian Selnes <stian@pexip.com>.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/707>
2020-09-09 18:05:31 +00:00
Mathieu Duponchelle
e61932c358 vpxenc: add configure_encoder virtual method
For subclasses to expose format-specific properties

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/707>
2020-09-09 18:05:31 +00:00
Mathieu Duponchelle
19860200ed splitmuxsink: fix sink pad release while PLAYING
- Release the split mux lock while removing the probes

- Flush the sinkpad to unblock other pads

- Turn check_completed_gop into a do while statement, when
  waking up we want to recheck whether the current GOP is
  ready for sending

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/719>
2020-09-09 19:03:12 +02:00
John-Mark Bell
8f684913cf vp8enc: improve unit tests
- make test_encode_simple cope with libvpx built with
    CONFIG_REALTIME_ONLY. Sadly, there's no way to detect this at
    runtime beyond trying to set lag-in-frames to >0, pushing a
    buffer and catching the GST_FLOW_NOT_NEGOTIATED return.

  - fix bitrot in test_encode_simple_when_bitrate_set_to_zero.

  - port test_encode_simple to GstHarness and introduce a separate
    test for the lag-in-frames property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/708>
2020-09-08 22:59:29 +00:00
Jakub Adam
5dc09f4449 docs: Update plugin cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>
2020-09-08 21:09:09 +00:00
Jakub Adam
cce71d5cd5 vpx: Support GST_VIDEO_FORMAT_I422_10LE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>
2020-09-08 21:09:09 +00:00
Jakub Adam
87d0464259 vpx: Support GST_VIDEO_FORMAT_I420_10LE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>
2020-09-08 21:09:09 +00:00
Jakub Adam
5ed50669cf vp9enc: support GST_VIDEO_FORMAT_Y444
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>
2020-09-08 21:09:09 +00:00
Tim-Philipp Müller
c0b9ea2f14 ci: include template from gst-ci master branch again 2020-09-08 17:30:35 +01:00
Tim-Philipp Müller
71360e5903 Back to development 2020-09-08 16:58:37 +01:00
Tim-Philipp Müller
6ef694ce7b Release 1.18.0 2020-09-08 00:05:15 +01:00
Tim-Philipp Müller
d1ef0e892c meson: dist pot file in tarballs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/716>
2020-09-07 22:39:02 +01:00
Sebastian Dröge
47c43b29eb gst: Update for gst_video_transfer_function_*() function renaming
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/715>
2020-09-07 12:13:18 +03:00
Jan Alexander Steffens (heftig)
2d08d16002 flvmux: Avoid crash when best pad gets flushed
The 'best' pad might receive a flush event between us picking it and us
popping the buffer. In this case, the buffer will be missing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/711>
2020-08-31 14:19:14 +00:00
Jan Alexander Steffens (heftig)
01594d19b8 flvmux: Correct breaks in gst_flv_mux_find_best_pad
The code seems to use `continue` and `break` as if both refer to the
surrounding `while` loop. But because `break` breaks out of the
`switch`, they actually have the same effect.

This may have caused the loop not to terminate when it should. E.g. when
`skip_backwards_streams` drops a buffer we should abort the aggregation
and wait for all pads to be filled again. Instead, we might have just
selected a subsequent pad as our new "best".

Replace `break` with `done = TRUE; break`, and `continue` with `break`.
Then simplify the code a bit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/710>
2020-08-31 15:14:56 +02:00
Dmitriy Purgin
e695991508 gstqmlgl: build on Windows with qmake without pkgconfig; update instructions on building for Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/591>
2020-08-24 23:31:47 +00:00
Philipp Zabel
15dfc3b171 meson: fix build failure if orc is enabled but none of its users are
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/778

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/704>
2020-08-24 21:27:01 +00:00
Zeid Bekli
3211c65a5e rtpL16depay: unref buffer on error
gst_rtp_L16_depay_process to unref buffer on wrong payload size or
reorder failure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/702>
2020-08-24 19:43:15 +00:00
Tim-Philipp Müller
6419368b4c Release 1.17.90 2020-08-20 16:12:00 +01:00
Sebastian Dröge
85a6e95c7d rtputils: Don't call NULL GstMeta transform function
It's optional and if it does not exist then no transformation is
possible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/701>
2020-08-18 10:27:52 +03:00
Julian Bouzas
91972c91aa rtp: Do not register rtpreddec and rtpredenc twice
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/699>
2020-08-13 15:27:25 -04:00
Sebastian Dröge
e4ce9887cd rtpmanager: Improve readability of "stats" docs by making the fields an actual list
Otherwise they end up all in the same line one after another.

Also add docs for the "avg-jitter" stats field of the jitterbuffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/698>
2020-08-13 07:24:17 +00:00
Nicolas Dufresne
6b76be620b v4l2h264codec: Map newly defined profile/levels
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/697>
2020-08-11 17:24:11 -04:00
Nicolas Dufresne
742d435511 v4l2: Sync headers with kernel 5.9
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/697>
2020-08-11 17:24:03 -04:00
Víctor Manuel Jáquez Leal
078560e70a v4l2: use GstV4l2Error in gst_v4l2_open()
gst_v4l2_open() is called by gst_v4l2_device_provider_probe_device(),
where the GstV4l2Object is created without an associated GstElement.

If gst_v4l2_open() fails, it raises a bus message, but without an
element, a precondition check fails on
gst_element_message_full_with_details() generating a crash if running
with fatal-warnings debug mode.

GstV4l2Error is a helper to raise error bus messages when it is
appropiated. This patch changes the direct bus messages to this
helper, and the elements will actually send the error message.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/694>
2020-08-11 01:44:17 +00:00
Vivia Nikolaidou
c95cc6a015 flvmux: Return NEED_DATA when we drop a buffer
When we are dropping a buffer in find_best_pad (e.g. waiting for a
keyframe, or skipping backwards timestamp), return
GST_AGGREGATOR_FLOW_NEED_DATA to make sure we have enough data at the
next run. Otherwise, a stream that accidentally fell behind (e.g.
relinking race, or just waiting for a keyframe) will never get the
opportunity to catch up to the other one, because the other one will
always keep advancing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>
2020-08-10 20:36:51 +03:00
Vivia Nikolaidou
75f6ca8a11 flvmux: Return NEED_DATA when no best pad is found
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>
2020-08-10 20:20:04 +03:00
Vivia Nikolaidou
59aab55e71 flvmux: Fix possible crash on GST_ITERATOR_RESYNC
Wrong pointer type

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>
2020-08-10 20:18:30 +03:00
Matthew Waters
625e56d3b4 qmlgloverlay: fix multiple elements with Qt 5.15
With Qt 5.15 multiple qmlgloverlay elements would produce:

ASSERT: "!m_gl->property(QSG_RENDERCONTEXT_PROPERTY).isValid()" in file /path/to/qt5/qtdeclarative/src/quick/scenegraph/qsgdefaultrendercontext.cpp, line 121

Workaround by setting the (seeminigly unused) property before
initialization.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/695>
2020-08-10 15:52:21 +10:00
Sebastian Dröge
e9a0307b94 rtph26[45]pay: Change default aggregate-mode to "none" for backwards compatibility
We didn't aggregate at all in previous versions and there are apparently
various RTP implementations that don't handle aggregation well at all.

As part of this also document that for RTSP it is recommended to keep it
set to "none" while for WebRTC it should be set to "zero-latency".

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/749

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/692>
2020-08-08 10:08:31 +03:00
Matthew Waters
3296a03d73 build: update for gl pkg-config file split
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/680>
2020-08-07 07:58:29 +00:00
Jan Alexander Steffens (heftig)
28a616f693 splitmuxsink: Make sure flushing doesn't block
* Trying to disconnect a stream from a running splitmuxsink by flushing
  it results in the FLUSH_START blocking in the stream queue's
  gst_pad_pause_task because the flush did not unblock
  complete_or_wait_on_out, so add a check for ctx->flushing there.

* Add a GST_SPLITMUX_BROADCAST_INPUT so check_completed_gop notices
  flushing changed and the incoming push is unblocked.

* Pass the FLUSH_STOP along to the muxer without waiting.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/687>
2020-08-04 15:15:27 +00:00
Vivia Nikolaidou
af9e66d7a5 imagefreeze: Wait until we have a clock
Otherwise it can happen that it tries to get the clock in PAUSED state
in live mode, which does not exist.

Thanks to Sebastian Dröge for helping debugging.

Fixes #775

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/691>
2020-08-04 17:28:39 +03:00
Tim-Philipp Müller
a27e171bfa qtdemux: extract bit depth from codec data for ALAC
The info in the sound sample description might not be
accurate if it's an older version atom.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/771

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/686>
2020-07-31 11:05:02 +01:00
Jordan Petridis
516db3f1d0 auparse: fix compiler warnings
GCC 10 was complaining like following. It really is complaining about default cases returning
with potentially unitialized *desval, but those cases in the switch should never be hit.

```
 ../subprojects/gst-plugins-good/gst/auparse/gstauparse.c: In function 'gst_au_parse_chain':
../subprojects/gst-plugins-good/gst/auparse/gstauparse.c:481:37: error: 'timestamp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  481 |       GST_BUFFER_TIMESTAMP (outbuf) = timestamp;
../subprojects/gst-plugins-good/gst/auparse/gstauparse.c:482:36: error: 'duration' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  482 |       GST_BUFFER_DURATION (outbuf) = duration;
../subprojects/gst-plugins-good/gst/auparse/gstauparse.c:480:34: error: 'offset' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  480 |       GST_BUFFER_OFFSET (outbuf) = offset;
cc1: all warnings being treated as errors
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/671>
2020-07-29 19:21:31 +03:00
George Kiagiadakis
d997a8d48b rtspsrc: drop stream-start message posted by the internal udp sink(s)
See #1368

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/685>
2020-07-29 14:06:55 +03:00
Hosang Lee
d6f6e8410e tests: qtdemux: test correct pad names are created
Test correct pad names are created in accordance to their media type
in mss mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/628>
2020-07-28 11:41:51 +00:00
Hosang Lee
f8e686078d qtdemux: create correct pad names in encrypted streams
Refer to "original-media-type" when setting stream's subtype
for encrypted streams in mss mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/628>
2020-07-28 11:41:51 +00:00
Thibault Saunier
18aeb5bac1 matroskamux: Do caps renegotiation when it only adds fields
Matroskamux can accept caps renegotiation if the new caps is a
superset of the old one, meaning upstream added new info to
the caps.

Same logic as a5f22f03aa in qtmux.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/678>
2020-07-28 07:35:37 +00:00
Tim-Philipp Müller
10f07e84a5 rtpfunnel: protect internal srccaps with lock
These are modified from sink pad event handlers, so
could be accessed from multiple threads at the same
time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/681>
2020-07-28 07:08:04 +00:00
Havard Graff
f5fc34ae83 rtpfunnel: copy caps before sending them in a caps-event
Reason being we don't want downstream to own a ref to our
internal caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/681>
2020-07-28 07:08:04 +00:00
Mathieu Duponchelle
aa34c29d3b rtpmanager: fix various documentation issues
Improper naming of properties, improper links, misc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/684>
2020-07-27 13:51:15 +00:00
Tim-Philipp Müller
435c2acdc5 rpicamsrc: hypothetical fix for data pointer calculation
mmal buffer header docs say data is valid for length bytes
from offset. In practice offset always seems to be 0 so
far though.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>
2020-07-24 17:13:04 +01:00
Tim-Philipp Müller
987a332076 rpicamsrc: mark buffers as header and keyframe/delta-unit
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>
2020-07-24 17:09:45 +01:00
Tim-Philipp Müller
9588108d6e rpicamsrc: fix nal alignment of output buffers
We claim output buffers are nal-aligned, but that wasn't
actually true: We would push out a partial nal in case
the nal doesn't fit into the max encoder-selected output
buffer size, and then the next buffer would not start
with a sync marker. That's not right and makes h264parse
unhappy.

Instead accumulate buffers until we have a full frame
(we can't rely on the NAL_END flag, it's always set).

Fixes #768

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>
2020-07-24 17:09:45 +01:00
Tim-Philipp Müller
477eba2dd7 rpicamsrc: fix "Could not find component vc.ril.camera" on recent raspios
Make extra sure all the required mmal libs such as libmmal_vc_client.so
actually get linked and stay linked. Otherwise the above error happens
it seems.

buster (10.4) with meson 0.55 and pi ref 2020-05-27
pi-gen, 825107f04027269db77426046f5085475b1ea22f, stage5

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>
2020-07-23 19:11:30 +01:00
Tim-Philipp Müller
428c545e06 rpicamsrc: deviceprovider: hook up i18n properly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>
2020-07-23 19:09:56 +01:00
Tim-Philipp Müller
7861f17bd7 rpicamsrc: deviceprovider: advertise (M)JPEG as well
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>
2020-07-23 19:09:56 +01:00