mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
spa: match camera property types with libcamera
The Pipewire libcamera spa plugin exposes multiple camera properties. Unlike v4l2, libcamera usually exposes these as normalized floating point values. But as the SPA_PROP types are based on v4l2, they are currently set to integers. This causes a problem when using pw-cli to change the properties, as the spa_json_to_pod_part function casts the properties according to their spa_type_info. Other software that doesn't depend on the spa_type_info can correctly set the properties, as the values are encoded in the spa_pod type and therefore also carry a type. As the limited range from switching integers to floats is likely not a problem, the affected spa properties were changed to the Float type. This will cause pw-cli to also generate spa_pod values of type float when setting v4l2 properties. Therefore the v4l2 spa plugin is also adapted to allow floating point properties and cast these to integers. Signed-off-by: Sven Püschel <s.pueschel@pengutronix.de>
This commit is contained in:
parent
ab5fadec2b
commit
5932963506
2 changed files with 13 additions and 5 deletions
|
|
@ -1361,6 +1361,14 @@ spa_v4l2_set_control(struct impl *this, uint32_t id,
|
|||
control.value = val;
|
||||
break;
|
||||
}
|
||||
case SPA_TYPE_Float:
|
||||
{
|
||||
float val;
|
||||
if ((res = spa_pod_get_float(&prop->value, &val)) < 0)
|
||||
goto done;
|
||||
control.value = (int32_t) val;
|
||||
break;
|
||||
}
|
||||
case SPA_TYPE_Int:
|
||||
{
|
||||
int32_t val;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue