From 043245ca11c950262fde4ca207f09a35ac5a4c91 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 26 Nov 2024 17:05:20 +0100 Subject: [PATCH] v4l2: set the NO_RATE clock flag These sources have very inaccurate position/duration/rate information that is not suitable for use as a clock so set the NO_RATE flag. --- spa/plugins/libcamera/libcamera-source.cpp | 2 ++ spa/plugins/v4l2/v4l2-source.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/spa/plugins/libcamera/libcamera-source.cpp b/spa/plugins/libcamera/libcamera-source.cpp index b33c7ace5..5e26252b8 100644 --- a/spa/plugins/libcamera/libcamera-source.cpp +++ b/spa/plugins/libcamera/libcamera-source.cpp @@ -360,6 +360,8 @@ static int impl_node_set_io(void *object, uint32_t id, void *data, size_t size) switch (id) { case SPA_IO_Clock: impl->clock = (struct spa_io_clock*)data; + if (impl->clock) + SPA_FLAG_SET(impl->clock->flags, SPA_IO_CLOCK_FLAG_NO_RATE); break; case SPA_IO_Position: impl->position = (struct spa_io_position*)data; diff --git a/spa/plugins/v4l2/v4l2-source.c b/spa/plugins/v4l2/v4l2-source.c index 899a566c2..6a6a0830f 100644 --- a/spa/plugins/v4l2/v4l2-source.c +++ b/spa/plugins/v4l2/v4l2-source.c @@ -414,6 +414,8 @@ static int impl_node_set_io(void *object, uint32_t id, void *data, size_t size) switch (id) { case SPA_IO_Clock: this->clock = data; + if (this->clock) + SPA_FLAG_SET(this->clock->flags, SPA_IO_CLOCK_FLAG_NO_RATE); break; case SPA_IO_Position: this->position = data;