Matthew Waters
612102fdbc
gst: don't use volatile to mean atomic
...
volatile is not sufficient to provide atomic guarantees and real atomics
should be used instead. GCC 11 has started warning about using volatile
with atomic operations.
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/911 >
2021-03-18 19:52:53 +11:00
Jordan Petridis
1257e50d49
rpicamsrc: depend on posix threads and vchiq_arm
...
Could only test on rpi 3b+
Close #839
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/875 >
2021-02-21 00:18:34 +00:00
Jose Quaresma
2a5d7b18a0
rpicamsrc: add vchostif library as it is required to build successful
...
fix: undefined reference to `vc_gencmd'
/usr/src/debug/gstreamer1.0-plugins-good/1.18.1-r0/build/../gst-plugins-good-1.18.1/sys/rpicamsrc/RaspiCamControl.c:1440: undefined reference to `vc_gencmd'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/818 >
2020-12-01 18:24:58 +00:00
Tim Schneider
2c76f03fe2
rpicamsrc: Added "src->started = FALSE;" to gst_rpi_cam_src_stop
...
Makes the element reusable multiple times after a state change back to READY.
Fixes #105
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/823 >
2020-11-20 02:15:15 +11: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
Tim-Philipp Müller
d67e21d454
rpicamsrc: deviceprovider: also advertise constrained-baseline profile
...
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
5a7275220b
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 >
2020-07-10 21:43:14 +01:00
Tim-Philipp Müller
fbcc43d822
rpicamsrc: flesh out docs and add to plugin docs cache
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667 >
2020-07-10 17:37:28 +01:00
Tim-Philipp Müller
b7c07b1a95
rpicamsrc: enable video orientation/direction unconditionally
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667 >
2020-07-10 17:37:28 +01:00
Tim-Philipp Müller
b222ca1fc9
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 >
2020-07-10 17:37:28 +01:00
Tim-Philipp Müller
8ceaefe101
rpicamsrc: fix indentation
...
Not touching the Raspi* files.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667 >
2020-07-10 17:37:28 +01:00
Tim-Philipp Müller
996d2389af
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 >
2020-07-10 17:37:28 +01:00
Tim-Philipp Müller
4a4de61c23
rpicamsrc: hook up to build
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/667 >
2020-07-10 17:37:28 +01:00
Tim-Philipp Müller
e5593a4c9c
rpicamsrc: sync autotools with glib-mkenum usage in meson build
2020-07-10 16:47:12 +01:00
Tim-Philipp Müller
1c25fe131d
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
2020-07-10 16:47:10 +01:00
Tim-Philipp Müller
912ea0dceb
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
2020-07-10 16:46:35 +01:00
Jan Schmidt
3c5327ae64
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.
2020-07-10 16:46:33 +01:00
Jan Schmidt
c907deb15f
rpicamsrc: Improve timeout error
...
Propagate timeout errors so they're not reported
generically
2020-07-10 16:46:31 +01:00
Jan Schmidt
09d9ac2d2e
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
2020-07-10 16:46:23 +01:00
Jan Schmidt
d5cd0c0301
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
2020-07-10 16:46:19 +01:00
Jan Schmidt
93bd8c34ed
rpicamsrc: Add define and increase reported maximum FPS from 90 to 1000
2020-07-10 16:46:18 +01:00
Jan Schmidt
cab6585378
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.
2020-07-10 16:46:17 +01:00
Georgii Staroselskii
b45e239128
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.
2020-07-10 16:46:15 +01:00
Georgii Staroselskii
149fdee7fb
rpicamsrc: RaspiCapture: handle MMAL_EVENT_ERROR
2020-07-10 16:46:13 +01:00
Jan Schmidt
ed893592ea
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.
2020-07-10 16:46:12 +01:00
Jan Schmidt
f093e3f5fb
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
2020-07-10 16:46:03 +01:00
Jan Schmidt
2c458819f5
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
2020-07-10 16:45:54 +01:00
Jan Schmidt
1670712500
rpicamsrc: Set outgoing buffer durations based on negotiated framerate.
...
make sure outgoing buffers have at least some duration set,
otherwise it leads to strange situations, like qtmux writing
out a file that doesn't include the final frame inside the
playable segment, because no-duration = 0 duration there.
2020-07-10 16:45:53 +01:00
Jan Schmidt
dd9d7341b0
rpicamsrc: Destroy mmal pool on shutdown always.
...
Avoid hangs on the next run because we didn't clean up the mmal pool
last time we shutdown.
2020-07-10 16:45:52 +01:00
Jan Schmidt
f42afec471
rpicamsrc: Switch back to MJPEG codec for image/jpeg
...
The JPEG codec hangs, not sure why yet. The MJPEG
codec doesn't provide a quality setting, and sometimes
freezes on shutdown, but otherwise seems more
reliable
2020-07-10 16:45:50 +01:00
Jan Schmidt
38ef8c2411
rpicamsrc: Don't try and set H264 params with JPEG codec
2020-07-10 16:45:49 +01:00
Jan Schmidt
da86cec40e
rpicamsrc: First attempt at implementing MJPEG and raw video support
2020-07-10 16:45:47 +01:00
Tim-Philipp Müller
0a38642214
rpicamsrc: Add experimental build using the Meson build system
...
Builds in about 10 seconds vs. 77 seconds with autotools.
2020-07-10 16:45:46 +01:00
Xabier Rodriguez Calvar
39afecac32
rpicamsrc: Implement GstVideoDirection interface
...
Instead of implementing a custom property, we implement that interface.
2020-07-10 16:45:45 +01:00
Jan Schmidt
2496d0e859
rpicamsrc: MMAL gives buffers with nal alignment, not AU
...
Fix the output caps, our buffers are not AU aligned, since
the SPS / PPS are given in separate packets at the start.
2020-07-10 16:45:43 +01:00
Xabier Rodriguez Calvar
c785d4f5db
rpicamsrc: Create orientation property
...
Its behavior and choices are analog to the ones present in [gl]videoflip
for the method property.
2020-07-10 16:45:39 +01:00
Jan Schmidt
8e8ac0504c
rpicamsrc: basesrc event handlers should not unref
...
Don't unref the passed event when handling events via
the GstBaseSrc src pad event handler - basesrc does
the unref. That breaks handling of upstream
force-key-unit events by unreffing twice.
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/43
2020-07-10 16:45:29 +01:00
Jan Schmidt
8fa4acacc0
rpicamsrc: Add property getters for preview window position.
...
Add the lines in get_property() for the preview-x/y/w/h properties
so the values can be retrieved without causing critical warnings.
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/42
2020-07-10 16:45:21 +01:00
Jan Schmidt
48b3c2bc8e
rpicamsrc: Add preview-x/y/w/h properties
...
Expose properties for setting the position of the preview
window on the screen
2020-07-10 16:45:19 +01:00
Jan Schmidt
63f60f7e7e
rpicamsrc: Add properties for configuring annotation text size and colour.
...
Map the raspivid setting for annotation text size and colours
to properties.
2020-07-10 16:45:18 +01:00
ibauer
a3de294cb5
rpicamsrc: Changed awb-gain-blue use the correct enum PROP_AWB_GAIN_BLUE and not PROP_AWB_GAIN_RED
2020-07-10 16:45:16 +01:00
Jan Schmidt
e97b50af51
rpicamsrc: Fix buffer PTS calculation
...
Timestamps from MMAL are in microseconds,
so make sure to convert to nanoseconds before
using them to adjust the GStreamer buffer time
2020-07-10 16:45:15 +01:00
Philippe Normand
cda483cb3c
rpicamsrc: Basic orientation interface support
...
The (h,v)flip attributes are now supported through this interface.
It should also be possible to support (h,v)center attributes using the
ROI properties.
2020-07-10 16:45:13 +01:00
Jan Schmidt
1a4870d13d
rpicamsrc: Describe awb-mode=off in lowercase
...
Change the descriptions for the awb-gain-blue and awb-gain-red
properties to say 'awb-mode=off' instead of 'awb-mode=OFF'
See https://github.com/thaytan/gst-rpicamsrc/issues/26
2020-07-10 16:45:05 +01:00
Philippe Normand
961cf17c97
rpicamsrc: colorbalance: protect with config_lock mutex
2020-07-10 16:45:03 +01:00