platform/upstream/gstreamer.git
4 years agoqtdemux: Add support for AAX encrypted audio streams
Stefan Brüns [Sat, 2 May 2020 00:21:00 +0000 (02:21 +0200)]
qtdemux: Add support for AAX encrypted audio streams

This is modelled after the DASH Common Encryption scheme, but is somewhat
simpler as more parts are fixed, i.e. just one encryption scheme.

The output caps are fixed to 'application/x-aavd'. All information
required for decryption are part of the 'adrm' atom, which is passed
on as a property. The property is attached to the buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/577>

4 years agoqtdemux: Add 'aavd' and related fourcc codes for AAX encrypted audio
Stefan Brüns [Sat, 2 May 2020 00:20:44 +0000 (02:20 +0200)]
qtdemux: Add 'aavd' and related fourcc codes for AAX encrypted audio

The 'aavd' box is contained in the 'stsd' sample description. The 'aavd'
box follows the layout of an 'mp4a' entry, i.e. it contains a single
standard 'esds' extension box, and the two proprietary 'adrm' and 'aabd'
extension boxes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/577>

4 years agovpxdec: request a sync point on decoder errors
Haakon Sporsheim [Mon, 23 Jun 2014 06:46:37 +0000 (08:46 +0200)]
vpxdec: request a sync point on decoder errors

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/725>

4 years agortp/vrawpay: use alloc_output_buffer from base class
Camilo Celis Guzman [Sun, 13 Sep 2020 16:31:57 +0000 (18:31 +0200)]
rtp/vrawpay: use alloc_output_buffer from base class

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/726>

4 years agortspsrc: Fix push-backchannel-buffer parameter mismatch
Ricky Tang [Mon, 7 Sep 2020 15:20:58 +0000 (23:20 +0800)]
rtspsrc: Fix push-backchannel-buffer parameter mismatch

When using python, signal parameter must match with function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/724>

4 years agojpegdec: check buffer size before dereferencing. Fixes #541
Jérôme Laheurte [Thu, 10 Sep 2020 09:24:32 +0000 (11:24 +0200)]
jpegdec: check buffer size before dereferencing. Fixes #541

Some cameras (Panacast) have buggy drivers/firmware which send
invalid JPEG frames, containing no data, which makes jpegdec
crash because it assumes the frame is at least 2 bytes long.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/723>

4 years agoflvmux: Improve logging of gst_flv_mux_buffer_to_tag_internal
Jan Alexander Steffens (heftig) [Thu, 10 Sep 2020 09:11:00 +0000 (11:11 +0200)]
flvmux: Improve logging of gst_flv_mux_buffer_to_tag_internal

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/722>

4 years agoflvmux: Move stream skipping to GstAggregatorPadClass.skip_buffer
Jan Alexander Steffens (heftig) [Wed, 9 Sep 2020 13:12:53 +0000 (15:12 +0200)]
flvmux: Move stream skipping to GstAggregatorPadClass.skip_buffer

Besides looking like the correct place to put this, it allows us to drop
the entire aggregator queue. The old implementation only dropped at most
one buffer for each call of aggregate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/722>

4 years agov4l2object: plug memory-leak
Havard Graff [Tue, 8 Sep 2020 15:35:50 +0000 (17:35 +0200)]
v4l2object: plug memory-leak

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/718>

4 years agovp9enc: expose row-mt property
Mathieu Duponchelle [Fri, 28 Aug 2020 16:09:15 +0000 (18:09 +0200)]
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>

4 years agovpxenc: change default for deadline to good quality
Mathieu Duponchelle [Fri, 28 Aug 2020 15:45:48 +0000 (17:45 +0200)]
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>

4 years agovp9enc: expose tile-columns and tile-rows properties
Mathieu Duponchelle [Fri, 28 Aug 2020 15:39:47 +0000 (17:39 +0200)]
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>

