[libcamera-devel,v2,1/3] libcamera: Move internal headers to include/libcamera/internal/

Message ID 20200515163505.24330-1-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • [libcamera-devel,v2,1/3] libcamera: Move internal headers to include/libcamera/internal/
Related show

Commit Message

Laurent Pinchart May 15, 2020, 4:35 p.m. UTC
The libcamera internal headers are located in src/libcamera/include/.
The directory is added to the compiler headers search path with a meson
include_directories() directive, and internal headers are included with
(e.g. for the internal semaphore.h header)

  #include "semaphore.h"

All was well, until libcxx decided to implement the C++20
synchronization library. The __threading_support header gained a

  #include <semaphore.h>

to include the pthread's semaphore support. As include_directories()
adds src/libcamera/include/ to the compiler search path with -I, the
internal semaphore.h is included instead of the pthread version.
Needless to say, the compiler isn't happy.

Thread options have been considered to fix this issue:

- Use -iquote instead of -I. The -iquote option instructs gcc to only
  consider the header search path for headers included with the ""
  version. Meson unfortunately doesn't support this option.

- Rename the internal semaphore.h header. This was deemed to be the
  beginning of a long whack-a-mole game, where namespace clashes with
  system libraries would appear over time (possibly dependent on
  particular system configurations) and would need to be constantly
  fixed.

- Move the internal headers to another directory to create a unique
  namespace through path components. This causes lots of churn in all
  the existing source files through the all project.

The first option would be best, but isn't available to us due to missing
support in meson. Even if -iquote support was added, we would need to
fix the problem before a new version of meson containing the required
support would be released.

The third option is thus the only practical solution available. Bite the
bullet, and do it, moving headers to include/libcamera/internal/.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 Documentation/Doxyfile.in                     |  6 +++---
 .../libcamera/internal}/byte_stream_buffer.h  |  0
 .../libcamera/internal}/camera_controls.h     |  2 +-
 .../libcamera/internal}/camera_sensor.h       |  4 ++--
 .../libcamera/internal}/control_serializer.h  |  0
 .../libcamera/internal}/control_validator.h   |  0
 .../libcamera/internal}/device_enumerator.h   |  0
 .../internal}/device_enumerator_sysfs.h       |  2 +-
 .../internal}/device_enumerator_udev.h        |  2 +-
 .../internal}/event_dispatcher_poll.h         |  0
 .../libcamera/internal}/file.h                |  0
 .../libcamera/internal}/formats.h             |  2 +-
 .../libcamera/internal}/ipa_context_wrapper.h |  2 +-
 .../libcamera/internal}/ipa_manager.h         |  6 +++---
 .../libcamera/internal}/ipa_module.h          |  4 ++--
 .../libcamera/internal}/ipa_proxy.h           |  0
 .../libcamera/internal}/ipc_unixsocket.h      |  0
 .../libcamera/internal}/log.h                 |  2 +-
 .../libcamera/internal}/media_device.h        |  4 ++--
 .../libcamera/internal}/media_object.h        |  0
 .../libcamera/internal}/meson.build           |  0
 .../libcamera/internal}/message.h             |  0
 .../libcamera/internal}/pipeline_handler.h    |  2 +-
 .../libcamera/internal}/process.h             |  0
 .../libcamera/internal}/pub_key.h             |  0
 .../libcamera/internal}/semaphore.h           |  2 +-
 .../libcamera/internal}/thread.h              |  2 +-
 .../libcamera/internal}/utils.h               |  0
 .../libcamera/internal}/v4l2_controls.h       |  0
 .../libcamera/internal}/v4l2_device.h         |  4 ++--
 .../libcamera/internal}/v4l2_pixelformat.h    |  0
 .../libcamera/internal}/v4l2_subdevice.h      |  8 ++++----
 .../libcamera/internal}/v4l2_videodevice.h    |  8 ++++----
 include/libcamera/meson.build                 |  2 ++
 src/android/camera3_hal.cpp                   |  3 ++-
 src/android/camera_device.cpp                 |  4 ++--
 src/android/camera_device.h                   |  2 +-
 src/android/camera_hal_manager.cpp            |  2 +-
 src/android/camera_metadata.cpp               |  2 +-
 src/ipa/libipa/ipa_interface_wrapper.cpp      |  4 ++--
 src/ipa/libipa/ipa_interface_wrapper.h        |  2 +-
 src/ipa/meson.build                           |  1 -
 src/ipa/raspberrypi/cam_helper.cpp            |  4 ++--
 src/ipa/raspberrypi/cam_helper.hpp            |  2 +-
 src/ipa/raspberrypi/raspberrypi.cpp           |  8 ++++----
 src/ipa/rkisp1/rkisp1.cpp                     |  4 ++--
 src/ipa/vimc/vimc.cpp                         |  4 ++--
 src/libcamera/bound_method.cpp                |  6 +++---
 src/libcamera/buffer.cpp                      |  2 +-
 src/libcamera/byte_stream_buffer.cpp          |  4 ++--
 src/libcamera/camera.cpp                      |  6 +++---
 src/libcamera/camera_controls.cpp             |  2 +-
 src/libcamera/camera_manager.cpp              | 12 +++++------
 src/libcamera/camera_sensor.cpp               |  8 ++++----
 src/libcamera/control_serializer.cpp          |  6 +++---
 src/libcamera/control_validator.cpp           |  2 +-
 src/libcamera/controls.cpp                    |  6 +++---
 src/libcamera/device_enumerator.cpp           | 10 +++++-----
 src/libcamera/device_enumerator_sysfs.cpp     |  6 +++---
 src/libcamera/device_enumerator_udev.cpp      |  6 +++---
 src/libcamera/event_dispatcher.cpp            |  2 +-
 src/libcamera/event_dispatcher_poll.cpp       |  8 ++++----
 src/libcamera/event_notifier.cpp              |  4 ++--
 src/libcamera/file.cpp                        |  4 ++--
 src/libcamera/file_descriptor.cpp             |  2 +-
 src/libcamera/formats.cpp                     |  4 ++--
 src/libcamera/framebuffer_allocator.cpp       |  4 ++--
 src/libcamera/ipa_context_wrapper.cpp         |  8 ++++----
 src/libcamera/ipa_manager.cpp                 | 14 ++++++-------
 src/libcamera/ipa_module.cpp                  | 10 +++++-----
 src/libcamera/ipa_proxy.cpp                   |  8 ++++----
 src/libcamera/ipa_pub_key.cpp.in              |  2 +-
 src/libcamera/ipc_unixsocket.cpp              |  4 ++--
 src/libcamera/log.cpp                         |  6 +++---
 src/libcamera/media_device.cpp                |  4 ++--
 src/libcamera/media_object.cpp                |  6 +++---
 src/libcamera/meson.build                     |  5 -----
 src/libcamera/message.cpp                     |  4 ++--
 src/libcamera/object.cpp                      | 10 +++++-----
 src/libcamera/pipeline/ipu3/ipu3.cpp          | 18 ++++++++---------
 .../pipeline/raspberrypi/raspberrypi.cpp      | 17 ++++++++--------
 .../pipeline/raspberrypi/staggered_ctrl.cpp   |  6 +++---
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 19 +++++++++---------
 src/libcamera/pipeline/rkisp1/timeline.cpp    |  2 +-
 src/libcamera/pipeline/rkisp1/timeline.h      |  2 +-
 src/libcamera/pipeline/simple/converter.cpp   |  6 +++---
 src/libcamera/pipeline/simple/simple.cpp      | 14 ++++++-------
 src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  | 14 ++++++-------
 src/libcamera/pipeline/vimc/vimc.cpp          | 20 +++++++++----------
 src/libcamera/pipeline_handler.cpp            | 10 +++++-----
 src/libcamera/process.cpp                     |  6 +++---
 src/libcamera/proxy/ipa_proxy_linux.cpp       | 10 +++++-----
 src/libcamera/proxy/ipa_proxy_thread.cpp      | 10 +++++-----
 .../proxy/worker/ipa_proxy_linux_worker.cpp   |  8 ++++----
 src/libcamera/proxy/worker/meson.build        |  1 -
 src/libcamera/pub_key.cpp                     |  2 +-
 src/libcamera/request.cpp                     |  4 ++--
 src/libcamera/semaphore.cpp                   |  4 ++--
 src/libcamera/signal.cpp                      |  2 +-
 src/libcamera/stream.cpp                      |  4 ++--
 src/libcamera/thread.cpp                      |  8 ++++----
 src/libcamera/timer.cpp                       |  8 ++++----
 src/libcamera/utils.cpp                       |  2 +-
 src/libcamera/v4l2_controls.cpp               |  2 +-
 src/libcamera/v4l2_device.cpp                 |  8 ++++----
 src/libcamera/v4l2_pixelformat.cpp            |  6 +++---
 src/libcamera/v4l2_subdevice.cpp              | 10 +++++-----
 src/libcamera/v4l2_videodevice.cpp            | 10 +++++-----
 src/v4l2/meson.build                          |  1 -
 src/v4l2/v4l2_camera.cpp                      |  2 +-
 src/v4l2/v4l2_camera.h                        |  2 +-
 src/v4l2/v4l2_camera_proxy.cpp                |  5 +++--
 src/v4l2/v4l2_compat_manager.cpp              |  2 +-
 test/byte-stream-buffer.cpp                   |  3 ++-
 test/camera-sensor.cpp                        | 10 +++++-----
 test/camera/buffer_import.cpp                 |  6 +++---
 test/controls/control_info_map.cpp            |  2 +-
 test/controls/control_list.cpp                |  2 +-
 test/event-dispatcher.cpp                     |  3 ++-
 test/event-thread.cpp                         |  3 ++-
 test/event.cpp                                |  3 ++-
 test/file-descriptor.cpp                      |  3 ++-
 test/file.cpp                                 |  3 ++-
 test/ipa/ipa_interface_test.cpp               | 11 +++++-----
 test/ipa/ipa_module_test.cpp                  |  2 +-
 test/ipa/ipa_wrappers_test.cpp                | 10 +++++-----
 test/ipc/unixsocket.cpp                       |  7 ++++---
 test/libtest/buffer_source.cpp                |  2 +-
 test/libtest/buffer_source.h                  |  4 ++--
 test/libtest/meson.build                      |  1 -
 test/log/log_api.cpp                          |  3 ++-
 test/log/log_process.cpp                      |  9 +++++----
 test/media_device/media_device_print_test.cpp |  2 +-
 test/media_device/media_device_test.h         |  4 ++--
 test/message.cpp                              |  5 +++--
 test/object-invoke.cpp                        |  3 ++-
 test/object.cpp                               |  4 ++--
 test/pipeline/ipu3/ipu3_pipeline_test.cpp     |  7 ++++---
 test/pipeline/rkisp1/rkisp1_pipeline_test.cpp |  7 ++++---
 test/process/process_test.cpp                 |  7 ++++---
 test/serialization/control_serialization.cpp  |  5 +++--
 test/signal-threads.cpp                       |  7 ++++---
 test/threads.cpp                              |  3 ++-
 test/timer-thread.cpp                         |  3 ++-
 test/timer.cpp                                |  3 ++-
 test/utils.cpp                                |  3 ++-
 test/v4l2_subdevice/list_formats.cpp          |  3 ++-
 test/v4l2_subdevice/test_formats.cpp          |  3 ++-
 test/v4l2_subdevice/v4l2_subdevice_test.cpp   |  7 ++++---
 test/v4l2_subdevice/v4l2_subdevice_test.h     |  7 ++++---
 test/v4l2_videodevice/buffer_sharing.cpp      |  3 ++-
 test/v4l2_videodevice/capture_async.cpp       |  3 ++-
 test/v4l2_videodevice/controls.cpp            |  2 +-
 test/v4l2_videodevice/formats.cpp             |  4 ++--
 test/v4l2_videodevice/v4l2_m2mdevice.cpp      |  8 ++++----
 .../v4l2_videodevice_test.cpp                 |  6 +++---
 test/v4l2_videodevice/v4l2_videodevice_test.h | 12 +++++------
 157 files changed, 384 insertions(+), 360 deletions(-)
 rename {src/libcamera/include => include/libcamera/internal}/byte_stream_buffer.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/camera_controls.h (91%)
 rename {src/libcamera/include => include/libcamera/internal}/camera_sensor.h (96%)
 rename {src/libcamera/include => include/libcamera/internal}/control_serializer.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/control_validator.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/device_enumerator.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/device_enumerator_sysfs.h (92%)
 rename {src/libcamera/include => include/libcamera/internal}/device_enumerator_udev.h (96%)
 rename {src/libcamera/include => include/libcamera/internal}/event_dispatcher_poll.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/file.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/formats.h (96%)
 rename {src/libcamera/include => include/libcamera/internal}/ipa_context_wrapper.h (96%)
 rename {src/libcamera/include => include/libcamera/internal}/ipa_manager.h (88%)
 rename {src/libcamera/include => include/libcamera/internal}/ipa_module.h (93%)
 rename {src/libcamera/include => include/libcamera/internal}/ipa_proxy.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/ipc_unixsocket.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/log.h (98%)
 rename {src/libcamera/include => include/libcamera/internal}/media_device.h (96%)
 rename {src/libcamera/include => include/libcamera/internal}/media_object.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/meson.build (100%)
 rename {src/libcamera/include => include/libcamera/internal}/message.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/pipeline_handler.h (98%)
 rename {src/libcamera/include => include/libcamera/internal}/process.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/pub_key.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/semaphore.h (94%)
 rename {src/libcamera/include => include/libcamera/internal}/thread.h (97%)
 rename {src/libcamera/include => include/libcamera/internal}/utils.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/v4l2_controls.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/v4l2_device.h (94%)
 rename {src/libcamera/include => include/libcamera/internal}/v4l2_pixelformat.h (100%)
 rename {src/libcamera/include => include/libcamera/internal}/v4l2_subdevice.h (90%)
 rename {src/libcamera/include => include/libcamera/internal}/v4l2_videodevice.h (97%)

Comments

Jacopo Mondi May 15, 2020, 4:49 p.m. UTC | #1
Hi Laurent,
  thansk for the effort

On Fri, May 15, 2020 at 07:35:02PM +0300, Laurent Pinchart wrote:
> The libcamera internal headers are located in src/libcamera/include/.
> The directory is added to the compiler headers search path with a meson
> include_directories() directive, and internal headers are included with
> (e.g. for the internal semaphore.h header)
>
>   #include "semaphore.h"
>
> All was well, until libcxx decided to implement the C++20
> synchronization library. The __threading_support header gained a
>
>   #include <semaphore.h>
>
> to include the pthread's semaphore support. As include_directories()
> adds src/libcamera/include/ to the compiler search path with -I, the
> internal semaphore.h is included instead of the pthread version.
> Needless to say, the compiler isn't happy.
>
> Thread options have been considered to fix this issue:

Three ?

>
> - Use -iquote instead of -I. The -iquote option instructs gcc to only
>   consider the header search path for headers included with the ""
>   version. Meson unfortunately doesn't support this option.
>
> - Rename the internal semaphore.h header. This was deemed to be the
>   beginning of a long whack-a-mole game, where namespace clashes with
>   system libraries would appear over time (possibly dependent on
>   particular system configurations) and would need to be constantly
>   fixed.
>
> - Move the internal headers to another directory to create a unique
>   namespace through path components. This causes lots of churn in all
>   the existing source files through the all project.
>
> The first option would be best, but isn't available to us due to missing
> support in meson. Even if -iquote support was added, we would need to
> fix the problem before a new version of meson containing the required
> support would be released.
>
> The third option is thus the only practical solution available. Bite the
> bullet, and do it, moving headers to include/libcamera/internal/.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

I like the new location and my comments on v1 do not apply anymore
here, so
Acked-by: Jacopo Mondi <jacopo@jmondi.org>

Thanks
  j

