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
Philippe Normand
c51503fc41
rpicamsrc: add test-color-balance example
...
This small test will display a live video preview of the rpicam with
the balance controls being updated once a second. The controls to
update can be disabled in the source by setting the CONTROL_* macros
values to 0.
2020-07-10 16:45:02 +01:00
Philippe Normand
48a735ff21
rpicamsrc: Implement GstColorBalance interface
...
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/24
2020-07-10 16:44:48 +01:00
Jan Schmidt
4e827949ef
rpicamsrc: Fix initial config setting.
...
Make sure to update the captsure config before starting
capture. Since the capture component now keeps a local
copy of the config, it's not updated automatically.
2020-07-10 16:44:46 +01:00
Jan Schmidt
e58951cfb8
rpicamsrc: Disable bitrate, quantisation and intra-refresh dynamic changes
...
The firmware rejects dynamic changes of those encoder params.
2020-07-10 16:44:45 +01:00
Jan Schmidt
92aa566c43
rpicamsrc: Send vcos_log_warn via GStreamer debug messages
2020-07-10 16:44:43 +01:00
Jan Schmidt
acc7449d28
rpicamsrc: Add dynamic properties example
...
Python example of adjusting saturation on the fly
2020-07-10 16:44:41 +01:00
Jan Schmidt
3b85ddd90e
rpicamsrc: Update properties dynamically where possible
...
Update camera and encoder properties at runtime
where possible
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/19
and https://github.com/thaytan/gst-rpicamsrc/issues/23
2020-07-10 16:44:23 +01:00
Jan Schmidt
1610030b40
rpicamsrc: split preview config and state
2020-07-10 16:44:21 +01:00
Jan Schmidt
3771777f7f
rpicamsrc: Clear intra-refresh MMAL param struct.
...
Use memset on the stack allocated MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T
struct. Apparently mmal_port_parameter_get() doesn't retrieve all
parameters, causing random failures when we set the intra-refresh
param on the encoder.
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/22 for me.
2020-07-10 16:44:13 +01:00
Jan Schmidt
4d70e1d8ee
rpicamsrc: Merge changes from userland repo
...
Current to b69f807ce59189457662c2144a8e7e12dc776988
No integration of stereoscopic support as yet
2020-07-10 16:44:11 +01:00
Jan Schmidt
edf4927704
rpicamsrc: Map intra-refresh cyclic-rows to the correct MMAL param.
2020-07-10 16:44:07 +01:00
Jan Schmidt
8fe0590c29
rpicamsrc: Use MMAL PTS and STC to calculate GStreamer timestamps
...
Don't apply timestamps based on output time from the encoder,
but use the MMAL STC and capture PTS to generate a GStreamer
timestamp that more accurately resembles the input (and would
preserve reordering should the encoder ever add B-frames).
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/16
2020-07-10 16:43:55 +01:00
Jan Schmidt
c3ad9c99a6
rpicamsrc: Defer encoder creation until after caps are negotiated
...
This ensures the encoder is created with the profile
negotiated with downstream
2020-07-10 16:43:53 +01:00
Jan Schmidt
3abe941e74
rpicamsrc: Read and set H.264 profile from negotiated caps
2020-07-10 16:43:51 +01:00
Jan Schmidt
2087b1e44e
rpicamsrc: Add intra-refresh-type property, and set default keyframe spacing to -1 (auto)
...
This plus other recent commits mostly fix
bug https://github.com/thaytan/gst-rpicamsrc/issues/16
2020-07-10 16:43:31 +01:00
Jan Schmidt
ed22d5cc4e
rpicamsrc: Add annotation-mode and annotation-text properties
2020-07-10 16:43:30 +01:00
Jan Schmidt
39d212df57
rpicamsrc: implement sensor-mode property
2020-07-10 16:43:28 +01:00
Jan Schmidt
52ae74f9ce
rpicamsrc: More conversion to GStreamer logging
2020-07-10 16:43:26 +01:00
Jan Schmidt
37028010f1
rpicamsrc: Implement drc property
2020-07-10 16:43:25 +01:00
Jan Schmidt
78b36bbb6b
rpicamsrc: add awb-gain-red and awb-gain-blue properties
2020-07-10 16:43:23 +01:00
Jan Schmidt
f6451323b5
rpicamsrc: Add camera-number property
2020-07-10 16:43:22 +01:00
Jan Schmidt
1ea517a692
rpicamsrc: add inline-headers and shutter-speed properties
2020-07-10 16:43:20 +01:00
Jan Schmidt
861c353873
rpicamsrc: Add quantisation-parameter property, support variable bitrate
...
Allow birate=0 and implement the quantisation-parameter property
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/21
2020-07-10 16:43:07 +01:00
Jan Schmidt
6bd0347bf0
rpicamsrc: Incorporate raspivid changes from upstream
...
Merge all changes for new features from upstream
raspberrypi userland, up to commit 0de0b2
2020-07-10 16:43:02 +01:00
Jan Schmidt
eb345f032c
rpicamsrc: Add keyframe-interval property to the element
2020-07-10 16:43:00 +01:00
Tim-Philipp Müller
27c35a8ff3
rpicamsrc: deviceprovider: check if camera is detected and supported
2020-07-10 16:42:59 +01:00
Tim-Philipp Müller
8e9c8663f8
rpicamsrc: Add GstDeviceProvider for rpi camera module
2020-07-10 16:42:58 +01:00