4 years agovpxenc: add configure_encoder virtual method
Mathieu Duponchelle [Fri, 28 Aug 2020 15:35:26 +0000 (17:35 +0200)]
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>

4 years agosplitmuxsink: fix sink pad release while PLAYING
Mathieu Duponchelle [Tue, 8 Sep 2020 18:57:33 +0000 (20:57 +0200)]
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>

4 years agovp8enc: improve unit tests
John-Mark Bell [Tue, 31 Oct 2017 09:40:33 +0000 (09:40 +0000)]
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>

4 years agodocs: Update plugin cache
Jakub Adam [Fri, 21 Aug 2020 14:03:09 +0000 (16:03 +0200)]
docs: Update plugin cache

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>

4 years agovpx: Support GST_VIDEO_FORMAT_I422_10LE
Jakub Adam [Tue, 24 Mar 2020 18:35:07 +0000 (19:35 +0100)]
vpx: Support GST_VIDEO_FORMAT_I422_10LE

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>

4 years agovpx: Support GST_VIDEO_FORMAT_I420_10LE
Jakub Adam [Tue, 24 Mar 2020 16:16:59 +0000 (17:16 +0100)]
vpx: Support GST_VIDEO_FORMAT_I420_10LE

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>

4 years agovp9enc: support GST_VIDEO_FORMAT_Y444
Jakub Adam [Mon, 23 Mar 2020 20:44:30 +0000 (21:44 +0100)]
vp9enc: support GST_VIDEO_FORMAT_Y444

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/705>

4 years agoci: include template from gst-ci master branch again
Tim-Philipp Müller [Tue, 8 Sep 2020 16:30:35 +0000 (17:30 +0100)]
ci: include template from gst-ci master branch again

4 years agoBack to development
Tim-Philipp Müller [Tue, 8 Sep 2020 15:58:37 +0000 (16:58 +0100)]
Back to development

4 years agoRelease 1.18.0
Tim-Philipp Müller [Mon, 7 Sep 2020 23:05:14 +0000 (00:05 +0100)]
Release 1.18.0

4 years agomeson: dist pot file in tarballs
Tim-Philipp Müller [Mon, 7 Sep 2020 21:39:02 +0000 (22:39 +0100)]
meson: dist pot file in tarballs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/716>

4 years agogst: Update for gst_video_transfer_function_*() function renaming
Sebastian Dröge [Mon, 7 Sep 2020 09:13:18 +0000 (12:13 +0300)]
gst: Update for gst_video_transfer_function_*() function renaming

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/715>

4 years agoflvmux: Avoid crash when best pad gets flushed
Jan Alexander Steffens (heftig) [Mon, 31 Aug 2020 13:01:32 +0000 (15:01 +0200)]
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>

4 years agoflvmux: Correct breaks in gst_flv_mux_find_best_pad
Jan Alexander Steffens (heftig) [Mon, 31 Aug 2020 11:43:42 +0000 (13:43 +0200)]
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>

4 years agogstqmlgl: build on Windows with qmake without pkgconfig; update instructions on build...
Dmitriy Purgin [Wed, 13 May 2020 09:31:38 +0000 (11:31 +0200)]
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>

4 years agomeson: fix build failure if orc is enabled but none of its users are
Philipp Zabel [Fri, 21 Aug 2020 10:12:48 +0000 (12:12 +0200)]
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>

4 years agortpL16depay: unref buffer on error
Zeid Bekli [Thu, 20 Aug 2020 12:26:04 +0000 (14:26 +0200)]
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>

4 years agoRelease 1.17.90
Tim-Philipp Müller [Thu, 20 Aug 2020 15:11:58 +0000 (16:11 +0100)]
Release 1.17.90

4 years agortputils: Don't call NULL GstMeta transform function
Sebastian Dröge [Tue, 18 Aug 2020 07:27:52 +0000 (10:27 +0300)]
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>