> ---
>  Documentation/Doxyfile.in                     |  6 +++---
>  .../libcamera/internal}/byte_stream_buffer.h  |  0
>  .../libcamera/internal}/camera_controls.h     |  2 +-
>  .../libcamera/internal}/camera_sensor.h       |  4 ++--
>  .../libcamera/internal}/control_serializer.h  |  0
>  .../libcamera/internal}/control_validator.h   |  0
>  .../libcamera/internal}/device_enumerator.h   |  0
>  .../internal}/device_enumerator_sysfs.h       |  2 +-
>  .../internal}/device_enumerator_udev.h        |  2 +-
>  .../internal}/event_dispatcher_poll.h         |  0
>  .../libcamera/internal}/file.h                |  0
>  .../libcamera/internal}/formats.h             |  2 +-
>  .../libcamera/internal}/ipa_context_wrapper.h |  2 +-
>  .../libcamera/internal}/ipa_manager.h         |  6 +++---
>  .../libcamera/internal}/ipa_module.h          |  4 ++--
>  .../libcamera/internal}/ipa_proxy.h           |  0
>  .../libcamera/internal}/ipc_unixsocket.h      |  0
>  .../libcamera/internal}/log.h                 |  2 +-
>  .../libcamera/internal}/media_device.h        |  4 ++--
>  .../libcamera/internal}/media_object.h        |  0
>  .../libcamera/internal}/meson.build           |  0
>  .../libcamera/internal}/message.h             |  0
>  .../libcamera/internal}/pipeline_handler.h    |  2 +-
>  .../libcamera/internal}/process.h             |  0
>  .../libcamera/internal}/pub_key.h             |  0
>  .../libcamera/internal}/semaphore.h           |  2 +-
>  .../libcamera/internal}/thread.h              |  2 +-
>  .../libcamera/internal}/utils.h               |  0
>  .../libcamera/internal}/v4l2_controls.h       |  0
>  .../libcamera/internal}/v4l2_device.h         |  4 ++--
>  .../libcamera/internal}/v4l2_pixelformat.h    |  0
>  .../libcamera/internal}/v4l2_subdevice.h      |  8 ++++----
>  .../libcamera/internal}/v4l2_videodevice.h    |  8 ++++----
>  include/libcamera/meson.build                 |  2 ++
>  src/android/camera3_hal.cpp                   |  3 ++-
>  src/android/camera_device.cpp                 |  4 ++--
>  src/android/camera_device.h                   |  2 +-
>  src/android/camera_hal_manager.cpp            |  2 +-
>  src/android/camera_metadata.cpp               |  2 +-
>  src/ipa/libipa/ipa_interface_wrapper.cpp      |  4 ++--
>  src/ipa/libipa/ipa_interface_wrapper.h        |  2 +-
>  src/ipa/meson.build                           |  1 -
>  src/ipa/raspberrypi/cam_helper.cpp            |  4 ++--
>  src/ipa/raspberrypi/cam_helper.hpp            |  2 +-
>  src/ipa/raspberrypi/raspberrypi.cpp           |  8 ++++----
>  src/ipa/rkisp1/rkisp1.cpp                     |  4 ++--
>  src/ipa/vimc/vimc.cpp                         |  4 ++--
>  src/libcamera/bound_method.cpp                |  6 +++---
>  src/libcamera/buffer.cpp                      |  2 +-
>  src/libcamera/byte_stream_buffer.cpp          |  4 ++--
>  src/libcamera/camera.cpp                      |  6 +++---
>  src/libcamera/camera_controls.cpp             |  2 +-
>  src/libcamera/camera_manager.cpp              | 12 +++++------
>  src/libcamera/camera_sensor.cpp               |  8 ++++----
>  src/libcamera/control_serializer.cpp          |  6 +++---
>  src/libcamera/control_validator.cpp           |  2 +-
>  src/libcamera/controls.cpp                    |  6 +++---
>  src/libcamera/device_enumerator.cpp           | 10 +++++-----
>  src/libcamera/device_enumerator_sysfs.cpp     |  6 +++---
>  src/libcamera/device_enumerator_udev.cpp      |  6 +++---
>  src/libcamera/event_dispatcher.cpp            |  2 +-
>  src/libcamera/event_dispatcher_poll.cpp       |  8 ++++----
>  src/libcamera/event_notifier.cpp              |  4 ++--
>  src/libcamera/file.cpp                        |  4 ++--
>  src/libcamera/file_descriptor.cpp             |  2 +-
>  src/libcamera/formats.cpp                     |  4 ++--
>  src/libcamera/framebuffer_allocator.cpp       |  4 ++--
>  src/libcamera/ipa_context_wrapper.cpp         |  8 ++++----
>  src/libcamera/ipa_manager.cpp                 | 14 ++++++-------
>  src/libcamera/ipa_module.cpp                  | 10 +++++-----
>  src/libcamera/ipa_proxy.cpp                   |  8 ++++----
>  src/libcamera/ipa_pub_key.cpp.in              |  2 +-
>  src/libcamera/ipc_unixsocket.cpp              |  4 ++--
>  src/libcamera/log.cpp                         |  6 +++---
>  src/libcamera/media_device.cpp                |  4 ++--
>  src/libcamera/media_object.cpp                |  6 +++---
>  src/libcamera/meson.build                     |  5 -----
>  src/libcamera/message.cpp                     |  4 ++--
>  src/libcamera/object.cpp                      | 10 +++++-----
>  src/libcamera/pipeline/ipu3/ipu3.cpp          | 18 ++++++++---------
>  .../pipeline/raspberrypi/raspberrypi.cpp      | 17 ++++++++--------
>  .../pipeline/raspberrypi/staggered_ctrl.cpp   |  6 +++---
>  src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 19 +++++++++---------
>  src/libcamera/pipeline/rkisp1/timeline.cpp    |  2 +-
>  src/libcamera/pipeline/rkisp1/timeline.h      |  2 +-
>  src/libcamera/pipeline/simple/converter.cpp   |  6 +++---
>  src/libcamera/pipeline/simple/simple.cpp      | 14 ++++++-------
>  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  | 14 ++++++-------
>  src/libcamera/pipeline/vimc/vimc.cpp          | 20 +++++++++----------
>  src/libcamera/pipeline_handler.cpp            | 10 +++++-----
>  src/libcamera/process.cpp                     |  6 +++---
>  src/libcamera/proxy/ipa_proxy_linux.cpp       | 10 +++++-----
>  src/libcamera/proxy/ipa_proxy_thread.cpp      | 10 +++++-----
>  .../proxy/worker/ipa_proxy_linux_worker.cpp   |  8 ++++----
>  src/libcamera/proxy/worker/meson.build        |  1 -
>  src/libcamera/pub_key.cpp                     |  2 +-
>  src/libcamera/request.cpp                     |  4 ++--
>  src/libcamera/semaphore.cpp                   |  4 ++--
>  src/libcamera/signal.cpp                      |  2 +-
>  src/libcamera/stream.cpp                      |  4 ++--
>  src/libcamera/thread.cpp                      |  8 ++++----
>  src/libcamera/timer.cpp                       |  8 ++++----
>  src/libcamera/utils.cpp                       |  2 +-
>  src/libcamera/v4l2_controls.cpp               |  2 +-
>  src/libcamera/v4l2_device.cpp                 |  8 ++++----
>  src/libcamera/v4l2_pixelformat.cpp            |  6 +++---
>  src/libcamera/v4l2_subdevice.cpp              | 10 +++++-----
>  src/libcamera/v4l2_videodevice.cpp            | 10 +++++-----
>  src/v4l2/meson.build                          |  1 -
>  src/v4l2/v4l2_camera.cpp                      |  2 +-
>  src/v4l2/v4l2_camera.h                        |  2 +-
>  src/v4l2/v4l2_camera_proxy.cpp                |  5 +++--
>  src/v4l2/v4l2_compat_manager.cpp              |  2 +-
>  test/byte-stream-buffer.cpp                   |  3 ++-
>  test/camera-sensor.cpp                        | 10 +++++-----
>  test/camera/buffer_import.cpp                 |  6 +++---
>  test/controls/control_info_map.cpp            |  2 +-
>  test/controls/control_list.cpp                |  2 +-
>  test/event-dispatcher.cpp                     |  3 ++-
>  test/event-thread.cpp                         |  3 ++-
>  test/event.cpp                                |  3 ++-
>  test/file-descriptor.cpp                      |  3 ++-
>  test/file.cpp                                 |  3 ++-
>  test/ipa/ipa_interface_test.cpp               | 11 +++++-----
>  test/ipa/ipa_module_test.cpp                  |  2 +-
>  test/ipa/ipa_wrappers_test.cpp                | 10 +++++-----
>  test/ipc/unixsocket.cpp                       |  7 ++++---
>  test/libtest/buffer_source.cpp                |  2 +-
>  test/libtest/buffer_source.h                  |  4 ++--
>  test/libtest/meson.build                      |  1 -
>  test/log/log_api.cpp                          |  3 ++-
>  test/log/log_process.cpp                      |  9 +++++----
>  test/media_device/media_device_print_test.cpp |  2 +-
>  test/media_device/media_device_test.h         |  4 ++--
>  test/message.cpp                              |  5 +++--
>  test/object-invoke.cpp                        |  3 ++-
>  test/object.cpp                               |  4 ++--
>  test/pipeline/ipu3/ipu3_pipeline_test.cpp     |  7 ++++---
>  test/pipeline/rkisp1/rkisp1_pipeline_test.cpp |  7 ++++---
>  test/process/process_test.cpp                 |  7 ++++---
>  test/serialization/control_serialization.cpp  |  5 +++--
>  test/signal-threads.cpp                       |  7 ++++---
>  test/threads.cpp                              |  3 ++-
>  test/timer-thread.cpp                         |  3 ++-
>  test/timer.cpp                                |  3 ++-
>  test/utils.cpp                                |  3 ++-
>  test/v4l2_subdevice/list_formats.cpp          |  3 ++-
>  test/v4l2_subdevice/test_formats.cpp          |  3 ++-
>  test/v4l2_subdevice/v4l2_subdevice_test.cpp   |  7 ++++---
>  test/v4l2_subdevice/v4l2_subdevice_test.h     |  7 ++++---
>  test/v4l2_videodevice/buffer_sharing.cpp      |  3 ++-
>  test/v4l2_videodevice/capture_async.cpp       |  3 ++-
>  test/v4l2_videodevice/controls.cpp            |  2 +-
>  test/v4l2_videodevice/formats.cpp             |  4 ++--
>  test/v4l2_videodevice/v4l2_m2mdevice.cpp      |  8 ++++----
>  .../v4l2_videodevice_test.cpp                 |  6 +++---
>  test/v4l2_videodevice/v4l2_videodevice_test.h | 12 +++++------
>  157 files changed, 384 insertions(+), 360 deletions(-)
>  rename {src/libcamera/include => include/libcamera/internal}/byte_stream_buffer.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/camera_controls.h (91%)
>  rename {src/libcamera/include => include/libcamera/internal}/camera_sensor.h (96%)
>  rename {src/libcamera/include => include/libcamera/internal}/control_serializer.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/control_validator.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/device_enumerator.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/device_enumerator_sysfs.h (92%)
>  rename {src/libcamera/include => include/libcamera/internal}/device_enumerator_udev.h (96%)
>  rename {src/libcamera/include => include/libcamera/internal}/event_dispatcher_poll.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/file.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/formats.h (96%)
>  rename {src/libcamera/include => include/libcamera/internal}/ipa_context_wrapper.h (96%)
>  rename {src/libcamera/include => include/libcamera/internal}/ipa_manager.h (88%)
>  rename {src/libcamera/include => include/libcamera/internal}/ipa_module.h (93%)
>  rename {src/libcamera/include => include/libcamera/internal}/ipa_proxy.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/ipc_unixsocket.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/log.h (98%)
>  rename {src/libcamera/include => include/libcamera/internal}/media_device.h (96%)
>  rename {src/libcamera/include => include/libcamera/internal}/media_object.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/meson.build (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/message.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/pipeline_handler.h (98%)
>  rename {src/libcamera/include => include/libcamera/internal}/process.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/pub_key.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/semaphore.h (94%)
>  rename {src/libcamera/include => include/libcamera/internal}/thread.h (97%)
>  rename {src/libcamera/include => include/libcamera/internal}/utils.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/v4l2_controls.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/v4l2_device.h (94%)
>  rename {src/libcamera/include => include/libcamera/internal}/v4l2_pixelformat.h (100%)
>  rename {src/libcamera/include => include/libcamera/internal}/v4l2_subdevice.h (90%)
>  rename {src/libcamera/include => include/libcamera/internal}/v4l2_videodevice.h (97%)
>
> diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in
> index 86bcc4d00f88..c3fe5f663f7c 100644
> --- a/Documentation/Doxyfile.in
> +++ b/Documentation/Doxyfile.in
> @@ -842,10 +842,10 @@ RECURSIVE              = YES
>  # run.
>
>  EXCLUDE                = @TOP_SRCDIR@/include/libcamera/span.h \
> +			 @TOP_SRCDIR@/include/libcamera/internal/device_enumerator_sysfs.h \
> +			 @TOP_SRCDIR@/include/libcamera/internal/device_enumerator_udev.h \
>  			 @TOP_SRCDIR@/src/libcamera/device_enumerator_sysfs.cpp \
>  			 @TOP_SRCDIR@/src/libcamera/device_enumerator_udev.cpp \
> -			 @TOP_SRCDIR@/src/libcamera/include/device_enumerator_sysfs.h \
> -			 @TOP_SRCDIR@/src/libcamera/include/device_enumerator_udev.h \
>  			 @TOP_SRCDIR@/src/libcamera/pipeline/ \
>  			 @TOP_SRCDIR@/src/libcamera/proxy/
>
> @@ -2053,7 +2053,7 @@ SEARCH_INCLUDES        = YES
>  # preprocessor.
>  # This tag requires that the tag SEARCH_INCLUDES is set to YES.
>
> -INCLUDE_PATH           = "@TOP_SRCDIR@/include/libcamera" "@TOP_SRCDIR@/src/libcamera/include"
> +INCLUDE_PATH           = "@TOP_SRCDIR@/include/libcamera"
>
>  # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
>  # patterns (like *.h and *.hpp) to filter out the header-files in the
> diff --git a/src/libcamera/include/byte_stream_buffer.h b/include/libcamera/internal/byte_stream_buffer.h
> similarity index 100%
> rename from src/libcamera/include/byte_stream_buffer.h
> rename to include/libcamera/internal/byte_stream_buffer.h
> diff --git a/src/libcamera/include/camera_controls.h b/include/libcamera/internal/camera_controls.h
> similarity index 91%
> rename from src/libcamera/include/camera_controls.h
> rename to include/libcamera/internal/camera_controls.h
> index 265c1fe379db..dc8b3ba84bc4 100644
> --- a/src/libcamera/include/camera_controls.h
> +++ b/include/libcamera/internal/camera_controls.h
> @@ -7,7 +7,7 @@
>  #ifndef __LIBCAMERA_CAMERA_CONTROLS_H__
>  #define __LIBCAMERA_CAMERA_CONTROLS_H__
>
> -#include "control_validator.h"
> +#include "libcamera/internal/control_validator.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
> similarity index 96%
> rename from src/libcamera/include/camera_sensor.h
> rename to include/libcamera/internal/camera_sensor.h
> index 30cf5f34f485..d79bd9ce9d58 100644
> --- a/src/libcamera/include/camera_sensor.h
> +++ b/include/libcamera/internal/camera_sensor.h
> @@ -14,8 +14,8 @@
>  #include <libcamera/controls.h>
>  #include <libcamera/geometry.h>
>
> -#include "formats.h"
> -#include "log.h"
> +#include "libcamera/internal/formats.h"
> +#include "libcamera/internal/log.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/control_serializer.h b/include/libcamera/internal/control_serializer.h
> similarity index 100%
> rename from src/libcamera/include/control_serializer.h
> rename to include/libcamera/internal/control_serializer.h
> diff --git a/src/libcamera/include/control_validator.h b/include/libcamera/internal/control_validator.h
> similarity index 100%
> rename from src/libcamera/include/control_validator.h
> rename to include/libcamera/internal/control_validator.h
> diff --git a/src/libcamera/include/device_enumerator.h b/include/libcamera/internal/device_enumerator.h
> similarity index 100%
> rename from src/libcamera/include/device_enumerator.h
> rename to include/libcamera/internal/device_enumerator.h
> diff --git a/src/libcamera/include/device_enumerator_sysfs.h b/include/libcamera/internal/device_enumerator_sysfs.h
> similarity index 92%
> rename from src/libcamera/include/device_enumerator_sysfs.h
> rename to include/libcamera/internal/device_enumerator_sysfs.h
> index 5a5c9b0f5a31..a63e737a78d5 100644
> --- a/src/libcamera/include/device_enumerator_sysfs.h
> +++ b/include/libcamera/internal/device_enumerator_sysfs.h
> @@ -10,7 +10,7 @@
>  #include <memory>
>  #include <string>
>
> -#include "device_enumerator.h"
> +#include "libcamera/internal/device_enumerator.h"
>
>  class MediaDevice;
>
> diff --git a/src/libcamera/include/device_enumerator_udev.h b/include/libcamera/internal/device_enumerator_udev.h
> similarity index 96%
> rename from src/libcamera/include/device_enumerator_udev.h
> rename to include/libcamera/internal/device_enumerator_udev.h
> index fdce4520f33a..fdaa20968ef0 100644
> --- a/src/libcamera/include/device_enumerator_udev.h
> +++ b/include/libcamera/internal/device_enumerator_udev.h
> @@ -14,7 +14,7 @@
>  #include <string>
>  #include <sys/types.h>
>
> -#include "device_enumerator.h"
> +#include "libcamera/internal/device_enumerator.h"
>
>  struct udev;
>  struct udev_device;
> diff --git a/src/libcamera/include/event_dispatcher_poll.h b/include/libcamera/internal/event_dispatcher_poll.h
> similarity index 100%
> rename from src/libcamera/include/event_dispatcher_poll.h
> rename to include/libcamera/internal/event_dispatcher_poll.h
> diff --git a/src/libcamera/include/file.h b/include/libcamera/internal/file.h
> similarity index 100%
> rename from src/libcamera/include/file.h
> rename to include/libcamera/internal/file.h
> diff --git a/src/libcamera/include/formats.h b/include/libcamera/internal/formats.h
> similarity index 96%
> rename from src/libcamera/include/formats.h
> rename to include/libcamera/internal/formats.h
> index 291a1108aa33..4092a93ef973 100644
> --- a/src/libcamera/include/formats.h
> +++ b/include/libcamera/internal/formats.h
> @@ -14,7 +14,7 @@
>  #include <libcamera/geometry.h>
>  #include <libcamera/pixelformats.h>
>
> -#include "v4l2_pixelformat.h"
> +#include "libcamera/internal/v4l2_pixelformat.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/ipa_context_wrapper.h b/include/libcamera/internal/ipa_context_wrapper.h
> similarity index 96%
> rename from src/libcamera/include/ipa_context_wrapper.h
> rename to include/libcamera/internal/ipa_context_wrapper.h
> index 0db022ef5a1b..a717d4067498 100644
> --- a/src/libcamera/include/ipa_context_wrapper.h
> +++ b/include/libcamera/internal/ipa_context_wrapper.h
> @@ -9,7 +9,7 @@
>
>  #include <ipa/ipa_interface.h>
>
> -#include "control_serializer.h"
> +#include "libcamera/internal/control_serializer.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/ipa_manager.h b/include/libcamera/internal/ipa_manager.h
> similarity index 88%
> rename from src/libcamera/include/ipa_manager.h
> rename to include/libcamera/internal/ipa_manager.h
> index aa6b9adb1f87..f07d91fc7bbf 100644
> --- a/src/libcamera/include/ipa_manager.h
> +++ b/include/libcamera/internal/ipa_manager.h
> @@ -13,9 +13,9 @@
>  #include <ipa/ipa_interface.h>
>  #include <ipa/ipa_module_info.h>
>
> -#include "ipa_module.h"
> -#include "pipeline_handler.h"
> -#include "pub_key.h"
> +#include "libcamera/internal/ipa_module.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/pub_key.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/ipa_module.h b/include/libcamera/internal/ipa_module.h
> similarity index 93%
> rename from src/libcamera/include/ipa_module.h
> rename to include/libcamera/internal/ipa_module.h
> index 15022e19edce..2f569db0b848 100644
> --- a/src/libcamera/include/ipa_module.h
> +++ b/include/libcamera/internal/ipa_module.h
> @@ -14,8 +14,8 @@
>  #include <ipa/ipa_interface.h>
>  #include <ipa/ipa_module_info.h>
>
> -#include "log.h"
> -#include "pipeline_handler.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/pipeline_handler.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/ipa_proxy.h b/include/libcamera/internal/ipa_proxy.h
> similarity index 100%
> rename from src/libcamera/include/ipa_proxy.h
> rename to include/libcamera/internal/ipa_proxy.h
> diff --git a/src/libcamera/include/ipc_unixsocket.h b/include/libcamera/internal/ipc_unixsocket.h
> similarity index 100%
> rename from src/libcamera/include/ipc_unixsocket.h
> rename to include/libcamera/internal/ipc_unixsocket.h
> diff --git a/src/libcamera/include/log.h b/include/libcamera/internal/log.h
> similarity index 98%
> rename from src/libcamera/include/log.h
> rename to include/libcamera/internal/log.h
> index ee0b4069bd32..cab2034aae6b 100644
> --- a/src/libcamera/include/log.h
> +++ b/include/libcamera/internal/log.h
> @@ -10,7 +10,7 @@
>  #include <chrono>
>  #include <sstream>
>
> -#include "utils.h"
> +#include "libcamera/internal/utils.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/media_device.h b/include/libcamera/internal/media_device.h
> similarity index 96%
> rename from src/libcamera/include/media_device.h
> rename to include/libcamera/internal/media_device.h
> index 4d9f76618ec0..9fe76c514b17 100644
> --- a/src/libcamera/include/media_device.h
> +++ b/include/libcamera/internal/media_device.h
> @@ -16,8 +16,8 @@
>
>  #include <libcamera/signal.h>
>
> -#include "log.h"
> -#include "media_object.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_object.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/media_object.h b/include/libcamera/internal/media_object.h
> similarity index 100%
> rename from src/libcamera/include/media_object.h
> rename to include/libcamera/internal/media_object.h
> diff --git a/src/libcamera/include/meson.build b/include/libcamera/internal/meson.build
> similarity index 100%
> rename from src/libcamera/include/meson.build
> rename to include/libcamera/internal/meson.build
> diff --git a/src/libcamera/include/message.h b/include/libcamera/internal/message.h
> similarity index 100%
> rename from src/libcamera/include/message.h
> rename to include/libcamera/internal/message.h
> diff --git a/src/libcamera/include/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h
> similarity index 98%
> rename from src/libcamera/include/pipeline_handler.h
> rename to include/libcamera/internal/pipeline_handler.h
> index 706413fa6e9f..428f5887c76b 100644
> --- a/src/libcamera/include/pipeline_handler.h
> +++ b/include/libcamera/internal/pipeline_handler.h
> @@ -19,7 +19,7 @@
>  #include <libcamera/object.h>
>  #include <libcamera/stream.h>
>
> -#include "ipa_proxy.h"
> +#include "libcamera/internal/ipa_proxy.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/process.h b/include/libcamera/internal/process.h
> similarity index 100%
> rename from src/libcamera/include/process.h
> rename to include/libcamera/internal/process.h
> diff --git a/src/libcamera/include/pub_key.h b/include/libcamera/internal/pub_key.h
> similarity index 100%
> rename from src/libcamera/include/pub_key.h
> rename to include/libcamera/internal/pub_key.h
> diff --git a/src/libcamera/include/semaphore.h b/include/libcamera/internal/semaphore.h
> similarity index 94%
> rename from src/libcamera/include/semaphore.h
> rename to include/libcamera/internal/semaphore.h
> index c6b286536eb3..4d93077c776f 100644
> --- a/src/libcamera/include/semaphore.h
> +++ b/include/libcamera/internal/semaphore.h
> @@ -9,7 +9,7 @@
>
>  #include <condition_variable>
>
> -#include "thread.h"
> +#include "libcamera/internal/thread.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/thread.h b/include/libcamera/internal/thread.h
> similarity index 97%
> rename from src/libcamera/include/thread.h
> rename to include/libcamera/internal/thread.h
> index d700f111a3ae..6594c9b06b8d 100644
> --- a/src/libcamera/include/thread.h
> +++ b/include/libcamera/internal/thread.h
> @@ -14,7 +14,7 @@
>
>  #include <libcamera/signal.h>
>
> -#include "utils.h"
> +#include "libcamera/internal/utils.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/utils.h b/include/libcamera/internal/utils.h
> similarity index 100%
> rename from src/libcamera/include/utils.h
> rename to include/libcamera/internal/utils.h
> diff --git a/src/libcamera/include/v4l2_controls.h b/include/libcamera/internal/v4l2_controls.h
> similarity index 100%
> rename from src/libcamera/include/v4l2_controls.h
> rename to include/libcamera/internal/v4l2_controls.h
> diff --git a/src/libcamera/include/v4l2_device.h b/include/libcamera/internal/v4l2_device.h
> similarity index 94%
> rename from src/libcamera/include/v4l2_device.h
> rename to include/libcamera/internal/v4l2_device.h
> index e604a40df4c9..d491eafd262e 100644
> --- a/src/libcamera/include/v4l2_device.h
> +++ b/include/libcamera/internal/v4l2_device.h
> @@ -13,8 +13,8 @@
>
>  #include <linux/videodev2.h>
>
> -#include "log.h"
> -#include "v4l2_controls.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/v4l2_controls.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/v4l2_pixelformat.h b/include/libcamera/internal/v4l2_pixelformat.h
> similarity index 100%
> rename from src/libcamera/include/v4l2_pixelformat.h
> rename to include/libcamera/internal/v4l2_pixelformat.h
> diff --git a/src/libcamera/include/v4l2_subdevice.h b/include/libcamera/internal/v4l2_subdevice.h
> similarity index 90%
> rename from src/libcamera/include/v4l2_subdevice.h
> rename to include/libcamera/internal/v4l2_subdevice.h
> index d0e565dbdaab..1be454f0ddda 100644
> --- a/src/libcamera/include/v4l2_subdevice.h
> +++ b/include/libcamera/internal/v4l2_subdevice.h
> @@ -12,10 +12,10 @@
>
>  #include <libcamera/geometry.h>
>
> -#include "formats.h"
> -#include "log.h"
> -#include "media_object.h"
> -#include "v4l2_device.h"
> +#include "libcamera/internal/formats.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_object.h"
> +#include "libcamera/internal/v4l2_device.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/include/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
> similarity index 97%
> rename from src/libcamera/include/v4l2_videodevice.h
> rename to include/libcamera/internal/v4l2_videodevice.h
> index 94565b97b6b1..dc259523599c 100644
> --- a/src/libcamera/include/v4l2_videodevice.h
> +++ b/include/libcamera/internal/v4l2_videodevice.h
> @@ -20,10 +20,10 @@
>  #include <libcamera/pixelformats.h>
>  #include <libcamera/signal.h>
>
> -#include "formats.h"
> -#include "log.h"
> -#include "v4l2_device.h"
> -#include "v4l2_pixelformat.h"
> +#include "libcamera/internal/formats.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/v4l2_device.h"
> +#include "libcamera/internal/v4l2_pixelformat.h"
>
>  namespace libcamera {
>
> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
> index cea47eb83030..f9c8e64bd50c 100644
> --- a/include/libcamera/meson.build
> +++ b/include/libcamera/meson.build
> @@ -23,6 +23,8 @@ libcamera_api = files([
>
>  include_dir = join_paths(libcamera_include_dir, 'libcamera')
>
> +subdir('internal')
> +
>  install_headers(libcamera_api,
>                  subdir : include_dir)
>
> diff --git a/src/android/camera3_hal.cpp b/src/android/camera3_hal.cpp
> index 34301ed971b6..716e36c72b83 100644
> --- a/src/android/camera3_hal.cpp
> +++ b/src/android/camera3_hal.cpp
> @@ -7,9 +7,10 @@
>
>  #include <hardware/camera_common.h>
>
> +#include "libcamera/internal/log.h"
> +
>  #include "camera_device.h"
>  #include "camera_hal_manager.h"
> -#include "log.h"
>
>  using namespace libcamera;
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 76af70ebccfa..4ec429fc3f8f 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -11,8 +11,8 @@
>  #include <libcamera/controls.h>
>  #include <libcamera/property_ids.h>
>
> -#include "log.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
>
>  #include "camera_metadata.h"
>
> diff --git a/src/android/camera_device.h b/src/android/camera_device.h
> index 55eac317e0e4..bce1cfbc85a4 100644
> --- a/src/android/camera_device.h
> +++ b/src/android/camera_device.h
> @@ -16,7 +16,7 @@
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>
> -#include "message.h"
> +#include "libcamera/internal/message.h"
>
>  class CameraMetadata;
>
> diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp
> index 5bd3bdba8a55..759e320dcd3b 100644
> --- a/src/android/camera_hal_manager.cpp
> +++ b/src/android/camera_hal_manager.cpp
> @@ -9,7 +9,7 @@
>
>  #include <libcamera/camera.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  #include "camera_device.h"
>
> diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp
> index 76965108c08b..47b2e4ef117a 100644
> --- a/src/android/camera_metadata.cpp
> +++ b/src/android/camera_metadata.cpp
> @@ -7,7 +7,7 @@
>
>  #include "camera_metadata.h"
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  using namespace libcamera;
>
> diff --git a/src/ipa/libipa/ipa_interface_wrapper.cpp b/src/ipa/libipa/ipa_interface_wrapper.cpp
> index 21d8c98bddee..90f270c021a9 100644
> --- a/src/ipa/libipa/ipa_interface_wrapper.cpp
> +++ b/src/ipa/libipa/ipa_interface_wrapper.cpp
> @@ -14,8 +14,8 @@
>
>  #include <ipa/ipa_interface.h>
>
> -#include "byte_stream_buffer.h"
> -#include "camera_sensor.h"
> +#include "libcamera/internal/byte_stream_buffer.h"
> +#include "libcamera/internal/camera_sensor.h"
>
>  /**
>   * \file ipa_interface_wrapper.h
> diff --git a/src/ipa/libipa/ipa_interface_wrapper.h b/src/ipa/libipa/ipa_interface_wrapper.h
> index 56507aafd81e..b426034d551d 100644
> --- a/src/ipa/libipa/ipa_interface_wrapper.h
> +++ b/src/ipa/libipa/ipa_interface_wrapper.h
> @@ -11,7 +11,7 @@
>
>  #include <ipa/ipa_interface.h>
>
> -#include "control_serializer.h"
> +#include "libcamera/internal/control_serializer.h"
>
>  namespace libcamera {
>
> diff --git a/src/ipa/meson.build b/src/ipa/meson.build
> index ab73c347021c..5a5de267c147 100644
> --- a/src/ipa/meson.build
> +++ b/src/ipa/meson.build
> @@ -6,7 +6,6 @@ ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
>
>  ipa_includes = [
>      libcamera_includes,
> -    libcamera_internal_includes,
>  ]
>
>  config_h.set('IPA_CONFIG_DIR',
> diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/raspberrypi/cam_helper.cpp
> index 7f05d2c6b368..a0c73f99390f 100644
> --- a/src/ipa/raspberrypi/cam_helper.cpp
> +++ b/src/ipa/raspberrypi/cam_helper.cpp
> @@ -11,11 +11,11 @@
>  #include <map>
>  #include <string.h>
>
> +#include "libcamera/internal/v4l2_videodevice.h"
> +
>  #include "cam_helper.hpp"
>  #include "md_parser.hpp"
>
> -#include "v4l2_videodevice.h"
> -
>  using namespace RPi;
>
>  static std::map<std::string, CamHelperCreateFunc> cam_helpers;
> diff --git a/src/ipa/raspberrypi/cam_helper.hpp b/src/ipa/raspberrypi/cam_helper.hpp
> index 0c8aa29a4cff..6877f4735031 100644
> --- a/src/ipa/raspberrypi/cam_helper.hpp
> +++ b/src/ipa/raspberrypi/cam_helper.hpp
> @@ -11,7 +11,7 @@
>  #include "camera_mode.h"
>  #include "md_parser.hpp"
>
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  namespace RPi {
>
> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
> index 3bcc08156902..46b244538e32 100644
> --- a/src/ipa/raspberrypi/raspberrypi.cpp
> +++ b/src/ipa/raspberrypi/raspberrypi.cpp
> @@ -22,6 +22,10 @@
>  #include <libcamera/span.h>
>  #include <libipa/ipa_interface_wrapper.h>
>
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
> +
>  #include <linux/bcm2835-isp.h>
>
>  #include "agc_algorithm.hpp"
> @@ -44,10 +48,6 @@
>  #include "sdn_status.h"
>  #include "sharpen_status.h"
>
> -#include "camera_sensor.h"
> -#include "log.h"
> -#include "utils.h"
> -
>  namespace libcamera {
>
>  /* Configure the sensor with these values initially. */
> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> index bfa88418fa7b..4f6e0342dac1 100644
> --- a/src/ipa/rkisp1/rkisp1.cpp
> +++ b/src/ipa/rkisp1/rkisp1.cpp
> @@ -22,8 +22,8 @@
>  #include <libcamera/request.h>
>  #include <libipa/ipa_interface_wrapper.h>
>
> -#include "log.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
>
>  namespace libcamera {
>
> diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp
> index 9271f2d8acff..3fa6be6535e2 100644
> --- a/src/ipa/vimc/vimc.cpp
> +++ b/src/ipa/vimc/vimc.cpp
> @@ -19,8 +19,8 @@
>
>  #include <libipa/ipa_interface_wrapper.h>
>
> -#include "file.h"
> -#include "log.h"
> +#include "libcamera/internal/file.h"
> +#include "libcamera/internal/log.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/bound_method.cpp b/src/libcamera/bound_method.cpp
> index 9aa59dc3678f..9993e5969aac 100644
> --- a/src/libcamera/bound_method.cpp
> +++ b/src/libcamera/bound_method.cpp
> @@ -7,9 +7,9 @@
>
>  #include <libcamera/bound_method.h>
>
> -#include "message.h"
> -#include "semaphore.h"
> -#include "thread.h"
> +#include "libcamera/internal/message.h"
> +#include "libcamera/internal/semaphore.h"
> +#include "libcamera/internal/thread.h"
>
>  /**
>   * \file bound_method.h
> diff --git a/src/libcamera/buffer.cpp b/src/libcamera/buffer.cpp
> index 0c5e56cf1062..1a1d4bac7aed 100644
> --- a/src/libcamera/buffer.cpp
> +++ b/src/libcamera/buffer.cpp
> @@ -12,7 +12,7 @@
>  #include <sys/mman.h>
>  #include <unistd.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file buffer.h
> diff --git a/src/libcamera/byte_stream_buffer.cpp b/src/libcamera/byte_stream_buffer.cpp
> index 20d6a6552c5f..df7029b02a7f 100644
> --- a/src/libcamera/byte_stream_buffer.cpp
> +++ b/src/libcamera/byte_stream_buffer.cpp
> @@ -5,12 +5,12 @@
>   * byte_stream_buffer.cpp - Byte stream buffer
>   */
>
> -#include "byte_stream_buffer.h"
> +#include "libcamera/internal/byte_stream_buffer.h"
>
>  #include <stdint.h>
>  #include <string.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> index 8c3bb2c2a01f..eac769a43964 100644
> --- a/src/libcamera/camera.cpp
> +++ b/src/libcamera/camera.cpp
> @@ -14,9 +14,9 @@
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>
> -#include "log.h"
> -#include "pipeline_handler.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file camera.h
> diff --git a/src/libcamera/camera_controls.cpp b/src/libcamera/camera_controls.cpp
> index 59dcede2ca36..371f6d079e2d 100644
> --- a/src/libcamera/camera_controls.cpp
> +++ b/src/libcamera/camera_controls.cpp
> @@ -5,7 +5,7 @@
>   * camera_controls.cpp - Camera controls
>   */
>
> -#include "camera_controls.h"
> +#include "libcamera/internal/camera_controls.h"
>
>  #include <libcamera/camera.h>
>  #include <libcamera/controls.h>
> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
> index fddf7349ec15..849377ad2712 100644
> --- a/src/libcamera/camera_manager.cpp
> +++ b/src/libcamera/camera_manager.cpp
> @@ -13,12 +13,12 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/event_dispatcher.h>
>
> -#include "device_enumerator.h"
> -#include "event_dispatcher_poll.h"
> -#include "log.h"
> -#include "pipeline_handler.h"
> -#include "thread.h"
> -#include "utils.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/event_dispatcher_poll.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file camera_manager.h
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index 31a916a92722..174df17cfaef 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -5,7 +5,7 @@
>   * camera_sensor.cpp - A camera sensor
>   */
>
> -#include "camera_sensor.h"
> +#include "libcamera/internal/camera_sensor.h"
>
>  #include <algorithm>
>  #include <float.h>
> @@ -16,9 +16,9 @@
>
>  #include <libcamera/property_ids.h>
>
> -#include "formats.h"
> -#include "utils.h"
> -#include "v4l2_subdevice.h"
> +#include "libcamera/internal/formats.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
>
>  /**
>   * \file camera_sensor.h
> diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp
> index fcff5e56fbf7..bf162b6cc471 100644
> --- a/src/libcamera/control_serializer.cpp
> +++ b/src/libcamera/control_serializer.cpp
> @@ -5,7 +5,7 @@
>   * control_serializer.cpp - Control (de)serializer
>   */
>
> -#include "control_serializer.h"
> +#include "libcamera/internal/control_serializer.h"
>
>  #include <algorithm>
>  #include <memory>
> @@ -16,8 +16,8 @@
>  #include <libcamera/controls.h>
>  #include <libcamera/span.h>
>
> -#include "byte_stream_buffer.h"
> -#include "log.h"
> +#include "libcamera/internal/byte_stream_buffer.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file control_serializer.h
> diff --git a/src/libcamera/control_validator.cpp b/src/libcamera/control_validator.cpp
> index 8e5cf3c3e3ee..5a2f27ac9a3b 100644
> --- a/src/libcamera/control_validator.cpp
> +++ b/src/libcamera/control_validator.cpp
> @@ -5,7 +5,7 @@
>   * control_validator.cpp - Control validator
>   */
>
> -#include "control_validator.h"
> +#include "libcamera/internal/control_validator.h"
>
>  /**
>   * \file control_validator.h
> diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
> index 08df7f29e938..dca782667d88 100644
> --- a/src/libcamera/controls.cpp
> +++ b/src/libcamera/controls.cpp
> @@ -12,9 +12,9 @@
>  #include <string>
>  #include <string.h>
>
> -#include "control_validator.h"
> -#include "log.h"
> -#include "utils.h"
> +#include "libcamera/internal/control_validator.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file controls.h
> diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp
> index dd17e3e32e6c..e21a2a7deaae 100644
> --- a/src/libcamera/device_enumerator.cpp
> +++ b/src/libcamera/device_enumerator.cpp
> @@ -5,14 +5,14 @@
>   * device_enumerator.cpp - Enumeration and matching
>   */
>
> -#include "device_enumerator.h"
> -#include "device_enumerator_sysfs.h"
> -#include "device_enumerator_udev.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/device_enumerator_sysfs.h"
> +#include "libcamera/internal/device_enumerator_udev.h"
>
>  #include <string.h>
>
> -#include "log.h"
> -#include "media_device.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
>
>  /**
>   * \file device_enumerator.h
> diff --git a/src/libcamera/device_enumerator_sysfs.cpp b/src/libcamera/device_enumerator_sysfs.cpp
> index 3446db59e9d4..ff72885288c3 100644
> --- a/src/libcamera/device_enumerator_sysfs.cpp
> +++ b/src/libcamera/device_enumerator_sysfs.cpp
> @@ -5,7 +5,7 @@
>   * device_enumerator_sysfs.cpp - sysfs-based device enumerator
>   */
>
> -#include "device_enumerator_sysfs.h"
> +#include "libcamera/internal/device_enumerator_sysfs.h"
>
>  #include <dirent.h>
>  #include <fcntl.h>
> @@ -17,8 +17,8 @@
>  #include <sys/types.h>
>  #include <unistd.h>
>
> -#include "log.h"
> -#include "media_device.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp
> index 2e33c898aeef..56ca4dc2804b 100644
> --- a/src/libcamera/device_enumerator_udev.cpp
> +++ b/src/libcamera/device_enumerator_udev.cpp
> @@ -5,7 +5,7 @@
>   * device_enumerator_udev.cpp - udev-based device enumerator
>   */
>
> -#include "device_enumerator_udev.h"
> +#include "libcamera/internal/device_enumerator_udev.h"
>
>  #include <algorithm>
>  #include <fcntl.h>
> @@ -19,8 +19,8 @@
>
>  #include <libcamera/event_notifier.h>
>
> -#include "log.h"
> -#include "media_device.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/event_dispatcher.cpp b/src/libcamera/event_dispatcher.cpp
> index bb4fddfffe86..90bd5daf0612 100644
> --- a/src/libcamera/event_dispatcher.cpp
> +++ b/src/libcamera/event_dispatcher.cpp
> @@ -7,7 +7,7 @@
>
>  #include <libcamera/event_dispatcher.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file event_dispatcher.h
> diff --git a/src/libcamera/event_dispatcher_poll.cpp b/src/libcamera/event_dispatcher_poll.cpp
> index 51ac5adf2f74..9ab85da7d75d 100644
> --- a/src/libcamera/event_dispatcher_poll.cpp
> +++ b/src/libcamera/event_dispatcher_poll.cpp
> @@ -5,7 +5,7 @@
>   * event_dispatcher_poll.cpp - Poll-based event dispatcher
>   */
>
> -#include "event_dispatcher_poll.h"
> +#include "libcamera/internal/event_dispatcher_poll.h"
>
>  #include <algorithm>
>  #include <chrono>
> @@ -19,9 +19,9 @@
>  #include <libcamera/event_notifier.h>
>  #include <libcamera/timer.h>
>
> -#include "log.h"
> -#include "thread.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file event_dispatcher_poll.h
> diff --git a/src/libcamera/event_notifier.cpp b/src/libcamera/event_notifier.cpp
> index a9be686f79ae..cc3ea0d91e5b 100644
> --- a/src/libcamera/event_notifier.cpp
> +++ b/src/libcamera/event_notifier.cpp
> @@ -10,8 +10,8 @@
>  #include <libcamera/camera_manager.h>
>  #include <libcamera/event_dispatcher.h>
>
> -#include "message.h"
> -#include "thread.h"
> +#include "libcamera/internal/message.h"
> +#include "libcamera/internal/thread.h"
>
>  /**
>   * \file event_notifier.h
> diff --git a/src/libcamera/file.cpp b/src/libcamera/file.cpp
> index 8223743d5f6b..c471bde3fc68 100644
> --- a/src/libcamera/file.cpp
> +++ b/src/libcamera/file.cpp
> @@ -5,7 +5,7 @@
>   * file.cpp - File I/O operations
>   */
>
> -#include "file.h"
> +#include "libcamera/internal/file.h"
>
>  #include <errno.h>
>  #include <fcntl.h>
> @@ -14,7 +14,7 @@
>  #include <sys/types.h>
>  #include <unistd.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file file.h
> diff --git a/src/libcamera/file_descriptor.cpp b/src/libcamera/file_descriptor.cpp
> index 88385476d890..ee60064bce6e 100644
> --- a/src/libcamera/file_descriptor.cpp
> +++ b/src/libcamera/file_descriptor.cpp
> @@ -11,7 +11,7 @@
>  #include <unistd.h>
>  #include <utility>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file file_descriptor.h
> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
> index b3af0f7fcfcc..2ac3b412ecdb 100644
> --- a/src/libcamera/formats.cpp
> +++ b/src/libcamera/formats.cpp
> @@ -5,11 +5,11 @@
>   * formats.cpp - libcamera image formats
>   */
>
> -#include "formats.h"
> +#include "libcamera/internal/formats.h"
>
>  #include <errno.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file formats.h
> diff --git a/src/libcamera/framebuffer_allocator.cpp b/src/libcamera/framebuffer_allocator.cpp
> index a37b564c6701..252191ba234c 100644
> --- a/src/libcamera/framebuffer_allocator.cpp
> +++ b/src/libcamera/framebuffer_allocator.cpp
> @@ -13,8 +13,8 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/stream.h>
>
> -#include "log.h"
> -#include "pipeline_handler.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/pipeline_handler.h"
>
>  /**
>   * \file framebuffer_allocator.h
> diff --git a/src/libcamera/ipa_context_wrapper.cpp b/src/libcamera/ipa_context_wrapper.cpp
> index 0bd3a1aeca95..bcdc55c2bcbc 100644
> --- a/src/libcamera/ipa_context_wrapper.cpp
> +++ b/src/libcamera/ipa_context_wrapper.cpp
> @@ -5,15 +5,15 @@
>   * ipa_context_wrapper.cpp - Image Processing Algorithm context wrapper
>   */
>
> -#include "ipa_context_wrapper.h"
> +#include "libcamera/internal/ipa_context_wrapper.h"
>
>  #include <vector>
>
>  #include <libcamera/controls.h>
>
> -#include "byte_stream_buffer.h"
> -#include "camera_sensor.h"
> -#include "utils.h"
> +#include "libcamera/internal/byte_stream_buffer.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file ipa_context_wrapper.h
> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
> index 1faa3dd38188..505cf61074b7 100644
> --- a/src/libcamera/ipa_manager.cpp
> +++ b/src/libcamera/ipa_manager.cpp
> @@ -5,19 +5,19 @@
>   * ipa_manager.cpp - Image Processing Algorithm module manager
>   */
>
> -#include "ipa_manager.h"
> +#include "libcamera/internal/ipa_manager.h"
>
>  #include <algorithm>
>  #include <dirent.h>
>  #include <string.h>
>  #include <sys/types.h>
>
> -#include "file.h"
> -#include "ipa_module.h"
> -#include "ipa_proxy.h"
> -#include "log.h"
> -#include "pipeline_handler.h"
> -#include "utils.h"
> +#include "libcamera/internal/file.h"
> +#include "libcamera/internal/ipa_module.h"
> +#include "libcamera/internal/ipa_proxy.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file ipa_manager.h
> diff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp
> index 3444a788b855..91534b61e2e4 100644
> --- a/src/libcamera/ipa_module.cpp
> +++ b/src/libcamera/ipa_module.cpp
> @@ -5,7 +5,7 @@
>   * ipa_module.cpp - Image Processing Algorithm module
>   */
>
> -#include "ipa_module.h"
> +#include "libcamera/internal/ipa_module.h"
>
>  #include <algorithm>
>  #include <array>
> @@ -23,10 +23,10 @@
>
>  #include <libcamera/span.h>
>
> -#include "file.h"
> -#include "log.h"
> -#include "pipeline_handler.h"
> -#include "utils.h"
> +#include "libcamera/internal/file.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file ipa_module.h
> diff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp
> index 401ac52d38d6..23be24ad9bf1 100644
> --- a/src/libcamera/ipa_proxy.cpp
> +++ b/src/libcamera/ipa_proxy.cpp
> @@ -5,16 +5,16 @@
>   * ipa_proxy.cpp - Image Processing Algorithm proxy
>   */
>
> -#include "ipa_proxy.h"
> +#include "libcamera/internal/ipa_proxy.h"
>
>  #include <string.h>
>  #include <sys/stat.h>
>  #include <sys/types.h>
>  #include <unistd.h>
>
> -#include "ipa_module.h"
> -#include "log.h"
> -#include "utils.h"
> +#include "libcamera/internal/ipa_module.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file ipa_proxy.h
> diff --git a/src/libcamera/ipa_pub_key.cpp.in b/src/libcamera/ipa_pub_key.cpp.in
> index 7ffc1e24d67b..01e5333b4d30 100644
> --- a/src/libcamera/ipa_pub_key.cpp.in
> +++ b/src/libcamera/ipa_pub_key.cpp.in
> @@ -7,7 +7,7 @@
>   * This file is auto-generated. Do not edit.
>   */
>
> -#include "ipa_manager.h"
> +#include "libcamera/internal/ipa_manager.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/ipc_unixsocket.cpp b/src/libcamera/ipc_unixsocket.cpp
> index 6e5cab894a93..7df86e885f23 100644
> --- a/src/libcamera/ipc_unixsocket.cpp
> +++ b/src/libcamera/ipc_unixsocket.cpp
> @@ -5,14 +5,14 @@
>   * ipc_unixsocket.cpp - IPC mechanism based on Unix sockets
>   */
>
> -#include "ipc_unixsocket.h"
> +#include "libcamera/internal/ipc_unixsocket.h"
>
>  #include <poll.h>
>  #include <string.h>
>  #include <sys/socket.h>
>  #include <unistd.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file ipc_unixsocket.h
> diff --git a/src/libcamera/log.cpp b/src/libcamera/log.cpp
> index fd1b5c39a52e..180eb97ba664 100644
> --- a/src/libcamera/log.cpp
> +++ b/src/libcamera/log.cpp
> @@ -5,7 +5,7 @@
>   * log.cpp - Logging infrastructure
>   */
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  #if HAVE_BACKTRACE
>  #include <execinfo.h>
> @@ -22,8 +22,8 @@
>
>  #include <libcamera/logging.h>
>
> -#include "thread.h"
> -#include "utils.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file log.h
> diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
> index d4e7e1002224..de18d572f479 100644
> --- a/src/libcamera/media_device.cpp
> +++ b/src/libcamera/media_device.cpp
> @@ -5,7 +5,7 @@
>   * media_device.cpp - Media device handler
>   */
>
> -#include "media_device.h"
> +#include "libcamera/internal/media_device.h"
>
>  #include <errno.h>
>  #include <fcntl.h>
> @@ -18,7 +18,7 @@
>
>  #include <linux/media.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file media_device.h
> diff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp
> index ef32065c161d..ce77a72712d3 100644
> --- a/src/libcamera/media_object.cpp
> +++ b/src/libcamera/media_object.cpp
> @@ -5,7 +5,7 @@
>   * media_object.cpp - Media device objects: entities, pads and links
>   */
>
> -#include "media_object.h"
> +#include "libcamera/internal/media_object.h"
>
>  #include <errno.h>
>  #include <string>
> @@ -15,8 +15,8 @@
>
>  #include <linux/media.h>
>
> -#include "log.h"
> -#include "media_device.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
>
>  /**
>   * \file media_object.h
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index d42e9720dbd6..472af451c1ef 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -51,13 +51,8 @@ libcamera_sources = files([
>      'v4l2_videodevice.cpp',
>  ])
>
> -subdir('include')
> -
> -libcamera_internal_includes =  include_directories('include')
> -
>  includes = [
>      libcamera_includes,
> -    libcamera_internal_includes,
>  ]
>
>  subdir('pipeline')
> diff --git a/src/libcamera/message.cpp b/src/libcamera/message.cpp
> index 77f2bdd5fbac..e9b3e73f3052 100644
> --- a/src/libcamera/message.cpp
> +++ b/src/libcamera/message.cpp
> @@ -5,11 +5,11 @@
>   * message.cpp - Message queue support
>   */
>
> -#include "message.h"
> +#include "libcamera/internal/message.h"
>
>  #include <libcamera/signal.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file message.h
> diff --git a/src/libcamera/object.cpp b/src/libcamera/object.cpp
> index 99c3bf9a709b..1544a23e4410 100644
> --- a/src/libcamera/object.cpp
> +++ b/src/libcamera/object.cpp
> @@ -11,11 +11,11 @@
>
>  #include <libcamera/signal.h>
>
> -#include "log.h"
> -#include "message.h"
> -#include "semaphore.h"
> -#include "thread.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/message.h"
> +#include "libcamera/internal/semaphore.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file object.h
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 1988cb0ee551..b805fea71c2d 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -17,15 +17,15 @@
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "log.h"
> -#include "media_device.h"
> -#include "pipeline_handler.h"
> -#include "utils.h"
> -#include "v4l2_controls.h"
> -#include "v4l2_subdevice.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_controls.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> index 41d1a522fa71..e254e5558d92 100644
> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> @@ -21,15 +21,16 @@
>  #include <linux/drm_fourcc.h>
>  #include <linux/videodev2.h>
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "ipa_manager.h"
> -#include "media_device.h"
> -#include "pipeline_handler.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/ipa_manager.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_controls.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
> +
>  #include "staggered_ctrl.h"
> -#include "utils.h"
> -#include "v4l2_controls.h"
> -#include "v4l2_videodevice.h"
>  #include "vcsm.h"
>
>  namespace libcamera {
> diff --git a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp b/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
> index d431887ea137..391e13f54ccc 100644
> --- a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
> +++ b/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
> @@ -11,9 +11,9 @@
>
>  #include <libcamera/controls.h>
>
> -#include "log.h"
> -#include "utils.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> index 1e81a0048f09..7a0c8771ba54 100644
> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
> @@ -20,16 +20,17 @@
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "ipa_manager.h"
> -#include "log.h"
> -#include "media_device.h"
> -#include "pipeline_handler.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/ipa_manager.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
> +
>  #include "timeline.h"
> -#include "utils.h"
> -#include "v4l2_subdevice.h"
> -#include "v4l2_videodevice.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/pipeline/rkisp1/timeline.cpp b/src/libcamera/pipeline/rkisp1/timeline.cpp
> index f6c6434d7b53..f5194608ced7 100644
> --- a/src/libcamera/pipeline/rkisp1/timeline.cpp
> +++ b/src/libcamera/pipeline/rkisp1/timeline.cpp
> @@ -7,7 +7,7 @@
>
>  #include "timeline.h"
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file timeline.h
> diff --git a/src/libcamera/pipeline/rkisp1/timeline.h b/src/libcamera/pipeline/rkisp1/timeline.h
> index 9d30e4eaf874..88f99329873d 100644
> --- a/src/libcamera/pipeline/rkisp1/timeline.h
> +++ b/src/libcamera/pipeline/rkisp1/timeline.h
> @@ -12,7 +12,7 @@
>
>  #include <libcamera/timer.h>
>
> -#include "utils.h"
> +#include "libcamera/internal/utils.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp
> index 6d88776dc2f0..02443e7f78ed 100644
> --- a/src/libcamera/pipeline/simple/converter.cpp
> +++ b/src/libcamera/pipeline/simple/converter.cpp
> @@ -13,9 +13,9 @@
>  #include <libcamera/geometry.h>
>  #include <libcamera/signal.h>
>
> -#include "log.h"
> -#include "media_device.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> index 6673606153b8..2565190082c8 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -24,13 +24,13 @@
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "log.h"
> -#include "media_device.h"
> -#include "pipeline_handler.h"
> -#include "v4l2_subdevice.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  #include "converter.h"
>
> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> index f0c1337de862..a074909499f1 100644
> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> @@ -17,13 +17,13 @@
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>
> -#include "device_enumerator.h"
> -#include "log.h"
> -#include "media_device.h"
> -#include "pipeline_handler.h"
> -#include "utils.h"
> -#include "v4l2_controls.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_controls.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
> index 128301e3d99b..50a9f2df4c24 100644
> --- a/src/libcamera/pipeline/vimc/vimc.cpp
> +++ b/src/libcamera/pipeline/vimc/vimc.cpp
> @@ -22,16 +22,16 @@
>  #include <libcamera/request.h>
>  #include <libcamera/stream.h>
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "ipa_manager.h"
> -#include "log.h"
> -#include "media_device.h"
> -#include "pipeline_handler.h"
> -#include "utils.h"
> -#include "v4l2_controls.h"
> -#include "v4l2_subdevice.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/ipa_manager.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_controls.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
> index 254d341fb8a4..53aeebdcc14e 100644
> --- a/src/libcamera/pipeline_handler.cpp
> +++ b/src/libcamera/pipeline_handler.cpp
> @@ -5,7 +5,7 @@
>   * pipeline_handler.cpp - Pipeline handler infrastructure
>   */
>
> -#include "pipeline_handler.h"
> +#include "libcamera/internal/pipeline_handler.h"
>
>  #include <sys/sysmacros.h>
>
> @@ -13,10 +13,10 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/camera_manager.h>
>
> -#include "device_enumerator.h"
> -#include "log.h"
> -#include "media_device.h"
> -#include "utils.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file pipeline_handler.h
> diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
> index 3b4d0f10da67..e816ee8670df 100644
> --- a/src/libcamera/process.cpp
> +++ b/src/libcamera/process.cpp
> @@ -5,7 +5,7 @@
>   * process.cpp - Process object
>   */
>
> -#include "process.h"
> +#include "libcamera/internal/process.h"
>
>  #include <algorithm>
>  #include <dirent.h>
> @@ -22,8 +22,8 @@
>
>  #include <libcamera/event_notifier.h>
>
> -#include "log.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file process.h
> diff --git a/src/libcamera/proxy/ipa_proxy_linux.cpp b/src/libcamera/proxy/ipa_proxy_linux.cpp
> index 9e0f44cf314f..7d6f8799f8ff 100644
> --- a/src/libcamera/proxy/ipa_proxy_linux.cpp
> +++ b/src/libcamera/proxy/ipa_proxy_linux.cpp
> @@ -10,11 +10,11 @@
>  #include <ipa/ipa_interface.h>
>  #include <ipa/ipa_module_info.h>
>
> -#include "ipa_module.h"
> -#include "ipa_proxy.h"
> -#include "ipc_unixsocket.h"
> -#include "log.h"
> -#include "process.h"
> +#include "libcamera/internal/ipa_module.h"
> +#include "libcamera/internal/ipa_proxy.h"
> +#include "libcamera/internal/ipc_unixsocket.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/process.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/proxy/ipa_proxy_thread.cpp b/src/libcamera/proxy/ipa_proxy_thread.cpp
> index 81d2d68ee715..03d4c0d927b9 100644
> --- a/src/libcamera/proxy/ipa_proxy_thread.cpp
> +++ b/src/libcamera/proxy/ipa_proxy_thread.cpp
> @@ -10,11 +10,11 @@
>  #include <ipa/ipa_interface.h>
>  #include <ipa/ipa_module_info.h>
>
> -#include "ipa_context_wrapper.h"
> -#include "ipa_module.h"
> -#include "ipa_proxy.h"
> -#include "log.h"
> -#include "thread.h"
> +#include "libcamera/internal/ipa_context_wrapper.h"
> +#include "libcamera/internal/ipa_module.h"
> +#include "libcamera/internal/ipa_proxy.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/thread.h"
>
>  namespace libcamera {
>
> diff --git a/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp b/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp
> index 9cefa2405e19..9ba94d01d0ca 100644
> --- a/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp
> +++ b/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp
> @@ -13,10 +13,10 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/logging.h>
>
> -#include "ipa_module.h"
> -#include "ipc_unixsocket.h"
> -#include "log.h"
> -#include "thread.h"
> +#include "libcamera/internal/ipa_module.h"
> +#include "libcamera/internal/ipc_unixsocket.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/thread.h"
>
>  using namespace libcamera;
>
> diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
> index 1b1bee5e0170..ac0310a74871 100644
> --- a/src/libcamera/proxy/worker/meson.build
> +++ b/src/libcamera/proxy/worker/meson.build
> @@ -8,7 +8,6 @@ proxy_install_dir = join_paths(get_option('libexecdir'), 'libcamera')
>
>  foreach t : ipa_proxy_sources
>      proxy = executable(t[0], t[1],
> -                       include_directories : libcamera_internal_includes,
>                         install : true,
>                         install_dir : proxy_install_dir,
>                         dependencies : libcamera_dep)
> diff --git a/src/libcamera/pub_key.cpp b/src/libcamera/pub_key.cpp
> index 064d2dd200e1..2f60adbb7e62 100644
> --- a/src/libcamera/pub_key.cpp
> +++ b/src/libcamera/pub_key.cpp
> @@ -5,7 +5,7 @@
>   * pub_key.cpp - Public key signature verification
>   */
>
> -#include "pub_key.h"
> +#include "libcamera/internal/pub_key.h"
>
>  #if HAVE_GNUTLS
>  #include <gnutls/abstract.h>
> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
> index ea33736fbeb5..6b9e0b4a538a 100644
> --- a/src/libcamera/request.cpp
> +++ b/src/libcamera/request.cpp
> @@ -14,8 +14,8 @@
>  #include <libcamera/control_ids.h>
>  #include <libcamera/stream.h>
>
> -#include "camera_controls.h"
> -#include "log.h"
> +#include "libcamera/internal/camera_controls.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file request.h
> diff --git a/src/libcamera/semaphore.cpp b/src/libcamera/semaphore.cpp
> index ce1eae4914ed..d8988a9189e8 100644
> --- a/src/libcamera/semaphore.cpp
> +++ b/src/libcamera/semaphore.cpp
> @@ -5,8 +5,8 @@
>   * semaphore.cpp - General-purpose counting semaphore
>   */
>
> -#include "semaphore.h"
> -#include "thread.h"
> +#include "libcamera/internal/semaphore.h"
> +#include "libcamera/internal/thread.h"
>
>  /**
>   * \file semaphore.h
> diff --git a/src/libcamera/signal.cpp b/src/libcamera/signal.cpp
> index 6eab1fa74d42..2532df3c3073 100644
> --- a/src/libcamera/signal.cpp
> +++ b/src/libcamera/signal.cpp
> @@ -7,7 +7,7 @@
>
>  #include <libcamera/signal.h>
>
> -#include "thread.h"
> +#include "libcamera/internal/thread.h"
>
>  /**
>   * \file signal.h
> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
> index 86c0b17db313..f34348f2aea0 100644
> --- a/src/libcamera/stream.cpp
> +++ b/src/libcamera/stream.cpp
> @@ -15,8 +15,8 @@
>
>  #include <libcamera/request.h>
>
> -#include "log.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file stream.h
> diff --git a/src/libcamera/thread.cpp b/src/libcamera/thread.cpp
> index 85293c188c2a..d1750d72ec8a 100644
> --- a/src/libcamera/thread.cpp
> +++ b/src/libcamera/thread.cpp
> @@ -5,7 +5,7 @@
>   * thread.cpp - Thread support
>   */
>
> -#include "thread.h"
> +#include "libcamera/internal/thread.h"
>
>  #include <atomic>
>  #include <condition_variable>
> @@ -16,9 +16,9 @@
>
>  #include <libcamera/event_dispatcher.h>
>
> -#include "event_dispatcher_poll.h"
> -#include "log.h"
> -#include "message.h"
> +#include "libcamera/internal/event_dispatcher_poll.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/message.h"
>
>  /**
>   * \page thread Thread Support
> diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp
> index 24da51524efb..24e452eda49e 100644
> --- a/src/libcamera/timer.cpp
> +++ b/src/libcamera/timer.cpp
> @@ -12,10 +12,10 @@
>  #include <libcamera/camera_manager.h>
>  #include <libcamera/event_dispatcher.h>
>
> -#include "log.h"
> -#include "message.h"
> -#include "thread.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/message.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file timer.h
> diff --git a/src/libcamera/utils.cpp b/src/libcamera/utils.cpp
> index fbadf350908a..d55338fe681a 100644
> --- a/src/libcamera/utils.cpp
> +++ b/src/libcamera/utils.cpp
> @@ -5,7 +5,7 @@
>   * utils.cpp - Miscellaneous utility functions
>   */
>
> -#include "utils.h"
> +#include "libcamera/internal/utils.h"
>
>  #include <dlfcn.h>
>  #include <elf.h>
> diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp
> index 8e2415f2a6df..3f8ec6ca00da 100644
> --- a/src/libcamera/v4l2_controls.cpp
> +++ b/src/libcamera/v4l2_controls.cpp
> @@ -5,7 +5,7 @@
>   * v4l2_controls.cpp - V4L2 Controls Support
>   */
>
> -#include "v4l2_controls.h"
> +#include "libcamera/internal/v4l2_controls.h"
>
>  #include <string.h>
>
> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
> index d08ab531f034..56ea1ddda2c1 100644
> --- a/src/libcamera/v4l2_device.cpp
> +++ b/src/libcamera/v4l2_device.cpp
> @@ -5,7 +5,7 @@
>   * v4l2_device.cpp - Common base for V4L2 video devices and subdevices
>   */
>
> -#include "v4l2_device.h"
> +#include "libcamera/internal/v4l2_device.h"
>
>  #include <fcntl.h>
>  #include <iomanip>
> @@ -14,9 +14,9 @@
>  #include <sys/syscall.h>
>  #include <unistd.h>
>
> -#include "log.h"
> -#include "utils.h"
> -#include "v4l2_controls.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_controls.h"
>
>  /**
>   * \file v4l2_device.h
> diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp
> index 561f9327780a..36776be99e59 100644
> --- a/src/libcamera/v4l2_pixelformat.cpp
> +++ b/src/libcamera/v4l2_pixelformat.cpp
> @@ -6,7 +6,7 @@
>   * v4l2_pixelformat.cpp - V4L2 Pixel Format
>   */
>
> -#include "v4l2_pixelformat.h"
> +#include "libcamera/internal/v4l2_pixelformat.h"
>
>  #include <ctype.h>
>  #include <map>
> @@ -16,8 +16,8 @@
>
>  #include <libcamera/pixelformats.h>
>
> -#include "formats.h"
> -#include "log.h"
> +#include "libcamera/internal/formats.h"
> +#include "libcamera/internal/log.h"
>
>  /**
>   * \file v4l2_pixelformat.h
> diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
> index 2b756178fc0a..7aefc1be032d 100644
> --- a/src/libcamera/v4l2_subdevice.cpp
> +++ b/src/libcamera/v4l2_subdevice.cpp
> @@ -5,7 +5,7 @@
>   * v4l2_subdevice.cpp - V4L2 Subdevice
>   */
>
> -#include "v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
>
>  #include <fcntl.h>
>  #include <iomanip>
> @@ -19,10 +19,10 @@
>
>  #include <libcamera/geometry.h>
>
> -#include "log.h"
> -#include "media_device.h"
> -#include "media_object.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/media_object.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file v4l2_subdevice.h
> diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
> index 4b9f8b5c0413..d35596bd43e4 100644
> --- a/src/libcamera/v4l2_videodevice.cpp
> +++ b/src/libcamera/v4l2_videodevice.cpp
> @@ -5,7 +5,7 @@
>   * v4l2_videodevice.cpp - V4L2 Video Device
>   */
>
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  #include <fcntl.h>
>  #include <iomanip>
> @@ -23,10 +23,10 @@
>  #include <libcamera/event_notifier.h>
>  #include <libcamera/file_descriptor.h>
>
> -#include "log.h"
> -#include "media_device.h"
> -#include "media_object.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/media_object.h"
> +#include "libcamera/internal/utils.h"
>
>  /**
>   * \file v4l2_videodevice.h
> diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
> index fc1be82d1b02..0fb941ea9b9d 100644
> --- a/src/v4l2/meson.build
> +++ b/src/v4l2/meson.build
> @@ -22,6 +22,5 @@ v4l2_compat = shared_library('v4l2-compat',
>                               v4l2_compat_sources,
>                               name_prefix : '',
>                               install : true,
> -                             include_directories : libcamera_internal_includes,
>                               dependencies : [ libcamera_dep, libdl ],
>                               cpp_args : v4l2_compat_cpp_args)
> diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp
> index ecbb70acfb8e..50a4121cc93f 100644
> --- a/src/v4l2/v4l2_camera.cpp
> +++ b/src/v4l2/v4l2_camera.cpp
> @@ -9,7 +9,7 @@
>
>  #include <errno.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  using namespace libcamera;
>
> diff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h
> index 130995d95eb4..c969130fb37d 100644
> --- a/src/v4l2/v4l2_camera.h
> +++ b/src/v4l2/v4l2_camera.h
> @@ -17,7 +17,7 @@
>  #include <libcamera/file_descriptor.h>
>  #include <libcamera/framebuffer_allocator.h>
>
> -#include "semaphore.h"
> +#include "libcamera/internal/semaphore.h"
>
>  using namespace libcamera;
>
> diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
> index 47d0528b324f..19e8f6d3b98d 100644
> --- a/src/v4l2/v4l2_camera_proxy.cpp
> +++ b/src/v4l2/v4l2_camera_proxy.cpp
> @@ -17,8 +17,9 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/object.h>
>
> -#include "log.h"
> -#include "utils.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/utils.h"
> +
>  #include "v4l2_camera.h"
>  #include "v4l2_compat_manager.h"
>
> diff --git a/src/v4l2/v4l2_compat_manager.cpp b/src/v4l2/v4l2_compat_manager.cpp
> index 961d06b3e39a..cd8ac0b8e819 100644
> --- a/src/v4l2/v4l2_compat_manager.cpp
> +++ b/src/v4l2/v4l2_compat_manager.cpp
> @@ -22,7 +22,7 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/camera_manager.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
>
>  using namespace libcamera;
>
> diff --git a/test/byte-stream-buffer.cpp b/test/byte-stream-buffer.cpp
> index bc1d462ebf6f..d606f146f6ef 100644
> --- a/test/byte-stream-buffer.cpp
> +++ b/test/byte-stream-buffer.cpp
> @@ -8,7 +8,8 @@
>  #include <array>
>  #include <iostream>
>
> -#include "byte_stream_buffer.h"
> +#include "libcamera/internal/byte_stream_buffer.h"
> +
>  #include "test.h"
>
>  using namespace std;
> diff --git a/test/camera-sensor.cpp b/test/camera-sensor.cpp
> index 6069d668e495..8c7fd1d2d444 100644
> --- a/test/camera-sensor.cpp
> +++ b/test/camera-sensor.cpp
> @@ -10,11 +10,11 @@
>
>  #include <linux/media-bus-format.h>
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -#include "utils.h"
> -#include "v4l2_subdevice.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
>
>  #include "test.h"
>
> diff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp
> index 3f392cdc0732..ad680a83f918 100644
> --- a/test/camera/buffer_import.cpp
> +++ b/test/camera/buffer_import.cpp
> @@ -12,9 +12,9 @@
>  #include <numeric>
>  #include <vector>
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  #include "buffer_source.h"
>  #include "camera_test.h"
> diff --git a/test/controls/control_info_map.cpp b/test/controls/control_info_map.cpp
> index eeb702db095b..e4305f132db7 100644
> --- a/test/controls/control_info_map.cpp
> +++ b/test/controls/control_info_map.cpp
> @@ -12,7 +12,7 @@
>  #include <libcamera/control_ids.h>
>  #include <libcamera/controls.h>
>
> -#include "camera_controls.h"
> +#include "libcamera/internal/camera_controls.h"
>
>  #include "camera_test.h"
>  #include "test.h"
> diff --git a/test/controls/control_list.cpp b/test/controls/control_list.cpp
> index d51ec47d61d3..5c8485b5dcc3 100644
> --- a/test/controls/control_list.cpp
> +++ b/test/controls/control_list.cpp
> @@ -12,7 +12,7 @@
>  #include <libcamera/control_ids.h>
>  #include <libcamera/controls.h>
>
> -#include "camera_controls.h"
> +#include "libcamera/internal/camera_controls.h"
>
>  #include "camera_test.h"
>  #include "test.h"
> diff --git a/test/event-dispatcher.cpp b/test/event-dispatcher.cpp
> index 9f9cf17818f2..1b61778699ed 100644
> --- a/test/event-dispatcher.cpp
> +++ b/test/event-dispatcher.cpp
> @@ -13,8 +13,9 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
> -#include "thread.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/event-thread.cpp b/test/event-thread.cpp
> index 01120733eca4..c90e6ac04dd3 100644
> --- a/test/event-thread.cpp
> +++ b/test/event-thread.cpp
> @@ -13,8 +13,9 @@
>  #include <libcamera/event_notifier.h>
>  #include <libcamera/timer.h>
>
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
> -#include "thread.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/event.cpp b/test/event.cpp
> index 816060cc44a2..c865092c7a8a 100644
> --- a/test/event.cpp
> +++ b/test/event.cpp
> @@ -13,8 +13,9 @@
>  #include <libcamera/event_notifier.h>
>  #include <libcamera/timer.h>
>
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
> -#include "thread.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/file-descriptor.cpp b/test/file-descriptor.cpp
> index e467f3a7145e..7477a843531c 100644
> --- a/test/file-descriptor.cpp
> +++ b/test/file-descriptor.cpp
> @@ -13,8 +13,9 @@
>
>  #include <libcamera/file_descriptor.h>
>
> +#include "libcamera/internal/utils.h"
> +
>  #include "test.h"
> -#include "utils.h"
>
>  using namespace libcamera;
>  using namespace std;
> diff --git a/test/file.cpp b/test/file.cpp
> index 6558399808f8..6262a6f04c0b 100644
> --- a/test/file.cpp
> +++ b/test/file.cpp
> @@ -13,7 +13,8 @@
>  #include <sys/types.h>
>  #include <unistd.h>
>
> -#include "file.h"
> +#include "libcamera/internal/file.h"
> +
>  #include "test.h"
>
>  using namespace std;
> diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp
> index 7fa88efee089..c394377dacd0 100644
> --- a/test/ipa/ipa_interface_test.cpp
> +++ b/test/ipa/ipa_interface_test.cpp
> @@ -18,12 +18,13 @@
>
>  #include <ipa/ipa_vimc.h>
>
> -#include "device_enumerator.h"
> -#include "ipa_manager.h"
> -#include "ipa_module.h"
> -#include "pipeline_handler.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/ipa_manager.h"
> +#include "libcamera/internal/ipa_module.h"
> +#include "libcamera/internal/pipeline_handler.h"
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
> -#include "thread.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/ipa/ipa_module_test.cpp b/test/ipa/ipa_module_test.cpp
> index e3aee190b410..bd5e0e4c738e 100644
> --- a/test/ipa/ipa_module_test.cpp
> +++ b/test/ipa/ipa_module_test.cpp
> @@ -8,7 +8,7 @@
>  #include <iostream>
>  #include <string.h>
>
> -#include "ipa_module.h"
> +#include "libcamera/internal/ipa_module.h"
>
>  #include "test.h"
>
> diff --git a/test/ipa/ipa_wrappers_test.cpp b/test/ipa/ipa_wrappers_test.cpp
> index 4de132123525..aa7a9dcc6050 100644
> --- a/test/ipa/ipa_wrappers_test.cpp
> +++ b/test/ipa/ipa_wrappers_test.cpp
> @@ -15,11 +15,11 @@
>  #include <libcamera/controls.h>
>  #include <libipa/ipa_interface_wrapper.h>
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "ipa_context_wrapper.h"
> -#include "media_device.h"
> -#include "v4l2_subdevice.h"
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/ipa_context_wrapper.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
>
>  #include "test.h"
>
> diff --git a/test/ipc/unixsocket.cpp b/test/ipc/unixsocket.cpp
> index f53042b88720..4487d27b441d 100644
> --- a/test/ipc/unixsocket.cpp
> +++ b/test/ipc/unixsocket.cpp
> @@ -18,10 +18,11 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> -#include "ipc_unixsocket.h"
> +#include "libcamera/internal/ipc_unixsocket.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
> +
>  #include "test.h"
> -#include "thread.h"
> -#include "utils.h"
>
>  #define CMD_CLOSE	0
>  #define CMD_REVERSE	1
> diff --git a/test/libtest/buffer_source.cpp b/test/libtest/buffer_source.cpp
> index d1dad2a0f8cf..ee87c8cd821c 100644
> --- a/test/libtest/buffer_source.cpp
> +++ b/test/libtest/buffer_source.cpp
> @@ -10,7 +10,7 @@
>  #include <iostream>
>  #include <memory>
>
> -#include "device_enumerator.h"
> +#include "libcamera/internal/device_enumerator.h"
>
>  #include "test.h"
>
> diff --git a/test/libtest/buffer_source.h b/test/libtest/buffer_source.h
> index ae0879c99480..95a82a8229fa 100644
> --- a/test/libtest/buffer_source.h
> +++ b/test/libtest/buffer_source.h
> @@ -9,8 +9,8 @@
>
>  #include <libcamera/libcamera.h>
>
> -#include "media_device.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  using namespace libcamera;
>
> diff --git a/test/libtest/meson.build b/test/libtest/meson.build
> index 481f6d6baa61..542335ea5e7c 100644
> --- a/test/libtest/meson.build
> +++ b/test/libtest/meson.build
> @@ -15,7 +15,6 @@ test_includes_public = [
>
>  test_includes_internal = [
>      test_includes_public,
> -    libcamera_internal_includes,
>  ]
>
>  libtest = static_library('libtest', libtest_sources,
> diff --git a/test/log/log_api.cpp b/test/log/log_api.cpp
> index 33622f841253..6f3248a79d0a 100644
> --- a/test/log/log_api.cpp
> +++ b/test/log/log_api.cpp
> @@ -18,7 +18,8 @@
>
>  #include <libcamera/logging.h>
>
> -#include "log.h"
> +#include "libcamera/internal/log.h"
> +
>  #include "test.h"
>
>  using namespace std;
> diff --git a/test/log/log_process.cpp b/test/log/log_process.cpp
> index 2df4aa43713c..8463d0ede967 100644
> --- a/test/log/log_process.cpp
> +++ b/test/log/log_process.cpp
> @@ -18,11 +18,12 @@
>  #include <libcamera/logging.h>
>  #include <libcamera/timer.h>
>
> -#include "log.h"
> -#include "process.h"
> +#include "libcamera/internal/log.h"
> +#include "libcamera/internal/process.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
> +
>  #include "test.h"
> -#include "thread.h"
> -#include "utils.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/media_device/media_device_print_test.cpp b/test/media_device/media_device_print_test.cpp
> index 5018906c75e7..1f5e3f3e84c0 100644
> --- a/test/media_device/media_device_print_test.cpp
> +++ b/test/media_device/media_device_print_test.cpp
> @@ -10,7 +10,7 @@
>  #include <sys/stat.h>
>  #include <unistd.h>
>
> -#include "media_device.h"
> +#include "libcamera/internal/media_device.h"
>
>  #include "test.h"
>
> diff --git a/test/media_device/media_device_test.h b/test/media_device/media_device_test.h
> index cdbd14841d5c..0c8bf9f25563 100644
> --- a/test/media_device/media_device_test.h
> +++ b/test/media_device/media_device_test.h
> @@ -9,8 +9,8 @@
>
>  #include <memory>
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
>
>  #include "test.h"
>
> diff --git a/test/message.cpp b/test/message.cpp
> index 478bc79dffa6..9553ba8cbaed 100644
> --- a/test/message.cpp
> +++ b/test/message.cpp
> @@ -9,8 +9,9 @@
>  #include <iostream>
>  #include <thread>
>
> -#include "message.h"
> -#include "thread.h"
> +#include "libcamera/internal/message.h"
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
>
>  using namespace std;
> diff --git a/test/object-invoke.cpp b/test/object-invoke.cpp
> index fa162c838c78..1ae11bb11e16 100644
> --- a/test/object-invoke.cpp
> +++ b/test/object-invoke.cpp
> @@ -11,8 +11,9 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/object.h>
>
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
> -#include "thread.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/object.cpp b/test/object.cpp
> index 16118971c755..264659b405d9 100644
> --- a/test/object.cpp
> +++ b/test/object.cpp
> @@ -9,8 +9,8 @@
>
>  #include <libcamera/object.h>
>
> -#include "message.h"
> -#include "thread.h"
> +#include "libcamera/internal/message.h"
> +#include "libcamera/internal/thread.h"
>
>  #include "test.h"
>
> diff --git a/test/pipeline/ipu3/ipu3_pipeline_test.cpp b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> index a5c6be0955df..34998f8f6d04 100644
> --- a/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> +++ b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> @@ -13,9 +13,10 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/camera_manager.h>
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -#include "media_object.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/media_object.h"
> +
>  #include "test.h"
>
>  using namespace std;
> diff --git a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
> index d46c928fbaf7..b6678ce76e9a 100644
> --- a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
> +++ b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
> @@ -16,9 +16,10 @@
>  #include <libcamera/camera.h>
>  #include <libcamera/camera_manager.h>
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -#include "media_object.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/media_object.h"
> +
>  #include "test.h"
>
>  using namespace std;
> diff --git a/test/process/process_test.cpp b/test/process/process_test.cpp
> index 7e7b3c2c8bf3..ce0cc7c972cd 100644
> --- a/test/process/process_test.cpp
> +++ b/test/process/process_test.cpp
> @@ -12,10 +12,11 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> -#include "process.h"
> +#include "libcamera/internal/process.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
> +
>  #include "test.h"
> -#include "thread.h"
> -#include "utils.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/serialization/control_serialization.cpp b/test/serialization/control_serialization.cpp
> index 111365241eb8..e23383d13bd6 100644
> --- a/test/serialization/control_serialization.cpp
> +++ b/test/serialization/control_serialization.cpp
> @@ -11,8 +11,9 @@
>  #include <libcamera/control_ids.h>
>  #include <libcamera/controls.h>
>
> -#include "byte_stream_buffer.h"
> -#include "control_serializer.h"
> +#include "libcamera/internal/byte_stream_buffer.h"
> +#include "libcamera/internal/control_serializer.h"
> +
>  #include "serialization_test.h"
>  #include "test.h"
>
> diff --git a/test/signal-threads.cpp b/test/signal-threads.cpp
> index f77733ebc030..3c5f3792e385 100644
> --- a/test/signal-threads.cpp
> +++ b/test/signal-threads.cpp
> @@ -9,10 +9,11 @@
>  #include <iostream>
>  #include <thread>
>
> -#include "message.h"
> -#include "thread.h"
> +#include "libcamera/internal/message.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/utils.h"
> +
>  #include "test.h"
> -#include "utils.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/threads.cpp b/test/threads.cpp
> index 0454761de12c..b4b8d913cd2b 100644
> --- a/test/threads.cpp
> +++ b/test/threads.cpp
> @@ -9,7 +9,8 @@
>  #include <iostream>
>  #include <thread>
>
> -#include "thread.h"
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
>
>  using namespace std;
> diff --git a/test/timer-thread.cpp b/test/timer-thread.cpp
> index 32853b4e80ef..2f901787f5fb 100644
> --- a/test/timer-thread.cpp
> +++ b/test/timer-thread.cpp
> @@ -11,8 +11,9 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
> -#include "thread.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/timer.cpp b/test/timer.cpp
> index 2bdb006edccb..7d5b93c37799 100644
> --- a/test/timer.cpp
> +++ b/test/timer.cpp
> @@ -11,8 +11,9 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> +#include "libcamera/internal/thread.h"
> +
>  #include "test.h"
> -#include "thread.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/utils.cpp b/test/utils.cpp
> index 55ce9365a53e..66b91f1203e1 100644
> --- a/test/utils.cpp
> +++ b/test/utils.cpp
> @@ -12,8 +12,9 @@
>
>  #include <libcamera/geometry.h>
>
> +#include "libcamera/internal/utils.h"
> +
>  #include "test.h"
> -#include "utils.h"
>
>  using namespace std;
>  using namespace libcamera;
> diff --git a/test/v4l2_subdevice/list_formats.cpp b/test/v4l2_subdevice/list_formats.cpp
> index 067dc5ed30f4..25503c3334e5 100644
> --- a/test/v4l2_subdevice/list_formats.cpp
> +++ b/test/v4l2_subdevice/list_formats.cpp
> @@ -11,7 +11,8 @@
>
>  #include <libcamera/geometry.h>
>
> -#include "v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +
>  #include "v4l2_subdevice_test.h"
>
>  using namespace std;
> diff --git a/test/v4l2_subdevice/test_formats.cpp b/test/v4l2_subdevice/test_formats.cpp
> index 5cf5d5664b04..9635c9948946 100644
> --- a/test/v4l2_subdevice/test_formats.cpp
> +++ b/test/v4l2_subdevice/test_formats.cpp
> @@ -8,7 +8,8 @@
>  #include <iostream>
>  #include <limits.h>
>
> -#include "v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +
>  #include "v4l2_subdevice_test.h"
>
>  using namespace std;
> diff --git a/test/v4l2_subdevice/v4l2_subdevice_test.cpp b/test/v4l2_subdevice/v4l2_subdevice_test.cpp
> index 562a638cb28e..d8fbfd9f6b0f 100644
> --- a/test/v4l2_subdevice/v4l2_subdevice_test.cpp
> +++ b/test/v4l2_subdevice/v4l2_subdevice_test.cpp
> @@ -9,9 +9,10 @@
>  #include <string.h>
>  #include <sys/stat.h>
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -#include "v4l2_subdevice.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +
>  #include "v4l2_subdevice_test.h"
>
>  using namespace std;
> diff --git a/test/v4l2_subdevice/v4l2_subdevice_test.h b/test/v4l2_subdevice/v4l2_subdevice_test.h
> index 3bce6691f8ef..00c6399d3b8a 100644
> --- a/test/v4l2_subdevice/v4l2_subdevice_test.h
> +++ b/test/v4l2_subdevice/v4l2_subdevice_test.h
> @@ -10,10 +10,11 @@
>
>  #include <libcamera/buffer.h>
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +
>  #include "test.h"
> -#include "v4l2_subdevice.h"
>
>  using namespace libcamera;
>
> diff --git a/test/v4l2_videodevice/buffer_sharing.cpp b/test/v4l2_videodevice/buffer_sharing.cpp
> index 14d3055ad7d1..ba2cc40d7294 100644
> --- a/test/v4l2_videodevice/buffer_sharing.cpp
> +++ b/test/v4l2_videodevice/buffer_sharing.cpp
> @@ -16,7 +16,8 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> -#include "thread.h"
> +#include "libcamera/internal/thread.h"
> +
>  #include "v4l2_videodevice_test.h"
>
>  class BufferSharingTest : public V4L2VideoDeviceTest
> diff --git a/test/v4l2_videodevice/capture_async.cpp b/test/v4l2_videodevice/capture_async.cpp
> index b38aabc6263d..13cbcc80b52b 100644
> --- a/test/v4l2_videodevice/capture_async.cpp
> +++ b/test/v4l2_videodevice/capture_async.cpp
> @@ -11,7 +11,8 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> -#include "thread.h"
> +#include "libcamera/internal/thread.h"
> +
>  #include "v4l2_videodevice_test.h"
>
>  class CaptureAsyncTest : public V4L2VideoDeviceTest
> diff --git a/test/v4l2_videodevice/controls.cpp b/test/v4l2_videodevice/controls.cpp
> index 347af2112f1a..9f09d036e83a 100644
> --- a/test/v4l2_videodevice/controls.cpp
> +++ b/test/v4l2_videodevice/controls.cpp
> @@ -10,7 +10,7 @@
>  #include <iostream>
>  #include <limits.h>
>
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  #include "v4l2_videodevice_test.h"
>
> diff --git a/test/v4l2_videodevice/formats.cpp b/test/v4l2_videodevice/formats.cpp
> index a74214215faf..043732dcaba1 100644
> --- a/test/v4l2_videodevice/formats.cpp
> +++ b/test/v4l2_videodevice/formats.cpp
> @@ -8,8 +8,8 @@
>  #include <iostream>
>  #include <limits.h>
>
> -#include "utils.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/utils.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  #include "v4l2_videodevice_test.h"
>
> diff --git a/test/v4l2_videodevice/v4l2_m2mdevice.cpp b/test/v4l2_videodevice/v4l2_m2mdevice.cpp
> index d20e5dfc3077..44a39d4d8ab7 100644
> --- a/test/v4l2_videodevice/v4l2_m2mdevice.cpp
> +++ b/test/v4l2_videodevice/v4l2_m2mdevice.cpp
> @@ -11,10 +11,10 @@
>  #include <libcamera/event_dispatcher.h>
>  #include <libcamera/timer.h>
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -#include "thread.h"
> -#include "v4l2_videodevice.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/thread.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
>
>  #include "test.h"
>
> diff --git a/test/v4l2_videodevice/v4l2_videodevice_test.cpp b/test/v4l2_videodevice/v4l2_videodevice_test.cpp
> index 93b9e72da5b4..f23aaf8f514b 100644
> --- a/test/v4l2_videodevice/v4l2_videodevice_test.cpp
> +++ b/test/v4l2_videodevice/v4l2_videodevice_test.cpp
> @@ -9,11 +9,11 @@
>
>  #include <linux/media-bus-format.h>
>
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +
>  #include "v4l2_videodevice_test.h"
>
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -
>  using namespace std;
>  using namespace libcamera;
>
> diff --git a/test/v4l2_videodevice/v4l2_videodevice_test.h b/test/v4l2_videodevice/v4l2_videodevice_test.h
> index 9acaceb84fe0..21054561e068 100644
> --- a/test/v4l2_videodevice/v4l2_videodevice_test.h
> +++ b/test/v4l2_videodevice/v4l2_videodevice_test.h
> @@ -11,14 +11,14 @@
>
>  #include <libcamera/buffer.h>
>
> +#include "libcamera/internal/camera_sensor.h"
> +#include "libcamera/internal/device_enumerator.h"
> +#include "libcamera/internal/media_device.h"
> +#include "libcamera/internal/v4l2_subdevice.h"
> +#include "libcamera/internal/v4l2_videodevice.h"
> +
>  #include "test.h"
>
> -#include "camera_sensor.h"
> -#include "device_enumerator.h"
> -#include "media_device.h"
> -#include "v4l2_subdevice.h"
> -#include "v4l2_videodevice.h"
> -
>  using namespace libcamera;
>
>  class V4L2VideoDeviceTest : public Test
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in
index 86bcc4d00f88..c3fe5f663f7c 100644
--- a/Documentation/Doxyfile.in
+++ b/Documentation/Doxyfile.in
@@ -842,10 +842,10 @@  RECURSIVE              = YES
 # run.
 
 EXCLUDE                = @TOP_SRCDIR@/include/libcamera/span.h \
+			 @TOP_SRCDIR@/include/libcamera/internal/device_enumerator_sysfs.h \
+			 @TOP_SRCDIR@/include/libcamera/internal/device_enumerator_udev.h \
 			 @TOP_SRCDIR@/src/libcamera/device_enumerator_sysfs.cpp \
 			 @TOP_SRCDIR@/src/libcamera/device_enumerator_udev.cpp \
-			 @TOP_SRCDIR@/src/libcamera/include/device_enumerator_sysfs.h \
-			 @TOP_SRCDIR@/src/libcamera/include/device_enumerator_udev.h \
 			 @TOP_SRCDIR@/src/libcamera/pipeline/ \
 			 @TOP_SRCDIR@/src/libcamera/proxy/
 
@@ -2053,7 +2053,7 @@  SEARCH_INCLUDES        = YES
 # preprocessor.
 # This tag requires that the tag SEARCH_INCLUDES is set to YES.
 
-INCLUDE_PATH           = "@TOP_SRCDIR@/include/libcamera" "@TOP_SRCDIR@/src/libcamera/include"
+INCLUDE_PATH           = "@TOP_SRCDIR@/include/libcamera"
 
 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
 # patterns (like *.h and *.hpp) to filter out the header-files in the
diff --git a/src/libcamera/include/byte_stream_buffer.h b/include/libcamera/internal/byte_stream_buffer.h
similarity index 100%
rename from src/libcamera/include/byte_stream_buffer.h
rename to include/libcamera/internal/byte_stream_buffer.h
diff --git a/src/libcamera/include/camera_controls.h b/include/libcamera/internal/camera_controls.h
similarity index 91%
rename from src/libcamera/include/camera_controls.h
rename to include/libcamera/internal/camera_controls.h
index 265c1fe379db..dc8b3ba84bc4 100644
--- a/src/libcamera/include/camera_controls.h
+++ b/include/libcamera/internal/camera_controls.h
@@ -7,7 +7,7 @@ 
 #ifndef __LIBCAMERA_CAMERA_CONTROLS_H__
 #define __LIBCAMERA_CAMERA_CONTROLS_H__
 
-#include "control_validator.h"
+#include "libcamera/internal/control_validator.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
similarity index 96%
rename from src/libcamera/include/camera_sensor.h
rename to include/libcamera/internal/camera_sensor.h
index 30cf5f34f485..d79bd9ce9d58 100644
--- a/src/libcamera/include/camera_sensor.h
+++ b/include/libcamera/internal/camera_sensor.h
@@ -14,8 +14,8 @@ 
 #include <libcamera/controls.h>
 #include <libcamera/geometry.h>
 
-#include "formats.h"
-#include "log.h"
+#include "libcamera/internal/formats.h"
+#include "libcamera/internal/log.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/control_serializer.h b/include/libcamera/internal/control_serializer.h
similarity index 100%
rename from src/libcamera/include/control_serializer.h
rename to include/libcamera/internal/control_serializer.h
diff --git a/src/libcamera/include/control_validator.h b/include/libcamera/internal/control_validator.h
similarity index 100%
rename from src/libcamera/include/control_validator.h
rename to include/libcamera/internal/control_validator.h
diff --git a/src/libcamera/include/device_enumerator.h b/include/libcamera/internal/device_enumerator.h
similarity index 100%
rename from src/libcamera/include/device_enumerator.h
rename to include/libcamera/internal/device_enumerator.h
diff --git a/src/libcamera/include/device_enumerator_sysfs.h b/include/libcamera/internal/device_enumerator_sysfs.h
similarity index 92%
rename from src/libcamera/include/device_enumerator_sysfs.h
rename to include/libcamera/internal/device_enumerator_sysfs.h
index 5a5c9b0f5a31..a63e737a78d5 100644
--- a/src/libcamera/include/device_enumerator_sysfs.h
+++ b/include/libcamera/internal/device_enumerator_sysfs.h
@@ -10,7 +10,7 @@ 
 #include <memory>
 #include <string>
 
-#include "device_enumerator.h"
+#include "libcamera/internal/device_enumerator.h"
 
 class MediaDevice;
 
diff --git a/src/libcamera/include/device_enumerator_udev.h b/include/libcamera/internal/device_enumerator_udev.h
similarity index 96%
rename from src/libcamera/include/device_enumerator_udev.h
rename to include/libcamera/internal/device_enumerator_udev.h
index fdce4520f33a..fdaa20968ef0 100644
--- a/src/libcamera/include/device_enumerator_udev.h
+++ b/include/libcamera/internal/device_enumerator_udev.h
@@ -14,7 +14,7 @@ 
 #include <string>
 #include <sys/types.h>
 
-#include "device_enumerator.h"
+#include "libcamera/internal/device_enumerator.h"
 
 struct udev;
 struct udev_device;
diff --git a/src/libcamera/include/event_dispatcher_poll.h b/include/libcamera/internal/event_dispatcher_poll.h
similarity index 100%
rename from src/libcamera/include/event_dispatcher_poll.h
rename to include/libcamera/internal/event_dispatcher_poll.h
diff --git a/src/libcamera/include/file.h b/include/libcamera/internal/file.h
similarity index 100%
rename from src/libcamera/include/file.h
rename to include/libcamera/internal/file.h
diff --git a/src/libcamera/include/formats.h b/include/libcamera/internal/formats.h
similarity index 96%
rename from src/libcamera/include/formats.h
rename to include/libcamera/internal/formats.h
index 291a1108aa33..4092a93ef973 100644
--- a/src/libcamera/include/formats.h
+++ b/include/libcamera/internal/formats.h
@@ -14,7 +14,7 @@ 
 #include <libcamera/geometry.h>
 #include <libcamera/pixelformats.h>
 
-#include "v4l2_pixelformat.h"
+#include "libcamera/internal/v4l2_pixelformat.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/ipa_context_wrapper.h b/include/libcamera/internal/ipa_context_wrapper.h
similarity index 96%
rename from src/libcamera/include/ipa_context_wrapper.h
rename to include/libcamera/internal/ipa_context_wrapper.h
index 0db022ef5a1b..a717d4067498 100644
--- a/src/libcamera/include/ipa_context_wrapper.h
+++ b/include/libcamera/internal/ipa_context_wrapper.h
@@ -9,7 +9,7 @@ 
 
 #include <ipa/ipa_interface.h>
 
-#include "control_serializer.h"
+#include "libcamera/internal/control_serializer.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/ipa_manager.h b/include/libcamera/internal/ipa_manager.h
similarity index 88%
rename from src/libcamera/include/ipa_manager.h
rename to include/libcamera/internal/ipa_manager.h
index aa6b9adb1f87..f07d91fc7bbf 100644
--- a/src/libcamera/include/ipa_manager.h
+++ b/include/libcamera/internal/ipa_manager.h
@@ -13,9 +13,9 @@ 
 #include <ipa/ipa_interface.h>
 #include <ipa/ipa_module_info.h>
 
-#include "ipa_module.h"
-#include "pipeline_handler.h"
-#include "pub_key.h"
+#include "libcamera/internal/ipa_module.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/pub_key.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/ipa_module.h b/include/libcamera/internal/ipa_module.h
similarity index 93%
rename from src/libcamera/include/ipa_module.h
rename to include/libcamera/internal/ipa_module.h
index 15022e19edce..2f569db0b848 100644
--- a/src/libcamera/include/ipa_module.h
+++ b/include/libcamera/internal/ipa_module.h
@@ -14,8 +14,8 @@ 
 #include <ipa/ipa_interface.h>
 #include <ipa/ipa_module_info.h>
 
-#include "log.h"
-#include "pipeline_handler.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/pipeline_handler.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/ipa_proxy.h b/include/libcamera/internal/ipa_proxy.h
similarity index 100%
rename from src/libcamera/include/ipa_proxy.h
rename to include/libcamera/internal/ipa_proxy.h
diff --git a/src/libcamera/include/ipc_unixsocket.h b/include/libcamera/internal/ipc_unixsocket.h
similarity index 100%
rename from src/libcamera/include/ipc_unixsocket.h
rename to include/libcamera/internal/ipc_unixsocket.h
diff --git a/src/libcamera/include/log.h b/include/libcamera/internal/log.h
similarity index 98%
rename from src/libcamera/include/log.h
rename to include/libcamera/internal/log.h
index ee0b4069bd32..cab2034aae6b 100644
--- a/src/libcamera/include/log.h
+++ b/include/libcamera/internal/log.h
@@ -10,7 +10,7 @@ 
 #include <chrono>
 #include <sstream>
 
-#include "utils.h"
+#include "libcamera/internal/utils.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/media_device.h b/include/libcamera/internal/media_device.h
similarity index 96%
rename from src/libcamera/include/media_device.h
rename to include/libcamera/internal/media_device.h
index 4d9f76618ec0..9fe76c514b17 100644
--- a/src/libcamera/include/media_device.h
+++ b/include/libcamera/internal/media_device.h
@@ -16,8 +16,8 @@ 
 
 #include <libcamera/signal.h>
 
-#include "log.h"
-#include "media_object.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_object.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/media_object.h b/include/libcamera/internal/media_object.h
similarity index 100%
rename from src/libcamera/include/media_object.h
rename to include/libcamera/internal/media_object.h
diff --git a/src/libcamera/include/meson.build b/include/libcamera/internal/meson.build
similarity index 100%
rename from src/libcamera/include/meson.build
rename to include/libcamera/internal/meson.build
diff --git a/src/libcamera/include/message.h b/include/libcamera/internal/message.h
similarity index 100%
rename from src/libcamera/include/message.h
rename to include/libcamera/internal/message.h
diff --git a/src/libcamera/include/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h
similarity index 98%
rename from src/libcamera/include/pipeline_handler.h
rename to include/libcamera/internal/pipeline_handler.h
index 706413fa6e9f..428f5887c76b 100644
--- a/src/libcamera/include/pipeline_handler.h
+++ b/include/libcamera/internal/pipeline_handler.h
@@ -19,7 +19,7 @@ 
 #include <libcamera/object.h>
 #include <libcamera/stream.h>
 
-#include "ipa_proxy.h"
+#include "libcamera/internal/ipa_proxy.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/process.h b/include/libcamera/internal/process.h
similarity index 100%
rename from src/libcamera/include/process.h
rename to include/libcamera/internal/process.h
diff --git a/src/libcamera/include/pub_key.h b/include/libcamera/internal/pub_key.h
similarity index 100%
rename from src/libcamera/include/pub_key.h
rename to include/libcamera/internal/pub_key.h
diff --git a/src/libcamera/include/semaphore.h b/include/libcamera/internal/semaphore.h
similarity index 94%
rename from src/libcamera/include/semaphore.h
rename to include/libcamera/internal/semaphore.h
index c6b286536eb3..4d93077c776f 100644
--- a/src/libcamera/include/semaphore.h
+++ b/include/libcamera/internal/semaphore.h
@@ -9,7 +9,7 @@ 
 
 #include <condition_variable>
 
-#include "thread.h"
+#include "libcamera/internal/thread.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/thread.h b/include/libcamera/internal/thread.h
similarity index 97%
rename from src/libcamera/include/thread.h
rename to include/libcamera/internal/thread.h
index d700f111a3ae..6594c9b06b8d 100644
--- a/src/libcamera/include/thread.h
+++ b/include/libcamera/internal/thread.h
@@ -14,7 +14,7 @@ 
 
 #include <libcamera/signal.h>
 
-#include "utils.h"
+#include "libcamera/internal/utils.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/utils.h b/include/libcamera/internal/utils.h
similarity index 100%
rename from src/libcamera/include/utils.h
rename to include/libcamera/internal/utils.h
diff --git a/src/libcamera/include/v4l2_controls.h b/include/libcamera/internal/v4l2_controls.h
similarity index 100%
rename from src/libcamera/include/v4l2_controls.h
rename to include/libcamera/internal/v4l2_controls.h
diff --git a/src/libcamera/include/v4l2_device.h b/include/libcamera/internal/v4l2_device.h
similarity index 94%
rename from src/libcamera/include/v4l2_device.h
rename to include/libcamera/internal/v4l2_device.h
index e604a40df4c9..d491eafd262e 100644
--- a/src/libcamera/include/v4l2_device.h
+++ b/include/libcamera/internal/v4l2_device.h
@@ -13,8 +13,8 @@ 
 
 #include <linux/videodev2.h>
 
-#include "log.h"
-#include "v4l2_controls.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/v4l2_controls.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/v4l2_pixelformat.h b/include/libcamera/internal/v4l2_pixelformat.h
similarity index 100%
rename from src/libcamera/include/v4l2_pixelformat.h
rename to include/libcamera/internal/v4l2_pixelformat.h
diff --git a/src/libcamera/include/v4l2_subdevice.h b/include/libcamera/internal/v4l2_subdevice.h
similarity index 90%
rename from src/libcamera/include/v4l2_subdevice.h
rename to include/libcamera/internal/v4l2_subdevice.h
index d0e565dbdaab..1be454f0ddda 100644
--- a/src/libcamera/include/v4l2_subdevice.h
+++ b/include/libcamera/internal/v4l2_subdevice.h
@@ -12,10 +12,10 @@ 
 
 #include <libcamera/geometry.h>
 
-#include "formats.h"
-#include "log.h"
-#include "media_object.h"
-#include "v4l2_device.h"
+#include "libcamera/internal/formats.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_object.h"
+#include "libcamera/internal/v4l2_device.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/include/v4l2_videodevice.h b/include/libcamera/internal/v4l2_videodevice.h
similarity index 97%
rename from src/libcamera/include/v4l2_videodevice.h
rename to include/libcamera/internal/v4l2_videodevice.h
index 94565b97b6b1..dc259523599c 100644
--- a/src/libcamera/include/v4l2_videodevice.h
+++ b/include/libcamera/internal/v4l2_videodevice.h
@@ -20,10 +20,10 @@ 
 #include <libcamera/pixelformats.h>
 #include <libcamera/signal.h>
 
-#include "formats.h"
-#include "log.h"
-#include "v4l2_device.h"
-#include "v4l2_pixelformat.h"
+#include "libcamera/internal/formats.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/v4l2_device.h"
+#include "libcamera/internal/v4l2_pixelformat.h"
 
 namespace libcamera {
 
diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build
index cea47eb83030..f9c8e64bd50c 100644
--- a/include/libcamera/meson.build
+++ b/include/libcamera/meson.build
@@ -23,6 +23,8 @@  libcamera_api = files([
 
 include_dir = join_paths(libcamera_include_dir, 'libcamera')
 
+subdir('internal')
+
 install_headers(libcamera_api,
                 subdir : include_dir)
 
diff --git a/src/android/camera3_hal.cpp b/src/android/camera3_hal.cpp
index 34301ed971b6..716e36c72b83 100644
--- a/src/android/camera3_hal.cpp
+++ b/src/android/camera3_hal.cpp
@@ -7,9 +7,10 @@ 
 
 #include <hardware/camera_common.h>
 
+#include "libcamera/internal/log.h"
+
 #include "camera_device.h"
 #include "camera_hal_manager.h"
-#include "log.h"
 
 using namespace libcamera;
 
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 76af70ebccfa..4ec429fc3f8f 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -11,8 +11,8 @@ 
 #include <libcamera/controls.h>
 #include <libcamera/property_ids.h>
 
-#include "log.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
 
 #include "camera_metadata.h"
 
diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index 55eac317e0e4..bce1cfbc85a4 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -16,7 +16,7 @@ 
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
-#include "message.h"
+#include "libcamera/internal/message.h"
 
 class CameraMetadata;
 
diff --git a/src/android/camera_hal_manager.cpp b/src/android/camera_hal_manager.cpp
index 5bd3bdba8a55..759e320dcd3b 100644
--- a/src/android/camera_hal_manager.cpp
+++ b/src/android/camera_hal_manager.cpp
@@ -9,7 +9,7 @@ 
 
 #include <libcamera/camera.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 #include "camera_device.h"
 
diff --git a/src/android/camera_metadata.cpp b/src/android/camera_metadata.cpp
index 76965108c08b..47b2e4ef117a 100644
--- a/src/android/camera_metadata.cpp
+++ b/src/android/camera_metadata.cpp
@@ -7,7 +7,7 @@ 
 
 #include "camera_metadata.h"
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 using namespace libcamera;
 
diff --git a/src/ipa/libipa/ipa_interface_wrapper.cpp b/src/ipa/libipa/ipa_interface_wrapper.cpp
index 21d8c98bddee..90f270c021a9 100644
--- a/src/ipa/libipa/ipa_interface_wrapper.cpp
+++ b/src/ipa/libipa/ipa_interface_wrapper.cpp
@@ -14,8 +14,8 @@ 
 
 #include <ipa/ipa_interface.h>
 
-#include "byte_stream_buffer.h"
-#include "camera_sensor.h"
+#include "libcamera/internal/byte_stream_buffer.h"
+#include "libcamera/internal/camera_sensor.h"
 
 /**
  * \file ipa_interface_wrapper.h
diff --git a/src/ipa/libipa/ipa_interface_wrapper.h b/src/ipa/libipa/ipa_interface_wrapper.h
index 56507aafd81e..b426034d551d 100644
--- a/src/ipa/libipa/ipa_interface_wrapper.h
+++ b/src/ipa/libipa/ipa_interface_wrapper.h
@@ -11,7 +11,7 @@ 
 
 #include <ipa/ipa_interface.h>
 
-#include "control_serializer.h"
+#include "libcamera/internal/control_serializer.h"
 
 namespace libcamera {
 
diff --git a/src/ipa/meson.build b/src/ipa/meson.build
index ab73c347021c..5a5de267c147 100644
--- a/src/ipa/meson.build
+++ b/src/ipa/meson.build
@@ -6,7 +6,6 @@  ipa_sysconf_dir = join_paths(get_option('sysconfdir'), 'libcamera', 'ipa')
 
 ipa_includes = [
     libcamera_includes,
-    libcamera_internal_includes,
 ]
 
 config_h.set('IPA_CONFIG_DIR',
diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/raspberrypi/cam_helper.cpp
index 7f05d2c6b368..a0c73f99390f 100644
--- a/src/ipa/raspberrypi/cam_helper.cpp
+++ b/src/ipa/raspberrypi/cam_helper.cpp
@@ -11,11 +11,11 @@ 
 #include <map>
 #include <string.h>
 
+#include "libcamera/internal/v4l2_videodevice.h"
+
 #include "cam_helper.hpp"
 #include "md_parser.hpp"
 
-#include "v4l2_videodevice.h"
-
 using namespace RPi;
 
 static std::map<std::string, CamHelperCreateFunc> cam_helpers;
diff --git a/src/ipa/raspberrypi/cam_helper.hpp b/src/ipa/raspberrypi/cam_helper.hpp
index 0c8aa29a4cff..6877f4735031 100644
--- a/src/ipa/raspberrypi/cam_helper.hpp
+++ b/src/ipa/raspberrypi/cam_helper.hpp
@@ -11,7 +11,7 @@ 
 #include "camera_mode.h"
 #include "md_parser.hpp"
 
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 namespace RPi {
 
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index 3bcc08156902..46b244538e32 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -22,6 +22,10 @@ 
 #include <libcamera/span.h>
 #include <libipa/ipa_interface_wrapper.h>
 
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
+
 #include <linux/bcm2835-isp.h>
 
 #include "agc_algorithm.hpp"
@@ -44,10 +48,6 @@ 
 #include "sdn_status.h"
 #include "sharpen_status.h"
 
-#include "camera_sensor.h"
-#include "log.h"
-#include "utils.h"
-
 namespace libcamera {
 
 /* Configure the sensor with these values initially. */
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index bfa88418fa7b..4f6e0342dac1 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -22,8 +22,8 @@ 
 #include <libcamera/request.h>
 #include <libipa/ipa_interface_wrapper.h>
 
-#include "log.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
 
 namespace libcamera {
 
diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp
index 9271f2d8acff..3fa6be6535e2 100644
--- a/src/ipa/vimc/vimc.cpp
+++ b/src/ipa/vimc/vimc.cpp
@@ -19,8 +19,8 @@ 
 
 #include <libipa/ipa_interface_wrapper.h>
 
-#include "file.h"
-#include "log.h"
+#include "libcamera/internal/file.h"
+#include "libcamera/internal/log.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/bound_method.cpp b/src/libcamera/bound_method.cpp
index 9aa59dc3678f..9993e5969aac 100644
--- a/src/libcamera/bound_method.cpp
+++ b/src/libcamera/bound_method.cpp
@@ -7,9 +7,9 @@ 
 
 #include <libcamera/bound_method.h>
 
-#include "message.h"
-#include "semaphore.h"
-#include "thread.h"
+#include "libcamera/internal/message.h"
+#include "libcamera/internal/semaphore.h"
+#include "libcamera/internal/thread.h"
 
 /**
  * \file bound_method.h
diff --git a/src/libcamera/buffer.cpp b/src/libcamera/buffer.cpp
index 0c5e56cf1062..1a1d4bac7aed 100644
--- a/src/libcamera/buffer.cpp
+++ b/src/libcamera/buffer.cpp
@@ -12,7 +12,7 @@ 
 #include <sys/mman.h>
 #include <unistd.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file buffer.h
diff --git a/src/libcamera/byte_stream_buffer.cpp b/src/libcamera/byte_stream_buffer.cpp
index 20d6a6552c5f..df7029b02a7f 100644
--- a/src/libcamera/byte_stream_buffer.cpp
+++ b/src/libcamera/byte_stream_buffer.cpp
@@ -5,12 +5,12 @@ 
  * byte_stream_buffer.cpp - Byte stream buffer
  */
 
-#include "byte_stream_buffer.h"
+#include "libcamera/internal/byte_stream_buffer.h"
 
 #include <stdint.h>
 #include <string.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index 8c3bb2c2a01f..eac769a43964 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -14,9 +14,9 @@ 
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
-#include "log.h"
-#include "pipeline_handler.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file camera.h
diff --git a/src/libcamera/camera_controls.cpp b/src/libcamera/camera_controls.cpp
index 59dcede2ca36..371f6d079e2d 100644
--- a/src/libcamera/camera_controls.cpp
+++ b/src/libcamera/camera_controls.cpp
@@ -5,7 +5,7 @@ 
  * camera_controls.cpp - Camera controls
  */
 
-#include "camera_controls.h"
+#include "libcamera/internal/camera_controls.h"
 
 #include <libcamera/camera.h>
 #include <libcamera/controls.h>
diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
index fddf7349ec15..849377ad2712 100644
--- a/src/libcamera/camera_manager.cpp
+++ b/src/libcamera/camera_manager.cpp
@@ -13,12 +13,12 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/event_dispatcher.h>
 
-#include "device_enumerator.h"
-#include "event_dispatcher_poll.h"
-#include "log.h"
-#include "pipeline_handler.h"
-#include "thread.h"
-#include "utils.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/event_dispatcher_poll.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file camera_manager.h
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 31a916a92722..174df17cfaef 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -5,7 +5,7 @@ 
  * camera_sensor.cpp - A camera sensor
  */
 
-#include "camera_sensor.h"
+#include "libcamera/internal/camera_sensor.h"
 
 #include <algorithm>
 #include <float.h>
@@ -16,9 +16,9 @@ 
 
 #include <libcamera/property_ids.h>
 
-#include "formats.h"
-#include "utils.h"
-#include "v4l2_subdevice.h"
+#include "libcamera/internal/formats.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_subdevice.h"
 
 /**
  * \file camera_sensor.h
diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp
index fcff5e56fbf7..bf162b6cc471 100644
--- a/src/libcamera/control_serializer.cpp
+++ b/src/libcamera/control_serializer.cpp
@@ -5,7 +5,7 @@ 
  * control_serializer.cpp - Control (de)serializer
  */
 
-#include "control_serializer.h"
+#include "libcamera/internal/control_serializer.h"
 
 #include <algorithm>
 #include <memory>
@@ -16,8 +16,8 @@ 
 #include <libcamera/controls.h>
 #include <libcamera/span.h>
 
-#include "byte_stream_buffer.h"
-#include "log.h"
+#include "libcamera/internal/byte_stream_buffer.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file control_serializer.h
diff --git a/src/libcamera/control_validator.cpp b/src/libcamera/control_validator.cpp
index 8e5cf3c3e3ee..5a2f27ac9a3b 100644
--- a/src/libcamera/control_validator.cpp
+++ b/src/libcamera/control_validator.cpp
@@ -5,7 +5,7 @@ 
  * control_validator.cpp - Control validator
  */
 
-#include "control_validator.h"
+#include "libcamera/internal/control_validator.h"
 
 /**
  * \file control_validator.h
diff --git a/src/libcamera/controls.cpp b/src/libcamera/controls.cpp
index 08df7f29e938..dca782667d88 100644
--- a/src/libcamera/controls.cpp
+++ b/src/libcamera/controls.cpp
@@ -12,9 +12,9 @@ 
 #include <string>
 #include <string.h>
 
-#include "control_validator.h"
-#include "log.h"
-#include "utils.h"
+#include "libcamera/internal/control_validator.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file controls.h
diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp
index dd17e3e32e6c..e21a2a7deaae 100644
--- a/src/libcamera/device_enumerator.cpp
+++ b/src/libcamera/device_enumerator.cpp
@@ -5,14 +5,14 @@ 
  * device_enumerator.cpp - Enumeration and matching
  */
 
-#include "device_enumerator.h"
-#include "device_enumerator_sysfs.h"
-#include "device_enumerator_udev.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/device_enumerator_sysfs.h"
+#include "libcamera/internal/device_enumerator_udev.h"
 
 #include <string.h>
 
-#include "log.h"
-#include "media_device.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
 
 /**
  * \file device_enumerator.h
diff --git a/src/libcamera/device_enumerator_sysfs.cpp b/src/libcamera/device_enumerator_sysfs.cpp
index 3446db59e9d4..ff72885288c3 100644
--- a/src/libcamera/device_enumerator_sysfs.cpp
+++ b/src/libcamera/device_enumerator_sysfs.cpp
@@ -5,7 +5,7 @@ 
  * device_enumerator_sysfs.cpp - sysfs-based device enumerator
  */
 
-#include "device_enumerator_sysfs.h"
+#include "libcamera/internal/device_enumerator_sysfs.h"
 
 #include <dirent.h>
 #include <fcntl.h>
@@ -17,8 +17,8 @@ 
 #include <sys/types.h>
 #include <unistd.h>
 
-#include "log.h"
-#include "media_device.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp
index 2e33c898aeef..56ca4dc2804b 100644
--- a/src/libcamera/device_enumerator_udev.cpp
+++ b/src/libcamera/device_enumerator_udev.cpp
@@ -5,7 +5,7 @@ 
  * device_enumerator_udev.cpp - udev-based device enumerator
  */
 
-#include "device_enumerator_udev.h"
+#include "libcamera/internal/device_enumerator_udev.h"
 
 #include <algorithm>
 #include <fcntl.h>
@@ -19,8 +19,8 @@ 
 
 #include <libcamera/event_notifier.h>
 
-#include "log.h"
-#include "media_device.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/event_dispatcher.cpp b/src/libcamera/event_dispatcher.cpp
index bb4fddfffe86..90bd5daf0612 100644
--- a/src/libcamera/event_dispatcher.cpp
+++ b/src/libcamera/event_dispatcher.cpp
@@ -7,7 +7,7 @@ 
 
 #include <libcamera/event_dispatcher.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file event_dispatcher.h
diff --git a/src/libcamera/event_dispatcher_poll.cpp b/src/libcamera/event_dispatcher_poll.cpp
index 51ac5adf2f74..9ab85da7d75d 100644
--- a/src/libcamera/event_dispatcher_poll.cpp
+++ b/src/libcamera/event_dispatcher_poll.cpp
@@ -5,7 +5,7 @@ 
  * event_dispatcher_poll.cpp - Poll-based event dispatcher
  */
 
-#include "event_dispatcher_poll.h"
+#include "libcamera/internal/event_dispatcher_poll.h"
 
 #include <algorithm>
 #include <chrono>
@@ -19,9 +19,9 @@ 
 #include <libcamera/event_notifier.h>
 #include <libcamera/timer.h>
 
-#include "log.h"
-#include "thread.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file event_dispatcher_poll.h
diff --git a/src/libcamera/event_notifier.cpp b/src/libcamera/event_notifier.cpp
index a9be686f79ae..cc3ea0d91e5b 100644
--- a/src/libcamera/event_notifier.cpp
+++ b/src/libcamera/event_notifier.cpp
@@ -10,8 +10,8 @@ 
 #include <libcamera/camera_manager.h>
 #include <libcamera/event_dispatcher.h>
 
-#include "message.h"
-#include "thread.h"
+#include "libcamera/internal/message.h"
+#include "libcamera/internal/thread.h"
 
 /**
  * \file event_notifier.h
diff --git a/src/libcamera/file.cpp b/src/libcamera/file.cpp
index 8223743d5f6b..c471bde3fc68 100644
--- a/src/libcamera/file.cpp
+++ b/src/libcamera/file.cpp
@@ -5,7 +5,7 @@ 
  * file.cpp - File I/O operations
  */
 
-#include "file.h"
+#include "libcamera/internal/file.h"
 
 #include <errno.h>
 #include <fcntl.h>
@@ -14,7 +14,7 @@ 
 #include <sys/types.h>
 #include <unistd.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file file.h
diff --git a/src/libcamera/file_descriptor.cpp b/src/libcamera/file_descriptor.cpp
index 88385476d890..ee60064bce6e 100644
--- a/src/libcamera/file_descriptor.cpp
+++ b/src/libcamera/file_descriptor.cpp
@@ -11,7 +11,7 @@ 
 #include <unistd.h>
 #include <utility>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file file_descriptor.h
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index b3af0f7fcfcc..2ac3b412ecdb 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -5,11 +5,11 @@ 
  * formats.cpp - libcamera image formats
  */
 
-#include "formats.h"
+#include "libcamera/internal/formats.h"
 
 #include <errno.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file formats.h
diff --git a/src/libcamera/framebuffer_allocator.cpp b/src/libcamera/framebuffer_allocator.cpp
index a37b564c6701..252191ba234c 100644
--- a/src/libcamera/framebuffer_allocator.cpp
+++ b/src/libcamera/framebuffer_allocator.cpp
@@ -13,8 +13,8 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/stream.h>
 
-#include "log.h"
-#include "pipeline_handler.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/pipeline_handler.h"
 
 /**
  * \file framebuffer_allocator.h
diff --git a/src/libcamera/ipa_context_wrapper.cpp b/src/libcamera/ipa_context_wrapper.cpp
index 0bd3a1aeca95..bcdc55c2bcbc 100644
--- a/src/libcamera/ipa_context_wrapper.cpp
+++ b/src/libcamera/ipa_context_wrapper.cpp
@@ -5,15 +5,15 @@ 
  * ipa_context_wrapper.cpp - Image Processing Algorithm context wrapper
  */
 
-#include "ipa_context_wrapper.h"
+#include "libcamera/internal/ipa_context_wrapper.h"
 
 #include <vector>
 
 #include <libcamera/controls.h>
 
-#include "byte_stream_buffer.h"
-#include "camera_sensor.h"
-#include "utils.h"
+#include "libcamera/internal/byte_stream_buffer.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file ipa_context_wrapper.h
diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
index 1faa3dd38188..505cf61074b7 100644
--- a/src/libcamera/ipa_manager.cpp
+++ b/src/libcamera/ipa_manager.cpp
@@ -5,19 +5,19 @@ 
  * ipa_manager.cpp - Image Processing Algorithm module manager
  */
 
-#include "ipa_manager.h"
+#include "libcamera/internal/ipa_manager.h"
 
 #include <algorithm>
 #include <dirent.h>
 #include <string.h>
 #include <sys/types.h>
 
-#include "file.h"
-#include "ipa_module.h"
-#include "ipa_proxy.h"
-#include "log.h"
-#include "pipeline_handler.h"
-#include "utils.h"
+#include "libcamera/internal/file.h"
+#include "libcamera/internal/ipa_module.h"
+#include "libcamera/internal/ipa_proxy.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file ipa_manager.h
diff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp
index 3444a788b855..91534b61e2e4 100644
--- a/src/libcamera/ipa_module.cpp
+++ b/src/libcamera/ipa_module.cpp
@@ -5,7 +5,7 @@ 
  * ipa_module.cpp - Image Processing Algorithm module
  */
 
-#include "ipa_module.h"
+#include "libcamera/internal/ipa_module.h"
 
 #include <algorithm>
 #include <array>
@@ -23,10 +23,10 @@ 
 
 #include <libcamera/span.h>
 
-#include "file.h"
-#include "log.h"
-#include "pipeline_handler.h"
-#include "utils.h"
+#include "libcamera/internal/file.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file ipa_module.h
diff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp
index 401ac52d38d6..23be24ad9bf1 100644
--- a/src/libcamera/ipa_proxy.cpp
+++ b/src/libcamera/ipa_proxy.cpp
@@ -5,16 +5,16 @@ 
  * ipa_proxy.cpp - Image Processing Algorithm proxy
  */
 
-#include "ipa_proxy.h"
+#include "libcamera/internal/ipa_proxy.h"
 
 #include <string.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
 
-#include "ipa_module.h"
-#include "log.h"
-#include "utils.h"
+#include "libcamera/internal/ipa_module.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file ipa_proxy.h
diff --git a/src/libcamera/ipa_pub_key.cpp.in b/src/libcamera/ipa_pub_key.cpp.in
index 7ffc1e24d67b..01e5333b4d30 100644
--- a/src/libcamera/ipa_pub_key.cpp.in
+++ b/src/libcamera/ipa_pub_key.cpp.in
@@ -7,7 +7,7 @@ 
  * This file is auto-generated. Do not edit.
  */
 
-#include "ipa_manager.h"
+#include "libcamera/internal/ipa_manager.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/ipc_unixsocket.cpp b/src/libcamera/ipc_unixsocket.cpp
index 6e5cab894a93..7df86e885f23 100644
--- a/src/libcamera/ipc_unixsocket.cpp
+++ b/src/libcamera/ipc_unixsocket.cpp
@@ -5,14 +5,14 @@ 
  * ipc_unixsocket.cpp - IPC mechanism based on Unix sockets
  */
 
-#include "ipc_unixsocket.h"
+#include "libcamera/internal/ipc_unixsocket.h"
 
 #include <poll.h>
 #include <string.h>
 #include <sys/socket.h>
 #include <unistd.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file ipc_unixsocket.h
diff --git a/src/libcamera/log.cpp b/src/libcamera/log.cpp
index fd1b5c39a52e..180eb97ba664 100644
--- a/src/libcamera/log.cpp
+++ b/src/libcamera/log.cpp
@@ -5,7 +5,7 @@ 
  * log.cpp - Logging infrastructure
  */
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 #if HAVE_BACKTRACE
 #include <execinfo.h>
@@ -22,8 +22,8 @@ 
 
 #include <libcamera/logging.h>
 
-#include "thread.h"
-#include "utils.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file log.h
diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
index d4e7e1002224..de18d572f479 100644
--- a/src/libcamera/media_device.cpp
+++ b/src/libcamera/media_device.cpp
@@ -5,7 +5,7 @@ 
  * media_device.cpp - Media device handler
  */
 
-#include "media_device.h"
+#include "libcamera/internal/media_device.h"
 
 #include <errno.h>
 #include <fcntl.h>
@@ -18,7 +18,7 @@ 
 
 #include <linux/media.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file media_device.h
diff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp
index ef32065c161d..ce77a72712d3 100644
--- a/src/libcamera/media_object.cpp
+++ b/src/libcamera/media_object.cpp
@@ -5,7 +5,7 @@ 
  * media_object.cpp - Media device objects: entities, pads and links
  */
 
-#include "media_object.h"
+#include "libcamera/internal/media_object.h"
 
 #include <errno.h>
 #include <string>
@@ -15,8 +15,8 @@ 
 
 #include <linux/media.h>
 
-#include "log.h"
-#include "media_device.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
 
 /**
  * \file media_object.h
diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
index d42e9720dbd6..472af451c1ef 100644
--- a/src/libcamera/meson.build
+++ b/src/libcamera/meson.build
@@ -51,13 +51,8 @@  libcamera_sources = files([
     'v4l2_videodevice.cpp',
 ])
 
-subdir('include')
-
-libcamera_internal_includes =  include_directories('include')
-
 includes = [
     libcamera_includes,
-    libcamera_internal_includes,
 ]
 
 subdir('pipeline')
diff --git a/src/libcamera/message.cpp b/src/libcamera/message.cpp
index 77f2bdd5fbac..e9b3e73f3052 100644
--- a/src/libcamera/message.cpp
+++ b/src/libcamera/message.cpp
@@ -5,11 +5,11 @@ 
  * message.cpp - Message queue support
  */
 
-#include "message.h"
+#include "libcamera/internal/message.h"
 
 #include <libcamera/signal.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file message.h
diff --git a/src/libcamera/object.cpp b/src/libcamera/object.cpp
index 99c3bf9a709b..1544a23e4410 100644
--- a/src/libcamera/object.cpp
+++ b/src/libcamera/object.cpp
@@ -11,11 +11,11 @@ 
 
 #include <libcamera/signal.h>
 
-#include "log.h"
-#include "message.h"
-#include "semaphore.h"
-#include "thread.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/message.h"
+#include "libcamera/internal/semaphore.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file object.h
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 1988cb0ee551..b805fea71c2d 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -17,15 +17,15 @@ 
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "log.h"
-#include "media_device.h"
-#include "pipeline_handler.h"
-#include "utils.h"
-#include "v4l2_controls.h"
-#include "v4l2_subdevice.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_controls.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 41d1a522fa71..e254e5558d92 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -21,15 +21,16 @@ 
 #include <linux/drm_fourcc.h>
 #include <linux/videodev2.h>
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "ipa_manager.h"
-#include "media_device.h"
-#include "pipeline_handler.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/ipa_manager.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_controls.h"
+#include "libcamera/internal/v4l2_videodevice.h"
+
 #include "staggered_ctrl.h"
-#include "utils.h"
-#include "v4l2_controls.h"
-#include "v4l2_videodevice.h"
 #include "vcsm.h"
 
 namespace libcamera {
diff --git a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp b/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
index d431887ea137..391e13f54ccc 100644
--- a/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
+++ b/src/libcamera/pipeline/raspberrypi/staggered_ctrl.cpp
@@ -11,9 +11,9 @@ 
 
 #include <libcamera/controls.h>
 
-#include "log.h"
-#include "utils.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 1e81a0048f09..7a0c8771ba54 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -20,16 +20,17 @@ 
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "ipa_manager.h"
-#include "log.h"
-#include "media_device.h"
-#include "pipeline_handler.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/ipa_manager.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
+
 #include "timeline.h"
-#include "utils.h"
-#include "v4l2_subdevice.h"
-#include "v4l2_videodevice.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/pipeline/rkisp1/timeline.cpp b/src/libcamera/pipeline/rkisp1/timeline.cpp
index f6c6434d7b53..f5194608ced7 100644
--- a/src/libcamera/pipeline/rkisp1/timeline.cpp
+++ b/src/libcamera/pipeline/rkisp1/timeline.cpp
@@ -7,7 +7,7 @@ 
 
 #include "timeline.h"
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file timeline.h
diff --git a/src/libcamera/pipeline/rkisp1/timeline.h b/src/libcamera/pipeline/rkisp1/timeline.h
index 9d30e4eaf874..88f99329873d 100644
--- a/src/libcamera/pipeline/rkisp1/timeline.h
+++ b/src/libcamera/pipeline/rkisp1/timeline.h
@@ -12,7 +12,7 @@ 
 
 #include <libcamera/timer.h>
 
-#include "utils.h"
+#include "libcamera/internal/utils.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp
index 6d88776dc2f0..02443e7f78ed 100644
--- a/src/libcamera/pipeline/simple/converter.cpp
+++ b/src/libcamera/pipeline/simple/converter.cpp
@@ -13,9 +13,9 @@ 
 #include <libcamera/geometry.h>
 #include <libcamera/signal.h>
 
-#include "log.h"
-#include "media_device.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index 6673606153b8..2565190082c8 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -24,13 +24,13 @@ 
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "log.h"
-#include "media_device.h"
-#include "pipeline_handler.h"
-#include "v4l2_subdevice.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 #include "converter.h"
 
diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
index f0c1337de862..a074909499f1 100644
--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
@@ -17,13 +17,13 @@ 
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
-#include "device_enumerator.h"
-#include "log.h"
-#include "media_device.h"
-#include "pipeline_handler.h"
-#include "utils.h"
-#include "v4l2_controls.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_controls.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
index 128301e3d99b..50a9f2df4c24 100644
--- a/src/libcamera/pipeline/vimc/vimc.cpp
+++ b/src/libcamera/pipeline/vimc/vimc.cpp
@@ -22,16 +22,16 @@ 
 #include <libcamera/request.h>
 #include <libcamera/stream.h>
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "ipa_manager.h"
-#include "log.h"
-#include "media_device.h"
-#include "pipeline_handler.h"
-#include "utils.h"
-#include "v4l2_controls.h"
-#include "v4l2_subdevice.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/ipa_manager.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_controls.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 254d341fb8a4..53aeebdcc14e 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -5,7 +5,7 @@ 
  * pipeline_handler.cpp - Pipeline handler infrastructure
  */
 
-#include "pipeline_handler.h"
+#include "libcamera/internal/pipeline_handler.h"
 
 #include <sys/sysmacros.h>
 
@@ -13,10 +13,10 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/camera_manager.h>
 
-#include "device_enumerator.h"
-#include "log.h"
-#include "media_device.h"
-#include "utils.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file pipeline_handler.h
diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
index 3b4d0f10da67..e816ee8670df 100644
--- a/src/libcamera/process.cpp
+++ b/src/libcamera/process.cpp
@@ -5,7 +5,7 @@ 
  * process.cpp - Process object
  */
 
-#include "process.h"
+#include "libcamera/internal/process.h"
 
 #include <algorithm>
 #include <dirent.h>
@@ -22,8 +22,8 @@ 
 
 #include <libcamera/event_notifier.h>
 
-#include "log.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file process.h
diff --git a/src/libcamera/proxy/ipa_proxy_linux.cpp b/src/libcamera/proxy/ipa_proxy_linux.cpp
index 9e0f44cf314f..7d6f8799f8ff 100644
--- a/src/libcamera/proxy/ipa_proxy_linux.cpp
+++ b/src/libcamera/proxy/ipa_proxy_linux.cpp
@@ -10,11 +10,11 @@ 
 #include <ipa/ipa_interface.h>
 #include <ipa/ipa_module_info.h>
 
-#include "ipa_module.h"
-#include "ipa_proxy.h"
-#include "ipc_unixsocket.h"
-#include "log.h"
-#include "process.h"
+#include "libcamera/internal/ipa_module.h"
+#include "libcamera/internal/ipa_proxy.h"
+#include "libcamera/internal/ipc_unixsocket.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/process.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/proxy/ipa_proxy_thread.cpp b/src/libcamera/proxy/ipa_proxy_thread.cpp
index 81d2d68ee715..03d4c0d927b9 100644
--- a/src/libcamera/proxy/ipa_proxy_thread.cpp
+++ b/src/libcamera/proxy/ipa_proxy_thread.cpp
@@ -10,11 +10,11 @@ 
 #include <ipa/ipa_interface.h>
 #include <ipa/ipa_module_info.h>
 
-#include "ipa_context_wrapper.h"
-#include "ipa_module.h"
-#include "ipa_proxy.h"
-#include "log.h"
-#include "thread.h"
+#include "libcamera/internal/ipa_context_wrapper.h"
+#include "libcamera/internal/ipa_module.h"
+#include "libcamera/internal/ipa_proxy.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/thread.h"
 
 namespace libcamera {
 
diff --git a/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp b/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp
index 9cefa2405e19..9ba94d01d0ca 100644
--- a/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp
+++ b/src/libcamera/proxy/worker/ipa_proxy_linux_worker.cpp
@@ -13,10 +13,10 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/logging.h>
 
-#include "ipa_module.h"
-#include "ipc_unixsocket.h"
-#include "log.h"
-#include "thread.h"
+#include "libcamera/internal/ipa_module.h"
+#include "libcamera/internal/ipc_unixsocket.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/thread.h"
 
 using namespace libcamera;
 
diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
index 1b1bee5e0170..ac0310a74871 100644
--- a/src/libcamera/proxy/worker/meson.build
+++ b/src/libcamera/proxy/worker/meson.build
@@ -8,7 +8,6 @@  proxy_install_dir = join_paths(get_option('libexecdir'), 'libcamera')
 
 foreach t : ipa_proxy_sources
     proxy = executable(t[0], t[1],
-                       include_directories : libcamera_internal_includes,
                        install : true,
                        install_dir : proxy_install_dir,
                        dependencies : libcamera_dep)
diff --git a/src/libcamera/pub_key.cpp b/src/libcamera/pub_key.cpp
index 064d2dd200e1..2f60adbb7e62 100644
--- a/src/libcamera/pub_key.cpp
+++ b/src/libcamera/pub_key.cpp
@@ -5,7 +5,7 @@ 
  * pub_key.cpp - Public key signature verification
  */
 
-#include "pub_key.h"
+#include "libcamera/internal/pub_key.h"
 
 #if HAVE_GNUTLS
 #include <gnutls/abstract.h>
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
index ea33736fbeb5..6b9e0b4a538a 100644
--- a/src/libcamera/request.cpp
+++ b/src/libcamera/request.cpp
@@ -14,8 +14,8 @@ 
 #include <libcamera/control_ids.h>
 #include <libcamera/stream.h>
 
-#include "camera_controls.h"
-#include "log.h"
+#include "libcamera/internal/camera_controls.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file request.h
diff --git a/src/libcamera/semaphore.cpp b/src/libcamera/semaphore.cpp
index ce1eae4914ed..d8988a9189e8 100644
--- a/src/libcamera/semaphore.cpp
+++ b/src/libcamera/semaphore.cpp
@@ -5,8 +5,8 @@ 
  * semaphore.cpp - General-purpose counting semaphore
  */
 
-#include "semaphore.h"
-#include "thread.h"
+#include "libcamera/internal/semaphore.h"
+#include "libcamera/internal/thread.h"
 
 /**
  * \file semaphore.h
diff --git a/src/libcamera/signal.cpp b/src/libcamera/signal.cpp
index 6eab1fa74d42..2532df3c3073 100644
--- a/src/libcamera/signal.cpp
+++ b/src/libcamera/signal.cpp
@@ -7,7 +7,7 @@ 
 
 #include <libcamera/signal.h>
 
-#include "thread.h"
+#include "libcamera/internal/thread.h"
 
 /**
  * \file signal.h
diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp
index 86c0b17db313..f34348f2aea0 100644
--- a/src/libcamera/stream.cpp
+++ b/src/libcamera/stream.cpp
@@ -15,8 +15,8 @@ 
 
 #include <libcamera/request.h>
 
-#include "log.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file stream.h
diff --git a/src/libcamera/thread.cpp b/src/libcamera/thread.cpp
index 85293c188c2a..d1750d72ec8a 100644
--- a/src/libcamera/thread.cpp
+++ b/src/libcamera/thread.cpp
@@ -5,7 +5,7 @@ 
  * thread.cpp - Thread support
  */
 
-#include "thread.h"
+#include "libcamera/internal/thread.h"
 
 #include <atomic>
 #include <condition_variable>
@@ -16,9 +16,9 @@ 
 
 #include <libcamera/event_dispatcher.h>
 
-#include "event_dispatcher_poll.h"
-#include "log.h"
-#include "message.h"
+#include "libcamera/internal/event_dispatcher_poll.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/message.h"
 
 /**
  * \page thread Thread Support
diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp
index 24da51524efb..24e452eda49e 100644
--- a/src/libcamera/timer.cpp
+++ b/src/libcamera/timer.cpp
@@ -12,10 +12,10 @@ 
 #include <libcamera/camera_manager.h>
 #include <libcamera/event_dispatcher.h>
 
-#include "log.h"
-#include "message.h"
-#include "thread.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/message.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file timer.h
diff --git a/src/libcamera/utils.cpp b/src/libcamera/utils.cpp
index fbadf350908a..d55338fe681a 100644
--- a/src/libcamera/utils.cpp
+++ b/src/libcamera/utils.cpp
@@ -5,7 +5,7 @@ 
  * utils.cpp - Miscellaneous utility functions
  */
 
-#include "utils.h"
+#include "libcamera/internal/utils.h"
 
 #include <dlfcn.h>
 #include <elf.h>
diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp
index 8e2415f2a6df..3f8ec6ca00da 100644
--- a/src/libcamera/v4l2_controls.cpp
+++ b/src/libcamera/v4l2_controls.cpp
@@ -5,7 +5,7 @@ 
  * v4l2_controls.cpp - V4L2 Controls Support
  */
 
-#include "v4l2_controls.h"
+#include "libcamera/internal/v4l2_controls.h"
 
 #include <string.h>
 
diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index d08ab531f034..56ea1ddda2c1 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -5,7 +5,7 @@ 
  * v4l2_device.cpp - Common base for V4L2 video devices and subdevices
  */
 
-#include "v4l2_device.h"
+#include "libcamera/internal/v4l2_device.h"
 
 #include <fcntl.h>
 #include <iomanip>
@@ -14,9 +14,9 @@ 
 #include <sys/syscall.h>
 #include <unistd.h>
 
-#include "log.h"
-#include "utils.h"
-#include "v4l2_controls.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_controls.h"
 
 /**
  * \file v4l2_device.h
diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp
index 561f9327780a..36776be99e59 100644
--- a/src/libcamera/v4l2_pixelformat.cpp
+++ b/src/libcamera/v4l2_pixelformat.cpp
@@ -6,7 +6,7 @@ 
  * v4l2_pixelformat.cpp - V4L2 Pixel Format
  */
 
-#include "v4l2_pixelformat.h"
+#include "libcamera/internal/v4l2_pixelformat.h"
 
 #include <ctype.h>
 #include <map>
@@ -16,8 +16,8 @@ 
 
 #include <libcamera/pixelformats.h>
 
-#include "formats.h"
-#include "log.h"
+#include "libcamera/internal/formats.h"
+#include "libcamera/internal/log.h"
 
 /**
  * \file v4l2_pixelformat.h
diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
index 2b756178fc0a..7aefc1be032d 100644
--- a/src/libcamera/v4l2_subdevice.cpp
+++ b/src/libcamera/v4l2_subdevice.cpp
@@ -5,7 +5,7 @@ 
  * v4l2_subdevice.cpp - V4L2 Subdevice
  */
 
-#include "v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_subdevice.h"
 
 #include <fcntl.h>
 #include <iomanip>
@@ -19,10 +19,10 @@ 
 
 #include <libcamera/geometry.h>
 
-#include "log.h"
-#include "media_device.h"
-#include "media_object.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/media_object.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file v4l2_subdevice.h
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index 4b9f8b5c0413..d35596bd43e4 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -5,7 +5,7 @@ 
  * v4l2_videodevice.cpp - V4L2 Video Device
  */
 
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 #include <fcntl.h>
 #include <iomanip>
@@ -23,10 +23,10 @@ 
 #include <libcamera/event_notifier.h>
 #include <libcamera/file_descriptor.h>
 
-#include "log.h"
-#include "media_device.h"
-#include "media_object.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/media_object.h"
+#include "libcamera/internal/utils.h"
 
 /**
  * \file v4l2_videodevice.h
diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
index fc1be82d1b02..0fb941ea9b9d 100644
--- a/src/v4l2/meson.build
+++ b/src/v4l2/meson.build
@@ -22,6 +22,5 @@  v4l2_compat = shared_library('v4l2-compat',
                              v4l2_compat_sources,
                              name_prefix : '',
                              install : true,
-                             include_directories : libcamera_internal_includes,
                              dependencies : [ libcamera_dep, libdl ],
                              cpp_args : v4l2_compat_cpp_args)
diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp
index ecbb70acfb8e..50a4121cc93f 100644
--- a/src/v4l2/v4l2_camera.cpp
+++ b/src/v4l2/v4l2_camera.cpp
@@ -9,7 +9,7 @@ 
 
 #include <errno.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 using namespace libcamera;
 
diff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h
index 130995d95eb4..c969130fb37d 100644
--- a/src/v4l2/v4l2_camera.h
+++ b/src/v4l2/v4l2_camera.h
@@ -17,7 +17,7 @@ 
 #include <libcamera/file_descriptor.h>
 #include <libcamera/framebuffer_allocator.h>
 
-#include "semaphore.h"
+#include "libcamera/internal/semaphore.h"
 
 using namespace libcamera;
 
diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
index 47d0528b324f..19e8f6d3b98d 100644
--- a/src/v4l2/v4l2_camera_proxy.cpp
+++ b/src/v4l2/v4l2_camera_proxy.cpp
@@ -17,8 +17,9 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/object.h>
 
-#include "log.h"
-#include "utils.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/utils.h"
+
 #include "v4l2_camera.h"
 #include "v4l2_compat_manager.h"
 
diff --git a/src/v4l2/v4l2_compat_manager.cpp b/src/v4l2/v4l2_compat_manager.cpp
index 961d06b3e39a..cd8ac0b8e819 100644
--- a/src/v4l2/v4l2_compat_manager.cpp
+++ b/src/v4l2/v4l2_compat_manager.cpp
@@ -22,7 +22,7 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/camera_manager.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
 
 using namespace libcamera;
 
diff --git a/test/byte-stream-buffer.cpp b/test/byte-stream-buffer.cpp
index bc1d462ebf6f..d606f146f6ef 100644
--- a/test/byte-stream-buffer.cpp
+++ b/test/byte-stream-buffer.cpp
@@ -8,7 +8,8 @@ 
 #include <array>
 #include <iostream>
 
-#include "byte_stream_buffer.h"
+#include "libcamera/internal/byte_stream_buffer.h"
+
 #include "test.h"
 
 using namespace std;
diff --git a/test/camera-sensor.cpp b/test/camera-sensor.cpp
index 6069d668e495..8c7fd1d2d444 100644
--- a/test/camera-sensor.cpp
+++ b/test/camera-sensor.cpp
@@ -10,11 +10,11 @@ 
 
 #include <linux/media-bus-format.h>
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "media_device.h"
-#include "utils.h"
-#include "v4l2_subdevice.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_subdevice.h"
 
 #include "test.h"
 
diff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp
index 3f392cdc0732..ad680a83f918 100644
--- a/test/camera/buffer_import.cpp
+++ b/test/camera/buffer_import.cpp
@@ -12,9 +12,9 @@ 
 #include <numeric>
 #include <vector>
 
-#include "device_enumerator.h"
-#include "media_device.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 #include "buffer_source.h"
 #include "camera_test.h"
diff --git a/test/controls/control_info_map.cpp b/test/controls/control_info_map.cpp
index eeb702db095b..e4305f132db7 100644
--- a/test/controls/control_info_map.cpp
+++ b/test/controls/control_info_map.cpp
@@ -12,7 +12,7 @@ 
 #include <libcamera/control_ids.h>
 #include <libcamera/controls.h>
 
-#include "camera_controls.h"
+#include "libcamera/internal/camera_controls.h"
 
 #include "camera_test.h"
 #include "test.h"
diff --git a/test/controls/control_list.cpp b/test/controls/control_list.cpp
index d51ec47d61d3..5c8485b5dcc3 100644
--- a/test/controls/control_list.cpp
+++ b/test/controls/control_list.cpp
@@ -12,7 +12,7 @@ 
 #include <libcamera/control_ids.h>
 #include <libcamera/controls.h>
 
-#include "camera_controls.h"
+#include "libcamera/internal/camera_controls.h"
 
 #include "camera_test.h"
 #include "test.h"
diff --git a/test/event-dispatcher.cpp b/test/event-dispatcher.cpp
index 9f9cf17818f2..1b61778699ed 100644
--- a/test/event-dispatcher.cpp
+++ b/test/event-dispatcher.cpp
@@ -13,8 +13,9 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
-#include "thread.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/event-thread.cpp b/test/event-thread.cpp
index 01120733eca4..c90e6ac04dd3 100644
--- a/test/event-thread.cpp
+++ b/test/event-thread.cpp
@@ -13,8 +13,9 @@ 
 #include <libcamera/event_notifier.h>
 #include <libcamera/timer.h>
 
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
-#include "thread.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/event.cpp b/test/event.cpp
index 816060cc44a2..c865092c7a8a 100644
--- a/test/event.cpp
+++ b/test/event.cpp
@@ -13,8 +13,9 @@ 
 #include <libcamera/event_notifier.h>
 #include <libcamera/timer.h>
 
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
-#include "thread.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/file-descriptor.cpp b/test/file-descriptor.cpp
index e467f3a7145e..7477a843531c 100644
--- a/test/file-descriptor.cpp
+++ b/test/file-descriptor.cpp
@@ -13,8 +13,9 @@ 
 
 #include <libcamera/file_descriptor.h>
 
+#include "libcamera/internal/utils.h"
+
 #include "test.h"
-#include "utils.h"
 
 using namespace libcamera;
 using namespace std;
diff --git a/test/file.cpp b/test/file.cpp
index 6558399808f8..6262a6f04c0b 100644
--- a/test/file.cpp
+++ b/test/file.cpp
@@ -13,7 +13,8 @@ 
 #include <sys/types.h>
 #include <unistd.h>
 
-#include "file.h"
+#include "libcamera/internal/file.h"
+
 #include "test.h"
 
 using namespace std;
diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp
index 7fa88efee089..c394377dacd0 100644
--- a/test/ipa/ipa_interface_test.cpp
+++ b/test/ipa/ipa_interface_test.cpp
@@ -18,12 +18,13 @@ 
 
 #include <ipa/ipa_vimc.h>
 
-#include "device_enumerator.h"
-#include "ipa_manager.h"
-#include "ipa_module.h"
-#include "pipeline_handler.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/ipa_manager.h"
+#include "libcamera/internal/ipa_module.h"
+#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
-#include "thread.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/ipa/ipa_module_test.cpp b/test/ipa/ipa_module_test.cpp
index e3aee190b410..bd5e0e4c738e 100644
--- a/test/ipa/ipa_module_test.cpp
+++ b/test/ipa/ipa_module_test.cpp
@@ -8,7 +8,7 @@ 
 #include <iostream>
 #include <string.h>
 
-#include "ipa_module.h"
+#include "libcamera/internal/ipa_module.h"
 
 #include "test.h"
 
diff --git a/test/ipa/ipa_wrappers_test.cpp b/test/ipa/ipa_wrappers_test.cpp
index 4de132123525..aa7a9dcc6050 100644
--- a/test/ipa/ipa_wrappers_test.cpp
+++ b/test/ipa/ipa_wrappers_test.cpp
@@ -15,11 +15,11 @@ 
 #include <libcamera/controls.h>
 #include <libipa/ipa_interface_wrapper.h>
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "ipa_context_wrapper.h"
-#include "media_device.h"
-#include "v4l2_subdevice.h"
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/ipa_context_wrapper.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_subdevice.h"
 
 #include "test.h"
 
diff --git a/test/ipc/unixsocket.cpp b/test/ipc/unixsocket.cpp
index f53042b88720..4487d27b441d 100644
--- a/test/ipc/unixsocket.cpp
+++ b/test/ipc/unixsocket.cpp
@@ -18,10 +18,11 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
-#include "ipc_unixsocket.h"
+#include "libcamera/internal/ipc_unixsocket.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
+
 #include "test.h"
-#include "thread.h"
-#include "utils.h"
 
 #define CMD_CLOSE	0
 #define CMD_REVERSE	1
diff --git a/test/libtest/buffer_source.cpp b/test/libtest/buffer_source.cpp
index d1dad2a0f8cf..ee87c8cd821c 100644
--- a/test/libtest/buffer_source.cpp
+++ b/test/libtest/buffer_source.cpp
@@ -10,7 +10,7 @@ 
 #include <iostream>
 #include <memory>
 
-#include "device_enumerator.h"
+#include "libcamera/internal/device_enumerator.h"
 
 #include "test.h"
 
diff --git a/test/libtest/buffer_source.h b/test/libtest/buffer_source.h
index ae0879c99480..95a82a8229fa 100644
--- a/test/libtest/buffer_source.h
+++ b/test/libtest/buffer_source.h
@@ -9,8 +9,8 @@ 
 
 #include <libcamera/libcamera.h>
 
-#include "media_device.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 using namespace libcamera;
 
diff --git a/test/libtest/meson.build b/test/libtest/meson.build
index 481f6d6baa61..542335ea5e7c 100644
--- a/test/libtest/meson.build
+++ b/test/libtest/meson.build
@@ -15,7 +15,6 @@  test_includes_public = [
 
 test_includes_internal = [
     test_includes_public,
-    libcamera_internal_includes,
 ]
 
 libtest = static_library('libtest', libtest_sources,
diff --git a/test/log/log_api.cpp b/test/log/log_api.cpp
index 33622f841253..6f3248a79d0a 100644
--- a/test/log/log_api.cpp
+++ b/test/log/log_api.cpp
@@ -18,7 +18,8 @@ 
 
 #include <libcamera/logging.h>
 
-#include "log.h"
+#include "libcamera/internal/log.h"
+
 #include "test.h"
 
 using namespace std;
diff --git a/test/log/log_process.cpp b/test/log/log_process.cpp
index 2df4aa43713c..8463d0ede967 100644
--- a/test/log/log_process.cpp
+++ b/test/log/log_process.cpp
@@ -18,11 +18,12 @@ 
 #include <libcamera/logging.h>
 #include <libcamera/timer.h>
 
-#include "log.h"
-#include "process.h"
+#include "libcamera/internal/log.h"
+#include "libcamera/internal/process.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
+
 #include "test.h"
-#include "thread.h"
-#include "utils.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/media_device/media_device_print_test.cpp b/test/media_device/media_device_print_test.cpp
index 5018906c75e7..1f5e3f3e84c0 100644
--- a/test/media_device/media_device_print_test.cpp
+++ b/test/media_device/media_device_print_test.cpp
@@ -10,7 +10,7 @@ 
 #include <sys/stat.h>
 #include <unistd.h>
 
-#include "media_device.h"
+#include "libcamera/internal/media_device.h"
 
 #include "test.h"
 
diff --git a/test/media_device/media_device_test.h b/test/media_device/media_device_test.h
index cdbd14841d5c..0c8bf9f25563 100644
--- a/test/media_device/media_device_test.h
+++ b/test/media_device/media_device_test.h
@@ -9,8 +9,8 @@ 
 
 #include <memory>
 
-#include "device_enumerator.h"
-#include "media_device.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
 
 #include "test.h"
 
diff --git a/test/message.cpp b/test/message.cpp
index 478bc79dffa6..9553ba8cbaed 100644
--- a/test/message.cpp
+++ b/test/message.cpp
@@ -9,8 +9,9 @@ 
 #include <iostream>
 #include <thread>
 
-#include "message.h"
-#include "thread.h"
+#include "libcamera/internal/message.h"
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
 
 using namespace std;
diff --git a/test/object-invoke.cpp b/test/object-invoke.cpp
index fa162c838c78..1ae11bb11e16 100644
--- a/test/object-invoke.cpp
+++ b/test/object-invoke.cpp
@@ -11,8 +11,9 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/object.h>
 
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
-#include "thread.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/object.cpp b/test/object.cpp
index 16118971c755..264659b405d9 100644
--- a/test/object.cpp
+++ b/test/object.cpp
@@ -9,8 +9,8 @@ 
 
 #include <libcamera/object.h>
 
-#include "message.h"
-#include "thread.h"
+#include "libcamera/internal/message.h"
+#include "libcamera/internal/thread.h"
 
 #include "test.h"
 
diff --git a/test/pipeline/ipu3/ipu3_pipeline_test.cpp b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
index a5c6be0955df..34998f8f6d04 100644
--- a/test/pipeline/ipu3/ipu3_pipeline_test.cpp
+++ b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
@@ -13,9 +13,10 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/camera_manager.h>
 
-#include "device_enumerator.h"
-#include "media_device.h"
-#include "media_object.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/media_object.h"
+
 #include "test.h"
 
 using namespace std;
diff --git a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
index d46c928fbaf7..b6678ce76e9a 100644
--- a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
+++ b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
@@ -16,9 +16,10 @@ 
 #include <libcamera/camera.h>
 #include <libcamera/camera_manager.h>
 
-#include "device_enumerator.h"
-#include "media_device.h"
-#include "media_object.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/media_object.h"
+
 #include "test.h"
 
 using namespace std;
diff --git a/test/process/process_test.cpp b/test/process/process_test.cpp
index 7e7b3c2c8bf3..ce0cc7c972cd 100644
--- a/test/process/process_test.cpp
+++ b/test/process/process_test.cpp
@@ -12,10 +12,11 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
-#include "process.h"
+#include "libcamera/internal/process.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
+
 #include "test.h"
-#include "thread.h"
-#include "utils.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/serialization/control_serialization.cpp b/test/serialization/control_serialization.cpp
index 111365241eb8..e23383d13bd6 100644
--- a/test/serialization/control_serialization.cpp
+++ b/test/serialization/control_serialization.cpp
@@ -11,8 +11,9 @@ 
 #include <libcamera/control_ids.h>
 #include <libcamera/controls.h>
 
-#include "byte_stream_buffer.h"
-#include "control_serializer.h"
+#include "libcamera/internal/byte_stream_buffer.h"
+#include "libcamera/internal/control_serializer.h"
+
 #include "serialization_test.h"
 #include "test.h"
 
diff --git a/test/signal-threads.cpp b/test/signal-threads.cpp
index f77733ebc030..3c5f3792e385 100644
--- a/test/signal-threads.cpp
+++ b/test/signal-threads.cpp
@@ -9,10 +9,11 @@ 
 #include <iostream>
 #include <thread>
 
-#include "message.h"
-#include "thread.h"
+#include "libcamera/internal/message.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/utils.h"
+
 #include "test.h"
-#include "utils.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/threads.cpp b/test/threads.cpp
index 0454761de12c..b4b8d913cd2b 100644
--- a/test/threads.cpp
+++ b/test/threads.cpp
@@ -9,7 +9,8 @@ 
 #include <iostream>
 #include <thread>
 
-#include "thread.h"
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
 
 using namespace std;
diff --git a/test/timer-thread.cpp b/test/timer-thread.cpp
index 32853b4e80ef..2f901787f5fb 100644
--- a/test/timer-thread.cpp
+++ b/test/timer-thread.cpp
@@ -11,8 +11,9 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
-#include "thread.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/timer.cpp b/test/timer.cpp
index 2bdb006edccb..7d5b93c37799 100644
--- a/test/timer.cpp
+++ b/test/timer.cpp
@@ -11,8 +11,9 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
+#include "libcamera/internal/thread.h"
+
 #include "test.h"
-#include "thread.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/utils.cpp b/test/utils.cpp
index 55ce9365a53e..66b91f1203e1 100644
--- a/test/utils.cpp
+++ b/test/utils.cpp
@@ -12,8 +12,9 @@ 
 
 #include <libcamera/geometry.h>
 
+#include "libcamera/internal/utils.h"
+
 #include "test.h"
-#include "utils.h"
 
 using namespace std;
 using namespace libcamera;
diff --git a/test/v4l2_subdevice/list_formats.cpp b/test/v4l2_subdevice/list_formats.cpp
index 067dc5ed30f4..25503c3334e5 100644
--- a/test/v4l2_subdevice/list_formats.cpp
+++ b/test/v4l2_subdevice/list_formats.cpp
@@ -11,7 +11,8 @@ 
 
 #include <libcamera/geometry.h>
 
-#include "v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+
 #include "v4l2_subdevice_test.h"
 
 using namespace std;
diff --git a/test/v4l2_subdevice/test_formats.cpp b/test/v4l2_subdevice/test_formats.cpp
index 5cf5d5664b04..9635c9948946 100644
--- a/test/v4l2_subdevice/test_formats.cpp
+++ b/test/v4l2_subdevice/test_formats.cpp
@@ -8,7 +8,8 @@ 
 #include <iostream>
 #include <limits.h>
 
-#include "v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+
 #include "v4l2_subdevice_test.h"
 
 using namespace std;
diff --git a/test/v4l2_subdevice/v4l2_subdevice_test.cpp b/test/v4l2_subdevice/v4l2_subdevice_test.cpp
index 562a638cb28e..d8fbfd9f6b0f 100644
--- a/test/v4l2_subdevice/v4l2_subdevice_test.cpp
+++ b/test/v4l2_subdevice/v4l2_subdevice_test.cpp
@@ -9,9 +9,10 @@ 
 #include <string.h>
 #include <sys/stat.h>
 
-#include "device_enumerator.h"
-#include "media_device.h"
-#include "v4l2_subdevice.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+
 #include "v4l2_subdevice_test.h"
 
 using namespace std;
diff --git a/test/v4l2_subdevice/v4l2_subdevice_test.h b/test/v4l2_subdevice/v4l2_subdevice_test.h
index 3bce6691f8ef..00c6399d3b8a 100644
--- a/test/v4l2_subdevice/v4l2_subdevice_test.h
+++ b/test/v4l2_subdevice/v4l2_subdevice_test.h
@@ -10,10 +10,11 @@ 
 
 #include <libcamera/buffer.h>
 
-#include "device_enumerator.h"
-#include "media_device.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+
 #include "test.h"
-#include "v4l2_subdevice.h"
 
 using namespace libcamera;
 
diff --git a/test/v4l2_videodevice/buffer_sharing.cpp b/test/v4l2_videodevice/buffer_sharing.cpp
index 14d3055ad7d1..ba2cc40d7294 100644
--- a/test/v4l2_videodevice/buffer_sharing.cpp
+++ b/test/v4l2_videodevice/buffer_sharing.cpp
@@ -16,7 +16,8 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
-#include "thread.h"
+#include "libcamera/internal/thread.h"
+
 #include "v4l2_videodevice_test.h"
 
 class BufferSharingTest : public V4L2VideoDeviceTest
diff --git a/test/v4l2_videodevice/capture_async.cpp b/test/v4l2_videodevice/capture_async.cpp
index b38aabc6263d..13cbcc80b52b 100644
--- a/test/v4l2_videodevice/capture_async.cpp
+++ b/test/v4l2_videodevice/capture_async.cpp
@@ -11,7 +11,8 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
-#include "thread.h"
+#include "libcamera/internal/thread.h"
+
 #include "v4l2_videodevice_test.h"
 
 class CaptureAsyncTest : public V4L2VideoDeviceTest
diff --git a/test/v4l2_videodevice/controls.cpp b/test/v4l2_videodevice/controls.cpp
index 347af2112f1a..9f09d036e83a 100644
--- a/test/v4l2_videodevice/controls.cpp
+++ b/test/v4l2_videodevice/controls.cpp
@@ -10,7 +10,7 @@ 
 #include <iostream>
 #include <limits.h>
 
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 #include "v4l2_videodevice_test.h"
 
diff --git a/test/v4l2_videodevice/formats.cpp b/test/v4l2_videodevice/formats.cpp
index a74214215faf..043732dcaba1 100644
--- a/test/v4l2_videodevice/formats.cpp
+++ b/test/v4l2_videodevice/formats.cpp
@@ -8,8 +8,8 @@ 
 #include <iostream>
 #include <limits.h>
 
-#include "utils.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/utils.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 #include "v4l2_videodevice_test.h"
 
diff --git a/test/v4l2_videodevice/v4l2_m2mdevice.cpp b/test/v4l2_videodevice/v4l2_m2mdevice.cpp
index d20e5dfc3077..44a39d4d8ab7 100644
--- a/test/v4l2_videodevice/v4l2_m2mdevice.cpp
+++ b/test/v4l2_videodevice/v4l2_m2mdevice.cpp
@@ -11,10 +11,10 @@ 
 #include <libcamera/event_dispatcher.h>
 #include <libcamera/timer.h>
 
-#include "device_enumerator.h"
-#include "media_device.h"
-#include "thread.h"
-#include "v4l2_videodevice.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/thread.h"
+#include "libcamera/internal/v4l2_videodevice.h"
 
 #include "test.h"
 
diff --git a/test/v4l2_videodevice/v4l2_videodevice_test.cpp b/test/v4l2_videodevice/v4l2_videodevice_test.cpp
index 93b9e72da5b4..f23aaf8f514b 100644
--- a/test/v4l2_videodevice/v4l2_videodevice_test.cpp
+++ b/test/v4l2_videodevice/v4l2_videodevice_test.cpp
@@ -9,11 +9,11 @@ 
 
 #include <linux/media-bus-format.h>
 
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+
 #include "v4l2_videodevice_test.h"
 
-#include "device_enumerator.h"
-#include "media_device.h"
-
 using namespace std;
 using namespace libcamera;
 
diff --git a/test/v4l2_videodevice/v4l2_videodevice_test.h b/test/v4l2_videodevice/v4l2_videodevice_test.h
index 9acaceb84fe0..21054561e068 100644
--- a/test/v4l2_videodevice/v4l2_videodevice_test.h
+++ b/test/v4l2_videodevice/v4l2_videodevice_test.h
@@ -11,14 +11,14 @@ 
 
 #include <libcamera/buffer.h>
 
+#include "libcamera/internal/camera_sensor.h"
+#include "libcamera/internal/device_enumerator.h"
+#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/v4l2_subdevice.h"
+#include "libcamera/internal/v4l2_videodevice.h"
+
 #include "test.h"
 
-#include "camera_sensor.h"
-#include "device_enumerator.h"
-#include "media_device.h"
-#include "v4l2_subdevice.h"
-#include "v4l2_videodevice.h"
-
 using namespace libcamera;
 
 class V4L2VideoDeviceTest : public Test