[libcamera-devel] [PATCH 2/2] libcamera: Documentation: Split public/private documentation

Jacopo Mondi jacopo.mondi at ideasonboard.com
Tue Dec 26 11:41:35 CET 2023


Hi Dan
   thanks for this big chunk of work

On Wed, Dec 20, 2023 at 04:31:44PM +0000, Daniel Scally via libcamera-devel wrote:
> The API reference pages generated by Doxygen are comprehensive, but
> therefore quite overwhelming for application developers who will
> likely never need to use the majority of the library's objects. To
> reduce the complexity of the documentation, split it into two runs of
> doxygen. In the first run leverage doxygen's \internal and \if flags
> to hide library objects which are not intended to be exposed through
> the public headers.
>
> In the second run allow doxygen to generate documentation for all of
> the library's objects as it currently does. This set will now be
> output into build/Documentation/internal-api-html.
>
> Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
> ---
> This patch touches a lot of files, but almost exclusively adds doxygen's
> \internal flag to docu-comments along with the necessary changes to Doxyfile.in
> and meson.build to implement the hiding of those objects in the auto-generated
> documentation.
>
> The deviation from that rule is in object.cpp, where reference is made to
> the "internal" Thread class documentation. Because the Object class is retained
> in the public documents we can't remove the whole thing with \internal which
> means resorting to \if .. \endif. It's specifically a reference to the Stopping
> Threads section, and an alternative means of resolving this might be to move
> that whole section to the Thread Support _page_ instead of being part of the
> Thread class.
>
>  Documentation/Doxyfile.in                     |  9 +++-
>  Documentation/meson.build                     | 47 +++++++++++++++++--
>  include/libcamera/ipa/core.mojom              |  5 ++
>  src/ipa/ipu3/algorithms/af.cpp                |  2 +
>  src/ipa/ipu3/algorithms/agc.cpp               |  2 +
>  src/ipa/ipu3/algorithms/awb.cpp               |  4 ++
>  src/ipa/ipu3/algorithms/blc.cpp               |  2 +
>  src/ipa/ipu3/algorithms/tone_mapping.cpp      |  2 +
>  src/ipa/ipu3/ipa_context.cpp                  |  5 ++
>  src/ipa/ipu3/ipu3.cpp                         |  1 +
>  src/ipa/libipa/algorithm.cpp                  |  3 ++
>  src/ipa/libipa/camera_sensor_helper.cpp       |  8 ++++
>  src/ipa/libipa/fc_queue.cpp                   |  3 ++
>  src/ipa/libipa/histogram.cpp                  |  2 +
>  src/ipa/libipa/module.cpp                     |  2 +
>  src/ipa/rkisp1/algorithms/agc.cpp             |  2 +
>  src/ipa/rkisp1/algorithms/awb.cpp             |  2 +
>  src/ipa/rkisp1/algorithms/blc.cpp             |  2 +
>  src/ipa/rkisp1/algorithms/cproc.cpp           |  2 +
>  src/ipa/rkisp1/algorithms/dpcc.cpp            |  2 +
>  src/ipa/rkisp1/algorithms/dpf.cpp             |  2 +
>  src/ipa/rkisp1/algorithms/filter.cpp          |  2 +
>  src/ipa/rkisp1/algorithms/gsl.cpp             |  2 +
>  src/ipa/rkisp1/algorithms/lsc.cpp             |  2 +
>  src/ipa/rkisp1/ipa_context.cpp                | 13 +++++
>  src/libcamera/base/backtrace.cpp              |  2 +
>  src/libcamera/base/event_dispatcher.cpp       |  2 +
>  src/libcamera/base/event_dispatcher_poll.cpp  |  2 +
>  src/libcamera/base/event_notifier.cpp         |  3 ++
>  src/libcamera/base/file.cpp                   |  4 ++
>  src/libcamera/base/log.cpp                    |  7 +++
>  src/libcamera/base/message.cpp                |  4 ++
>  src/libcamera/base/mutex.cpp                  |  4 ++
>  src/libcamera/base/object.cpp                 | 13 +++--
>  src/libcamera/base/semaphore.cpp              |  2 +
>  src/libcamera/base/thread.cpp                 |  5 ++
>  src/libcamera/base/timer.cpp                  |  2 +
>  src/libcamera/base/utils.cpp                  |  2 +
>  src/libcamera/bayer_format.cpp                |  4 ++
>  src/libcamera/byte_stream_buffer.cpp          |  2 +
>  src/libcamera/camera.cpp                      |  1 +
>  src/libcamera/camera_controls.cpp             |  2 +
>  src/libcamera/camera_lens.cpp                 |  2 +
>  src/libcamera/camera_manager.cpp              |  1 +
>  src/libcamera/camera_sensor.cpp               |  2 +
>  src/libcamera/camera_sensor_properties.cpp    |  2 +
>  src/libcamera/control_serializer.cpp          |  3 ++
>  src/libcamera/control_validator.cpp           |  2 +
>  src/libcamera/converter.cpp                   |  4 ++
>  .../converter/converter_v4l2_m2m.cpp          |  2 +
>  src/libcamera/delayed_controls.cpp            |  3 ++
>  src/libcamera/device_enumerator.cpp           |  3 ++
>  src/libcamera/framebuffer.cpp                 |  2 +
>  src/libcamera/ipa_controls.cpp                |  4 ++
>  src/libcamera/ipa_data_serializer.cpp         |  2 +
>  src/libcamera/ipa_interface.cpp               |  2 +
>  src/libcamera/ipa_manager.cpp                 |  2 +
>  src/libcamera/ipa_module.cpp                  |  4 ++
>  src/libcamera/ipa_proxy.cpp                   |  3 ++
>  src/libcamera/ipc_pipe.cpp                    |  4 ++
>  src/libcamera/ipc_unixsocket.cpp              |  3 ++
>  src/libcamera/mapped_framebuffer.cpp          |  4 ++
>  src/libcamera/media_device.cpp                |  2 +
>  src/libcamera/media_object.cpp                |  6 +++
>  src/libcamera/pipeline/ipu3/imgu.cpp          |  2 +
>  .../pipeline/rpi/common/delayed_controls.cpp  |  3 ++
>  src/libcamera/pipeline_handler.cpp            |  4 ++
>  src/libcamera/process.cpp                     |  4 ++
>  src/libcamera/pub_key.cpp                     |  2 +
>  src/libcamera/request.cpp                     |  1 +
>  src/libcamera/source_paths.cpp                |  1 +
>  src/libcamera/sysfs.cpp                       |  1 +
>  src/libcamera/v4l2_device.cpp                 |  2 +
>  src/libcamera/v4l2_pixelformat.cpp            |  3 ++
>  src/libcamera/v4l2_subdevice.cpp              |  7 +++
>  src/libcamera/v4l2_videodevice.cpp            |  7 +++
>  src/libcamera/yaml_parser.cpp                 |  5 ++
>  77 files changed, 285 insertions(+), 8 deletions(-)
>
> diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in
> index a86ea6c1..6689ace1 100644
> --- a/Documentation/Doxyfile.in
> +++ b/Documentation/Doxyfile.in
> @@ -68,7 +68,14 @@ EXCLUDE_SYMBOLS        = libcamera::BoundMethodArgs \
>
>  EXCLUDE_SYMLINKS       = YES
>
> -HTML_OUTPUT            = api-html
> +INTERNAL_DOCS          = @INTERNAL_DOCS@
> +
> +HIDE_UNDOC_CLASSES     = @HIDE_UNDOC_CLASSES@
> +HIDE_UNDOC_MEMBERS     = @HIDE_UNDOC_MEMBERS@

mmm, is this related to the internal/external doc split ?

Documentation says:
"If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
undocumented classes that are normally visible in the class hierarchy"

Do we want un-documented classes to show up ?


> +
> +HTML_OUTPUT            = @HTML_OUTPUT@
> +
> +ENABLED_SECTIONS       = @ENABLED_SECTIONS@
>
>  GENERATE_LATEX         = NO
>
> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index 7a58fec8..7d2b7e33 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -21,14 +21,25 @@ if doxygen.found() and dot.found()
>          doxygen_predefined += '@0@=@1@'.format(key, config_h.get(key))
>      endforeach
>
> +    # We run doxygen twice - once to build a reduced documentation set that's

More than a "reduced documentation set" I would explicitly say that
the first run excludes the internal API as it is meant to document the
public API only.

> +    # more appropriate for application developers, and a second run that covers
> +    # all of the library's objects for libcamera developers. To achieve this we
> +    # flag as \internal the comments for objects we wish to hide, and remove the
> +    # auto generated documents via HIDE_UNDOC_CLASSES and HIDE_UNDOC_MEMBERS.

AH! as otherwise the internal classes which result as undocumented
because flagged as 'internal' will show up anyway in the documentation
of public API ?

> +

Just checking: 2 lines are intentional ?

