From 1455bd0dc25d6c5a2cc8ef99dc030b9dca3df77d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20S=C3=B6derlund?= Date: Wed, 30 Sep 2020 21:31:44 +0200 Subject: libcamera: pipeline: rkisp1: Fix media bus propagation for NV{12,21} MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The upstream driver has changed how the link formats are validated when starting to stream [1]. This revealed that libcamera did not adjust the media bus format from the link between {main,self} resizer source pad and the capture video device as expected by the driver. The media bus code YUYV8_2X8 was hardcoded to MEDIA_BUS_FMT_YUYV8_2X8 for all pixel formats while it must be adjusted to YUYV8_1_5X8 for NV12 and NV21, fix this. 1. 6803a9e0e1e43e9e ("media: staging: rkisp1: cap: simplify link validation by comparing media bus code") Signed-off-by: Niklas Söderlund Reviewed-by: Paul Elder Reviewed-by: Laurent Pinchart --- src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp index 410e9f5d..63c643f2 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp @@ -7,6 +7,8 @@ #include "rkisp1_path.h" +#include + #include #include @@ -125,6 +127,16 @@ int RkISP1Path::configure(const StreamConfiguration &config, << "Configuring " << name_ << " resizer output pad with " << ispFormat.toString(); + switch (config.pixelFormat) { + case formats::NV12: + case formats::NV21: + ispFormat.mbus_code = MEDIA_BUS_FMT_YUYV8_1_5X8; + break; + default: + ispFormat.mbus_code = MEDIA_BUS_FMT_YUYV8_2X8; + break; + } + ret = resizer_->setFormat(1, &ispFormat); if (ret < 0) return ret; -- cgit v1.2.1