4 years agortp: Do not register rtpreddec and rtpredenc twice
Julian Bouzas [Thu, 13 Aug 2020 19:27:25 +0000 (15:27 -0400)]
rtp: Do not register rtpreddec and rtpredenc twice

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/699>

4 years agortpmanager: Improve readability of "stats" docs by making the fields an actual list
Sebastian Dröge [Wed, 12 Aug 2020 09:21:43 +0000 (12:21 +0300)]
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>

4 years agov4l2h264codec: Map newly defined profile/levels
Nicolas Dufresne [Tue, 11 Aug 2020 21:24:11 +0000 (17:24 -0400)]
v4l2h264codec: Map newly defined profile/levels

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/697>

4 years agov4l2: Sync headers with kernel 5.9
Nicolas Dufresne [Tue, 11 Aug 2020 21:18:42 +0000 (17:18 -0400)]
v4l2: Sync headers with kernel 5.9

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/697>

4 years agov4l2: use GstV4l2Error in gst_v4l2_open()
Víctor Manuel Jáquez Leal [Thu, 6 Aug 2020 11:15:10 +0000 (13:15 +0200)]
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>

4 years agoflvmux: Return NEED_DATA when we drop a buffer
Vivia Nikolaidou [Mon, 10 Aug 2020 17:20:53 +0000 (20:20 +0300)]
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>

4 years agoflvmux: Return NEED_DATA when no best pad is found
Vivia Nikolaidou [Mon, 10 Aug 2020 17:20:04 +0000 (20:20 +0300)]
flvmux: Return NEED_DATA when no best pad is found

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>

4 years agoflvmux: Fix possible crash on GST_ITERATOR_RESYNC
Vivia Nikolaidou [Mon, 10 Aug 2020 17:17:38 +0000 (20:17 +0300)]
flvmux: Fix possible crash on GST_ITERATOR_RESYNC

Wrong pointer type

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>

4 years agoqmlgloverlay: fix multiple elements with Qt 5.15
Matthew Waters [Mon, 10 Aug 2020 05:49:55 +0000 (15:49 +1000)]
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>

4 years agortph26[45]pay: Change default aggregate-mode to "none" for backwards compatibility
Sebastian Dröge [Wed, 5 Aug 2020 07:41:33 +0000 (10:41 +0300)]
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>

4 years agobuild: update for gl pkg-config file split
Matthew Waters [Fri, 24 Jul 2020 06:58:34 +0000 (16:58 +1000)]
build: update for gl pkg-config file split

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/680>

4 years agosplitmuxsink: Make sure flushing doesn't block
Jan Alexander Steffens (heftig) [Fri, 31 Jul 2020 11:50:13 +0000 (13:50 +0200)]
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>

4 years agoimagefreeze: Wait until we have a clock
Vivia Nikolaidou [Tue, 4 Aug 2020 12:49:43 +0000 (15:49 +0300)]
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>

4 years agoqtdemux: extract bit depth from codec data for ALAC
Tim-Philipp Müller [Fri, 31 Jul 2020 10:05:02 +0000 (11:05 +0100)]
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>

4 years agoauparse: fix compiler warnings
Jordan Petridis [Tue, 28 Jul 2020 15:46:30 +0000 (18:46 +0300)]
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>

4 years agortspsrc: drop stream-start message posted by the internal udp sink(s)
George Kiagiadakis [Wed, 29 Jul 2020 11:06:55 +0000 (14:06 +0300)]
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>

4 years agotests: qtdemux: test correct pad names are created
Hosang Lee [Wed, 22 Jul 2020 07:24:15 +0000 (16:24 +0900)]
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>

4 years agoqtdemux: create correct pad names in encrypted streams
Hosang Lee [Tue, 16 Jun 2020 08:23:44 +0000 (17:23 +0900)]
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>

4 years agomatroskamux: Do caps renegotiation when it only adds fields
Thibault Saunier [Wed, 22 Jul 2020 18:31:13 +0000 (14:31 -0400)]
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 a5f22f03aa25b04726f78ae619f40b3b648f7d48 in qtmux.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/678>

