spa: libcamera: use CameraConfiguration::orientation

libcamera commit cc65629b68d49d ("libcamera: camera: Introduce Orientation") [0]
introduced to the `CameraConfiguration::orientation` member to describe the
orientation of the image in the received memory buffers.

Then c65e40b8480ffb ("libcamera: Use CameraConfiguration::orientation") [1]
removed `CameraConfiguration::transform`, which broke the libcamera plugin.

Fix that by using the new `orientation` member.

[0]: https://git.linuxtv.org/libcamera.git/commit/?id=cc65629b68d49d5f2a4d61537584c56ba510a335
[1]: https://git.linuxtv.org/libcamera.git/commit/?id=c65e40b8480ffb5f50e01a4e6713164c7194a937
This commit is contained in:
Barnabás Pőcze 2023-10-28 02:09:06 +02:00 committed by Wim Taymans
parent 79b98884af
commit fd33d2d3bb

View file

@ -716,25 +716,23 @@ static int spa_libcamera_use_buffers(struct impl *impl, struct port *port,
} }
static const struct { static const struct {
Transform libcamera_transform; Orientation libcamera_orientation; /* clockwise rotation then horizontal mirroring */
uint32_t spa_transform_value; uint32_t spa_transform_value; /* horizontal mirroring then counter-clockwise rotation */
} transform_map[] = { } orientation_map[] = {
{ Transform::Identity, SPA_META_TRANSFORMATION_None }, { Orientation::Rotate0, SPA_META_TRANSFORMATION_None },
{ Transform::Rot0, SPA_META_TRANSFORMATION_None }, { Orientation::Rotate0Mirror, SPA_META_TRANSFORMATION_Flipped },
{ Transform::HFlip, SPA_META_TRANSFORMATION_Flipped }, { Orientation::Rotate90, SPA_META_TRANSFORMATION_270 },
{ Transform::VFlip, SPA_META_TRANSFORMATION_Flipped180 }, { Orientation::Rotate90Mirror, SPA_META_TRANSFORMATION_Flipped90 },
{ Transform::HVFlip, SPA_META_TRANSFORMATION_180 }, { Orientation::Rotate180, SPA_META_TRANSFORMATION_180 },
{ Transform::Rot180, SPA_META_TRANSFORMATION_180 }, { Orientation::Rotate180Mirror, SPA_META_TRANSFORMATION_Flipped180 },
{ Transform::Transpose, SPA_META_TRANSFORMATION_Flipped90 }, { Orientation::Rotate270, SPA_META_TRANSFORMATION_90 },
{ Transform::Rot90, SPA_META_TRANSFORMATION_90 }, { Orientation::Rotate270Mirror, SPA_META_TRANSFORMATION_Flipped270 },
{ Transform::Rot270, SPA_META_TRANSFORMATION_270 },
{ Transform::Rot180Transpose, SPA_META_TRANSFORMATION_Flipped270 },
}; };
static uint32_t libcamera_transform_to_spa_transform_value(Transform transform) static uint32_t libcamera_orientation_to_spa_transform_value(Orientation orientation)
{ {
for (const auto& t : transform_map) { for (const auto& t : orientation_map) {
if (t.libcamera_transform == transform) if (t.libcamera_orientation == orientation)
return t.spa_transform_value; return t.spa_transform_value;
} }
return SPA_META_TRANSFORMATION_None; return SPA_META_TRANSFORMATION_None;
@ -788,9 +786,9 @@ mmap_init(struct impl *impl, struct port *port,
buffers[i], SPA_META_VideoTransform, sizeof(*b->videotransform)); buffers[i], SPA_META_VideoTransform, sizeof(*b->videotransform));
if (b->videotransform) { if (b->videotransform) {
b->videotransform->transform = b->videotransform->transform =
libcamera_transform_to_spa_transform_value(impl->config->transform); libcamera_orientation_to_spa_transform_value(impl->config->orientation);
spa_log_debug(impl->log, "Setting videotransform for buffer %d to %u (from %s)", spa_log_debug(impl->log, "Setting videotransform for buffer %u to %u",
i, b->videotransform->transform, transformToString(impl->config->transform)); i, b->videotransform->transform);
} }