Patch Detail
Show a patch.
GET /api/patches/12621/?format=api
{ "id": 12621, "url": "https://patchwork.libcamera.org/api/patches/12621/?format=api", "web_url": "https://patchwork.libcamera.org/patch/12621/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20210616151152.3856595-5-kieran.bingham@ideasonboard.com>", "date": "2021-06-16T15:11:50", "name": "[libcamera-devel,4/6] libcamera-platform: Move extended platform functionality", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "639cb7ab0714d91917cef2cf39d6385c40ffc606", "submitter": { "id": 4, "url": "https://patchwork.libcamera.org/api/people/4/?format=api", "name": "Kieran Bingham", "email": "kieran.bingham@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/12621/mbox/", "series": [ { "id": 2143, "url": "https://patchwork.libcamera.org/api/series/2143/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2143", "date": "2021-06-16T15:11:46", "name": "libcamera-platform: Split library functionality", "version": 1, "mbox": "https://patchwork.libcamera.org/series/2143/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/12621/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/12621/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 6F99EBD78E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 16 Jun 2021 15:12:03 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A00D068944;\n\tWed, 16 Jun 2021 17:12:02 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 66A746894B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 16 Jun 2021 17:11:58 +0200 (CEST)", "from Monstersaurus.local\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id EEFB81225;\n\tWed, 16 Jun 2021 17:11:57 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"hqqEp90r\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1623856318;\n\tbh=ai5sXW5qzhVvT+7xpPrxElq6Ywio7DDORdxEBL8czHY=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=hqqEp90rOMe+mnph1fbwpxhYio3CxLzvASHwDHpvoRzQlEprc7/cZYZHiXqvaimbi\n\taBdrdKd+sp4gkPcZk7d/Nth2ZRXLLBsqzLpQj62wZx3qyGWFadoLsMxm9COJFeV5b3\n\t85BIUYph6KTSmb9sBsIKHyiiRSnzTVC3mYSKQqXA=", "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>", "To": "libcamera devel <libcamera-devel@lists.libcamera.org>", "Date": "Wed, 16 Jun 2021 16:11:50 +0100", "Message-Id": "<20210616151152.3856595-5-kieran.bingham@ideasonboard.com>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20210616151152.3856595-1-kieran.bingham@ideasonboard.com>", "References": "<20210616151152.3856595-1-kieran.bingham@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 4/6] libcamera-platform: Move extended\n\tplatform functionality", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Move the functionality for the following components to the new\nplatform support library:\n\n - BoundMethod\n - EventDispatcher\n - EventDispatcherPoll\n - Log\n - Message\n - Object\n - Signal\n - Semaphore\n - Thread\n - Timer\n\nWhile it would be preferable to see these split to move one component\nper commit, these components are all interdependant upon each other,\nwhich leaves us with one big change performing the move for all of them.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n Documentation/guides/pipeline-handler.rst | 3 ++-\n include/libcamera/camera.h | 5 +++--\n include/libcamera/camera_manager.h | 5 +++--\n include/libcamera/internal/camera_sensor.h | 3 ++-\n include/libcamera/internal/device_enumerator.h | 2 +-\n include/libcamera/internal/event_notifier.h | 4 ++--\n include/libcamera/internal/ipa_data_serializer.h | 3 ++-\n include/libcamera/internal/ipa_manager.h | 3 ++-\n include/libcamera/internal/ipa_module.h | 3 ++-\n include/libcamera/internal/ipc_pipe.h | 4 ++--\n include/libcamera/internal/ipc_unixsocket.h | 2 +-\n include/libcamera/internal/media_device.h | 4 ++--\n include/libcamera/internal/meson.build | 7 -------\n include/libcamera/internal/pipeline_handler.h | 3 ++-\n include/libcamera/internal/process.h | 2 +-\n include/libcamera/internal/v4l2_device.h | 4 ++--\n include/libcamera/internal/v4l2_subdevice.h | 3 ++-\n include/libcamera/internal/v4l2_videodevice.h | 5 +++--\n include/libcamera/ipa/ipa_interface.h | 3 ++-\n include/libcamera/meson.build | 3 ---\n include/libcamera/{ => platform}/bound_method.h | 6 +++---\n .../{internal => platform}/event_dispatcher.h | 6 +++---\n .../event_dispatcher_poll.h | 8 ++++----\n include/libcamera/{internal => platform}/log.h | 6 +++---\n include/libcamera/platform/meson.build | 10 ++++++++++\n .../libcamera/{internal => platform}/message.h | 8 ++++----\n include/libcamera/{ => platform}/object.h | 8 ++++----\n .../libcamera/{internal => platform}/semaphore.h | 8 ++++----\n include/libcamera/{ => platform}/signal.h | 10 +++++-----\n .../libcamera/{internal => platform}/thread.h | 12 +++++-------\n include/libcamera/{internal => platform}/timer.h | 10 +++++-----\n include/libcamera/request.h | 3 ++-\n src/android/camera3_hal.cpp | 2 +-\n src/android/camera_device.cpp | 4 ++--\n src/android/camera_device.h | 7 ++++---\n src/android/camera_hal_config.cpp | 2 +-\n src/android/camera_hal_manager.cpp | 2 +-\n src/android/camera_metadata.cpp | 2 +-\n src/android/camera_worker.h | 4 ++--\n src/android/jpeg/encoder_libjpeg.cpp | 3 ++-\n src/android/jpeg/exif.cpp | 3 +--\n src/android/jpeg/post_processor_jpeg.cpp | 2 +-\n src/android/jpeg/thumbnailer.cpp | 2 +-\n src/android/mm/cros_camera_buffer.cpp | 2 +-\n src/android/mm/generic_camera_buffer.cpp | 3 ++-\n src/android/yuv/post_processor_yuv.cpp | 3 ++-\n src/ipa/ipu3/ipu3.cpp | 3 ++-\n src/ipa/ipu3/ipu3_agc.cpp | 2 +-\n src/ipa/ipu3/ipu3_awb.cpp | 2 +-\n src/ipa/libipa/histogram.cpp | 2 +-\n src/ipa/raspberrypi/cam_helper.hpp | 4 ++--\n src/ipa/raspberrypi/controller/controller.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/agc.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/alsc.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/awb.cpp | 2 +-\n .../raspberrypi/controller/rpi/black_level.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/ccm.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/contrast.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/dpc.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/focus.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/geq.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/lux.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/noise.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/sdn.cpp | 2 +-\n src/ipa/raspberrypi/controller/rpi/sharpen.cpp | 2 +-\n src/ipa/raspberrypi/raspberrypi.cpp | 3 ++-\n src/ipa/rkisp1/rkisp1.cpp | 2 +-\n src/ipa/vimc/vimc.cpp | 3 ++-\n .../bound_method.cpp | 11 +++++------\n .../event_dispatcher.cpp | 7 +++----\n .../event_dispatcher_poll.cpp | 10 +++++-----\n src/{libcamera => libcamera-platform}/log.cpp | 7 +++----\n src/libcamera-platform/meson.build | 11 +++++++++++\n .../message.cpp | 9 ++++-----\n src/{libcamera => libcamera-platform}/object.cpp | 16 +++++++---------\n .../semaphore.cpp | 6 +++---\n src/{libcamera => libcamera-platform}/signal.cpp | 6 +++---\n src/{libcamera => libcamera-platform}/thread.cpp | 12 ++++++------\n src/{libcamera => libcamera-platform}/timer.cpp | 13 ++++++-------\n src/libcamera/buffer.cpp | 2 +-\n src/libcamera/byte_stream_buffer.cpp | 2 +-\n src/libcamera/camera.cpp | 5 +++--\n src/libcamera/camera_manager.cpp | 5 +++--\n src/libcamera/camera_sensor_properties.cpp | 2 +-\n src/libcamera/control_serializer.cpp | 3 ++-\n src/libcamera/controls.cpp | 2 +-\n src/libcamera/delayed_controls.cpp | 3 ++-\n src/libcamera/device_enumerator.cpp | 3 ++-\n src/libcamera/device_enumerator_sysfs.cpp | 3 ++-\n src/libcamera/device_enumerator_udev.cpp | 3 ++-\n src/libcamera/event_notifier.cpp | 6 +++---\n src/libcamera/file.cpp | 2 +-\n src/libcamera/file_descriptor.cpp | 2 +-\n src/libcamera/formats.cpp | 2 +-\n src/libcamera/framebuffer_allocator.cpp | 3 ++-\n src/libcamera/geometry.cpp | 2 +-\n src/libcamera/ipa_data_serializer.cpp | 2 +-\n src/libcamera/ipa_manager.cpp | 2 +-\n src/libcamera/ipa_module.cpp | 2 +-\n src/libcamera/ipa_proxy.cpp | 2 +-\n src/libcamera/ipc_pipe.cpp | 2 +-\n src/libcamera/ipc_pipe_unixsocket.cpp | 9 +++++----\n src/libcamera/ipc_unixsocket.cpp | 3 ++-\n src/libcamera/media_device.cpp | 2 +-\n src/libcamera/media_object.cpp | 3 ++-\n src/libcamera/meson.build | 11 -----------\n src/libcamera/pipeline/ipu3/cio2.h | 2 +-\n src/libcamera/pipeline/ipu3/frames.h | 2 +-\n src/libcamera/pipeline/ipu3/imgu.cpp | 2 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-\n src/libcamera/pipeline/raspberrypi/dma_heaps.cpp | 2 +-\n .../pipeline/raspberrypi/rpi_stream.cpp | 2 +-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +-\n src/libcamera/pipeline/rkisp1/rkisp1_path.h | 3 ++-\n src/libcamera/pipeline/simple/converter.cpp | 5 +++--\n src/libcamera/pipeline/simple/converter.h | 4 ++--\n src/libcamera/pipeline/simple/simple.cpp | 3 ++-\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 2 +-\n src/libcamera/pipeline/vimc/vimc.cpp | 2 +-\n src/libcamera/pipeline_handler.cpp | 2 +-\n src/libcamera/process.cpp | 2 +-\n src/libcamera/request.cpp | 3 ++-\n src/libcamera/stream.cpp | 2 +-\n src/libcamera/sysfs.cpp | 3 ++-\n src/libcamera/v4l2_device.cpp | 2 +-\n src/libcamera/v4l2_pixelformat.cpp | 3 ++-\n src/libcamera/v4l2_subdevice.cpp | 2 +-\n src/libcamera/v4l2_videodevice.cpp | 3 ++-\n src/v4l2/v4l2_camera.cpp | 2 +-\n src/v4l2/v4l2_camera.h | 2 +-\n src/v4l2/v4l2_camera_proxy.cpp | 4 ++--\n src/v4l2/v4l2_compat_manager.cpp | 3 +--\n test/camera/buffer_import.cpp | 7 ++++---\n test/camera/capture.cpp | 6 +++---\n test/event-dispatcher.cpp | 6 +++---\n test/event-thread.cpp | 5 +++--\n test/event.cpp | 7 ++++---\n test/hotplug-cameras.cpp | 7 ++++---\n test/ipa/ipa_interface_test.cpp | 7 ++++---\n test/ipc/unixsocket.cpp | 7 ++++---\n test/ipc/unixsocket_ipc.cpp | 7 +++----\n test/log/log_api.cpp | 2 +-\n test/log/log_process.cpp | 8 ++++----\n test/message.cpp | 4 ++--\n test/object-delete.cpp | 5 ++---\n test/object-invoke.cpp | 7 +++----\n test/object.cpp | 7 +++----\n test/process/process_test.cpp | 7 ++++---\n test/serialization/ipa_data_serializer_test.cpp | 5 +++--\n test/signal-threads.cpp | 5 ++---\n test/signal.cpp | 4 ++--\n test/threads.cpp | 2 +-\n test/timer-thread.cpp | 6 +++---\n test/timer.cpp | 6 +++---\n test/v4l2_videodevice/buffer_sharing.cpp | 6 +++---\n test/v4l2_videodevice/capture_async.cpp | 6 +++---\n test/v4l2_videodevice/v4l2_m2mdevice.cpp | 7 ++++---\n .../module_ipa_proxy.cpp.tmpl | 5 +++--\n .../libcamera_templates/module_ipa_proxy.h.tmpl | 3 ++-\n .../module_ipa_proxy_worker.cpp.tmpl | 7 ++++---\n 160 files changed, 356 insertions(+), 323 deletions(-)\n rename include/libcamera/{ => platform}/bound_method.h (97%)\n rename include/libcamera/{internal => platform}/event_dispatcher.h (79%)\n rename include/libcamera/{internal => platform}/event_dispatcher_poll.h (82%)\n rename include/libcamera/{internal => platform}/log.h (96%)\n rename include/libcamera/{internal => platform}/message.h (86%)\n rename include/libcamera/{ => platform}/object.h (88%)\n rename include/libcamera/{internal => platform}/semaphore.h (74%)\n rename include/libcamera/{ => platform}/signal.h (93%)\n rename include/libcamera/{internal => platform}/thread.h (86%)\n rename include/libcamera/{internal => platform}/timer.h (80%)\n rename src/{libcamera => libcamera-platform}/bound_method.cpp (93%)\n rename src/{libcamera => libcamera-platform}/event_dispatcher.cpp (96%)\n rename src/{libcamera => libcamera-platform}/event_dispatcher_poll.cpp (96%)\n rename src/{libcamera => libcamera-platform}/log.cpp (99%)\n rename src/{libcamera => libcamera-platform}/message.cpp (96%)\n rename src/{libcamera => libcamera-platform}/object.cpp (97%)\n rename src/{libcamera => libcamera-platform}/semaphore.cpp (95%)\n rename src/{libcamera => libcamera-platform}/signal.cpp (98%)\n rename src/{libcamera => libcamera-platform}/thread.cpp (98%)\n rename src/{libcamera => libcamera-platform}/timer.cpp (94%)", "diff": "diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst\nindex 3047e006e5b6..e1909299ea41 100644\n--- a/Documentation/guides/pipeline-handler.rst\n+++ b/Documentation/guides/pipeline-handler.rst\n@@ -288,7 +288,8 @@ features:\n \n .. code-block:: cpp\n \n- #include \"libcamera/internal/log.h\"\n+ #include <libcamera/platform/log.h>\n+ \n #include \"libcamera/internal/pipeline_handler.h\"\n \n Run the following commands:\ndiff --git a/include/libcamera/camera.h b/include/libcamera/camera.h\nindex d71641805c0a..ebbd3612a482 100644\n--- a/include/libcamera/camera.h\n+++ b/include/libcamera/camera.h\n@@ -14,12 +14,13 @@\n \n #include <libcamera/class.h>\n #include <libcamera/controls.h>\n-#include <libcamera/object.h>\n #include <libcamera/request.h>\n-#include <libcamera/signal.h>\n #include <libcamera/stream.h>\n #include <libcamera/transform.h>\n \n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/signal.h>\n+\n namespace libcamera {\n \n class FrameBuffer;\ndiff --git a/include/libcamera/camera_manager.h b/include/libcamera/camera_manager.h\nindex c2f0b786da8e..ffb78ced6389 100644\n--- a/include/libcamera/camera_manager.h\n+++ b/include/libcamera/camera_manager.h\n@@ -13,8 +13,9 @@\n #include <vector>\n \n #include <libcamera/class.h>\n-#include <libcamera/object.h>\n-#include <libcamera/signal.h>\n+\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\nindex e133ebf45bf7..c40f6994742f 100644\n--- a/include/libcamera/internal/camera_sensor.h\n+++ b/include/libcamera/internal/camera_sensor.h\n@@ -16,8 +16,9 @@\n #include <libcamera/geometry.h>\n #include <libcamera/ipa/core_ipa_interface.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/v4l2_subdevice.h\"\n \n namespace libcamera {\ndiff --git a/include/libcamera/internal/device_enumerator.h b/include/libcamera/internal/device_enumerator.h\nindex 707cfe8f309d..0f2423b6fe6d 100644\n--- a/include/libcamera/internal/device_enumerator.h\n+++ b/include/libcamera/internal/device_enumerator.h\n@@ -13,7 +13,7 @@\n \n #include <linux/media.h>\n \n-#include <libcamera/signal.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/event_notifier.h b/include/libcamera/internal/event_notifier.h\nindex cc3495c024f0..8b3ad987628f 100644\n--- a/include/libcamera/internal/event_notifier.h\n+++ b/include/libcamera/internal/event_notifier.h\n@@ -7,8 +7,8 @@\n #ifndef __LIBCAMERA_INTERNAL_EVENT_NOTIFIER_H__\n #define __LIBCAMERA_INTERNAL_EVENT_NOTIFIER_H__\n \n-#include <libcamera/object.h>\n-#include <libcamera/signal.h>\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/ipa_data_serializer.h b/include/libcamera/internal/ipa_data_serializer.h\nindex 70168acc25a5..8c9e7f4cd9ff 100644\n--- a/include/libcamera/internal/ipa_data_serializer.h\n+++ b/include/libcamera/internal/ipa_data_serializer.h\n@@ -19,10 +19,11 @@\n #include <libcamera/geometry.h>\n #include <libcamera/ipa/ipa_interface.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/byte_stream_buffer.h\"\n #include \"libcamera/internal/camera_sensor.h\"\n #include \"libcamera/internal/control_serializer.h\"\n-#include \"libcamera/internal/log.h\"\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/ipa_manager.h b/include/libcamera/internal/ipa_manager.h\nindex e904a2be796b..2cff0f2cc86f 100644\n--- a/include/libcamera/internal/ipa_manager.h\n+++ b/include/libcamera/internal/ipa_manager.h\n@@ -13,8 +13,9 @@\n #include <libcamera/ipa/ipa_interface.h>\n #include <libcamera/ipa/ipa_module_info.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/ipa_module.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/pub_key.h\"\n \ndiff --git a/include/libcamera/internal/ipa_module.h b/include/libcamera/internal/ipa_module.h\nindex 19fc58272210..181b1f89aff6 100644\n--- a/include/libcamera/internal/ipa_module.h\n+++ b/include/libcamera/internal/ipa_module.h\n@@ -14,7 +14,8 @@\n #include <libcamera/ipa/ipa_interface.h>\n #include <libcamera/ipa/ipa_module_info.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/pipeline_handler.h\"\n \n namespace libcamera {\ndiff --git a/include/libcamera/internal/ipc_pipe.h b/include/libcamera/internal/ipc_pipe.h\nindex c9a84b78cbe5..3a1281638b25 100644\n--- a/include/libcamera/internal/ipc_pipe.h\n+++ b/include/libcamera/internal/ipc_pipe.h\n@@ -9,9 +9,9 @@\n \n #include <vector>\n \n-#include \"libcamera/internal/ipc_unixsocket.h\"\n+#include <libcamera/platform/signal.h>\n \n-#include <libcamera/signal.h>\n+#include \"libcamera/internal/ipc_unixsocket.h\"\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/ipc_unixsocket.h b/include/libcamera/internal/ipc_unixsocket.h\nindex e871b65036bd..68cc7417c3c9 100644\n--- a/include/libcamera/internal/ipc_unixsocket.h\n+++ b/include/libcamera/internal/ipc_unixsocket.h\n@@ -12,7 +12,7 @@\n #include <sys/types.h>\n #include <vector>\n \n-#include <libcamera/signal.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/media_device.h b/include/libcamera/internal/media_device.h\nindex c3292508c87b..ccc4780c8c4b 100644\n--- a/include/libcamera/internal/media_device.h\n+++ b/include/libcamera/internal/media_device.h\n@@ -14,9 +14,9 @@\n \n #include <linux/media.h>\n \n-#include <libcamera/signal.h>\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/signal.h>\n \n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_object.h\"\n \n namespace libcamera {\ndiff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build\nindex d88a8c6b9235..1ff16f54a68b 100644\n--- a/include/libcamera/internal/meson.build\n+++ b/include/libcamera/internal/meson.build\n@@ -22,8 +22,6 @@ libcamera_internal_headers = files([\n 'device_enumerator.h',\n 'device_enumerator_sysfs.h',\n 'device_enumerator_udev.h',\n- 'event_dispatcher.h',\n- 'event_dispatcher_poll.h',\n 'event_notifier.h',\n 'file.h',\n 'formats.h',\n@@ -31,17 +29,12 @@ libcamera_internal_headers = files([\n 'ipa_module.h',\n 'ipa_proxy.h',\n 'ipc_unixsocket.h',\n- 'log.h',\n 'media_device.h',\n 'media_object.h',\n- 'message.h',\n 'pipeline_handler.h',\n 'process.h',\n 'pub_key.h',\n- 'semaphore.h',\n 'sysfs.h',\n- 'thread.h',\n- 'timer.h',\n 'v4l2_device.h',\n 'v4l2_pixelformat.h',\n 'v4l2_subdevice.h',\ndiff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h\nindex 31dadf285a58..b52d821b7a1a 100644\n--- a/include/libcamera/internal/pipeline_handler.h\n+++ b/include/libcamera/internal/pipeline_handler.h\n@@ -17,9 +17,10 @@\n \n #include <libcamera/class.h>\n #include <libcamera/controls.h>\n-#include <libcamera/object.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/object.h>\n+\n #include \"libcamera/internal/ipa_proxy.h\"\n \n namespace libcamera {\ndiff --git a/include/libcamera/internal/process.h b/include/libcamera/internal/process.h\nindex 254cda8535ae..30762197583c 100644\n--- a/include/libcamera/internal/process.h\n+++ b/include/libcamera/internal/process.h\n@@ -11,7 +11,7 @@\n #include <string>\n #include <vector>\n \n-#include <libcamera/signal.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/v4l2_device.h b/include/libcamera/internal/v4l2_device.h\nindex c318e976ad8e..a1a81abd120a 100644\n--- a/include/libcamera/internal/v4l2_device.h\n+++ b/include/libcamera/internal/v4l2_device.h\n@@ -14,10 +14,10 @@\n #include <linux/videodev2.h>\n \n #include <libcamera/controls.h>\n-#include <libcamera/signal.h>\n #include <libcamera/span.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/internal/v4l2_subdevice.h b/include/libcamera/internal/v4l2_subdevice.h\nindex d2b9ca55439e..974850e32cd9 100644\n--- a/include/libcamera/internal/v4l2_subdevice.h\n+++ b/include/libcamera/internal/v4l2_subdevice.h\n@@ -14,8 +14,9 @@\n #include <libcamera/class.h>\n #include <libcamera/geometry.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_object.h\"\n #include \"libcamera/internal/v4l2_device.h\"\n \ndiff --git a/include/libcamera/internal/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h\nindex 7938343bba8d..b98f4273d5d0 100644\n--- a/include/libcamera/internal/v4l2_videodevice.h\n+++ b/include/libcamera/internal/v4l2_videodevice.h\n@@ -20,10 +20,11 @@\n #include <libcamera/class.h>\n #include <libcamera/geometry.h>\n #include <libcamera/pixel_format.h>\n-#include <libcamera/signal.h>\n+\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/signal.h>\n \n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/v4l2_device.h\"\n #include \"libcamera/internal/v4l2_pixelformat.h\"\n \ndiff --git a/include/libcamera/ipa/ipa_interface.h b/include/libcamera/ipa/ipa_interface.h\nindex 4aefaa7153b1..91975c660707 100644\n--- a/include/libcamera/ipa/ipa_interface.h\n+++ b/include/libcamera/ipa/ipa_interface.h\n@@ -16,7 +16,8 @@\n #include <libcamera/buffer.h>\n #include <libcamera/controls.h>\n #include <libcamera/geometry.h>\n-#include <libcamera/signal.h>\n+\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\nindex 2c3bbeb8df36..7bfcebc79c86 100644\n--- a/include/libcamera/meson.build\n+++ b/include/libcamera/meson.build\n@@ -1,7 +1,6 @@\n # SPDX-License-Identifier: CC0-1.0\n \n libcamera_public_headers = files([\n- 'bound_method.h',\n 'buffer.h',\n 'camera.h',\n 'camera_manager.h',\n@@ -12,10 +11,8 @@ libcamera_public_headers = files([\n 'framebuffer_allocator.h',\n 'geometry.h',\n 'logging.h',\n- 'object.h',\n 'pixel_format.h',\n 'request.h',\n- 'signal.h',\n 'span.h',\n 'stream.h',\n 'transform.h',\ndiff --git a/include/libcamera/bound_method.h b/include/libcamera/platform/bound_method.h\nsimilarity index 97%\nrename from include/libcamera/bound_method.h\nrename to include/libcamera/platform/bound_method.h\nindex 4fc445ecd191..0d417c9d412f 100644\n--- a/include/libcamera/bound_method.h\n+++ b/include/libcamera/platform/bound_method.h\n@@ -4,8 +4,8 @@\n *\n * bound_method.h - Method bind and invocation\n */\n-#ifndef __LIBCAMERA_BOUND_METHOD_H__\n-#define __LIBCAMERA_BOUND_METHOD_H__\n+#ifndef __LIBCAMERA_PLATFORM_BOUND_METHOD_H__\n+#define __LIBCAMERA_PLATFORM_BOUND_METHOD_H__\n \n #include <memory>\n #include <tuple>\n@@ -236,4 +236,4 @@ private:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_BOUND_METHOD_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_BOUND_METHOD_H__ */\ndiff --git a/include/libcamera/internal/event_dispatcher.h b/include/libcamera/platform/event_dispatcher.h\nsimilarity index 79%\nrename from include/libcamera/internal/event_dispatcher.h\nrename to include/libcamera/platform/event_dispatcher.h\nindex e6a8ad65ce0a..b3c7fb758a9d 100644\n--- a/include/libcamera/internal/event_dispatcher.h\n+++ b/include/libcamera/platform/event_dispatcher.h\n@@ -4,8 +4,8 @@\n *\n * event_dispatcher.h - Event dispatcher\n */\n-#ifndef __LIBCAMERA_INTERNAL_EVENT_DISPATCHER_H__\n-#define __LIBCAMERA_INTERNAL_EVENT_DISPATCHER_H__\n+#ifndef __LIBCAMERA_PLATFORM_EVENT_DISPATCHER_H__\n+#define __LIBCAMERA_PLATFORM_EVENT_DISPATCHER_H__\n \n #include <vector>\n \n@@ -32,4 +32,4 @@ public:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_INTERNAL_EVENT_DISPATCHER_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_EVENT_DISPATCHER_H__ */\ndiff --git a/include/libcamera/internal/event_dispatcher_poll.h b/include/libcamera/platform/event_dispatcher_poll.h\nsimilarity index 82%\nrename from include/libcamera/internal/event_dispatcher_poll.h\nrename to include/libcamera/platform/event_dispatcher_poll.h\nindex 33de051de261..46093a0c3822 100644\n--- a/include/libcamera/internal/event_dispatcher_poll.h\n+++ b/include/libcamera/platform/event_dispatcher_poll.h\n@@ -4,14 +4,14 @@\n *\n * event_dispatcher_poll.h - Poll-based event dispatcher\n */\n-#ifndef __LIBCAMERA_INTERNAL_EVENT_DISPATCHER_POLL_H__\n-#define __LIBCAMERA_INTERNAL_EVENT_DISPATCHER_POLL_H__\n+#ifndef __LIBCAMERA_PLATFORM_EVENT_DISPATCHER_POLL_H__\n+#define __LIBCAMERA_PLATFORM_EVENT_DISPATCHER_POLL_H__\n \n #include <list>\n #include <map>\n #include <vector>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n \n struct pollfd;\n \n@@ -55,4 +55,4 @@ private:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_INTERNAL_EVENT_DISPATCHER_POLL_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_EVENT_DISPATCHER_POLL_H__ */\ndiff --git a/include/libcamera/internal/log.h b/include/libcamera/platform/log.h\nsimilarity index 96%\nrename from include/libcamera/internal/log.h\nrename to include/libcamera/platform/log.h\nindex 9cdb8de15fe7..1d7615f72e5e 100644\n--- a/include/libcamera/internal/log.h\n+++ b/include/libcamera/platform/log.h\n@@ -4,8 +4,8 @@\n *\n * log.h - Logging infrastructure\n */\n-#ifndef __LIBCAMERA_INTERNAL_LOG_H__\n-#define __LIBCAMERA_INTERNAL_LOG_H__\n+#ifndef __LIBCAMERA_PLATFORM_LOG_H__\n+#define __LIBCAMERA_PLATFORM_LOG_H__\n \n #include <chrono>\n #include <sstream>\n@@ -128,4 +128,4 @@ LogMessage _log(const LogCategory *category, LogSeverity severity,\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_INTERNAL_LOG_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_LOG_H__ */\ndiff --git a/include/libcamera/platform/meson.build b/include/libcamera/platform/meson.build\nindex 84a0f8d20ef0..a0f89523f2b2 100644\n--- a/include/libcamera/platform/meson.build\n+++ b/include/libcamera/platform/meson.build\n@@ -3,6 +3,16 @@\n libcamera_platform_include_dir = libcamera_include_dir / 'platform'\n \n libcamera_platform_headers = files([\n+ 'bound_method.h',\n+ 'event_dispatcher.h',\n+ 'event_dispatcher_poll.h',\n+ 'log.h',\n+ 'message.h',\n+ 'object.h',\n+ 'semaphore.h',\n+ 'signal.h',\n+ 'thread.h',\n+ 'timer.h',\n 'utils.h',\n ])\n \ndiff --git a/include/libcamera/internal/message.h b/include/libcamera/platform/message.h\nsimilarity index 86%\nrename from include/libcamera/internal/message.h\nrename to include/libcamera/platform/message.h\nindex f1b133bfb2ba..852b48150d2d 100644\n--- a/include/libcamera/internal/message.h\n+++ b/include/libcamera/platform/message.h\n@@ -4,12 +4,12 @@\n *\n * message.h - Message queue support\n */\n-#ifndef __LIBCAMERA_INTERNAL_MESSAGE_H__\n-#define __LIBCAMERA_INTERNAL_MESSAGE_H__\n+#ifndef __LIBCAMERA_PLATFORM_MESSAGE_H__\n+#define __LIBCAMERA_PLATFORM_MESSAGE_H__\n \n #include <atomic>\n \n-#include <libcamera/bound_method.h>\n+#include <libcamera/platform/bound_method.h>\n \n namespace libcamera {\n \n@@ -68,4 +68,4 @@ private:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_INTERNAL_MESSAGE_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_MESSAGE_H__ */\ndiff --git a/include/libcamera/object.h b/include/libcamera/platform/object.h\nsimilarity index 88%\nrename from include/libcamera/object.h\nrename to include/libcamera/platform/object.h\nindex a1882f05fb77..36fdddb7790e 100644\n--- a/include/libcamera/object.h\n+++ b/include/libcamera/platform/object.h\n@@ -4,14 +4,14 @@\n *\n * object.h - Base object\n */\n-#ifndef __LIBCAMERA_OBJECT_H__\n-#define __LIBCAMERA_OBJECT_H__\n+#ifndef __LIBCAMERA_PLATFORM_OBJECT_H__\n+#define __LIBCAMERA_PLATFORM_OBJECT_H__\n \n #include <list>\n #include <memory>\n #include <vector>\n \n-#include <libcamera/bound_method.h>\n+#include <libcamera/platform/bound_method.h>\n \n namespace libcamera {\n \n@@ -68,4 +68,4 @@ private:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_OBJECT_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_OBJECT_H__ */\ndiff --git a/include/libcamera/internal/semaphore.h b/include/libcamera/platform/semaphore.h\nsimilarity index 74%\nrename from include/libcamera/internal/semaphore.h\nrename to include/libcamera/platform/semaphore.h\nindex 9dc65d299cfd..5672c5616c4a 100644\n--- a/include/libcamera/internal/semaphore.h\n+++ b/include/libcamera/platform/semaphore.h\n@@ -4,12 +4,12 @@\n *\n * semaphore.h - General-purpose counting semaphore\n */\n-#ifndef __LIBCAMERA_INTERNAL_SEMAPHORE_H__\n-#define __LIBCAMERA_INTERNAL_SEMAPHORE_H__\n+#ifndef __LIBCAMERA_PLATFORM_SEMAPHORE_H__\n+#define __LIBCAMERA_PLATFORM_SEMAPHORE_H__\n \n #include <condition_variable>\n \n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/thread.h>\n \n namespace libcamera {\n \n@@ -31,4 +31,4 @@ private:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_INTERNAL_SEMAPHORE_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_SEMAPHORE_H__ */\ndiff --git a/include/libcamera/signal.h b/include/libcamera/platform/signal.h\nsimilarity index 93%\nrename from include/libcamera/signal.h\nrename to include/libcamera/platform/signal.h\nindex 3233529a1275..49d56dd7afb6 100644\n--- a/include/libcamera/signal.h\n+++ b/include/libcamera/platform/signal.h\n@@ -4,16 +4,16 @@\n *\n * signal.h - Signal & slot implementation\n */\n-#ifndef __LIBCAMERA_SIGNAL_H__\n-#define __LIBCAMERA_SIGNAL_H__\n+#ifndef __LIBCAMERA_PLATFORM_SIGNAL_H__\n+#define __LIBCAMERA_PLATFORM_SIGNAL_H__\n \n #include <functional>\n #include <list>\n #include <type_traits>\n #include <vector>\n \n-#include <libcamera/bound_method.h>\n-#include <libcamera/object.h>\n+#include <libcamera/platform/bound_method.h>\n+#include <libcamera/platform/object.h>\n \n namespace libcamera {\n \n@@ -129,4 +129,4 @@ public:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_SIGNAL_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_SIGNAL_H__ */\ndiff --git a/include/libcamera/internal/thread.h b/include/libcamera/platform/thread.h\nsimilarity index 86%\nrename from include/libcamera/internal/thread.h\nrename to include/libcamera/platform/thread.h\nindex b3ae8f51ac17..da7578824d46 100644\n--- a/include/libcamera/internal/thread.h\n+++ b/include/libcamera/platform/thread.h\n@@ -4,20 +4,18 @@\n *\n * thread.h - Thread support\n */\n-#ifndef __LIBCAMERA_INTERNAL_THREAD_H__\n-#define __LIBCAMERA_INTERNAL_THREAD_H__\n+#ifndef __LIBCAMERA_PLATFORM_THREAD_H__\n+#define __LIBCAMERA_PLATFORM_THREAD_H__\n \n #include <memory>\n #include <mutex>\n #include <sys/types.h>\n #include <thread>\n \n-#include <libcamera/signal.h>\n-\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/signal.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/message.h\"\n-\n namespace libcamera {\n \n class EventDispatcher;\n@@ -75,4 +73,4 @@ private:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_INTERNAL_THREAD_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_THREAD_H__ */\ndiff --git a/include/libcamera/internal/timer.h b/include/libcamera/platform/timer.h\nsimilarity index 80%\nrename from include/libcamera/internal/timer.h\nrename to include/libcamera/platform/timer.h\nindex 013e93c0b4e6..21f46c2ccab0 100644\n--- a/include/libcamera/internal/timer.h\n+++ b/include/libcamera/platform/timer.h\n@@ -4,14 +4,14 @@\n *\n * timer.h - Generic timer\n */\n-#ifndef __LIBCAMERA_INTERNAL_TIMER_H__\n-#define __LIBCAMERA_INTERNAL_TIMER_H__\n+#ifndef __LIBCAMERA_PLATFORM_TIMER_H__\n+#define __LIBCAMERA_PLATFORM_TIMER_H__\n \n #include <chrono>\n #include <stdint.h>\n \n-#include <libcamera/object.h>\n-#include <libcamera/signal.h>\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \n@@ -46,4 +46,4 @@ private:\n \n } /* namespace libcamera */\n \n-#endif /* __LIBCAMERA_INTERNAL_TIMER_H__ */\n+#endif /* __LIBCAMERA_PLATFORM_TIMER_H__ */\ndiff --git a/include/libcamera/request.h b/include/libcamera/request.h\nindex 5596901ddd8e..165266d4ffc7 100644\n--- a/include/libcamera/request.h\n+++ b/include/libcamera/request.h\n@@ -15,7 +15,8 @@\n \n #include <libcamera/class.h>\n #include <libcamera/controls.h>\n-#include <libcamera/signal.h>\n+\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/src/android/camera3_hal.cpp b/src/android/camera3_hal.cpp\nindex e6d435e0501f..5fb603f91041 100644\n--- a/src/android/camera3_hal.cpp\n+++ b/src/android/camera3_hal.cpp\n@@ -7,7 +7,7 @@\n \n #include <hardware/camera_common.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"camera_device.h\"\n #include \"camera_hal_manager.h\"\ndiff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex 8b5aa7f91214..f18c0bfe5c64 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -23,11 +23,11 @@\n #include <libcamera/formats.h>\n #include <libcamera/property_ids.h>\n \n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/thread.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n-#include \"libcamera/internal/thread.h\"\n \n #include \"system/graphics.h\"\n \ndiff --git a/src/android/camera_device.h b/src/android/camera_device.h\nindex 4aadb27c562c..b9be3df58084 100644\n--- a/src/android/camera_device.h\n+++ b/src/android/camera_device.h\n@@ -21,10 +21,11 @@\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/thread.h>\n+\n #include \"libcamera/internal/buffer.h\"\n-#include \"libcamera/internal/log.h\"\n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/thread.h\"\n \n #include \"camera_metadata.h\"\n #include \"camera_stream.h\"\ndiff --git a/src/android/camera_hal_config.cpp b/src/android/camera_hal_config.cpp\nindex f33ba26935da..787e9ac6b59c 100644\n--- a/src/android/camera_hal_config.cpp\n+++ b/src/android/camera_hal_config.cpp\n@@ -21,7 +21,7 @@ namespace filesystem = std::experimental::filesystem;\n \n #include <hardware/camera3.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n using namespace libcamera;\n \ndiff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp\nindex 54087d3a2e45..477dfa8988b5 100644\n--- a/src/android/camera_hal_manager.cpp\n+++ b/src/android/camera_hal_manager.cpp\n@@ -10,7 +10,7 @@\n #include <libcamera/camera.h>\n #include <libcamera/property_ids.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"camera_device.h\"\n \ndiff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp\nindex c7298d620668..ba0aa64ae841 100644\n--- a/src/android/camera_metadata.cpp\n+++ b/src/android/camera_metadata.cpp\n@@ -7,7 +7,7 @@\n \n #include \"camera_metadata.h\"\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n using namespace libcamera;\n \ndiff --git a/src/android/camera_worker.h b/src/android/camera_worker.h\nindex e289ef9b8655..a590ee3b9e8f 100644\n--- a/src/android/camera_worker.h\n+++ b/src/android/camera_worker.h\n@@ -11,11 +11,11 @@\n \n #include <libcamera/buffer.h>\n #include <libcamera/camera.h>\n-#include <libcamera/object.h>\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/thread.h>\n \n class CameraDevice;\n \ndiff --git a/src/android/jpeg/encoder_libjpeg.cpp b/src/android/jpeg/encoder_libjpeg.cpp\nindex f006e1d1999a..abe358649f46 100644\n--- a/src/android/jpeg/encoder_libjpeg.cpp\n+++ b/src/android/jpeg/encoder_libjpeg.cpp\n@@ -20,8 +20,9 @@\n #include <libcamera/formats.h>\n #include <libcamera/pixel_format.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n \n using namespace libcamera;\n \ndiff --git a/src/android/jpeg/exif.cpp b/src/android/jpeg/exif.cpp\nindex 07a047ea1d68..c418e1b04d6b 100644\n--- a/src/android/jpeg/exif.cpp\n+++ b/src/android/jpeg/exif.cpp\n@@ -14,10 +14,9 @@\n #include <tuple>\n #include <uchar.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/log.h\"\n-\n using namespace libcamera;\n \n LOG_DEFINE_CATEGORY(EXIF)\ndiff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp\nindex 058ccc998c6f..0592038b6b93 100644\n--- a/src/android/jpeg/post_processor_jpeg.cpp\n+++ b/src/android/jpeg/post_processor_jpeg.cpp\n@@ -16,7 +16,7 @@\n \n #include <libcamera/formats.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n using namespace libcamera;\n using namespace std::chrono_literals;\ndiff --git a/src/android/jpeg/thumbnailer.cpp b/src/android/jpeg/thumbnailer.cpp\nindex f709d3435d9c..ec8e409ac342 100644\n--- a/src/android/jpeg/thumbnailer.cpp\n+++ b/src/android/jpeg/thumbnailer.cpp\n@@ -9,7 +9,7 @@\n \n #include <libcamera/formats.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n using namespace libcamera;\n \ndiff --git a/src/android/mm/cros_camera_buffer.cpp b/src/android/mm/cros_camera_buffer.cpp\nindex 59e26d1b5972..2bc85ec39f4e 100644\n--- a/src/android/mm/cros_camera_buffer.cpp\n+++ b/src/android/mm/cros_camera_buffer.cpp\n@@ -7,7 +7,7 @@\n \n #include \"../camera_buffer.h\"\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"cros-camera/camera_buffer_manager.h\"\n \ndiff --git a/src/android/mm/generic_camera_buffer.cpp b/src/android/mm/generic_camera_buffer.cpp\nindex cca88cf3632f..f138ada14964 100644\n--- a/src/android/mm/generic_camera_buffer.cpp\n+++ b/src/android/mm/generic_camera_buffer.cpp\n@@ -9,8 +9,9 @@\n \n #include <unistd.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/buffer.h\"\n-#include \"libcamera/internal/log.h\"\n \n using namespace libcamera;\n \ndiff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp\nindex b67364c8f147..938d61cb2a4a 100644\n--- a/src/android/yuv/post_processor_yuv.cpp\n+++ b/src/android/yuv/post_processor_yuv.cpp\n@@ -13,8 +13,9 @@\n #include <libcamera/geometry.h>\n #include <libcamera/pixel_format.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n \n using namespace libcamera;\n \ndiff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp\nindex 8b4c7351e9db..ca1ce4dc96d0 100644\n--- a/src/ipa/ipu3/ipu3.cpp\n+++ b/src/ipa/ipu3/ipu3.cpp\n@@ -18,8 +18,9 @@\n #include <libcamera/ipa/ipu3_ipa_interface.h>\n #include <libcamera/request.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/buffer.h\"\n-#include \"libcamera/internal/log.h\"\n \n #include \"ipu3_agc.h\"\n #include \"ipu3_awb.h\"\ndiff --git a/src/ipa/ipu3/ipu3_agc.cpp b/src/ipa/ipu3/ipu3_agc.cpp\nindex 8ca95013ed08..a83aa0ab499a 100644\n--- a/src/ipa/ipu3/ipu3_agc.cpp\n+++ b/src/ipa/ipu3/ipu3_agc.cpp\n@@ -13,7 +13,7 @@\n \n #include <libcamera/ipa/core_ipa_interface.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"libipa/histogram.h\"\n \ndiff --git a/src/ipa/ipu3/ipu3_awb.cpp b/src/ipa/ipu3/ipu3_awb.cpp\nindex 54ce8e67124e..b39f4289b1a5 100644\n--- a/src/ipa/ipu3/ipu3_awb.cpp\n+++ b/src/ipa/ipu3/ipu3_awb.cpp\n@@ -10,7 +10,7 @@\n #include <numeric>\n #include <unordered_map>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n namespace libcamera {\n \ndiff --git a/src/ipa/libipa/histogram.cpp b/src/ipa/libipa/histogram.cpp\nindex d4d7cfdffa84..2700de1d0bee 100644\n--- a/src/ipa/libipa/histogram.cpp\n+++ b/src/ipa/libipa/histogram.cpp\n@@ -8,7 +8,7 @@\n \n #include <cmath>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file histogram.h\ndiff --git a/src/ipa/raspberrypi/cam_helper.hpp b/src/ipa/raspberrypi/cam_helper.hpp\nindex 0d2688ced02a..4893e3c192f8 100644\n--- a/src/ipa/raspberrypi/cam_helper.hpp\n+++ b/src/ipa/raspberrypi/cam_helper.hpp\n@@ -10,13 +10,13 @@\n \n #include <libcamera/span.h>\n \n+#include <libcamera/platform/utils.h>\n+\n #include \"camera_mode.h\"\n #include \"controller/controller.hpp\"\n #include \"controller/metadata.hpp\"\n #include \"md_parser.hpp\"\n \n-#include <libcamera/platform/utils.h>\n-\n #include \"libcamera/internal/v4l2_videodevice.h\"\n \n namespace RPiController {\ndiff --git a/src/ipa/raspberrypi/controller/controller.cpp b/src/ipa/raspberrypi/controller/controller.cpp\nindex 96b58359a9e5..a3117012b8c0 100644\n--- a/src/ipa/raspberrypi/controller/controller.cpp\n+++ b/src/ipa/raspberrypi/controller/controller.cpp\n@@ -5,7 +5,7 @@\n * controller.cpp - ISP controller\n */\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"algorithm.hpp\"\n #include \"controller.hpp\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/agc.cpp b/src/ipa/raspberrypi/controller/rpi/agc.cpp\nindex 55e80ac74ae1..764c85208224 100644\n--- a/src/ipa/raspberrypi/controller/rpi/agc.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/agc.cpp\n@@ -9,7 +9,7 @@\n \n #include \"linux/bcm2835-isp.h\"\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../awb_status.h\"\n #include \"../device_status.h\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/alsc.cpp b/src/ipa/raspberrypi/controller/rpi/alsc.cpp\nindex b0d24aa2ef44..7332d66d373d 100644\n--- a/src/ipa/raspberrypi/controller/rpi/alsc.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/alsc.cpp\n@@ -6,7 +6,7 @@\n */\n #include <math.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../awb_status.h\"\n #include \"alsc.hpp\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/raspberrypi/controller/rpi/awb.cpp\nindex 1c917e4f3408..a29a720ed8ce 100644\n--- a/src/ipa/raspberrypi/controller/rpi/awb.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/awb.cpp\n@@ -5,7 +5,7 @@\n * awb.cpp - AWB control algorithm\n */\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../lux_status.h\"\n \ndiff --git a/src/ipa/raspberrypi/controller/rpi/black_level.cpp b/src/ipa/raspberrypi/controller/rpi/black_level.cpp\nindex 9ac855f50014..b897d62bbef5 100644\n--- a/src/ipa/raspberrypi/controller/rpi/black_level.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/black_level.cpp\n@@ -8,7 +8,7 @@\n #include <math.h>\n #include <stdint.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../black_level_status.h\"\n \ndiff --git a/src/ipa/raspberrypi/controller/rpi/ccm.cpp b/src/ipa/raspberrypi/controller/rpi/ccm.cpp\nindex dbdcbb39dd12..6320039374e7 100644\n--- a/src/ipa/raspberrypi/controller/rpi/ccm.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/ccm.cpp\n@@ -5,7 +5,7 @@\n * ccm.cpp - CCM (colour correction matrix) control algorithm\n */\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../awb_status.h\"\n #include \"../ccm_status.h\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/contrast.cpp b/src/ipa/raspberrypi/controller/rpi/contrast.cpp\nindex 2bc43027a291..bbf91dc467b6 100644\n--- a/src/ipa/raspberrypi/controller/rpi/contrast.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/contrast.cpp\n@@ -6,7 +6,7 @@\n */\n #include <stdint.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../contrast_status.h\"\n #include \"../histogram.hpp\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/dpc.cpp b/src/ipa/raspberrypi/controller/rpi/dpc.cpp\nindex e533cd53e63b..4f387c604fee 100644\n--- a/src/ipa/raspberrypi/controller/rpi/dpc.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/dpc.cpp\n@@ -5,7 +5,7 @@\n * dpc.cpp - DPC (defective pixel correction) control algorithm\n */\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"dpc.hpp\"\n \ndiff --git a/src/ipa/raspberrypi/controller/rpi/focus.cpp b/src/ipa/raspberrypi/controller/rpi/focus.cpp\nindex bab4406fe3a1..06931be4a16f 100644\n--- a/src/ipa/raspberrypi/controller/rpi/focus.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/focus.cpp\n@@ -6,7 +6,7 @@\n */\n #include <stdint.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../focus_status.h\"\n #include \"focus.hpp\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/geq.cpp b/src/ipa/raspberrypi/controller/rpi/geq.cpp\nindex 5eff116cd055..0851a326fb62 100644\n--- a/src/ipa/raspberrypi/controller/rpi/geq.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/geq.cpp\n@@ -5,7 +5,7 @@\n * geq.cpp - GEQ (green equalisation) control algorithm\n */\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../device_status.h\"\n #include \"../lux_status.h\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/lux.cpp b/src/ipa/raspberrypi/controller/rpi/lux.cpp\nindex 258e44f4dcce..4642d6a05dce 100644\n--- a/src/ipa/raspberrypi/controller/rpi/lux.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/lux.cpp\n@@ -8,7 +8,7 @@\n \n #include \"linux/bcm2835-isp.h\"\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../device_status.h\"\n \ndiff --git a/src/ipa/raspberrypi/controller/rpi/noise.cpp b/src/ipa/raspberrypi/controller/rpi/noise.cpp\nindex 156f750192f8..32b6d3f13a56 100644\n--- a/src/ipa/raspberrypi/controller/rpi/noise.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/noise.cpp\n@@ -7,7 +7,7 @@\n \n #include <math.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../device_status.h\"\n #include \"../noise_status.h\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/sdn.cpp b/src/ipa/raspberrypi/controller/rpi/sdn.cpp\nindex 959bc7406a01..979f83f4b074 100644\n--- a/src/ipa/raspberrypi/controller/rpi/sdn.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/sdn.cpp\n@@ -5,7 +5,7 @@\n * sdn.cpp - SDN (spatial denoise) control algorithm\n */\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../denoise_status.h\"\n #include \"../noise_status.h\"\ndiff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.cpp b/src/ipa/raspberrypi/controller/rpi/sharpen.cpp\nindex 2cd861ca6898..f717d91f9320 100644\n--- a/src/ipa/raspberrypi/controller/rpi/sharpen.cpp\n+++ b/src/ipa/raspberrypi/controller/rpi/sharpen.cpp\n@@ -7,7 +7,7 @@\n \n #include <math.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"../sharpen_status.h\"\n \ndiff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\nindex 1c1e802a2cdc..90f35d970fd0 100644\n--- a/src/ipa/raspberrypi/raspberrypi.cpp\n+++ b/src/ipa/raspberrypi/raspberrypi.cpp\n@@ -24,8 +24,9 @@\n #include <libcamera/request.h>\n #include <libcamera/span.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/buffer.h\"\n-#include \"libcamera/internal/log.h\"\n \n #include <linux/bcm2835-isp.h>\n \ndiff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex b47ea3240f63..9cb850075657 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -22,7 +22,7 @@\n #include <libcamera/ipa/rkisp1_ipa_interface.h>\n #include <libcamera/request.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n namespace libcamera {\n \ndiff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp\nindex 13681d8833ff..64ed51097065 100644\n--- a/src/ipa/vimc/vimc.cpp\n+++ b/src/ipa/vimc/vimc.cpp\n@@ -17,8 +17,9 @@\n #include <libcamera/ipa/ipa_interface.h>\n #include <libcamera/ipa/ipa_module_info.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/file.h\"\n-#include \"libcamera/internal/log.h\"\n \n namespace libcamera {\n \ndiff --git a/src/libcamera/bound_method.cpp b/src/libcamera-platform/bound_method.cpp\nsimilarity index 93%\nrename from src/libcamera/bound_method.cpp\nrename to src/libcamera-platform/bound_method.cpp\nindex 4965bb5e167b..a291b365162d 100644\n--- a/src/libcamera/bound_method.cpp\n+++ b/src/libcamera-platform/bound_method.cpp\n@@ -5,14 +5,13 @@\n * bound_method.cpp - Method bind and invocation\n */\n \n-#include <libcamera/bound_method.h>\n-\n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/semaphore.h\"\n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/bound_method.h>\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/semaphore.h>\n+#include <libcamera/platform/thread.h>\n \n /**\n- * \\file bound_method.h\n+ * \\file platform/bound_method.h\n * \\brief Method bind and invocation\n */\n \ndiff --git a/src/libcamera/event_dispatcher.cpp b/src/libcamera-platform/event_dispatcher.cpp\nsimilarity index 96%\nrename from src/libcamera/event_dispatcher.cpp\nrename to src/libcamera-platform/event_dispatcher.cpp\nindex e0ce1eb3cc04..2ee5e4f04e25 100644\n--- a/src/libcamera/event_dispatcher.cpp\n+++ b/src/libcamera-platform/event_dispatcher.cpp\n@@ -5,12 +5,11 @@\n * event_dispatcher.cpp - Event dispatcher\n */\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-\n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/log.h>\n \n /**\n- * \\file event_dispatcher.h\n+ * \\file platform/event_dispatcher.h\n */\n \n namespace libcamera {\ndiff --git a/src/libcamera/event_dispatcher_poll.cpp b/src/libcamera-platform/event_dispatcher_poll.cpp\nsimilarity index 96%\nrename from src/libcamera/event_dispatcher_poll.cpp\nrename to src/libcamera-platform/event_dispatcher_poll.cpp\nindex 30ffeaf5d4d8..3b6fdf34702c 100644\n--- a/src/libcamera/event_dispatcher_poll.cpp\n+++ b/src/libcamera-platform/event_dispatcher_poll.cpp\n@@ -5,7 +5,7 @@\n * event_dispatcher_poll.cpp - Poll-based event dispatcher\n */\n \n-#include \"libcamera/internal/event_dispatcher_poll.h\"\n+#include <libcamera/platform/event_dispatcher_poll.h>\n \n #include <algorithm>\n #include <chrono>\n@@ -16,15 +16,15 @@\n #include <sys/eventfd.h>\n #include <unistd.h>\n \n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/log.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n /**\n- * \\file event_dispatcher_poll.h\n+ * \\file platform/event_dispatcher_poll.h\n */\n \n namespace libcamera {\ndiff --git a/src/libcamera/log.cpp b/src/libcamera-platform/log.cpp\nsimilarity index 99%\nrename from src/libcamera/log.cpp\nrename to src/libcamera-platform/log.cpp\nindex 72c80208f583..6ded37220af8 100644\n--- a/src/libcamera/log.cpp\n+++ b/src/libcamera-platform/log.cpp\n@@ -5,7 +5,7 @@\n * log.cpp - Logging infrastructure\n */\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include <array>\n #if HAVE_BACKTRACE\n@@ -23,12 +23,11 @@\n \n #include <libcamera/logging.h>\n \n+#include <libcamera/platform/thread.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/thread.h\"\n-\n /**\n- * \\file log.h\n+ * \\file platform/log.h\n * \\brief Logging infrastructure\n *\n * libcamera includes a logging infrastructure used through the library that\ndiff --git a/src/libcamera-platform/meson.build b/src/libcamera-platform/meson.build\nindex d53413fdffde..afdc4465da28 100644\n--- a/src/libcamera-platform/meson.build\n+++ b/src/libcamera-platform/meson.build\n@@ -1,6 +1,16 @@\n # SPDX-License-Identifier: CC0-1.0\n \n libcamera_platform_sources = files([\n+ 'bound_method.cpp',\n+ 'event_dispatcher.cpp',\n+ 'event_dispatcher_poll.cpp',\n+ 'log.cpp',\n+ 'message.cpp',\n+ 'object.cpp',\n+ 'semaphore.cpp',\n+ 'signal.cpp',\n+ 'thread.cpp',\n+ 'timer.cpp',\n 'utils.cpp',\n ])\n \n@@ -8,6 +18,7 @@ libdl = cc.find_library('dl')\n \n libcamera_platform_deps = [\n libdl,\n+ dependency('threads'),\n ]\n \n # We add '/' to the build_rpath as a 'safe' path to act as a boolean flag.\ndiff --git a/src/libcamera/message.cpp b/src/libcamera-platform/message.cpp\nsimilarity index 96%\nrename from src/libcamera/message.cpp\nrename to src/libcamera-platform/message.cpp\nindex bc985c077a4f..726ef54f0769 100644\n--- a/src/libcamera/message.cpp\n+++ b/src/libcamera-platform/message.cpp\n@@ -5,14 +5,13 @@\n * message.cpp - Message queue support\n */\n \n-#include \"libcamera/internal/message.h\"\n+#include <libcamera/platform/message.h>\n \n-#include <libcamera/signal.h>\n-\n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/signal.h>\n \n /**\n- * \\file message.h\n+ * \\file platform/message.h\n * \\brief Message queue support\n *\n * The messaging API enables inter-thread communication through message\ndiff --git a/src/libcamera/object.cpp b/src/libcamera-platform/object.cpp\nsimilarity index 97%\nrename from src/libcamera/object.cpp\nrename to src/libcamera-platform/object.cpp\nindex 71739d6c2fff..df83c3f37e07 100644\n--- a/src/libcamera/object.cpp\n+++ b/src/libcamera-platform/object.cpp\n@@ -5,21 +5,19 @@\n * object.cpp - Base object\n */\n \n-#include <libcamera/object.h>\n+#include <libcamera/platform/object.h>\n \n #include <algorithm>\n \n-#include <libcamera/signal.h>\n-\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/semaphore.h>\n+#include <libcamera/platform/signal.h>\n+#include <libcamera/platform/thread.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/log.h\"\n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/semaphore.h\"\n-#include \"libcamera/internal/thread.h\"\n-\n /**\n- * \\file object.h\n+ * \\file platform/object.h\n * \\brief Base object to support automatic signal disconnection\n */\n \ndiff --git a/src/libcamera/semaphore.cpp b/src/libcamera-platform/semaphore.cpp\nsimilarity index 95%\nrename from src/libcamera/semaphore.cpp\nrename to src/libcamera-platform/semaphore.cpp\nindex d8988a9189e8..fddcab6a036f 100644\n--- a/src/libcamera/semaphore.cpp\n+++ b/src/libcamera-platform/semaphore.cpp\n@@ -5,11 +5,11 @@\n * semaphore.cpp - General-purpose counting semaphore\n */\n \n-#include \"libcamera/internal/semaphore.h\"\n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/semaphore.h>\n+#include <libcamera/platform/thread.h>\n \n /**\n- * \\file semaphore.h\n+ * \\file platform/semaphore.h\n * \\brief General-purpose counting semaphore\n */\n \ndiff --git a/src/libcamera/signal.cpp b/src/libcamera-platform/signal.cpp\nsimilarity index 98%\nrename from src/libcamera/signal.cpp\nrename to src/libcamera-platform/signal.cpp\nindex 2532df3c3073..1da1b210b8ee 100644\n--- a/src/libcamera/signal.cpp\n+++ b/src/libcamera-platform/signal.cpp\n@@ -5,12 +5,12 @@\n * signal.cpp - Signal & slot implementation\n */\n \n-#include <libcamera/signal.h>\n+#include <libcamera/platform/signal.h>\n \n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/thread.h>\n \n /**\n- * \\file signal.h\n+ * \\file platform/signal.h\n * \\brief Signal & slot implementation\n */\n \ndiff --git a/src/libcamera/thread.cpp b/src/libcamera-platform/thread.cpp\nsimilarity index 98%\nrename from src/libcamera/thread.cpp\nrename to src/libcamera-platform/thread.cpp\nindex 91e4737ad032..81f3100bbc35 100644\n--- a/src/libcamera/thread.cpp\n+++ b/src/libcamera-platform/thread.cpp\n@@ -5,7 +5,7 @@\n * thread.cpp - Thread support\n */\n \n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/thread.h>\n \n #include <atomic>\n #include <condition_variable>\n@@ -14,10 +14,10 @@\n #include <sys/types.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/event_dispatcher_poll.h\"\n-#include \"libcamera/internal/log.h\"\n-#include \"libcamera/internal/message.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/event_dispatcher_poll.h>\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/message.h>\n \n /**\n * \\page thread Thread Support\n@@ -102,7 +102,7 @@\n */\n \n /**\n- * \\file thread.h\n+ * \\file platform/thread.h\n * \\brief Thread support\n */\n \ndiff --git a/src/libcamera/timer.cpp b/src/libcamera-platform/timer.cpp\nsimilarity index 94%\nrename from src/libcamera/timer.cpp\nrename to src/libcamera-platform/timer.cpp\nindex 22bf4ffe3704..c2514a40200d 100644\n--- a/src/libcamera/timer.cpp\n+++ b/src/libcamera-platform/timer.cpp\n@@ -5,21 +5,20 @@\n * timer.cpp - Generic timer\n */\n \n-#include \"libcamera/internal/timer.h\"\n+#include <libcamera/platform/timer.h>\n \n #include <chrono>\n \n #include <libcamera/camera_manager.h>\n \n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/thread.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/log.h\"\n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/thread.h\"\n-\n /**\n- * \\file timer.h\n+ * \\file platform/timer.h\n * \\brief Generic timer\n */\n \ndiff --git a/src/libcamera/buffer.cpp b/src/libcamera/buffer.cpp\nindex ca999429dce5..3c862820e6e1 100644\n--- a/src/libcamera/buffer.cpp\n+++ b/src/libcamera/buffer.cpp\n@@ -13,7 +13,7 @@\n #include <sys/mman.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file libcamera/buffer.h\ndiff --git a/src/libcamera/byte_stream_buffer.cpp b/src/libcamera/byte_stream_buffer.cpp\nindex 7fc6f6944471..c519d40c1a5a 100644\n--- a/src/libcamera/byte_stream_buffer.cpp\n+++ b/src/libcamera/byte_stream_buffer.cpp\n@@ -10,7 +10,7 @@\n #include <stdint.h>\n #include <string.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file byte_stream_buffer.h\ndiff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex 1340c266cc5f..b815f2883c28 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -15,9 +15,10 @@\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/thread.h>\n+\n #include \"libcamera/internal/pipeline_handler.h\"\n-#include \"libcamera/internal/thread.h\"\n \n /**\n * \\file camera.h\ndiff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp\nindex 8198494e439c..0143bc4dc529 100644\n--- a/src/libcamera/camera_manager.cpp\n+++ b/src/libcamera/camera_manager.cpp\n@@ -14,12 +14,13 @@\n \n #include <libcamera/platform/utils.h>\n \n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/thread.h>\n+\n #include \"libcamera/internal/device_enumerator.h\"\n #include \"libcamera/internal/ipa_manager.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/process.h\"\n-#include \"libcamera/internal/thread.h\"\n \n /**\n * \\file camera_manager.h\ndiff --git a/src/libcamera/camera_sensor_properties.cpp b/src/libcamera/camera_sensor_properties.cpp\nindex f660743a3605..8ee9445beadb 100644\n--- a/src/libcamera/camera_sensor_properties.cpp\n+++ b/src/libcamera/camera_sensor_properties.cpp\n@@ -11,7 +11,7 @@\n \n #include <libcamera/control_ids.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file camera_sensor_properties.h\ndiff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp\nindex 097444130ef7..9b3533ad50ce 100644\n--- a/src/libcamera/control_serializer.cpp\n+++ b/src/libcamera/control_serializer.cpp\n@@ -16,8 +16,9 @@\n #include <libcamera/ipa/ipa_controls.h>\n #include <libcamera/span.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/byte_stream_buffer.h\"\n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file control_serializer.h\ndiff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp\nindex d23349eb953f..fc718641fbe4 100644\n--- a/src/libcamera/controls.cpp\n+++ b/src/libcamera/controls.cpp\n@@ -12,10 +12,10 @@\n #include <string>\n #include <string.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/control_validator.h\"\n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file controls.h\ndiff --git a/src/libcamera/delayed_controls.cpp b/src/libcamera/delayed_controls.cpp\nindex 0bf81b510d16..1e8f6a2b310d 100644\n--- a/src/libcamera/delayed_controls.cpp\n+++ b/src/libcamera/delayed_controls.cpp\n@@ -9,7 +9,8 @@\n \n #include <libcamera/controls.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/v4l2_device.h\"\n \n /**\ndiff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp\nindex e6ecc360e32f..1c63a4a9de0b 100644\n--- a/src/libcamera/device_enumerator.cpp\n+++ b/src/libcamera/device_enumerator.cpp\n@@ -11,7 +11,8 @@\n \n #include <string.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/media_device.h\"\n \n /**\ndiff --git a/src/libcamera/device_enumerator_sysfs.cpp b/src/libcamera/device_enumerator_sysfs.cpp\nindex ff72885288c3..a31802f7f252 100644\n--- a/src/libcamera/device_enumerator_sysfs.cpp\n+++ b/src/libcamera/device_enumerator_sysfs.cpp\n@@ -17,7 +17,8 @@\n #include <sys/types.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/media_device.h\"\n \n namespace libcamera {\ndiff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp\nindex d26fcf10b3c4..3fcffa947d0e 100644\n--- a/src/libcamera/device_enumerator_udev.cpp\n+++ b/src/libcamera/device_enumerator_udev.cpp\n@@ -17,8 +17,9 @@\n #include <sys/sysmacros.h>\n #include <unistd.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n \n namespace libcamera {\ndiff --git a/src/libcamera/event_notifier.cpp b/src/libcamera/event_notifier.cpp\nindex 6b0575c0db77..2e9ac086cc81 100644\n--- a/src/libcamera/event_notifier.cpp\n+++ b/src/libcamera/event_notifier.cpp\n@@ -9,9 +9,9 @@\n \n #include <libcamera/camera_manager.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/thread.h>\n \n /**\n * \\file event_notifier.h\ndiff --git a/src/libcamera/file.cpp b/src/libcamera/file.cpp\nindex bce2b6138239..c554074c2e51 100644\n--- a/src/libcamera/file.cpp\n+++ b/src/libcamera/file.cpp\n@@ -14,7 +14,7 @@\n #include <sys/types.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file file.h\ndiff --git a/src/libcamera/file_descriptor.cpp b/src/libcamera/file_descriptor.cpp\nindex 8b505ed3b6b2..e78d98dd9cd3 100644\n--- a/src/libcamera/file_descriptor.cpp\n+++ b/src/libcamera/file_descriptor.cpp\n@@ -11,7 +11,7 @@\n #include <unistd.h>\n #include <utility>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file file_descriptor.h\ndiff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\nindex 55822f4cc97b..ad1ab516b1a0 100644\n--- a/src/libcamera/formats.cpp\n+++ b/src/libcamera/formats.cpp\n@@ -12,7 +12,7 @@\n \n #include <libcamera/formats.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file internal/formats.h\ndiff --git a/src/libcamera/framebuffer_allocator.cpp b/src/libcamera/framebuffer_allocator.cpp\nindex 2fbba37a1b0b..e58e2acea01c 100644\n--- a/src/libcamera/framebuffer_allocator.cpp\n+++ b/src/libcamera/framebuffer_allocator.cpp\n@@ -13,7 +13,8 @@\n #include <libcamera/camera.h>\n #include <libcamera/stream.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/pipeline_handler.h\"\n \n /**\ndiff --git a/src/libcamera/geometry.cpp b/src/libcamera/geometry.cpp\nindex 136446895eb6..83fcaab36000 100644\n--- a/src/libcamera/geometry.cpp\n+++ b/src/libcamera/geometry.cpp\n@@ -10,7 +10,7 @@\n #include <sstream>\n #include <stdint.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file geometry.h\ndiff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp\nindex 131b3bd616fd..312876ea2472 100644\n--- a/src/libcamera/ipa_data_serializer.cpp\n+++ b/src/libcamera/ipa_data_serializer.cpp\n@@ -7,7 +7,7 @@\n \n #include \"libcamera/internal/ipa_data_serializer.h\"\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file ipa_data_serializer.h\ndiff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp\nindex 0f8e5de87f99..122811e2bcae 100644\n--- a/src/libcamera/ipa_manager.cpp\n+++ b/src/libcamera/ipa_manager.cpp\n@@ -12,12 +12,12 @@\n #include <string.h>\n #include <sys/types.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/file.h\"\n #include \"libcamera/internal/ipa_module.h\"\n #include \"libcamera/internal/ipa_proxy.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n \n /**\ndiff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp\nindex bf272ba35df7..a615ca91257e 100644\n--- a/src/libcamera/ipa_module.cpp\n+++ b/src/libcamera/ipa_module.cpp\n@@ -23,10 +23,10 @@\n \n #include <libcamera/span.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/file.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n \n /**\ndiff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp\nindex d659230f55c9..25dbfd833b02 100644\n--- a/src/libcamera/ipa_proxy.cpp\n+++ b/src/libcamera/ipa_proxy.cpp\n@@ -12,10 +12,10 @@\n #include <sys/types.h>\n #include <unistd.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/ipa_module.h\"\n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file ipa_proxy.h\ndiff --git a/src/libcamera/ipc_pipe.cpp b/src/libcamera/ipc_pipe.cpp\nindex c402c8d08699..5cbbe25c2306 100644\n--- a/src/libcamera/ipc_pipe.cpp\n+++ b/src/libcamera/ipc_pipe.cpp\n@@ -7,7 +7,7 @@\n \n #include \"libcamera/internal/ipc_pipe.h\"\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file ipc_pipe.h\ndiff --git a/src/libcamera/ipc_pipe_unixsocket.cpp b/src/libcamera/ipc_pipe_unixsocket.cpp\nindex db0e260f22b1..a215817fe45b 100644\n--- a/src/libcamera/ipc_pipe_unixsocket.cpp\n+++ b/src/libcamera/ipc_pipe_unixsocket.cpp\n@@ -9,13 +9,14 @@\n \n #include <vector>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/ipc_pipe.h\"\n #include \"libcamera/internal/ipc_unixsocket.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/process.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n namespace libcamera {\n \ndiff --git a/src/libcamera/ipc_unixsocket.cpp b/src/libcamera/ipc_unixsocket.cpp\nindex fdb359f7fcd1..2ec356b1cb89 100644\n--- a/src/libcamera/ipc_unixsocket.cpp\n+++ b/src/libcamera/ipc_unixsocket.cpp\n@@ -12,8 +12,9 @@\n #include <sys/socket.h>\n #include <unistd.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file ipc_unixsocket.h\ndiff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp\nindex 9ec84e560b77..c0c64af117f2 100644\n--- a/src/libcamera/media_device.cpp\n+++ b/src/libcamera/media_device.cpp\n@@ -18,7 +18,7 @@\n \n #include <linux/media.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /**\n * \\file media_device.h\ndiff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp\nindex 94aeb50402ca..53f076a8a7a3 100644\n--- a/src/libcamera/media_object.cpp\n+++ b/src/libcamera/media_object.cpp\n@@ -15,7 +15,8 @@\n \n #include <linux/media.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/media_device.h\"\n \n /**\ndiff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\nindex 870d4c4276e9..f83ca4b1f6aa 100644\n--- a/src/libcamera/meson.build\n+++ b/src/libcamera/meson.build\n@@ -2,7 +2,6 @@\n \n libcamera_sources = files([\n 'bayer_format.cpp',\n- 'bound_method.cpp',\n 'buffer.cpp',\n 'byte_stream_buffer.cpp',\n 'camera.cpp',\n@@ -17,8 +16,6 @@ libcamera_sources = files([\n 'delayed_controls.cpp',\n 'device_enumerator.cpp',\n 'device_enumerator_sysfs.cpp',\n- 'event_dispatcher.cpp',\n- 'event_dispatcher_poll.cpp',\n 'event_notifier.cpp',\n 'file.cpp',\n 'file_descriptor.cpp',\n@@ -34,22 +31,15 @@ libcamera_sources = files([\n 'ipc_pipe.cpp',\n 'ipc_pipe_unixsocket.cpp',\n 'ipc_unixsocket.cpp',\n- 'log.cpp',\n 'media_device.cpp',\n 'media_object.cpp',\n- 'message.cpp',\n- 'object.cpp',\n 'pipeline_handler.cpp',\n 'pixel_format.cpp',\n 'process.cpp',\n 'pub_key.cpp',\n 'request.cpp',\n- 'semaphore.cpp',\n- 'signal.cpp',\n 'stream.cpp',\n 'sysfs.cpp',\n- 'thread.cpp',\n- 'timer.cpp',\n 'transform.cpp',\n 'v4l2_device.cpp',\n 'v4l2_pixelformat.cpp',\n@@ -127,7 +117,6 @@ libcamera_deps = [\n liblttng,\n libudev,\n libcamera_platform,\n- dependency('threads'),\n ]\n \n libcamera = shared_library('camera',\ndiff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h\nindex d8d4a181ffd1..e6f0b009039e 100644\n--- a/src/libcamera/pipeline/ipu3/cio2.h\n+++ b/src/libcamera/pipeline/ipu3/cio2.h\n@@ -11,7 +11,7 @@\n #include <queue>\n #include <vector>\n \n-#include <libcamera/signal.h>\n+#include <libcamera/platform/signal.h>\n \n #include \"libcamera/internal/v4l2_subdevice.h\"\n #include \"libcamera/internal/v4l2_videodevice.h\"\ndiff --git a/src/libcamera/pipeline/ipu3/frames.h b/src/libcamera/pipeline/ipu3/frames.h\nindex 59e64e8170a2..80e97f105736 100644\n--- a/src/libcamera/pipeline/ipu3/frames.h\n+++ b/src/libcamera/pipeline/ipu3/frames.h\n@@ -12,7 +12,7 @@\n #include <queue>\n #include <vector>\n \n-#include <libcamera/signal.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp\nindex 297685bc597f..5c7e8a22a77f 100644\n--- a/src/libcamera/pipeline/ipu3/imgu.cpp\n+++ b/src/libcamera/pipeline/ipu3/imgu.cpp\n@@ -16,9 +16,9 @@\n #include <libcamera/formats.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n \n namespace libcamera {\ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 269ab18938c6..d6978645a401 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -20,13 +20,13 @@\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/camera_sensor.h\"\n #include \"libcamera/internal/delayed_controls.h\"\n #include \"libcamera/internal/device_enumerator.h\"\n #include \"libcamera/internal/ipa_manager.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n \ndiff --git a/src/libcamera/pipeline/raspberrypi/dma_heaps.cpp b/src/libcamera/pipeline/raspberrypi/dma_heaps.cpp\nindex 4d5dd6cb87cc..bdcfe0067afc 100644\n--- a/src/libcamera/pipeline/raspberrypi/dma_heaps.cpp\n+++ b/src/libcamera/pipeline/raspberrypi/dma_heaps.cpp\n@@ -14,7 +14,7 @@\n #include <sys/ioctl.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n /*\n * /dev/dma-heap/linux,cma is the dma-heap allocator, which allows dmaheap-cma\ndiff --git a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp b/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp\nindex f2430415d32d..0b87140152aa 100644\n--- a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp\n+++ b/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp\n@@ -8,7 +8,7 @@\n \n #include <libcamera/ipa/raspberrypi_ipa_interface.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n namespace libcamera {\n \ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 30a015e2ed59..a21b2509c48c 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -24,13 +24,13 @@\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/camera_sensor.h\"\n #include \"libcamera/internal/delayed_controls.h\"\n #include \"libcamera/internal/device_enumerator.h\"\n #include \"libcamera/internal/ipa_manager.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/v4l2_subdevice.h\"\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.h b/src/libcamera/pipeline/rkisp1/rkisp1_path.h\nindex 3b3e37d258d0..2decf2a65fa7 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.h\n@@ -13,9 +13,10 @@\n #include <libcamera/camera.h>\n #include <libcamera/geometry.h>\n #include <libcamera/pixel_format.h>\n-#include <libcamera/signal.h>\n #include <libcamera/span.h>\n \n+#include <libcamera/platform/signal.h>\n+\n #include \"libcamera/internal/media_object.h\"\n #include \"libcamera/internal/v4l2_videodevice.h\"\n \ndiff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp\nindex 6c729408cb08..143d0409fd0d 100644\n--- a/src/libcamera/pipeline/simple/converter.cpp\n+++ b/src/libcamera/pipeline/simple/converter.cpp\n@@ -12,12 +12,13 @@\n \n #include <libcamera/buffer.h>\n #include <libcamera/geometry.h>\n-#include <libcamera/signal.h>\n #include <libcamera/stream.h>\n \n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/signal.h>\n+\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/v4l2_videodevice.h\"\n \ndiff --git a/src/libcamera/pipeline/simple/converter.h b/src/libcamera/pipeline/simple/converter.h\nindex 480e528d2210..82cb907ee738 100644\n--- a/src/libcamera/pipeline/simple/converter.h\n+++ b/src/libcamera/pipeline/simple/converter.h\n@@ -16,9 +16,9 @@\n #include <vector>\n \n #include <libcamera/pixel_format.h>\n-#include <libcamera/signal.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/signal.h>\n \n namespace libcamera {\n \ndiff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex 1b283c44b0f8..db7e647b6159 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -26,9 +26,10 @@\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/camera_sensor.h\"\n #include \"libcamera/internal/device_enumerator.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/v4l2_subdevice.h\"\ndiff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\nindex d5b325bd6b34..109fe7753b4f 100644\n--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n@@ -19,10 +19,10 @@\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/device_enumerator.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/sysfs.h\"\ndiff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\nindex b20bef0f5ace..1c4135cc6daa 100644\n--- a/src/libcamera/pipeline/vimc/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc/vimc.cpp\n@@ -23,12 +23,12 @@\n #include <libcamera/request.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/camera_sensor.h\"\n #include \"libcamera/internal/device_enumerator.h\"\n #include \"libcamera/internal/ipa_manager.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/v4l2_subdevice.h\"\ndiff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\nindex a138db9fda4a..f1f8bf24e4af 100644\n--- a/src/libcamera/pipeline_handler.cpp\n+++ b/src/libcamera/pipeline_handler.cpp\n@@ -13,10 +13,10 @@\n #include <libcamera/camera.h>\n #include <libcamera/camera_manager.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/device_enumerator.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/tracepoints.h\"\n \ndiff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp\nindex 94dce3c7de46..924f11c5bb6b 100644\n--- a/src/libcamera/process.cpp\n+++ b/src/libcamera/process.cpp\n@@ -20,10 +20,10 @@\n #include <unistd.h>\n #include <vector>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file process.h\ndiff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp\nindex 6611e74d1800..f8866c554d53 100644\n--- a/src/libcamera/request.cpp\n+++ b/src/libcamera/request.cpp\n@@ -15,8 +15,9 @@\n #include <libcamera/control_ids.h>\n #include <libcamera/stream.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/camera_controls.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/tracepoints.h\"\n \n /**\ndiff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\nindex fae217fe21fa..09abdad4e3b6 100644\n--- a/src/libcamera/stream.cpp\n+++ b/src/libcamera/stream.cpp\n@@ -15,9 +15,9 @@\n \n #include <libcamera/request.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file stream.h\ndiff --git a/src/libcamera/sysfs.cpp b/src/libcamera/sysfs.cpp\nindex e9004b2b59c8..dea00b072519 100644\n--- a/src/libcamera/sysfs.cpp\n+++ b/src/libcamera/sysfs.cpp\n@@ -12,8 +12,9 @@\n #include <sys/stat.h>\n #include <sys/sysmacros.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/file.h\"\n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file sysfs.h\ndiff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\nindex 693c62a1f895..432816d0b38f 100644\n--- a/src/libcamera/v4l2_device.cpp\n+++ b/src/libcamera/v4l2_device.cpp\n@@ -16,10 +16,10 @@\n #include <sys/syscall.h>\n #include <unistd.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/sysfs.h\"\n \n /**\ndiff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp\nindex 166d93cf1d20..defdf3346f88 100644\n--- a/src/libcamera/v4l2_pixelformat.cpp\n+++ b/src/libcamera/v4l2_pixelformat.cpp\n@@ -15,8 +15,9 @@\n #include <libcamera/formats.h>\n #include <libcamera/pixel_format.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n \n /**\n * \\file v4l2_pixelformat.h\ndiff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp\nindex 8091b4cadd58..06294afffbdd 100644\n--- a/src/libcamera/v4l2_subdevice.cpp\n+++ b/src/libcamera/v4l2_subdevice.cpp\n@@ -19,9 +19,9 @@\n \n #include <libcamera/geometry.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/media_object.h\"\n \ndiff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp\nindex 12c09dc7578d..dc3fbdf735d4 100644\n--- a/src/libcamera/v4l2_videodevice.cpp\n+++ b/src/libcamera/v4l2_videodevice.cpp\n@@ -23,8 +23,9 @@\n \n #include <libcamera/file_descriptor.h>\n \n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/media_device.h\"\n #include \"libcamera/internal/media_object.h\"\n \ndiff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp\nindex 97825c715bba..d66ba8329b64 100644\n--- a/src/v4l2/v4l2_camera.cpp\n+++ b/src/v4l2/v4l2_camera.cpp\n@@ -10,7 +10,7 @@\n #include <errno.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n using namespace libcamera;\n \ndiff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h\nindex d238046250e3..205e619120ba 100644\n--- a/src/v4l2/v4l2_camera.h\n+++ b/src/v4l2/v4l2_camera.h\n@@ -17,7 +17,7 @@\n #include <libcamera/file_descriptor.h>\n #include <libcamera/framebuffer_allocator.h>\n \n-#include \"libcamera/internal/semaphore.h\"\n+#include <libcamera/platform/semaphore.h>\n \n using namespace libcamera;\n \ndiff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp\nindex a94132e2511b..4bda974484dc 100644\n--- a/src/v4l2/v4l2_camera_proxy.cpp\n+++ b/src/v4l2/v4l2_camera_proxy.cpp\n@@ -18,12 +18,12 @@\n \n #include <libcamera/camera.h>\n #include <libcamera/formats.h>\n-#include <libcamera/object.h>\n \n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/object.h>\n #include <libcamera/platform/utils.h>\n \n #include \"libcamera/internal/formats.h\"\n-#include \"libcamera/internal/log.h\"\n \n #include \"v4l2_camera.h\"\n #include \"v4l2_camera_file.h\"\ndiff --git a/src/v4l2/v4l2_compat_manager.cpp b/src/v4l2/v4l2_compat_manager.cpp\nindex 1ab706b9a60f..0e8422f0f5af 100644\n--- a/src/v4l2/v4l2_compat_manager.cpp\n+++ b/src/v4l2/v4l2_compat_manager.cpp\n@@ -22,10 +22,9 @@\n #include <libcamera/camera.h>\n #include <libcamera/camera_manager.h>\n \n+#include <libcamera/platform/log.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/log.h\"\n-\n #include \"v4l2_camera_file.h\"\n \n using namespace libcamera;\ndiff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp\nindex 61f4eb92ae95..0bc1c3c2c1c5 100644\n--- a/test/camera/buffer_import.cpp\n+++ b/test/camera/buffer_import.cpp\n@@ -12,11 +12,12 @@\n #include <numeric>\n #include <vector>\n \n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/device_enumerator.h\"\n-#include \"libcamera/internal/event_dispatcher.h\"\n #include \"libcamera/internal/media_device.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n #include \"libcamera/internal/v4l2_videodevice.h\"\n \n #include \"buffer_source.h\"\ndiff --git a/test/camera/capture.cpp b/test/camera/capture.cpp\nindex c4bc21100777..45509a548b06 100644\n--- a/test/camera/capture.cpp\n+++ b/test/camera/capture.cpp\n@@ -9,9 +9,9 @@\n \n #include <libcamera/framebuffer_allocator.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n \n #include \"camera_test.h\"\n #include \"test.h\"\ndiff --git a/test/event-dispatcher.cpp b/test/event-dispatcher.cpp\nindex 8ae05ac62985..455e549bc195 100644\n--- a/test/event-dispatcher.cpp\n+++ b/test/event-dispatcher.cpp\n@@ -10,9 +10,9 @@\n #include <signal.h>\n #include <sys/time.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n \n #include \"test.h\"\n \ndiff --git a/test/event-thread.cpp b/test/event-thread.cpp\nindex aeb8b3bf4bac..c54c072e457d 100644\n--- a/test/event-thread.cpp\n+++ b/test/event-thread.cpp\n@@ -10,9 +10,10 @@\n #include <string.h>\n #include <unistd.h>\n \n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \ndiff --git a/test/event.cpp b/test/event.cpp\nindex 1f16c97bbab5..f52b887bd77f 100644\n--- a/test/event.cpp\n+++ b/test/event.cpp\n@@ -9,10 +9,11 @@\n #include <string.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/event_notifier.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \ndiff --git a/test/hotplug-cameras.cpp b/test/hotplug-cameras.cpp\nindex 94cb859352ec..514718214317 100644\n--- a/test/hotplug-cameras.cpp\n+++ b/test/hotplug-cameras.cpp\n@@ -14,10 +14,11 @@\n #include <libcamera/camera.h>\n #include <libcamera/camera_manager.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/file.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \ndiff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp\nindex d6ca6f5137b0..839294dee7ee 100644\n--- a/test/ipa/ipa_interface_test.cpp\n+++ b/test/ipa/ipa_interface_test.cpp\n@@ -14,15 +14,16 @@\n \n #include <libcamera/ipa/vimc_ipa_proxy.h>\n \n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/device_enumerator.h\"\n-#include \"libcamera/internal/event_dispatcher.h\"\n #include \"libcamera/internal/event_notifier.h\"\n #include \"libcamera/internal/ipa_manager.h\"\n #include \"libcamera/internal/ipa_module.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n #include \"libcamera/internal/process.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \ndiff --git a/test/ipc/unixsocket.cpp b/test/ipc/unixsocket.cpp\nindex 80157b342795..6f8e44846eeb 100644\n--- a/test/ipc/unixsocket.cpp\n+++ b/test/ipc/unixsocket.cpp\n@@ -16,10 +16,11 @@\n #include <sys/wait.h>\n #include <unistd.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/ipc_unixsocket.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \ndiff --git a/test/ipc/unixsocket_ipc.cpp b/test/ipc/unixsocket_ipc.cpp\nindex 21a5580db7fe..0eaf35ac58c3 100644\n--- a/test/ipc/unixsocket_ipc.cpp\n+++ b/test/ipc/unixsocket_ipc.cpp\n@@ -15,19 +15,18 @@\n #include <sys/wait.h>\n #include <unistd.h>\n \n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n #include \"libcamera/internal/ipa_data_serializer.h\"\n #include \"libcamera/internal/ipc_pipe.h\"\n #include \"libcamera/internal/ipc_pipe_unixsocket.h\"\n #include \"libcamera/internal/process.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \n-\n using namespace std;\n using namespace libcamera;\n \ndiff --git a/test/log/log_api.cpp b/test/log/log_api.cpp\nindex ae3c607a6881..d7340c580583 100644\n--- a/test/log/log_api.cpp\n+++ b/test/log/log_api.cpp\n@@ -18,7 +18,7 @@\n \n #include <libcamera/logging.h>\n \n-#include \"libcamera/internal/log.h\"\n+#include <libcamera/platform/log.h>\n \n #include \"test.h\"\n \ndiff --git a/test/log/log_process.cpp b/test/log/log_process.cpp\nindex 43c269dc0176..32d45daf1775 100644\n--- a/test/log/log_process.cpp\n+++ b/test/log/log_process.cpp\n@@ -16,13 +16,13 @@\n \n #include <libcamera/logging.h>\n \n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/process.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \ndiff --git a/test/message.cpp b/test/message.cpp\nindex 9553ba8cbaed..73159bd98d77 100644\n--- a/test/message.cpp\n+++ b/test/message.cpp\n@@ -9,8 +9,8 @@\n #include <iostream>\n #include <thread>\n \n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/thread.h>\n \n #include \"test.h\"\n \ndiff --git a/test/object-delete.cpp b/test/object-delete.cpp\nindex a1a6f5ccefd5..0633adcec95a 100644\n--- a/test/object-delete.cpp\n+++ b/test/object-delete.cpp\n@@ -7,9 +7,8 @@\n \n #include <iostream>\n \n-#include <libcamera/object.h>\n-\n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/thread.h>\n \n #include \"test.h\"\n \ndiff --git a/test/object-invoke.cpp b/test/object-invoke.cpp\nindex a6f816f395eb..aceae99b8784 100644\n--- a/test/object-invoke.cpp\n+++ b/test/object-invoke.cpp\n@@ -8,10 +8,9 @@\n #include <iostream>\n #include <thread>\n \n-#include <libcamera/object.h>\n-\n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/thread.h>\n \n #include \"test.h\"\n \ndiff --git a/test/object.cpp b/test/object.cpp\nindex 264659b405d9..a6a24e1d3d93 100644\n--- a/test/object.cpp\n+++ b/test/object.cpp\n@@ -7,10 +7,9 @@\n \n #include <iostream>\n \n-#include <libcamera/object.h>\n-\n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/thread.h>\n \n #include \"test.h\"\n \ndiff --git a/test/process/process_test.cpp b/test/process/process_test.cpp\nindex 54b2b8fda2b5..e56c52ddba8c 100644\n--- a/test/process/process_test.cpp\n+++ b/test/process/process_test.cpp\n@@ -9,12 +9,13 @@\n #include <unistd.h>\n #include <vector>\n \n+\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n #include \"libcamera/internal/process.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"test.h\"\n \ndiff --git a/test/serialization/ipa_data_serializer_test.cpp b/test/serialization/ipa_data_serializer_test.cpp\nindex dbbba8912386..d35f700616e2 100644\n--- a/test/serialization/ipa_data_serializer_test.cpp\n+++ b/test/serialization/ipa_data_serializer_test.cpp\n@@ -17,13 +17,14 @@\n #include <unistd.h>\n #include <vector>\n \n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/device_enumerator.h\"\n #include \"libcamera/internal/ipa_data_serializer.h\"\n #include \"libcamera/internal/ipa_manager.h\"\n #include \"libcamera/internal/ipa_module.h\"\n #include \"libcamera/internal/pipeline_handler.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n \n #include \"serialization_test.h\"\n #include \"test.h\"\ndiff --git a/test/signal-threads.cpp b/test/signal-threads.cpp\nindex c3145aebe85f..85960245114f 100644\n--- a/test/signal-threads.cpp\n+++ b/test/signal-threads.cpp\n@@ -9,11 +9,10 @@\n #include <iostream>\n #include <thread>\n \n+#include <libcamera/platform/message.h>\n+#include <libcamera/platform/thread.h>\n #include <libcamera/platform/utils.h>\n \n-#include \"libcamera/internal/message.h\"\n-#include \"libcamera/internal/thread.h\"\n-\n #include \"test.h\"\n \n using namespace std;\ndiff --git a/test/signal.cpp b/test/signal.cpp\nindex f83ceb05f091..ac0157a3fae9 100644\n--- a/test/signal.cpp\n+++ b/test/signal.cpp\n@@ -8,8 +8,8 @@\n #include <iostream>\n #include <string.h>\n \n-#include <libcamera/object.h>\n-#include <libcamera/signal.h>\n+#include <libcamera/platform/object.h>\n+#include <libcamera/platform/signal.h>\n \n #include \"test.h\"\n \ndiff --git a/test/threads.cpp b/test/threads.cpp\nindex e0c50dc90a65..2930054530db 100644\n--- a/test/threads.cpp\n+++ b/test/threads.cpp\n@@ -10,7 +10,7 @@\n #include <memory>\n #include <thread>\n \n-#include \"libcamera/internal/thread.h\"\n+#include <libcamera/platform/thread.h>\n \n #include \"test.h\"\n \ndiff --git a/test/timer-thread.cpp b/test/timer-thread.cpp\nindex be29eee1bdb6..07c04e379722 100644\n--- a/test/timer-thread.cpp\n+++ b/test/timer-thread.cpp\n@@ -8,9 +8,9 @@\n #include <chrono>\n #include <iostream>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n \n #include \"test.h\"\n \ndiff --git a/test/timer.cpp b/test/timer.cpp\nindex fc90b11040d8..ce188c47457e 100644\n--- a/test/timer.cpp\n+++ b/test/timer.cpp\n@@ -8,9 +8,9 @@\n #include <chrono>\n #include <iostream>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n \n #include \"test.h\"\n \ndiff --git a/test/v4l2_videodevice/buffer_sharing.cpp b/test/v4l2_videodevice/buffer_sharing.cpp\nindex c75259be0d10..82e9edddc10d 100644\n--- a/test/v4l2_videodevice/buffer_sharing.cpp\n+++ b/test/v4l2_videodevice/buffer_sharing.cpp\n@@ -14,9 +14,9 @@\n \n #include <libcamera/buffer.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n \n #include \"v4l2_videodevice_test.h\"\n \ndiff --git a/test/v4l2_videodevice/capture_async.cpp b/test/v4l2_videodevice/capture_async.cpp\nindex accdb34a699c..f1336968f8fd 100644\n--- a/test/v4l2_videodevice/capture_async.cpp\n+++ b/test/v4l2_videodevice/capture_async.cpp\n@@ -9,9 +9,9 @@\n \n #include <libcamera/buffer.h>\n \n-#include \"libcamera/internal/event_dispatcher.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n \n #include \"v4l2_videodevice_test.h\"\n \ndiff --git a/test/v4l2_videodevice/v4l2_m2mdevice.cpp b/test/v4l2_videodevice/v4l2_m2mdevice.cpp\nindex e0f068082c01..b9b3ec8d61d2 100644\n--- a/test/v4l2_videodevice/v4l2_m2mdevice.cpp\n+++ b/test/v4l2_videodevice/v4l2_m2mdevice.cpp\n@@ -9,11 +9,12 @@\n \n #include <libcamera/buffer.h>\n \n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/timer.h>\n+\n #include \"libcamera/internal/device_enumerator.h\"\n-#include \"libcamera/internal/event_dispatcher.h\"\n #include \"libcamera/internal/media_device.h\"\n-#include \"libcamera/internal/thread.h\"\n-#include \"libcamera/internal/timer.h\"\n #include \"libcamera/internal/v4l2_videodevice.h\"\n \n #include \"test.h\"\ndiff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl\nindex dc6748153445..e92dc4d1fec4 100644\n--- a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl\n+++ b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl\n@@ -23,6 +23,9 @@\n #include <libcamera/ipa/{{module_name}}_ipa_interface.h>\n #include <libcamera/ipa/{{module_name}}_ipa_serializer.h>\n \n+#include <libcamera/platform/log.h>\n+#include <libcamera/platform/thread.h>\n+\n #include \"libcamera/internal/control_serializer.h\"\n #include \"libcamera/internal/ipa_data_serializer.h\"\n #include \"libcamera/internal/ipa_module.h\"\n@@ -30,9 +33,7 @@\n #include \"libcamera/internal/ipc_pipe.h\"\n #include \"libcamera/internal/ipc_pipe_unixsocket.h\"\n #include \"libcamera/internal/ipc_unixsocket.h\"\n-#include \"libcamera/internal/log.h\"\n #include \"libcamera/internal/process.h\"\n-#include \"libcamera/internal/thread.h\"\n \n namespace libcamera {\n \ndiff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\nindex 017b870c9dad..190b68559319 100644\n--- a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\n+++ b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\n@@ -19,12 +19,13 @@\n #include <libcamera/ipa/ipa_interface.h>\n #include <libcamera/ipa/{{module_name}}_ipa_interface.h>\n \n+#include <libcamera/platform/thread.h>\n+\n #include \"libcamera/internal/control_serializer.h\"\n #include \"libcamera/internal/ipa_proxy.h\"\n #include \"libcamera/internal/ipc_pipe.h\"\n #include \"libcamera/internal/ipc_pipe_unixsocket.h\"\n #include \"libcamera/internal/ipc_unixsocket.h\"\n-#include \"libcamera/internal/thread.h\"\n \n namespace libcamera {\n {%- if has_namespace %}\ndiff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl b/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl\nindex 8a57b6cc8b34..0fe868748e04 100644\n--- a/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl\n+++ b/utils/ipc/generators/libcamera_templates/module_ipa_proxy_worker.cpp.tmpl\n@@ -26,17 +26,18 @@\n #include <libcamera/ipa/{{module_name}}_ipa_serializer.h>\n #include <libcamera/logging.h>\n \n+#include <libcamera/platform/event_dispatcher.h>\n+#include <libcamera/platform/thread.h>\n+#include <libcamera/platform/log.h>\n+\n #include \"libcamera/internal/camera_sensor.h\"\n #include \"libcamera/internal/control_serializer.h\"\n-#include \"libcamera/internal/event_dispatcher.h\"\n #include \"libcamera/internal/ipa_data_serializer.h\"\n #include \"libcamera/internal/ipa_module.h\"\n #include \"libcamera/internal/ipa_proxy.h\"\n #include \"libcamera/internal/ipc_pipe.h\"\n #include \"libcamera/internal/ipc_pipe_unixsocket.h\"\n #include \"libcamera/internal/ipc_unixsocket.h\"\n-#include \"libcamera/internal/log.h\"\n-#include \"libcamera/internal/thread.h\"\n \n using namespace libcamera;\n \n", "prefixes": [ "libcamera-devel", "4/6" ] }