4 years agortpfunnel: protect internal srccaps with lock
Tim-Philipp Müller [Fri, 24 Jul 2020 13:02:26 +0000 (14:02 +0100)]
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>

4 years agortpfunnel: copy caps before sending them in a caps-event
Havard Graff [Sun, 23 Feb 2020 22:44:16 +0000 (23:44 +0100)]
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>

4 years agortpmanager: fix various documentation issues
Mathieu Duponchelle [Mon, 27 Jul 2020 13:41:26 +0000 (15:41 +0200)]
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>

4 years agorpicamsrc: hypothetical fix for data pointer calculation
Tim-Philipp Müller [Fri, 24 Jul 2020 16:13:04 +0000 (17:13 +0100)]
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>

4 years agorpicamsrc: mark buffers as header and keyframe/delta-unit
Tim-Philipp Müller [Fri, 24 Jul 2020 15:35:43 +0000 (16:35 +0100)]
rpicamsrc: mark buffers as header and keyframe/delta-unit

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>

4 years agorpicamsrc: fix nal alignment of output buffers
Tim-Philipp Müller [Fri, 24 Jul 2020 15:14:00 +0000 (16:14 +0100)]
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>

4 years agorpicamsrc: fix "Could not find component vc.ril.camera" on recent raspios
Tim-Philipp Müller [Mon, 13 Jul 2020 22:43:48 +0000 (23:43 +0100)]
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>

4 years agorpicamsrc: deviceprovider: hook up i18n properly
Tim-Philipp Müller [Mon, 13 Jul 2020 16:01:42 +0000 (17:01 +0100)]
rpicamsrc: deviceprovider: hook up i18n properly

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>

4 years agorpicamsrc: deviceprovider: advertise (M)JPEG as well
Tim-Philipp Müller [Mon, 13 Jul 2020 15:55:48 +0000 (16:55 +0100)]
rpicamsrc: deviceprovider: advertise (M)JPEG as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>

4 years agorpicamsrc: deviceprovider: also advertise constrained-baseline profile
Tim-Philipp Müller [Mon, 13 Jul 2020 15:50:58 +0000 (16:50 +0100)]
rpicamsrc: deviceprovider: also advertise constrained-baseline profile

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/682>

4 years agomeson: add a plugin summary
Stéphane Cerveau [Thu, 23 Jul 2020 14:58:00 +0000 (16:58 +0200)]
meson: add a plugin summary

This summary displays a list of plugins which
have been enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/679>

4 years agov4l2: enhance v4l2 control interface to support string type CID
Haihua Hu [Wed, 22 Jul 2020 01:46:47 +0000 (09:46 +0800)]
v4l2: enhance v4l2 control interface to support string type CID

add string type cid support for v4l2 implementation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/676>

4 years agoqtdemux: add Dolby Vision fourcc
Stéphane Cerveau [Wed, 1 Jul 2020 13:17:47 +0000 (15:17 +0200)]
qtdemux: add  Dolby Vision fourcc

This identifiers are registered in the MPEG-RA and defined
to be used by the Dolby Vision AVC/HEVC streams.

This is a first step to present the stream to the decoder.
Additional box parsing of DOVIConfigurationBox is necessary
to complete the media presentation with proper Dolby Vision
enhancements.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/658>

4 years agoimagefreeze: Copy GstCapsFeatures to caps for source pad
Luke Yelavich [Sun, 17 May 2020 05:51:09 +0000 (15:51 +1000)]
imagefreeze: Copy GstCapsFeatures to caps for source pad

Allows using imagefreeze with buffers in GLMemory. The following pipeline
works.

gst-launch-1.0 filesrc location=image.jpg ! jpegdec ! glupload ! \
imagefreeze ! glcolorconvert ! glimagesinkelement

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/594>

