Commit graph

19209 commits

Author SHA1 Message Date
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
Tim-Philipp Müller
4b15fa2abc rpicamsrc: avoid single-element lists in template caps 2020-07-10 16:42:56 +01:00
Vivia Nikolaidou
d226968275 rpicamsrc: Add force-key-unit event support 2020-07-10 16:42:55 +01:00
Jan Schmidt
244091bb5e rpicamsrc: Move all debug output to go via GStreamer logs
Fixes https://github.com/thaytan/gst-rpicamsrc/issues/9
2020-07-10 16:42:16 +01:00
Jan Schmidt
df3ceb86f7 rpicamsrc: Update maximum framerate to 90 fps 2020-07-10 16:42:15 +01:00
Jan Schmidt
1dfb41bdce rpicamsrc: Enable image effects 2020-07-10 16:42:14 +01:00
Jan Schmidt
1b9a614272 rpicamsrc: Re-flow element source code with gst-indent 2020-07-10 16:42:12 +01:00
Jan Schmidt
5f871311c1 rpicamsrc: Implement a bunch of the raspivid command-line params
Add properties for controlling various parts of the capture
2020-07-10 16:42:11 +01:00
Jan Schmidt
42729b92f0 rpicamsrc: Tell basesrc to timestamp buffers for us, for now. 2020-07-10 16:42:10 +01:00
Jan Schmidt
cde8b33199 rpicamsrc: Initial caps nego and properties.
Support caps negotiation for H.264 frame size and framerate.

Add bitrate, saturation, brightness, contrast, sharpness properties.
2020-07-10 16:42:09 +01:00
Jan Schmidt
1416631df9 rpicamsrc: First version which generates buffers on the src pad
Fixed to 1920x1080 h264 regardless of caps.
2020-07-10 16:42:07 +01:00
Jan Schmidt
7ffb618b20 rpicamsrc: Checkpoint. Version which writes directly to test.out
Switch to plain basesrc for parent class
2020-07-10 16:42:06 +01:00
Jan Schmidt
f4af399350 rpicamsrc: checkpoint 2020-07-10 16:42:04 +01:00
Jan Schmidt
e4f74290df rpicamsrc: Initial commit
Simple modified gst-template to use BaseCameraSrc
Incorporate Broadcom mmal headers
2020-07-10 16:42:01 +01:00
Michael Olbrich
83beb9211b souphttpsrc: don't fail when seeking past the end of the content
Range errors are already turned into EOS when the size is not known.
Do the same thing if the request as outside the known content size.

This can be triggered by seeking in a queue2:
- Ensure that the range containing the end of the file is available.
- Seek into this range from a different range.
- queue2 creates a seek event with start=<file-size>
- this results in a "Requested Range Not Satisfiable" error

Fixes #452

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/385>
2020-07-10 11:41:55 +00:00
Michael Olbrich
d4b50d7915 souphttpsrc: don't update the size on error
Any data corresponding length in the message is not part of the requested
file.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/385>
2020-07-10 11:41:55 +00:00
Matthew Waters
88775c2e18 qt/gloverlay: fix using OpenGL after destroying Qml
Qml somewhat unhelpfully seems to uncurrent our OpenGL context on its
destruction.  Work around that by uncurrenting and recurrenting again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/632>
2020-07-10 06:11:48 +00:00