> +
>      cdata.set('PREDEFINED', ' \\\n\t\t\t '.join(doxygen_predefined))
> +    cdata.set('INTERNAL_DOCS', 'NO')
> +    cdata.set('HIDE_UNDOC_CLASSES', 'YES')
> +    cdata.set('HIDE_UNDOC_MEMBERS', 'YES')
> +    cdata.set('HTML_OUTPUT', 'api-html')
> +    cdata.set('ENABLED_SECTIONS', '')
>
>      doxyfile = configure_file(input : 'Doxyfile.in',
>                                output : 'Doxyfile',
>                                configuration : cdata)
>
> -    doxygen_input = [
> -        doxyfile,
> +    global_doxygen_input = [
>          libcamera_base_headers,
>          libcamera_base_sources,
>          libcamera_internal_headers,
> @@ -41,16 +52,44 @@ if doxygen.found() and dot.found()
>      ]
>
>      if is_variable('ipu3_ipa_sources')
> -        doxygen_input += [ipu3_ipa_sources]
> +        global_doxygen_input += [ipu3_ipa_sources]
>      endif
>
> +    public_doxygen_input = global_doxygen_input
> +    public_doxygen_input += doxyfile
> +
>      custom_target('doxygen',
> -                  input : doxygen_input,
> +                  input : public_doxygen_input,
>                    output : 'api-html',
>                    command : [doxygen, doxyfile],
>                    install : true,
>                    install_dir : doc_install_dir,
>                    install_tag : 'doc')
> +
> +    # This is the internal documentation, so _don't_ hide undocumented classes
> +    # as we want everything to show up.
> +    cdata_internal = configuration_data()
> +    cdata_internal.merge_from(cdata)
> +    cdata_internal.set('HTML_OUTPUT', 'internal-api-html')
> +    cdata_internal.set('INTERNAL_DOCS', 'YES')
> +    cdata_internal.set('HIDE_UNDOC_CLASSES', 'NO')
> +    cdata_internal.set('HIDE_UNDOC_MEMBERS', 'NO')
> +    cdata_internal.set('ENABLED_SECTIONS', 'internal')
> +
> +    doxyfile_internal = configure_file(input : 'Doxyfile.in',
> +                                       output : 'Doxyfile-internal',
> +                                       configuration : cdata_internal)
> +
> +    internal_doxygen_input = global_doxygen_input
> +    internal_doxygen_input += doxyfile_internal
> +
> +    custom_target('doxygen-internal',
> +                  input : internal_doxygen_input,
> +                  output : 'internal-api-html',
> +                  command : [doxygen, doxyfile_internal],
> +                  install : true,
> +                  install_dir : doc_install_dir,
> +                  install_tag : 'doc-internal')
>  endif
>
>  #
> diff --git a/include/libcamera/ipa/core.mojom b/include/libcamera/ipa/core.mojom
> index bce79724..f4a7dc4b 100644
> --- a/include/libcamera/ipa/core.mojom
> +++ b/include/libcamera/ipa/core.mojom
> @@ -3,6 +3,7 @@
>  module libcamera;
>
>  /**
> + * \internal
>   * \file core_ipa_interface.h
>   * \brief libcamera structs for IPAs
>   */
> @@ -109,6 +110,7 @@ module libcamera;
>  };
>
>  /**
> + * \internal
>   * \struct IPACameraSensorInfo
>   * \brief Report the image sensor characteristics
>   *
> @@ -257,6 +259,7 @@ struct IPACameraSensorInfo {
>  };
>
>  /**
> + * \internal
>   * \struct IPABuffer
>   * \brief Buffer information for the IPA interface
>   *
> @@ -291,6 +294,7 @@ struct IPABuffer {
>  };
>
>  /**
> + * \internal
>   * \struct IPASettings
>   * \brief IPA interface initialization settings
>   *
> @@ -320,6 +324,7 @@ struct IPASettings {
>  };
>
>  /**
> + * \internal
>   * \struct IPAStream
>   * \brief Stream configuration for the IPA interface
>   *
> diff --git a/src/ipa/ipu3/algorithms/af.cpp b/src/ipa/ipu3/algorithms/af.cpp
> index 12927eec..25109451 100644
> --- a/src/ipa/ipu3/algorithms/af.cpp

Adding an \internal tag is a bit of a tedious job, but since you've
already done so.... I wonder if it wouldn't be better to exclude some
directories to doxygen completly. The whole src/ipa/ directory in example
doesn't contain anything that application developers should be
concerned with, right ?


> +++ b/src/ipa/ipu3/algorithms/af.cpp
> @@ -26,6 +26,7 @@
>  #include "libipa/histogram.h"
>
>  /**
> + * \internal
>   * \file af.h
>   */
>
> @@ -96,6 +97,7 @@ static struct ipu3_uapi_af_filter_config afFilterConfigDefault = {
>  };
>
>  /**
> + * \internal
>   * \class Af
>   * \brief An auto-focus algorithm based on IPU3 statistics
>   *
> diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
> index 606a237a..e3cfbe57 100644
> --- a/src/ipa/ipu3/algorithms/agc.cpp
> +++ b/src/ipa/ipu3/algorithms/agc.cpp
> @@ -20,6 +20,7 @@
>  #include "libipa/histogram.h"
>
>  /**
> + * \internal
>   * \file agc.h
>   */
>
> @@ -30,6 +31,7 @@ using namespace std::literals::chrono_literals;
>  namespace ipa::ipu3::algorithms {
>
>  /**
> + * \internal
>   * \class Agc
>   * \brief A mean-based auto-exposure algorithm
>   *
> diff --git a/src/ipa/ipu3/algorithms/awb.cpp b/src/ipa/ipu3/algorithms/awb.cpp
> index 5abd4621..11a6dfdc 100644
> --- a/src/ipa/ipu3/algorithms/awb.cpp
> +++ b/src/ipa/ipu3/algorithms/awb.cpp
> @@ -14,6 +14,7 @@
>  #include <libcamera/control_ids.h>
>
>  /**
> + * \internal
>   * \file awb.h
>   */
>
> @@ -45,6 +46,7 @@ static constexpr double kMaxCellSaturationRatio = 0.8;
>  static constexpr uint32_t kMinCellsPerZoneRatio = 255 * 90 / 100;
>
>  /**
> + * \internal
>   * \struct Accumulator
>   * \brief RGB statistics for a given zone
>   *
> @@ -73,6 +75,7 @@ static constexpr uint32_t kMinCellsPerZoneRatio = 255 * 90 / 100;
>   */
>
>  /**
> + * \internal
>   * \struct Awb::AwbStatus
>   * \brief AWB parameters calculated
>   *
> @@ -118,6 +121,7 @@ static const struct ipu3_uapi_ccm_mat_config imguCssCcmDefault = {
>  };
>
>  /**
> + * \internal
>   * \class Awb
>   * \brief A Grey world white balance correction algorithm
>   *
> diff --git a/src/ipa/ipu3/algorithms/blc.cpp b/src/ipa/ipu3/algorithms/blc.cpp
> index e838072a..d5b2f70d 100644
> --- a/src/ipa/ipu3/algorithms/blc.cpp
> +++ b/src/ipa/ipu3/algorithms/blc.cpp
> @@ -10,6 +10,7 @@
>  #include <string.h>
>
>  /**
> + * \internal
>   * \file blc.h
>   * \brief IPU3 Black Level Correction control
>   */
> @@ -19,6 +20,7 @@ namespace libcamera {
>  namespace ipa::ipu3::algorithms {
>
>  /**
> + * \internal
>   * \class BlackLevelCorrection
>   * \brief A class to handle black level correction
>   *
> diff --git a/src/ipa/ipu3/algorithms/tone_mapping.cpp b/src/ipa/ipu3/algorithms/tone_mapping.cpp
> index a169894c..83eaa002 100644
> --- a/src/ipa/ipu3/algorithms/tone_mapping.cpp
> +++ b/src/ipa/ipu3/algorithms/tone_mapping.cpp
> @@ -11,6 +11,7 @@
>  #include <string.h>
>
>  /**
> + * \internal
>   * \file tone_mapping.h
>   */
>
> @@ -19,6 +20,7 @@ namespace libcamera {
>  namespace ipa::ipu3::algorithms {
>
>  /**
> + * \internal
>   * \class ToneMapping
>   * \brief A class to handle tone mapping based on gamma
>   *
> diff --git a/src/ipa/ipu3/ipa_context.cpp b/src/ipa/ipu3/ipa_context.cpp
> index 959f314f..6490c0ec 100644
> --- a/src/ipa/ipu3/ipa_context.cpp
> +++ b/src/ipa/ipu3/ipa_context.cpp
> @@ -8,6 +8,7 @@
>  #include "ipa_context.h"
>
>  /**
> + * \internal
>   * \file ipa_context.h
>   * \brief Context and state information shared between the algorithms
>   */
> @@ -15,6 +16,7 @@
>  namespace libcamera::ipa::ipu3 {
>
>  /**
> + * \internal
>   * \struct IPASessionConfiguration
>   * \brief Session configuration for the IPA module
>   *
> @@ -25,6 +27,7 @@ namespace libcamera::ipa::ipu3 {
>   */
>
>  /**
> + * \internal
>   * \struct IPAActiveState
>   * \brief The active state of the IPA algorithms
>   *
> @@ -36,6 +39,7 @@ namespace libcamera::ipa::ipu3 {
>   */
>
>  /**
> + * \internal
>   * \struct IPAContext
>   * \brief Global IPA context data shared between all algorithms
>   *
> @@ -167,6 +171,7 @@ namespace libcamera::ipa::ipu3 {
>   */
>
>  /**
> + * \internal
>   * \struct IPAFrameContext
>   * \brief IPU3-specific FrameContext
>   *
> diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
> index 08ee6eb3..f635f6ac 100644
> --- a/src/ipa/ipu3/ipu3.cpp
> +++ b/src/ipa/ipu3/ipu3.cpp
> @@ -67,6 +67,7 @@ using namespace std::literals::chrono_literals;
>  namespace ipa::ipu3 {
>
>  /**
> + * \internal
>   * \brief The IPU3 IPA implementation
>   *
>   * The IPU3 Pipeline defines an IPU3-specific interface for communication
> diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp
> index bc1c29a6..a36e628b 100644
> --- a/src/ipa/libipa/algorithm.cpp
> +++ b/src/ipa/libipa/algorithm.cpp
> @@ -8,6 +8,7 @@
>  #include "algorithm.h"
>
>  /**
> + * \internal
>   * \file algorithm.h
>   * \brief Algorithm common interface
>   */
> @@ -17,6 +18,7 @@ namespace libcamera {
>  namespace ipa {
>
>  /**
> + * \internal
>   * \class Algorithm
>   * \brief The base class for all IPA algorithms
>   * \tparam Module The IPA module type for this class of algorithms
> @@ -134,6 +136,7 @@ namespace ipa {
>   */
>
>  /**
> + * \internal
>   * \class AlgorithmFactory
>   * \brief Registration of Algorithm classes and creation of instances
>   * \tparam _Algorithm The algorithm class type for this factory
> diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
> index f0ecc383..23afc954 100644
> --- a/src/ipa/libipa/camera_sensor_helper.cpp
> +++ b/src/ipa/libipa/camera_sensor_helper.cpp
> @@ -12,6 +12,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file camera_sensor_helper.h
>   * \brief Helper class that performs sensor-specific parameter computations
>   *
> @@ -31,6 +32,7 @@ LOG_DEFINE_CATEGORY(CameraSensorHelper)
>  namespace ipa {
>
>  /**
> + * \internal
>   * \class CameraSensorHelper
>   * \brief Base class for computing sensor tuning parameters using
>   * sensor-specific constants
> @@ -112,6 +114,7 @@ double CameraSensorHelper::gain(uint32_t gainCode) const
>  }
>
>  /**
> + * \internal
>   * \enum CameraSensorHelper::AnalogueGainType
>   * \brief The gain calculation modes as defined by the MIPI CCS
>   *
> @@ -159,6 +162,7 @@ double CameraSensorHelper::gain(uint32_t gainCode) const
>   */
>
>  /**
> + * \internal
>   * \struct CameraSensorHelper::AnalogueGainLinearConstants
>   * \brief Analogue gain constants for the linear gain model
>   *
> @@ -180,6 +184,7 @@ double CameraSensorHelper::gain(uint32_t gainCode) const
>   */
>
>  /**
> + * \internal
>   * \struct CameraSensorHelper::AnalogueGainExpConstants
>   * \brief Analogue gain constants for the exponential gain model
>   *
> @@ -191,6 +196,7 @@ double CameraSensorHelper::gain(uint32_t gainCode) const
>   */
>
>  /**
> + * \internal
>   * \struct CameraSensorHelper::AnalogueGainConstants
>   * \brief Analogue gain model constants
>   *
> @@ -218,6 +224,7 @@ double CameraSensorHelper::gain(uint32_t gainCode) const
>   */
>
>  /**
> + * \internal
>   * \class CameraSensorHelperFactoryBase
>   * \brief Base class for camera sensor helper factories
>   *
> @@ -297,6 +304,7 @@ std::vector<CameraSensorHelperFactoryBase *> &CameraSensorHelperFactoryBase::fac
>  }
>
>  /**
> + * \internal
>   * \class CameraSensorHelperFactory
>   * \brief Registration of CameraSensorHelperFactory classes and creation of instances
>   * \tparam _Helper The camera sensor helper class type for this factory
> diff --git a/src/ipa/libipa/fc_queue.cpp b/src/ipa/libipa/fc_queue.cpp
> index e812faa5..21656405 100644
> --- a/src/ipa/libipa/fc_queue.cpp
> +++ b/src/ipa/libipa/fc_queue.cpp
> @@ -16,11 +16,13 @@ LOG_DEFINE_CATEGORY(FCQueue)
>  namespace ipa {
>
>  /**
> + * \internal
>   * \file fc_queue.h
>   * \brief Queue of per-frame contexts
>   */
>
>  /**
> + * \internal
>   * \struct FrameContext
>   * \brief Context for a frame
>   *
> @@ -39,6 +41,7 @@ namespace ipa {
>   */
>
>  /**
> + * \internal
>   * \class FCQueue
>   * \brief A support class for managing FrameContext instances in IPA modules
>   * \tparam FrameContext The IPA module-specific FrameContext derived class type
> diff --git a/src/ipa/libipa/histogram.cpp b/src/ipa/libipa/histogram.cpp
> index 6b5cde8e..0e9f6a62 100644
> --- a/src/ipa/libipa/histogram.cpp
> +++ b/src/ipa/libipa/histogram.cpp
> @@ -11,6 +11,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file histogram.h
>   * \brief Class to represent Histograms and manipulate them
>   */
> @@ -20,6 +21,7 @@ namespace libcamera {
>  namespace ipa {
>
>  /**
> + * \internal
>   * \class Histogram
>   * \brief The base class for creating histograms
>   *
> diff --git a/src/ipa/libipa/module.cpp b/src/ipa/libipa/module.cpp
> index ee01f12a..9484a925 100644
> --- a/src/ipa/libipa/module.cpp
> +++ b/src/ipa/libipa/module.cpp
> @@ -8,6 +8,7 @@
>  #include "module.h"
>
>  /**
> + * \internal
>   * \file module.h
>   * \brief IPA Module common interface
>   */
> @@ -26,6 +27,7 @@ LOG_DEFINE_CATEGORY(IPAModuleAlgo)
>  namespace ipa {
>
>  /**
> + * \internal
>   * \class Module
>   * \brief The base class for all IPA modules
>   * \tparam Context The type of the shared IPA context
> diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
> index e5aeb342..70af80e0 100644
> --- a/src/ipa/rkisp1/algorithms/agc.cpp
> +++ b/src/ipa/rkisp1/algorithms/agc.cpp
> @@ -20,6 +20,7 @@
>  #include "libipa/histogram.h"
>
>  /**
> + * \internal
>   * \file agc.h
>   */
>
> @@ -30,6 +31,7 @@ using namespace std::literals::chrono_literals;
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class Agc
>   * \brief A mean-based auto-exposure algorithm
>   */
> diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp
> index 744f4a38..82b89ed3 100644
> --- a/src/ipa/rkisp1/algorithms/awb.cpp
> +++ b/src/ipa/rkisp1/algorithms/awb.cpp
> @@ -17,6 +17,7 @@
>  #include <libcamera/ipa/core_ipa_interface.h>
>
>  /**
> + * \internal
>   * \file awb.h
>   */
>
> @@ -25,6 +26,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class Awb
>   * \brief A Grey world white balance correction algorithm
>   */
> diff --git a/src/ipa/rkisp1/algorithms/blc.cpp b/src/ipa/rkisp1/algorithms/blc.cpp
> index 15324fb1..278587aa 100644
> --- a/src/ipa/rkisp1/algorithms/blc.cpp
> +++ b/src/ipa/rkisp1/algorithms/blc.cpp
> @@ -12,6 +12,7 @@
>  #include "libcamera/internal/yaml_parser.h"
>
>  /**
> + * \internal
>   * \file blc.h
>   */
>
> @@ -20,6 +21,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class BlackLevelCorrection
>   * \brief RkISP1 Black Level Correction control
>   *
> diff --git a/src/ipa/rkisp1/algorithms/cproc.cpp b/src/ipa/rkisp1/algorithms/cproc.cpp
> index eaa56c37..9f77a681 100644
> --- a/src/ipa/rkisp1/algorithms/cproc.cpp
> +++ b/src/ipa/rkisp1/algorithms/cproc.cpp
> @@ -15,6 +15,7 @@
>  #include <libcamera/control_ids.h>
>
>  /**
> + * \internal
>   * \file cproc.h
>   */
>
> @@ -23,6 +24,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class ColorProcessing
>   * \brief RkISP1 Color Processing control
>   *
> diff --git a/src/ipa/rkisp1/algorithms/dpcc.cpp b/src/ipa/rkisp1/algorithms/dpcc.cpp
> index 80a1b734..5ae68fda 100644
> --- a/src/ipa/rkisp1/algorithms/dpcc.cpp
> +++ b/src/ipa/rkisp1/algorithms/dpcc.cpp
> @@ -14,6 +14,7 @@
>  #include "linux/rkisp1-config.h"
>
>  /**
> + * \internal
>   * \file dpcc.h
>   */
>
> @@ -22,6 +23,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class DefectPixelClusterCorrection
>   * \brief RkISP1 Defect Pixel Cluster Correction control
>   *
> diff --git a/src/ipa/rkisp1/algorithms/dpf.cpp b/src/ipa/rkisp1/algorithms/dpf.cpp
> index 5bd7e59f..16931a6f 100644
> --- a/src/ipa/rkisp1/algorithms/dpf.cpp
> +++ b/src/ipa/rkisp1/algorithms/dpf.cpp
> @@ -16,6 +16,7 @@
>  #include "linux/rkisp1-config.h"
>
>  /**
> + * \internal
>   * \file dpf.h
>   */
>
> @@ -24,6 +25,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class Dpf
>   * \brief RkISP1 Denoise Pre-Filter control
>   *
> diff --git a/src/ipa/rkisp1/algorithms/filter.cpp b/src/ipa/rkisp1/algorithms/filter.cpp
> index 4b89c05a..5576af3c 100644
> --- a/src/ipa/rkisp1/algorithms/filter.cpp
> +++ b/src/ipa/rkisp1/algorithms/filter.cpp
> @@ -14,6 +14,7 @@
>  #include <libcamera/control_ids.h>
>
>  /**
> + * \internal
>   * \file filter.h
>   */
>
> @@ -22,6 +23,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class Filter
>   * \brief RkISP1 Filter control
>   *
> diff --git a/src/ipa/rkisp1/algorithms/gsl.cpp b/src/ipa/rkisp1/algorithms/gsl.cpp
> index b9f87912..cb4a595a 100644
> --- a/src/ipa/rkisp1/algorithms/gsl.cpp
> +++ b/src/ipa/rkisp1/algorithms/gsl.cpp
> @@ -15,6 +15,7 @@
>  #include "linux/rkisp1-config.h"
>
>  /**
> + * \internal
>   * \file gsl.h
>   */
>
> @@ -23,6 +24,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class GammaSensorLinearization
>   * \brief RkISP1 Gamma Sensor Linearization control
>   *
> diff --git a/src/ipa/rkisp1/algorithms/lsc.cpp b/src/ipa/rkisp1/algorithms/lsc.cpp
> index a7ccedb1..40c3de9e 100644
> --- a/src/ipa/rkisp1/algorithms/lsc.cpp
> +++ b/src/ipa/rkisp1/algorithms/lsc.cpp
> @@ -19,6 +19,7 @@
>  #include "linux/rkisp1-config.h"
>
>  /**
> + * \internal
>   * \file lsc.h
>   */
>
> @@ -27,6 +28,7 @@ namespace libcamera {
>  namespace ipa::rkisp1::algorithms {
>
>  /**
> + * \internal
>   * \class LensShadingCorrection
>   * \brief RkISP1 Lens Shading Correction control
>   *
> diff --git a/src/ipa/rkisp1/ipa_context.cpp b/src/ipa/rkisp1/ipa_context.cpp
> index 9bbf3684..1d2fedc9 100644
> --- a/src/ipa/rkisp1/ipa_context.cpp
> +++ b/src/ipa/rkisp1/ipa_context.cpp
> @@ -8,6 +8,7 @@
>  #include "ipa_context.h"
>
>  /**
> + * \internal
>   * \file ipa_context.h
>   * \brief Context and state information shared between the algorithms
>   */
> @@ -15,6 +16,7 @@
>  namespace libcamera::ipa::rkisp1 {
>
>  /**
> + * \internal
>   * \struct IPASessionConfiguration
>   * \brief Session configuration for the IPA module
>   *
> @@ -95,6 +97,7 @@ namespace libcamera::ipa::rkisp1 {
>   */
>
>  /**
> + * \internal
>   * \struct IPAActiveState
>   * \brief Active state for algorithms
>   *
> @@ -139,9 +142,11 @@ namespace libcamera::ipa::rkisp1 {
>   * \var IPAActiveState::awb
>   * \brief State for the Automatic White Balance algorithm
>   *
> + * \internal
>   * \struct IPAActiveState::awb.gains
>   * \brief White balance gains
>   *
> + * \internal
>   * \struct IPAActiveState::awb.gains.manual
>   * \brief Manual white balance gains (set through requests)
>   *
> @@ -154,6 +159,7 @@ namespace libcamera::ipa::rkisp1 {
>   * \var IPAActiveState::awb.gains.manual.blue
>   * \brief Manual white balance gain for B channel
>   *
> + * \internal
>   * \struct IPAActiveState::awb.gains.automatic
>   * \brief Automatic white balance gains (computed by the algorithm)
>   *
> @@ -177,6 +183,7 @@ namespace libcamera::ipa::rkisp1 {
>   * \var IPAActiveState::cproc
>   * \brief State for the Color Processing algorithm
>   *
> + * \internal
>   * \struct IPAActiveState::cproc.brightness
>   * \brief Brightness level
>   *
> @@ -199,6 +206,7 @@ namespace libcamera::ipa::rkisp1 {
>   * \var IPAActiveState::filter
>   * \brief State for the Filter algorithm
>   *
> + * \internal
>   * \struct IPAActiveState::filter.denoise
>   * \brief Denoising level
>   *
> @@ -207,6 +215,7 @@ namespace libcamera::ipa::rkisp1 {
>   */
>
>  /**
> + * \internal
>   * \struct IPAFrameContext
>   * \brief Per-frame context for algorithms
>   *
> @@ -258,6 +267,7 @@ namespace libcamera::ipa::rkisp1 {
>   * \var IPAFrameContext::awb
>   * \brief Automatic White Balance parameters for this frame
>   *
> + * \internal
>   * \struct IPAFrameContext::awb.gains
>   * \brief White balance gains
>   *
> @@ -281,6 +291,7 @@ namespace libcamera::ipa::rkisp1 {
>   * \var IPAFrameContext::cproc
>   * \brief Color Processing parameters for this frame
>   *
> + * \internal
>   * \struct IPAFrameContext::cproc.brightness
>   * \brief Brightness level
>   *
> @@ -311,6 +322,7 @@ namespace libcamera::ipa::rkisp1 {
>   * \var IPAFrameContext::filter
>   * \brief Filter parameters for this frame
>   *
> + * \internal
>   * \struct IPAFrameContext::filter.denoise
>   * \brief Denoising level
>   *
> @@ -334,6 +346,7 @@ namespace libcamera::ipa::rkisp1 {
>   */
>
>  /**
> + * \internal
>   * \struct IPAContext
>   * \brief Global IPA context data shared between all algorithms
>   *
> diff --git a/src/libcamera/base/backtrace.cpp b/src/libcamera/base/backtrace.cpp
> index be30589d..8c0acdfc 100644
> --- a/src/libcamera/base/backtrace.cpp
> +++ b/src/libcamera/base/backtrace.cpp

All components in src/libcamera/base except BoundMethod are internal.

Should we exclude the directory ?

Same for src/libcamera/pipeline. Have you considered the option of not
parsing the dir completely ?

Also, I see in the public documentation the Extensible::Private class
being documented. Is this intentional ?

I'll skip the rest as I have enough questions already.

Thanks
  j


> @@ -33,6 +33,7 @@
>  #include <libcamera/base/utils.h>
>
>  /**
> + * \internal
>   * \file backtrace.h
>   * \brief Generate call stack backtraces
>   */
> @@ -135,6 +136,7 @@ std::string DwflParser::stackEntry(const void *ip)
>  } /* namespace */
>
>  /**
> + * \internal
>   * \class Backtrace
>   * \brief Representation of a call stack backtrace
>   *
> diff --git a/src/libcamera/base/event_dispatcher.cpp b/src/libcamera/base/event_dispatcher.cpp
> index 4be89e81..4829a876 100644
> --- a/src/libcamera/base/event_dispatcher.cpp
> +++ b/src/libcamera/base/event_dispatcher.cpp
> @@ -9,6 +9,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file base/event_dispatcher.h
>   */
>
> @@ -17,6 +18,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Event)
>
>  /**
> + * \internal
>   * \class EventDispatcher
>   * \brief Interface to manage the libcamera events and timers
>   *
> diff --git a/src/libcamera/base/event_dispatcher_poll.cpp b/src/libcamera/base/event_dispatcher_poll.cpp
> index 7238a316..a4efec16 100644
> --- a/src/libcamera/base/event_dispatcher_poll.cpp
> +++ b/src/libcamera/base/event_dispatcher_poll.cpp
> @@ -23,6 +23,7 @@
>  #include <libcamera/base/utils.h>
>
>  /**
> + * \internal
>   * \file base/event_dispatcher_poll.h
>   */
>
> @@ -43,6 +44,7 @@ static const char *notifierType(EventNotifier::Type type)
>  }
>
>  /**
> + * \internal
>   * \class EventDispatcherPoll
>   * \brief A poll-based event dispatcher
>   */
> diff --git a/src/libcamera/base/event_notifier.cpp b/src/libcamera/base/event_notifier.cpp
> index fd93c087..35515b87 100644
> --- a/src/libcamera/base/event_notifier.cpp
> +++ b/src/libcamera/base/event_notifier.cpp
> @@ -14,6 +14,7 @@
>  #include <libcamera/camera_manager.h>
>
>  /**
> + * \internal
>   * \file event_notifier.h
>   * \brief File descriptor event notifier
>   */
> @@ -21,6 +22,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class EventNotifier
>   * \brief Notify of activity on a file descriptor
>   *
> @@ -47,6 +49,7 @@ namespace libcamera {
>   */
>
>  /**
> + * \internal
>   * \enum EventNotifier::Type
>   * Type of file descriptor event to listen for.
>   * \var EventNotifier::Read
> diff --git a/src/libcamera/base/file.cpp b/src/libcamera/base/file.cpp
> index d1ab1aa5..55d3c074 100644
> --- a/src/libcamera/base/file.cpp
> +++ b/src/libcamera/base/file.cpp
> @@ -18,6 +18,7 @@
>  #include <libcamera/base/shared_fd.h>
>
>  /**
> + * \internal
>   * \file base/file.h
>   * \brief File I/O operations
>   */
> @@ -27,6 +28,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(File)
>
>  /**
> + * \internal
>   * \class File
>   * \brief Interface for I/O operations on files
>   *
> @@ -44,6 +46,7 @@ LOG_DEFINE_CATEGORY(File)
>   */
>
>  /**
> + * \internal
>   * \enum File::MapFlag
>   * \brief Flags for the File::map() function
>   * \var File::MapFlag::NoOption
> @@ -59,6 +62,7 @@ LOG_DEFINE_CATEGORY(File)
>   */
>
>  /**
> + * \internal
>   * \enum File::OpenModeFlag
>   * \brief Mode in which a file is opened
>   * \var File::OpenModeFlag::NotOpen
> diff --git a/src/libcamera/base/log.cpp b/src/libcamera/base/log.cpp
> index c8045ef7..8f4e01c1 100644
> --- a/src/libcamera/base/log.cpp
> +++ b/src/libcamera/base/log.cpp
> @@ -26,6 +26,7 @@
>  #include <libcamera/base/utils.h>
>
>  /**
> + * \internal
>   * \file base/log.h
>   * \brief Logging infrastructure
>   *
> @@ -98,6 +99,7 @@ static const char *log_severity_name(LogSeverity severity)
>  }
>
>  /**
> + * \internal
>   * \brief Log output
>   *
>   * The LogOutput class models a log output destination
> @@ -287,6 +289,7 @@ void LogOutput::writeStream(const std::string &str)
>  }
>
>  /**
> + * \internal
>   * \brief Message logger
>   *
>   * The Logger class handles log configuration.
> @@ -755,6 +758,7 @@ LogCategory *Logger::findCategory(const char *name) const
>  }
>
>  /**
> + * \internal
>   * \enum LogSeverity
>   * Log message severity
>   * \var LogDebug
> @@ -770,6 +774,7 @@ LogCategory *Logger::findCategory(const char *name) const
>   */
>
>  /**
> + * \internal
>   * \class LogCategory
>   * \brief A category of log message
>   *
> @@ -849,6 +854,7 @@ const LogCategory &LogCategory::defaultCategory()
>  }
>
>  /**
> + * \internal
>   * \class LogMessage
>   * \brief Internal log message representation.
>   *
> @@ -977,6 +983,7 @@ LogMessage::~LogMessage()
>   */
>
>  /**
> + * \internal
>   * \class Loggable
>   * \brief Base class to support log message extensions
>   *
> diff --git a/src/libcamera/base/message.cpp b/src/libcamera/base/message.cpp
> index 2da2a7ed..872f57bf 100644
> --- a/src/libcamera/base/message.cpp
> +++ b/src/libcamera/base/message.cpp
> @@ -11,6 +11,7 @@
>  #include <libcamera/base/signal.h>
>
>  /**
> + * \internal
>   * \file base/message.h
>   * \brief Message queue support
>   *
> @@ -35,11 +36,13 @@ LOG_DEFINE_CATEGORY(Message)
>  std::atomic_uint Message::nextUserType_{ Message::UserMessage };
>
>  /**
> + * \internal
>   * \class Message
>   * \brief A message that can be posted to a Thread
>   */
>
>  /**
> + * \internal
>   * \enum Message::Type
>   * \brief The message type
>   * \var Message::None
> @@ -112,6 +115,7 @@ Message::Type Message::registerMessageType()
>  }
>
>  /**
> + * \internal
>   * \class InvokeMessage
>   * \brief A message carrying a method invocation across threads
>   */
> diff --git a/src/libcamera/base/mutex.cpp b/src/libcamera/base/mutex.cpp
> index e34e8618..d5998594 100644
> --- a/src/libcamera/base/mutex.cpp
> +++ b/src/libcamera/base/mutex.cpp
> @@ -8,6 +8,7 @@
>  #include <libcamera/base/mutex.h>
>
>  /**
> + * \internal
>   * \file base/mutex.h
>   * \brief Mutex classes with clang thread safety annotation
>   */
> @@ -15,6 +16,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class Mutex
>   * \brief std::mutex wrapper with clang thread safety annotation
>   *
> @@ -28,6 +30,7 @@ namespace libcamera {
>   */
>
>  /**
> + * \internal
>   * \class MutexLocker
>   * \brief std::unique_lock wrapper with clang thread safety annotation
>   *
> @@ -41,6 +44,7 @@ namespace libcamera {
>   */
>
>  /**
> + * \internal
>   * \class ConditionVariable
>   * \brief std::condition_variable wrapper integrating with MutexLocker
>   *
> diff --git a/src/libcamera/base/object.cpp b/src/libcamera/base/object.cpp
> index 92cecd22..4f51e078 100644
> --- a/src/libcamera/base/object.cpp
> +++ b/src/libcamera/base/object.cpp
> @@ -163,8 +163,11 @@ void Object::deleteLater()
>   * loop gets started.
>   *
>   * Due to their asynchronous nature, threads do not provide any guarantee that
> - * all posted messages are delivered before the thread is stopped. See
> - * \ref thread-stop for additional information.
> + * all posted messages are delivered before the thread is stopped.
> + *
> + * \if internal
> + * See \ref thread-stop for additional information.
> + * \endif
>   *
>   * \context This function is \threadsafe.
>   */
> @@ -229,7 +232,11 @@ void Object::message(Message *msg)
>   *
>   * Due to the asynchronous nature of threads, functions invoked asynchronously
>   * with the ConnectionTypeQueued type are not guaranteed to be called before
> - * the thread is stopped. See \ref thread-stop for additional information.
> + * the thread is stopped.
> + *
> + * \if internal
> + * See \ref thread-stop for additional information.
> + * \endif
>   *
>   * \context This function is \threadsafe.
>   *
> diff --git a/src/libcamera/base/semaphore.cpp b/src/libcamera/base/semaphore.cpp
> index 6217e386..8992288f 100644
> --- a/src/libcamera/base/semaphore.cpp
> +++ b/src/libcamera/base/semaphore.cpp
> @@ -8,6 +8,7 @@
>  #include <libcamera/base/semaphore.h>
>
>  /**
> + * \internal
>   * \file base/semaphore.h
>   * \brief General-purpose counting semaphore
>   */
> @@ -15,6 +16,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class Semaphore
>   * \brief General-purpose counting semaphore
>   *
> diff --git a/src/libcamera/base/thread.cpp b/src/libcamera/base/thread.cpp
> index b96951ac..8780e34a 100644
> --- a/src/libcamera/base/thread.cpp
> +++ b/src/libcamera/base/thread.cpp
> @@ -102,6 +102,7 @@
>   */
>
>  /**
> + * \internal
>   * \file base/thread.h
>   * \brief Thread support
>   */
> @@ -113,6 +114,7 @@ LOG_DEFINE_CATEGORY(Thread)
>  class ThreadMain;
>
>  /**
> + * \internal
>   * \brief A queue of posted messages
>   */
>  class MessageQueue
> @@ -134,6 +136,7 @@ public:
>  };
>
>  /**
> + * \internal
>   * \brief Thread-local internal data
>   */
>  class ThreadData
> @@ -166,6 +169,7 @@ private:
>  };
>
>  /**
> + * \internal
>   * \brief Thread wrapper for the main thread
>   */
>  class ThreadMain : public Thread
> @@ -206,6 +210,7 @@ ThreadData *ThreadData::current()
>  }
>
>  /**
> + * \internal
>   * \class Thread
>   * \brief A thread of execution
>   *
> diff --git a/src/libcamera/base/timer.cpp b/src/libcamera/base/timer.cpp
> index 74b060af..81372728 100644
> --- a/src/libcamera/base/timer.cpp
> +++ b/src/libcamera/base/timer.cpp
> @@ -18,6 +18,7 @@
>  #include <libcamera/camera_manager.h>
>
>  /**
> + * \internal
>   * \file base/timer.h
>   * \brief Generic timer
>   */
> @@ -27,6 +28,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Timer)
>
>  /**
> + * \internal
>   * \class Timer
>   * \brief Single-shot timer interface
>   *
> diff --git a/src/libcamera/base/utils.cpp b/src/libcamera/base/utils.cpp
> index 3b73b442..5b8caa22 100644
> --- a/src/libcamera/base/utils.cpp
> +++ b/src/libcamera/base/utils.cpp
> @@ -15,6 +15,7 @@
>  #include <unistd.h>
>
>  /**
> + * \internal
>   * \file base/utils.h
>   * \brief Miscellaneous utility functions
>   */
> @@ -402,6 +403,7 @@ std::string toAscii(const std::string &str)
>   */
>
>  /**
> + * \internal
>   * \class Duration
>   * \brief Helper class from std::chrono::duration that represents a time
>   * duration in nanoseconds with double precision
> diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp
> index 3bf15fb4..6d8d34a7 100644
> --- a/src/libcamera/bayer_format.cpp
> +++ b/src/libcamera/bayer_format.cpp
> @@ -18,6 +18,7 @@
>  #include <libcamera/transform.h>
>
>  /**
> + * \internal
>   * \file bayer_format.h
>   * \brief Class to represent Bayer formats and manipulate them
>   */
> @@ -25,6 +26,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class BayerFormat
>   * \brief Class to represent a raw image Bayer format
>   *
> @@ -36,6 +38,7 @@ namespace libcamera {
>   */
>
>  /**
> + * \internal
>   * \enum BayerFormat::Order
>   * \brief The order of the colour channels in the Bayer pattern
>   *
> @@ -52,6 +55,7 @@ namespace libcamera {
>   */
>
>  /**
> + * \internal
>   * \enum BayerFormat::Packing
>   * \brief Different types of packing that can be applied to a BayerFormat
>   *
> diff --git a/src/libcamera/byte_stream_buffer.cpp b/src/libcamera/byte_stream_buffer.cpp
> index 881cd371..c9ec1133 100644
> --- a/src/libcamera/byte_stream_buffer.cpp
> +++ b/src/libcamera/byte_stream_buffer.cpp
> @@ -13,6 +13,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file byte_stream_buffer.h
>   * \brief Managed memory container for serialized data
>   */
> @@ -22,6 +23,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Serialization)
>
>  /**
> + * \internal
>   * \class ByteStreamBuffer
>   * \brief Wrap a memory buffer and provide sequential data read and write
>   *
> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> index 0ad1a4b5..f4ac06fb 100644
> --- a/src/libcamera/camera.cpp
> +++ b/src/libcamera/camera.cpp
> @@ -560,6 +560,7 @@ CameraConfiguration::Status CameraConfiguration::validateColorSpaces(ColorSpaceF
>   */
>
>  /**
> + * \internal
>   * \class Camera::Private
>   * \brief Base class for camera private data
>   *
> diff --git a/src/libcamera/camera_controls.cpp b/src/libcamera/camera_controls.cpp
> index cabdcf75..260303eb 100644
> --- a/src/libcamera/camera_controls.cpp
> +++ b/src/libcamera/camera_controls.cpp
> @@ -11,6 +11,7 @@
>  #include <libcamera/controls.h>
>
>  /**
> + * \internal
>   * \file camera_controls.h
>   * \brief Controls for Camera instances
>   */
> @@ -18,6 +19,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class CameraControlValidator
>   * \brief A control validator for Camera instances
>   *
> diff --git a/src/libcamera/camera_lens.cpp b/src/libcamera/camera_lens.cpp
> index b3d48199..eda4cb5c 100644
> --- a/src/libcamera/camera_lens.cpp
> +++ b/src/libcamera/camera_lens.cpp
> @@ -12,6 +12,7 @@
>  #include "libcamera/internal/v4l2_subdevice.h"
>
>  /**
> + * \internal
>   * \file camera_lens.h
>   * \brief A camera lens controller
>   */
> @@ -21,6 +22,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(CameraLens)
>
>  /**
> + * \internal
>   * \class CameraLens
>   * \brief A camera lens based on V4L2 subdevices
>   *
> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
> index 355f3ada..61d45256 100644
> --- a/src/libcamera/camera_manager.cpp
> +++ b/src/libcamera/camera_manager.cpp
> @@ -23,6 +23,7 @@
>   */
>
>  /**
> + * \internal
>   * \file libcamera/internal/camera_manager.h
>   * \brief Internal camera manager support
>   */
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index 0ef78d9c..f84822e1 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -28,6 +28,7 @@
>  #include "libcamera/internal/sysfs.h"
>
>  /**
> + * \internal
>   * \file camera_sensor.h
>   * \brief A camera sensor
>   */
> @@ -37,6 +38,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(CameraSensor)
>
>  /**
> + * \internal
>   * \class CameraSensor
>   * \brief A camera sensor based on V4L2 subdevices
>   *
> diff --git a/src/libcamera/camera_sensor_properties.cpp b/src/libcamera/camera_sensor_properties.cpp
> index 27d6799a..83391b80 100644
> --- a/src/libcamera/camera_sensor_properties.cpp
> +++ b/src/libcamera/camera_sensor_properties.cpp
> @@ -14,6 +14,7 @@
>  #include <libcamera/control_ids.h>
>
>  /**
> + * \internal
>   * \file camera_sensor_properties.h
>   * \brief Database of camera sensor properties
>   *
> @@ -31,6 +32,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(CameraSensorProperties)
>
>  /**
> + * \internal
>   * \struct CameraSensorProperties
>   * \brief Database of camera sensor properties
>   *
> diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp
> index 0cf719bd..3c30efc5 100644
> --- a/src/libcamera/control_serializer.cpp
> +++ b/src/libcamera/control_serializer.cpp
> @@ -23,6 +23,7 @@
>  #include "libcamera/internal/byte_stream_buffer.h"
>
>  /**
> + * \internal
>   * \file control_serializer.h
>   * \brief Serialization and deserialization helpers for controls
>   */
> @@ -32,6 +33,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Serializer)
>
>  /**
> + * \internal
>   * \class ControlSerializer
>   * \brief Serializer and deserializer for control-related classes
>   *
> @@ -86,6 +88,7 @@ LOG_DEFINE_CATEGORY(Serializer)
>   */
>
>  /**
> + * \internal
>   * \enum ControlSerializer::Role
>   * \brief Define the role of the IPC component using the control serializer
>   *
> diff --git a/src/libcamera/control_validator.cpp b/src/libcamera/control_validator.cpp
> index cf08b34a..4c3cbd5b 100644
> --- a/src/libcamera/control_validator.cpp
> +++ b/src/libcamera/control_validator.cpp
> @@ -8,6 +8,7 @@
>  #include "libcamera/internal/control_validator.h"
>
>  /**
> + * \internal
>   * \file control_validator.h
>   * \brief Abstract control validator
>   */
> @@ -15,6 +16,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class ControlValidator
>   * \brief Interface for the control validator
>   *
> diff --git a/src/libcamera/converter.cpp b/src/libcamera/converter.cpp
> index 9f64eb51..09792064 100644
> --- a/src/libcamera/converter.cpp
> +++ b/src/libcamera/converter.cpp
> @@ -14,6 +14,7 @@
>  #include "libcamera/internal/media_device.h"
>
>  /**
> + * \internal
>   * \file internal/converter.h
>   * \brief Abstract converter
>   */
> @@ -23,6 +24,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Converter)
>
>  /**
> + * \internal
>   * \class Converter
>   * \brief Abstract Base Class for converter
>   *
> @@ -164,6 +166,7 @@ Converter::~Converter()
>   */
>
>  /**
> + * \internal
>   * \class ConverterFactoryBase
>   * \brief Base class for converter factories
>   *
> @@ -296,6 +299,7 @@ std::vector<ConverterFactoryBase *> &ConverterFactoryBase::factories()
>   */
>
>  /**
> + * \internal
>   * \class ConverterFactory
>   * \brief Registration of ConverterFactory classes and creation of instances
>   * \param _Converter The converter class type for this factory
> diff --git a/src/libcamera/converter/converter_v4l2_m2m.cpp b/src/libcamera/converter/converter_v4l2_m2m.cpp
> index 2a4d1d99..147b5b12 100644
> --- a/src/libcamera/converter/converter_v4l2_m2m.cpp
> +++ b/src/libcamera/converter/converter_v4l2_m2m.cpp
> @@ -23,6 +23,7 @@
>  #include "libcamera/internal/v4l2_videodevice.h"
>
>  /**
> + * \internal
>   * \file internal/converter/converter_v4l2_m2m.h
>   * \brief V4L2 M2M based converter
>   */
> @@ -182,6 +183,7 @@ void V4L2M2MConverter::Stream::captureBufferReady(FrameBuffer *buffer)
>   */
>
>  /**
> + * \internal
>   * \class libcamera::V4L2M2MConverter
>   * \brief The V4L2 M2M converter implements the converter interface based on
>   * V4L2 M2M device.
> diff --git a/src/libcamera/delayed_controls.cpp b/src/libcamera/delayed_controls.cpp
> index 777441e8..496aa941 100644
> --- a/src/libcamera/delayed_controls.cpp
> +++ b/src/libcamera/delayed_controls.cpp
> @@ -14,6 +14,7 @@
>  #include "libcamera/internal/v4l2_device.h"
>
>  /**
> + * \internal
>   * \file delayed_controls.h
>   * \brief Helper to deal with controls that take effect with a delay
>   */
> @@ -23,6 +24,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(DelayedControls)
>
>  /**
> + * \internal
>   * \class DelayedControls
>   * \brief Helper to deal with controls that take effect with a delay
>   *
> @@ -39,6 +41,7 @@ LOG_DEFINE_CATEGORY(DelayedControls)
>   */
>
>  /**
> + * \internal
>   * \struct DelayedControls::ControlParams
>   * \brief Parameters associated with controls handled by the \a DelayedControls
>   * helper class
> diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp
> index f2e055de..a4aeb660 100644
> --- a/src/libcamera/device_enumerator.cpp
> +++ b/src/libcamera/device_enumerator.cpp
> @@ -16,6 +16,7 @@
>  #include "libcamera/internal/media_device.h"
>
>  /**
> + * \internal
>   * \file device_enumerator.h
>   * \brief Enumeration and matching of media devices
>   *
> @@ -41,6 +42,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(DeviceEnumerator)
>
>  /**
> + * \internal
>   * \class DeviceMatch
>   * \brief Description of a media device search pattern
>   *
> @@ -114,6 +116,7 @@ bool DeviceMatch::match(const MediaDevice *device) const
>  }
>
>  /**
> + * \internal
>   * \class DeviceEnumerator
>   * \brief Enumerate, store and search media devices
>   *
> diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp
> index 5a7f3c0b..b667022a 100644
> --- a/src/libcamera/framebuffer.cpp
> +++ b/src/libcamera/framebuffer.cpp
> @@ -17,6 +17,7 @@
>   * \file libcamera/framebuffer.h
>   * \brief Frame buffer handling
>   *
> + * \internal
>   * \file libcamera/internal/framebuffer.h
>   * \brief Internal frame buffer handling support
>   */
> @@ -105,6 +106,7 @@ LOG_DEFINE_CATEGORY(Buffer)
>   */
>
>  /**
> + * \internal
>   * \class FrameBuffer::Private
>   * \brief Base class for FrameBuffer private data
>   *
> diff --git a/src/libcamera/ipa_controls.cpp b/src/libcamera/ipa_controls.cpp
> index 870a443b..255023a0 100644
> --- a/src/libcamera/ipa_controls.cpp
> +++ b/src/libcamera/ipa_controls.cpp
> @@ -8,6 +8,7 @@
>  #include <libcamera/ipa/ipa_controls.h>
>
>  /**
> + * \internal
>   * \file ipa_controls.h
>   * \brief Type definitions for serialized controls
>   *
> @@ -166,6 +167,7 @@ namespace libcamera {
>   */
>
>  /**
> + * \internal
>   * \struct ipa_controls_header
>   * \brief Serialized control packet header
>   * \var ipa_controls_header::version
> @@ -190,6 +192,7 @@ static_assert(sizeof(ipa_controls_header) == 32,
>  	      "Invalid ABI size change for struct ipa_control_header");
>
>  /**
> + * \internal
>   * \struct ipa_control_value_entry
>   * \brief Description of a serialized ControlValue entry
>   * \var ipa_control_value_entry::id
> @@ -211,6 +214,7 @@ static_assert(sizeof(ipa_control_value_entry) == 16,
>  	      "Invalid ABI size change for struct ipa_control_value_entry");
>
>  /**
> + * \internal
>   * \struct ipa_control_info_entry
>   * \brief Description of a serialized ControlInfo entry
>   * \var ipa_control_info_entry::id
> diff --git a/src/libcamera/ipa_data_serializer.cpp b/src/libcamera/ipa_data_serializer.cpp
> index 0a259305..022801a2 100644
> --- a/src/libcamera/ipa_data_serializer.cpp
> +++ b/src/libcamera/ipa_data_serializer.cpp
> @@ -12,6 +12,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file ipa_data_serializer.h
>   * \brief IPA Data Serializer
>   */
> @@ -21,6 +22,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(IPADataSerializer)
>
>  /**
> + * \internal
>   * \class IPADataSerializer
>   * \brief IPA Data Serializer
>   *
> diff --git a/src/libcamera/ipa_interface.cpp b/src/libcamera/ipa_interface.cpp
> index 8ea6cbee..45f50981 100644
> --- a/src/libcamera/ipa_interface.cpp
> +++ b/src/libcamera/ipa_interface.cpp
> @@ -8,6 +8,7 @@
>  #include <libcamera/ipa/ipa_interface.h>
>
>  /**
> + * \internal
>   * \file ipa_interface.h
>   * \brief Image Processing Algorithm interface
>   *
> @@ -76,6 +77,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class IPAInterface
>   * \brief C++ Interface for IPA implementation
>   *
> diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
> index 7a4515d9..865fbb5a 100644
> --- a/src/libcamera/ipa_manager.cpp
> +++ b/src/libcamera/ipa_manager.cpp
> @@ -21,6 +21,7 @@
>  #include "libcamera/internal/pipeline_handler.h"
>
>  /**
> + * \internal
>   * \file ipa_manager.h
>   * \brief Image Processing Algorithm module manager
>   */
> @@ -30,6 +31,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(IPAManager)
>
>  /**
> + * \internal
>   * \class IPAManager
>   * \brief Manager for IPA modules
>   *
> diff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp
> index f2dd87e5..73a415ac 100644
> --- a/src/libcamera/ipa_module.cpp
> +++ b/src/libcamera/ipa_module.cpp
> @@ -28,11 +28,13 @@
>  #include "libcamera/internal/pipeline_handler.h"
>
>  /**
> + * \internal
>   * \file ipa_module.h
>   * \brief Image Processing Algorithm module
>   */
>
>  /**
> + * \internal
>   * \file ipa_module_info.h
>   * \brief Image Processing Algorithm module information
>   */
> @@ -200,6 +202,7 @@ Span<const uint8_t> elfLoadSymbol(Span<const uint8_t> elf, const char *symbol)
>   */
>
>  /**
> + * \internal
>   * \struct IPAModuleInfo
>   * \brief Information of an IPA module
>   *
> @@ -240,6 +243,7 @@ Span<const uint8_t> elfLoadSymbol(Span<const uint8_t> elf, const char *symbol)
>   */
>
>  /**
> + * \internal
>   * \class IPAModule
>   * \brief Wrapper around IPA module shared object
>   */
> diff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp
> index 3f2cc6b8..7205f588 100644
> --- a/src/libcamera/ipa_proxy.cpp
> +++ b/src/libcamera/ipa_proxy.cpp
> @@ -18,6 +18,7 @@
>  #include "libcamera/internal/ipa_module.h"
>
>  /**
> + * \internal
>   * \file ipa_proxy.h
>   * \brief IPA Proxy
>   */
> @@ -27,6 +28,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(IPAProxy)
>
>  /**
> + * \internal
>   * \class IPAProxy
>   * \brief IPA Proxy
>   *
> @@ -34,6 +36,7 @@ LOG_DEFINE_CATEGORY(IPAProxy)
>   */
>
>  /**
> + * \internal
>   * \enum IPAProxy::ProxyState
>   * \brief Identifies the available operational states of the proxy
>   *
> diff --git a/src/libcamera/ipc_pipe.cpp b/src/libcamera/ipc_pipe.cpp
> index 31a0ca09..2f36a129 100644
> --- a/src/libcamera/ipc_pipe.cpp
> +++ b/src/libcamera/ipc_pipe.cpp
> @@ -10,6 +10,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file ipc_pipe.h
>   * \brief IPC mechanism for IPA isolation
>   */
> @@ -19,6 +20,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(IPCPipe)
>
>  /**
> + * \internal
>   * \struct IPCMessage::Header
>   * \brief Container for an IPCMessage header
>   *
> @@ -41,6 +43,7 @@ LOG_DEFINE_CATEGORY(IPCPipe)
>   */
>
>  /**
> + * \internal
>   * \class IPCMessage
>   * \brief IPC message to be passed through IPC message pipe
>   */
> @@ -149,6 +152,7 @@ IPCUnixSocket::Payload IPCMessage::payload() const
>   */
>
>  /**
> + * \internal
>   * \class IPCPipe
>   * \brief IPC message pipe for IPA isolation
>   *
> diff --git a/src/libcamera/ipc_unixsocket.cpp b/src/libcamera/ipc_unixsocket.cpp
> index 1980d374..38365134 100644
> --- a/src/libcamera/ipc_unixsocket.cpp
> +++ b/src/libcamera/ipc_unixsocket.cpp
> @@ -17,6 +17,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file ipc_unixsocket.h
>   * \brief IPC mechanism based on Unix sockets
>   */
> @@ -26,6 +27,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(IPCUnixSocket)
>
>  /**
> + * \internal
>   * \struct IPCUnixSocket::Payload
>   * \brief Container for an IPC payload
>   *
> @@ -44,6 +46,7 @@ LOG_DEFINE_CATEGORY(IPCUnixSocket)
>   */
>
>  /**
> + * \internal
>   * \class IPCUnixSocket
>   * \brief IPC mechanism based on Unix sockets
>   *
> diff --git a/src/libcamera/mapped_framebuffer.cpp b/src/libcamera/mapped_framebuffer.cpp
> index 6860069b..c1e941b1 100644
> --- a/src/libcamera/mapped_framebuffer.cpp
> +++ b/src/libcamera/mapped_framebuffer.cpp
> @@ -16,6 +16,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file libcamera/internal/mapped_framebuffer.h
>   * \brief Frame buffer memory mapping support
>   */
> @@ -25,6 +26,7 @@ namespace libcamera {
>  LOG_DECLARE_CATEGORY(Buffer)
>
>  /**
> + * \internal
>   * \class MappedBuffer
>   * \brief Provide an interface to support managing memory mapped buffers
>   *
> @@ -148,11 +150,13 @@ MappedBuffer::~MappedBuffer()
>   */
>
>  /**
> + * \internal
>   * \class MappedFrameBuffer
>   * \brief Map a FrameBuffer using the MappedBuffer interface
>   */
>
>  /**
> + * \internal
>   * \enum MappedFrameBuffer::MapFlag
>   * \brief Specify the mapping mode for the FrameBuffer
>   * \var MappedFrameBuffer::Read
> diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
> index 2949816b..ef7bdafa 100644
> --- a/src/libcamera/media_device.cpp
> +++ b/src/libcamera/media_device.cpp
> @@ -21,6 +21,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file media_device.h
>   * \brief Provide a representation of a Linux kernel Media Controller device
>   * that exposes the full graph topology.
> @@ -31,6 +32,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(MediaDevice)
>
>  /**
> + * \internal
>   * \class MediaDevice
>   * \brief The MediaDevice represents a Media Controller device with its full
>   * graph of connected objects.
> diff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp
> index c78f4758..7b8099a8 100644
> --- a/src/libcamera/media_object.cpp
> +++ b/src/libcamera/media_object.cpp
> @@ -20,6 +20,7 @@
>  #include "libcamera/internal/media_device.h"
>
>  /**
> + * \internal
>   * \file media_object.h
>   * \brief Provides a class hierarchy that represents the  media objects exposed
>   * by the Linux kernel Media Controller APIs.
> @@ -43,6 +44,7 @@ namespace libcamera {
>  LOG_DECLARE_CATEGORY(MediaDevice)
>
>  /**
> + * \internal
>   * \class MediaObject
>   * \brief Base class for all media objects
>   *
> @@ -94,6 +96,7 @@ LOG_DECLARE_CATEGORY(MediaDevice)
>   */
>
>  /**
> + * \internal
>   * \class MediaLink
>   * \brief The MediaLink represents a link between two pads in the media graph.
>   *
> @@ -169,6 +172,7 @@ MediaLink::MediaLink(const struct media_v2_link *link, MediaPad *source,
>   */
>
>  /**
> + * \internal
>   * \class MediaPad
>   * \brief The MediaPad represents a pad of an entity in the media graph
>   *
> @@ -236,6 +240,7 @@ void MediaPad::addLink(MediaLink *link)
>  }
>
>  /**
> + * \internal
>   * \class MediaEntity
>   * \brief The MediaEntity represents an entity in the media graph
>   *
> @@ -248,6 +253,7 @@ void MediaPad::addLink(MediaLink *link)
>   */
>
>  /**
> + * \internal
>   * \enum MediaEntity::Type
>   * \brief The type of the interface exposed by the entity to userspace
>   *
> diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp
> index 531879f1..f8eb43dd 100644
> --- a/src/libcamera/pipeline/ipu3/imgu.cpp
> +++ b/src/libcamera/pipeline/ipu3/imgu.cpp
> @@ -274,6 +274,7 @@ FOV calcFOV(const Size &in, const ImgUDevice::PipeConfig &pipe)
>  } /* namespace */
>
>  /**
> + * \internal
>   * \struct PipeConfig
>   * \brief The ImgU pipe configuration parameters
>   *
> @@ -299,6 +300,7 @@ FOV calcFOV(const Size &in, const ImgUDevice::PipeConfig &pipe)
>   */
>
>  /**
> + * \internal
>   * \struct Pipe
>   * \brief Describe the ImgU requested configuration
>   *
> diff --git a/src/libcamera/pipeline/rpi/common/delayed_controls.cpp b/src/libcamera/pipeline/rpi/common/delayed_controls.cpp
> index 3db92e7d..f0cfcc6f 100644
> --- a/src/libcamera/pipeline/rpi/common/delayed_controls.cpp
> +++ b/src/libcamera/pipeline/rpi/common/delayed_controls.cpp
> @@ -16,6 +16,7 @@
>  #include "libcamera/internal/v4l2_device.h"
>
>  /**
> + * \internal
>   * \file delayed_controls.h
>   * \brief Helper to deal with controls that take effect with a delay
>   */
> @@ -27,6 +28,7 @@ LOG_DEFINE_CATEGORY(RPiDelayedControls)
>  namespace RPi {
>
>  /**
> + * \internal
>   * \class DelayedControls
>   * \brief Helper to deal with controls that take effect with a delay
>   *
> @@ -43,6 +45,7 @@ namespace RPi {
>   */
>
>  /**
> + * \internal
>   * \struct DelayedControls::ControlParams
>   * \brief Parameters associated with controls handled by the \a DelayedControls
>   * helper class
> diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
> index 29e0c98a..c690ec98 100644
> --- a/src/libcamera/pipeline_handler.cpp
> +++ b/src/libcamera/pipeline_handler.cpp
> @@ -28,6 +28,7 @@
>  #include "libcamera/internal/tracepoints.h"
>
>  /**
> + * \internal
>   * \file pipeline_handler.h
>   * \brief Create pipelines and cameras from a set of media devices
>   *
> @@ -48,6 +49,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Pipeline)
>
>  /**
> + * \internal
>   * \class PipelineHandler
>   * \brief Create and manage cameras based on a set of media devices
>   *
> @@ -720,6 +722,7 @@ void PipelineHandler::disconnect()
>   */
>
>  /**
> + * \internal
>   * \class PipelineHandlerFactoryBase
>   * \brief Base class for pipeline handler factories
>   *
> @@ -795,6 +798,7 @@ std::vector<PipelineHandlerFactoryBase *> &PipelineHandlerFactoryBase::factories
>  }
>
>  /**
> + * \internal
>   * \class PipelineHandlerFactory
>   * \brief Registration of PipelineHandler classes and creation of instances
>   * \tparam _PipelineHandler The pipeline handler class type for this factory
> diff --git a/src/libcamera/process.cpp b/src/libcamera/process.cpp
> index 86a382fb..ca69a7fb 100644
> --- a/src/libcamera/process.cpp
> +++ b/src/libcamera/process.cpp
> @@ -25,6 +25,7 @@
>  #include <libcamera/base/utils.h>
>
>  /**
> + * \internal
>   * \file process.h
>   * \brief Process object
>   */
> @@ -34,6 +35,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Process)
>
>  /**
> + * \internal
>   * \class ProcessManager
>   * \brief Manager of processes
>   *
> @@ -191,6 +193,7 @@ const struct sigaction &ProcessManager::oldsa() const
>
>
>  /**
> + * \internal
>   * \class Process
>   * \brief Process object
>   *
> @@ -199,6 +202,7 @@ const struct sigaction &ProcessManager::oldsa() const
>   */
>
>  /**
> + * \internal
>   * \enum Process::ExitStatus
>   * \brief Exit status of process
>   * \var Process::NotExited
> diff --git a/src/libcamera/pub_key.cpp b/src/libcamera/pub_key.cpp
> index 64dfa234..8b8624ef 100644
> --- a/src/libcamera/pub_key.cpp
> +++ b/src/libcamera/pub_key.cpp
> @@ -17,6 +17,7 @@
>  #endif
>
>  /**
> + * \internal
>   * \file pub_key.h
>   * \brief Public key signature verification
>   */
> @@ -24,6 +25,7 @@
>  namespace libcamera {
>
>  /**
> + * \internal
>   * \class PubKey
>   * \brief Public key wrapper for signature verification
>   *
> diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp
> index 949c556f..930d8c92 100644
> --- a/src/libcamera/request.cpp
> +++ b/src/libcamera/request.cpp
> @@ -33,6 +33,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(Request)
>
>  /**
> + * \internal
>   * \class Request::Private
>   * \brief Request private data
>   *
> diff --git a/src/libcamera/source_paths.cpp b/src/libcamera/source_paths.cpp
> index 19689585..cb29efb8 100644
> --- a/src/libcamera/source_paths.cpp
> +++ b/src/libcamera/source_paths.cpp
> @@ -17,6 +17,7 @@
>  #include <libcamera/base/utils.h>
>
>  /**
> + * \internal
>   * \file source_paths.h
>   * \brief Identify the build and source path of a not-yet-installed library
>   */
> diff --git a/src/libcamera/sysfs.cpp b/src/libcamera/sysfs.cpp
> index 44c3331b..e256db7c 100644
> --- a/src/libcamera/sysfs.cpp
> +++ b/src/libcamera/sysfs.cpp
> @@ -16,6 +16,7 @@
>  #include <libcamera/base/log.h>
>
>  /**
> + * \internal
>   * \file sysfs.h
>   * \brief Miscellaneous utility functions to access sysfs
>   */
> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
> index 24d208ef..4d016bda 100644
> --- a/src/libcamera/v4l2_device.cpp
> +++ b/src/libcamera/v4l2_device.cpp
> @@ -28,6 +28,7 @@
>  #include "libcamera/internal/sysfs.h"
>
>  /**
> + * \internal
>   * \file v4l2_device.h
>   * \brief Common base for V4L2 devices and subdevices
>   */
> @@ -37,6 +38,7 @@ namespace libcamera {
>  LOG_DEFINE_CATEGORY(V4L2)
>
>  /**
> + * \internal
>   * \class V4L2Device
>   * \brief Base class for V4L2VideoDevice and V4L2Subdevice
>   *
> diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp
> index 5551c62e..693ec3e0 100644
> --- a/src/libcamera/v4l2_pixelformat.cpp
> +++ b/src/libcamera/v4l2_pixelformat.cpp
> @@ -20,6 +20,7 @@
>  #include "libcamera/internal/formats.h"
>
>  /**
> + * \internal
>   * \file v4l2_pixelformat.h
>   * \brief V4L2 Pixel Format
>   */
> @@ -29,6 +30,7 @@ namespace libcamera {
>  LOG_DECLARE_CATEGORY(V4L2)
>
>  /**
> + * \internal
>   * \class V4L2PixelFormat
>   * \brief V4L2 pixel format FourCC wrapper
>   *
> @@ -212,6 +214,7 @@ const std::map<V4L2PixelFormat, V4L2PixelFormat::Info> vpf2pf{
>  } /* namespace */
>
>  /**
> + * \internal
>   * \struct V4L2PixelFormat::Info
>   * \brief Information about a V4L2 pixel format
>   *
> diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
> index 15e8206a..70697868 100644
> --- a/src/libcamera/v4l2_subdevice.cpp
> +++ b/src/libcamera/v4l2_subdevice.cpp
> @@ -28,6 +28,7 @@
>  #include "libcamera/internal/media_object.h"
>
>  /**
> + * \internal
>   * \file v4l2_subdevice.h
>   * \brief V4L2 Subdevice API
>   */
> @@ -39,6 +40,7 @@ LOG_DECLARE_CATEGORY(V4L2)
>  namespace {
>
>  /*
> + * \internal
>   * \struct V4L2SubdeviceFormatInfo
>   * \brief Information about media bus formats
>   * \param bitsPerPixel Bits per pixel
> @@ -140,6 +142,7 @@ const std::map<uint32_t, V4L2SubdeviceFormatInfo> formatInfoMap = {
>  } /* namespace */
>
>  /**
> + * \internal
>   * \struct V4L2SubdeviceCapability
>   * \brief struct v4l2_subdev_capability object wrapper and helpers
>   *
> @@ -164,6 +167,7 @@ const std::map<uint32_t, V4L2SubdeviceFormatInfo> formatInfoMap = {
>   */
>
>  /**
> + * \internal
>   * \struct V4L2SubdeviceFormat
>   * \brief The V4L2 sub-device image format and sizes
>   *
> @@ -267,6 +271,7 @@ std::ostream &operator<<(std::ostream &out, const V4L2SubdeviceFormat &f)
>  }
>
>  /**
> + * \internal
>   * \class V4L2Subdevice
>   * \brief A V4L2 subdevice as exposed by the Linux kernel
>   *
> @@ -286,6 +291,7 @@ std::ostream &operator<<(std::ostream &out, const V4L2SubdeviceFormat &f)
>   */
>
>  /**
> + * \internal
>   * \enum V4L2Subdevice::Whence
>   * \brief Specify the type of format for getFormat() and setFormat() operations
>   * \var V4L2Subdevice::ActiveFormat
> @@ -295,6 +301,7 @@ std::ostream &operator<<(std::ostream &out, const V4L2SubdeviceFormat &f)
>   */
>
>  /**
> + * \internal
>   * \class V4L2Subdevice::Routing
>   * \brief V4L2 subdevice routing table
>   *
> diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
> index a72ef64d..699a4284 100644
> --- a/src/libcamera/v4l2_videodevice.cpp
> +++ b/src/libcamera/v4l2_videodevice.cpp
> @@ -33,6 +33,7 @@
>  #include "libcamera/internal/media_object.h"
>
>  /**
> + * \internal
>   * \file v4l2_videodevice.h
>   * \brief V4L2 Video Device
>   */
> @@ -42,6 +43,7 @@ namespace libcamera {
>  LOG_DECLARE_CATEGORY(V4L2)
>
>  /**
> + * \internal
>   * \struct V4L2Capability
>   * \brief struct v4l2_capability object wrapper and helpers
>   *
> @@ -147,6 +149,7 @@ LOG_DECLARE_CATEGORY(V4L2)
>   */
>
>  /**
> + * \internal
>   * \class V4L2BufferCache
>   * \brief Hot cache of associations between V4L2 buffer indexes and FrameBuffer
>   *
> @@ -302,6 +305,7 @@ bool V4L2BufferCache::Entry::operator==(const FrameBuffer &buffer) const
>  }
>
>  /**
> + * \internal
>   * \class V4L2DeviceFormat
>   * \brief The V4L2 video device image format and sizes
>   *
> @@ -375,6 +379,7 @@ bool V4L2BufferCache::Entry::operator==(const FrameBuffer &buffer) const
>   */
>
>  /**
> + * \internal
>   * \struct V4L2DeviceFormat::Plane
>   * \brief Per-plane memory size information
>   * \var V4L2DeviceFormat::Plane::size
> @@ -452,6 +457,7 @@ std::ostream &operator<<(std::ostream &out, const V4L2DeviceFormat &f)
>  }
>
>  /**
> + * \internal
>   * \class V4L2VideoDevice
>   * \brief V4L2VideoDevice object and API
>   *
> @@ -2064,6 +2070,7 @@ V4L2PixelFormat V4L2VideoDevice::toV4L2PixelFormat(const PixelFormat &pixelForma
>  }
>
>  /**
> + * \internal
>   * \class V4L2M2MDevice
>   * \brief Memory-to-Memory video device
>   *
> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp
> index bf21141e..f9c37e8f 100644
> --- a/src/libcamera/yaml_parser.cpp
> +++ b/src/libcamera/yaml_parser.cpp
> @@ -18,6 +18,7 @@
>  #include <yaml.h>
>
>  /**
> + * \internal
>   * \file libcamera/internal/yaml_parser.h
>   * \brief A YAML parser helper
>   */
> @@ -34,6 +35,7 @@ static const YamlObject empty;
>  } /* namespace */
>
>  /**
> + * \internal
>   * \class YamlObject
>   * \brief A class representing the tree structure of the YAML content
>   *
> @@ -511,6 +513,7 @@ private:
>  };
>
>  /**
> + * \internal
>   * \class YamlParserContext
>   * \brief Class for YamlParser parsing and context data
>   *
> @@ -523,6 +526,7 @@ YamlParserContext::YamlParserContext()
>  }
>
>  /**
> + * \internal
>   * \class YamlParserContext
>   * \brief Destructor of YamlParserContext
>   */
> @@ -772,6 +776,7 @@ int YamlParserContext::parseNextYamlObject(YamlObject &yamlObject, EventPtr even
>  #endif /* __DOXYGEN__ */
>
>  /**
> + * \internal
>   * \class YamlParser
>   * \brief A helper class for parsing a YAML file
>   *
> --
> 2.34.1
>


More information about the libcamera-devel mailing list