4 years agortpmanager: fix "redefinition of typedef RTPTWCCManager" compiler warning
Tim-Philipp Müller [Mon, 20 Jul 2020 17:20:59 +0000 (18:20 +0100)]
rtpmanager: fix "redefinition of typedef RTPTWCCManager" compiler warning

G_DECLARE_FINAL_TYPE includes this typedef as well.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/675>

4 years agortp*pay: Allocate using the base class for audio codecs
Olivier Crête [Fri, 17 Jul 2020 20:39:25 +0000 (16:39 -0400)]
rtp*pay: Allocate using the base class for audio codecs

This is required to add RTP header extensions from the
meta automatically.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/674>

4 years agortspsrc: Fix segfault with illegal free
Ognyan Tonchev [Tue, 14 Jul 2020 11:14:09 +0000 (13:14 +0200)]
rtspsrc: Fix segfault with illegal free

set_get_param_q is not a pointer so it is illegal to call g_queue_free_full().
Freeing the requests by popping them from the queue instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/669>

4 years agoQtGLVideoItem: Use QSharedPointer::data() for better compatibility
Raul Tambre [Wed, 15 Jul 2020 11:40:42 +0000 (14:40 +0300)]
QtGLVideoItem: Use QSharedPointer::data() for better compatibility

Older Qt versions didn't have QSharedPointer::get(), which is just a modern alias for QSharedPointer::data().

FAILED: ext/qt/libgstqmlgl.so.p/qtitem.cc.o
c++ -Iext/qt/libgstqmlgl.so.p -Iext/qt -I../ext/qt -I. -I.. -I../gst-libs -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -I/usr/include/gstreamer-1.0 -I/usr/include/orc-0.4 -I/usr/lib/aarch64-linux-gnu/gstreamer-1.0/include -I/usr/include/aarch64-linux-gnu/qt5/QtCore -I/usr/include/aarch64-linux-gnu/qt5 -I/usr/include/aarch64-linux-gnu/qt5/QtGui -I/usr/include/aarch64-linux-gnu/qt5/QtQml -I/usr/include/aarch64-linux-gnu/qt5/QtNetwork -I/usr/include/aarch64-linux-gnu/qt5/QtQuick -I/usr/include/aarch64-linux-gnu/qt5/QtX11Extras -I/usr/include/libdrm -flto -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -std=c++11 -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Winit-self -Wmissing-include-dirs -Wno-multichar -Wvla -Wpointer-arith -g -fdebug-prefix-map=/opt/good/src=. -Wformat -Werror=format-security -O3 -march=native -Wno-error -Wdate-time -fPIC -pthread -DHAVE_CONFIG_H -DHAVE_QT_X11 -DHAVE_QT_EGLFS -MD -MQ ext/qt/libgstqmlgl.so.p/qtitem.cc.o -MF ext/qt/libgstqmlgl.so.p/qtitem.cc.o.d -o ext/qt/libgstqmlgl.so.p/qtitem.cc.o -c ../ext/qt/qtitem.cc
In file included from /usr/include/gstreamer-1.0/gst/gst.h:55:0,
                 from /usr/include/gstreamer-1.0/gst/video/video.h:23,
                 from ../ext/qt/qtitem.cc:27:
../ext/qt/qtitem.cc: In destructor ‘virtual QtGLVideoItem::~QtGLVideoItem()’:
../ext/qt/qtitem.cc:138:86: error: ‘class QSharedPointer<QtGLVideoItemInterface>’ has no member named ‘get’
   GST_INFO ("%p Destroying QtGLVideoItem and invalidating the proxy %p", this, proxy.get());
                                                                                      ^
/usr/include/gstreamer-1.0/gst/gstinfo.h:682:31: note: in definition of macro ‘GST_CAT_LEVEL_LOG’
         (GObject *) (object), __VA_ARGS__);    \
                               ^~~~~~~~~~~
