[libcamera-devel] [PATCH 00/20] libcamera: Multi-stream support for the simple pipeline handler

Phi-bang Nguyen pnguyen at baylibre.com
Mon Feb 1 22:12:34 CET 2021


Hi Laurent,

Thank you for the patches. I tested the series under Android with three
concurrent streams at the same time: preview / video recording / photo
taking.

Tested-by: Phi-Bang Nguyen <pnguyen at baylibre.com>

Regards,
Phi Bang

Le dim. 31 janv. 2021 à 23:47, Laurent Pinchart <
laurent.pinchart at ideasonboard.com> a écrit :

> Hello,
>
> This patch series implements multi-stream support in the simple pipeline
> handler.
>
> Multi-stream support in the capture device requires hardware processing
> capabilities (at least format conversion and scaling), which would
> likely not qualify the platform for support in the simple pipeline
> handler. However, for platforms that include a converter, the V4L2 M2M
> API allows opening multiple instances of the converter to create
> multiple output streams with different formats and resolution (as long
> as the hardware has enough bandwidth to run all the processing passes).
> This approach is generic and doesn't require any extra hardware feature
> compared to what the simple pipeline handler already uses.
>
> The patches starts with refactoring of the converter class to prepare
> for multiple streams support, and then refactors the simple pipeline
> handler to achieve the same goal. The last two patches enable
> multi-streams support
>
> The code has been tested on the MediaTek Pumpkin i500 board. Its
> support isn't available in the simple pipeline handler yet due to the
> drivers not being upstream, which is an issue that is being addressed.
> Enabling it, after importing the kernel headers that define the
> MediaTek-specific pixel formats and enabling them in libcamera, only
> requires the following change in the simple pipeline handler.
>
> diff --git a/src/libcamera/pipeline/simple/simple.cpp
> b/src/libcamera/pipeline/simple/simple.cpp
> index 55a5528611c8..6b0170d1aba8 100644
> --- a/src/libcamera/pipeline/simple/simple.cpp
> +++ b/src/libcamera/pipeline/simple/simple.cpp
> @@ -132,6 +132,7 @@ namespace {
>
>  static const SimplePipelineInfo supportedDevices[] = {
>         { "imx7-csi", "pxp", 1 },
> +       { "mtk-camsv-p1", "mtk-mdp3", 3 },
>         { "qcom-camss", nullptr, 1 },
>         { "sun6i-csi", nullptr, 1 },
>  };
>
> Laurent Pinchart (20):
>   libcamera: pipeline: simple: Manage converter with std::unique_ptr<>
>   libcamera: pipeline: simple: Don't override stride at configure time
>   libcamera: pipeline: simple: converter: Group query functions together
>   libcamera: pipeline: simple: converter: Use StreamConfiguration for
>     input configuration
>   libcamera: pipeline: simple: converter: Configure input stride
>   libcamera: pipeline: simple: converter: Differentiate input and output
>     buffers count
>   libcamera: pipeline: simple: converter: Replace open() with isValid()
>   libcamera: pipeline: simple: converter: Decouple input and output
>     completion
>   libcamera: pipeline: simple: converter: Add multi-stream support
>   libcamera: pipeline: simple: Store streams in a vector
>   libcamera: pipeline: simple: Drop unused members of configuration
>   libcamera: pipeline: simple: Document the pipeline handler design
>   libcamera: pipeline: simple: Rename Configuration::pixelFormat
>   libcamera: pipeline: simple: Cache pipeline config in
>     SimpleCameraConfiguration
>   libcamera: pipeline: simple: Add output formats to Configuration
>   libcamera: pipeline: simple: Move converter data to camera data
>   libcamera: pipeline: simple: Hardcode the number of internal buffers
>   libcamera: pipeline: simple: Support configuration of multiple streams
>   libcamera: pipeline: simple: Support usage of multiple streams
>   libcamera: pipeline: simple: Enable multiple streams for compatible
>     devices
>
>  src/libcamera/pipeline/simple/converter.cpp | 398 ++++++++------
>  src/libcamera/pipeline/simple/converter.h   |  60 ++-
>  src/libcamera/pipeline/simple/simple.cpp    | 542 +++++++++++++-------
>  3 files changed, 650 insertions(+), 350 deletions(-)
>
> --
> Regards,
>
> Laurent Pinchart
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20210201/6bb89778/attachment-0001.htm>


More information about the libcamera-devel mailing list