[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