../ext/qt/qtitem.cc:138:3: note: in expansion of macro ‘GST_INFO’
   GST_INFO ("%p Destroying QtGLVideoItem and invalidating the proxy %p", this, proxy.get());
   ^

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/673>

4 years agoqtdemux: fix allocation explosion with stsd entries
Justin Chadwell [Tue, 14 Jul 2020 13:24:20 +0000 (14:24 +0100)]
qtdemux: fix allocation explosion with stsd entries

Previously, the user input for stsd entries is trusted completely, and
so a maliciously crafted file could choose the length of the stsd
entries arbitrarily and cause qtdemux to try to allocate up to 2GB of
memory (half of a 32 bit max int).

This patch fixes this by sanity checking the stsd input against the
size of the entire stsd atom.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/670>

4 years agoqtdemux: fix crashes when input stream contained no stsd entries
Justin Chadwell [Mon, 13 Jul 2020 09:37:19 +0000 (10:37 +0100)]
qtdemux: fix crashes when input stream contained no stsd entries

During trak parsing, we need to check for the existence of stsd_entries,
otherwise, we end up with a NULL pointer to them. It is entirely
possible for the stsd to exist, but for it to have no entries, which the
previous checks did not take into account.

This patch adds a simply check to ensure that all files that do not
contain a stsd entry are deemed corrupt, and adds a test case to prevent
a regression.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/670>

4 years agodocs: update for new pixel formats
Tim-Philipp Müller [Wed, 15 Jul 2020 11:40:17 +0000 (12:40 +0100)]
docs: update for new pixel formats

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/753
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/754

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/672>

4 years agorpicamsrc: fix build with older meson versions
Tim-Philipp Müller [Fri, 10 Jul 2020 20:43:14 +0000 (21:43 +0100)]
rpicamsrc: fix build with older meson versions

assert() used to require two arguments.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/668>

4 years agoexamples: hook up rpicamsrc examples
Tim-Philipp Müller [Fri, 10 Jul 2020 13:08:55 +0000 (13:08 +0000)]
examples: hook up rpicamsrc examples

webrtc one should probably go into gst-examples.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agoexamples: fix indentation of rpicamsrc examples
Tim-Philipp Müller [Thu, 9 Jul 2020 23:42:13 +0000 (00:42 +0100)]
examples: fix indentation of rpicamsrc examples

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agorpicamsrc: flesh out docs and add to plugin docs cache
Tim-Philipp Müller [Thu, 9 Jul 2020 19:08:34 +0000 (19:08 +0000)]
rpicamsrc: flesh out docs and add to plugin docs cache

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agorpicamsrc: enable video orientation/direction unconditionally
Tim-Philipp Müller [Thu, 9 Jul 2020 18:04:10 +0000 (18:04 +0000)]
rpicamsrc: enable video orientation/direction unconditionally

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agorpicamsrc: remove mkenums template files which are no longer needed
Tim-Philipp Müller [Thu, 9 Jul 2020 17:37:01 +0000 (17:37 +0000)]
rpicamsrc: remove mkenums template files which are no longer needed

They were still being used by the autotools build, but that's gone.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agorpicamsrc: fix indentation
Tim-Philipp Müller [Thu, 9 Jul 2020 17:35:15 +0000 (17:35 +0000)]
rpicamsrc: fix indentation

Not touching the Raspi* files.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agorpicamsrc: fix and silence some compiler warnings
Tim-Philipp Müller [Thu, 9 Jul 2020 17:31:49 +0000 (17:31 +0000)]
rpicamsrc: fix and silence some compiler warnings

Some are in system headers, and in Raspi files we want
to keep modifications to a minimum.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agorpicamsrc: hook up to build
Tim-Philipp Müller [Thu, 9 Jul 2020 16:07:30 +0000 (16:07 +0000)]
rpicamsrc: hook up to build

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agoMerge branch 'plugin-move-rpicamsrc'
Tim-Philipp Müller [Thu, 9 Jul 2020 11:46:30 +0000 (11:46 +0000)]
Merge branch 'plugin-move-rpicamsrc'

Move rpicamsrc from https://github.com/thaytan/gst-rpicamsrc/

It's a useful little element and works well, so might as well
make sure it's widely available so people can stop piping
raspivid output into fdsrc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667>

4 years agorpicamsrc: sync autotools with glib-mkenum usage in meson build
Tim-Philipp Müller [Sat, 2 May 2020 19:27:20 +0000 (19:27 +0000)]
rpicamsrc: sync autotools with glib-mkenum usage in meson build

4 years agorpicamsrc: meson: use gnome.glib_mkenums_simple() and fix build as Meson subproject
Tim-Philipp Müller [Sat, 2 May 2020 18:28:10 +0000 (18:28 +0000)]
rpicamsrc: meson: use gnome.glib_mkenums_simple() and fix build as Meson subproject

While at it also fix up the type defines, e.g.
GST_RPI_CAM_TYPE_RPI_CAM_SRC_EXPOSURE_MODE -> GST_RPI_CAM_SRC_TYPE_EXPOSURE_MODE

4 years agorpicamsrc: meson: drop map file and fix plugin symbol export with newer gstreamer...
Tim-Philipp Müller [Sun, 3 May 2020 11:09:47 +0000 (11:09 +0000)]
rpicamsrc: meson: drop map file and fix plugin symbol export with newer gstreamer versions

Use -fvisibility instead of a map file for symbol export, so that
the right symbols get exported with newer gstreamer versions. Older
GStreamer versions also still work of course.

Fixes blacklisting/plugin-loading issues with GStreamer >= 1.14

Fixes https://github.com/thaytan/gst-rpicamsrc/issues/984,
closes https://github.com/thaytan/gst-rpicamsrc/issues/94
and https://github.com/thaytan/gst-rpicamsrc/issues/67

4 years agorpicamsrc: Attempt to workaround MMAL timeout bug
Jan Schmidt [Mon, 16 Jul 2018 09:49:21 +0000 (19:49 +1000)]
rpicamsrc: Attempt to workaround MMAL timeout bug

mmal_queue_timedwait() might spuriously return immediately
if called at exactly the wrong instant due to an internal
off-by-one bug. Attempt to work around that and just retry.

4 years agorpicamsrc: Improve timeout error
Jan Schmidt [Mon, 16 Jul 2018 09:30:26 +0000 (19:30 +1000)]
rpicamsrc: Improve timeout error

Propagate timeout errors so they're not reported
generically

4 years agorpicamsrc: webrtc example: Add a STUN server to the configuration
Jan Schmidt [Thu, 21 Jun 2018 12:50:28 +0000 (22:50 +1000)]
rpicamsrc: webrtc example: Add a STUN server to the configuration

To let the webrtc example work through NAT firewalls

4 years agorpicamsrc: webrtc example: Modify HTML to support other ports than 57778
Jan Schmidt [Thu, 21 Jun 2018 12:44:25 +0000 (22:44 +1000)]
rpicamsrc: webrtc example: Modify HTML to support other ports than 57778

4 years agorpicamsrc: webrtc example: Remove external fmtp insertion
Jan Schmidt [Thu, 21 Jun 2018 11:45:32 +0000 (21:45 +1000)]
rpicamsrc: webrtc example: Remove external fmtp insertion

GStreamer 1.14.2 should contain the backport of gst-plugins-bad
commit 5c450c5 adding FEC and RTX support, and incidentally
the fmtp field in the SDP

4 years agorpicamsrc: webrtc example: Set the locale
Jan Schmidt [Thu, 21 Jun 2018 10:33:03 +0000 (20:33 +1000)]
rpicamsrc: webrtc example: Set the locale

Make the date format in the overlay respect the current
locale

4 years agorpicamsrc: Don't destroy the camera component on startup error
Jan Schmidt [Wed, 20 Jun 2018 15:36:42 +0000 (15:36 +0000)]
rpicamsrc: Don't destroy the camera component on startup error

Just disable the camera component when it fails to start. The
most common reason is that the camera device is already in use,
and if we just disable the mmal component correct cleanup
will happen later

4 years agorpicamsrc: Add webrtc streaming example
Jan Schmidt [Sat, 12 May 2018 21:13:52 +0000 (21:13 +0000)]
rpicamsrc: Add webrtc streaming example

Add an example for testing webrtc streaming from the rpi
camera, based on the code from
https://bugzilla.gnome.org/show_bug.cgi?id=795404

Requires GStreamer 1.14.1 or git master

4 years agorpicamsrc: Expose constrained-baseline profile
Jan Schmidt [Sat, 12 May 2018 19:57:43 +0000 (19:57 +0000)]
rpicamsrc: Expose constrained-baseline profile

constrained-baseline is a useful profile for streaming to iOS
devices, and seems to work in the firmware, so let's publish it

4 years agorpicamsrc: Add define and increase reported maximum FPS from 90 to 1000
Jan Schmidt [Wed, 28 Mar 2018 11:00:10 +0000 (22:00 +1100)]
rpicamsrc: Add define and increase reported maximum FPS from 90 to 1000

4 years agorpicamsrc: Expand frame timeout from 100ms to 500ms
Jan Schmidt [Tue, 14 Nov 2017 04:01:21 +0000 (15:01 +1100)]
rpicamsrc: Expand frame timeout from 100ms to 500ms

rpicamsrc on a normal rpi camera doesn't start up fast enough,
and always fails the new 100ms timeout. A better solution
might be to have a longer timeout for the first frame, but
shorter once frames are running - but this quick fix will at
least make rpicamsrc work again.

4 years agorpicamsrc: RaspiCapture: use mmal_queue_timedwait() for buffer queueing
Georgii Staroselskii [Wed, 8 Nov 2017 09:14:35 +0000 (09:14 +0000)]
rpicamsrc: RaspiCapture: use mmal_queue_timedwait() for buffer queueing

If an external camera was disconnected, there were no feedback in an
application. It seems reasonable to wait on mmal_queue no longer than
100ms. If it's stuck we just return a FLOW_ERROR and let the application
decide what to do later.

4 years agorpicamsrc: RaspiCapture: handle MMAL_EVENT_ERROR
Georgii Staroselskii [Tue, 7 Nov 2017 15:14:06 +0000 (15:14 +0000)]
rpicamsrc: RaspiCapture: handle MMAL_EVENT_ERROR

4 years agorpicamsrc: Implement use-stc property to disable STC timestamps
Jan Schmidt [Fri, 30 Jun 2017 14:51:13 +0000 (00:51 +1000)]
rpicamsrc: Implement use-stc property to disable STC timestamps

If use-stc=false, then rpicamsrc won't apply
the camera timestamping to outgoing buffers, instead
relying on real-time timestamping by the
GStreamer clock. It means slightly less accuracy
and more jitter in timestamps, but might help on some
CSI inputs with broken timestamping.

4 years agorpicamsrc: Fix the descriptions of text annotation colour properties
Jan Schmidt [Fri, 19 May 2017 10:55:35 +0000 (20:55 +1000)]
rpicamsrc: Fix the descriptions of text annotation colour properties

The text annotation colour properties take an integer value
corresponding to a VUY colour, not a text string like
the copy-pasted description from raspivid suggests.

Fixes https://github.com/thaytan/gst-rpicamsrc/issues/59

4 years agorpicamsrc: Implement dynamic bitrate update
Jan Schmidt [Fri, 27 Jan 2017 01:58:29 +0000 (12:58 +1100)]
rpicamsrc: Implement dynamic bitrate update

Use mmal_port_set_parameter_uint32 to update the encoder
bitrate.

Fixes https://github.com/thaytan/gst-rpicamsrc/issues/60