From patchwork Mon Jun 1 18:47:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaaira Gupta X-Patchwork-Id: 3887 Return-Path: Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com [IPv6:2607:f8b0:4864:20::536]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 710C3603CC for ; Mon, 1 Jun 2020 20:47:24 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=es-iitr-ac-in.20150623.gappssmtp.com header.i=@es-iitr-ac-in.20150623.gappssmtp.com header.b="MLwuCCp8"; dkim-atps=neutral Received: by mail-pg1-x536.google.com with SMTP id o6so3910318pgh.2 for ; Mon, 01 Jun 2020 11:47:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=es-iitr-ac-in.20150623.gappssmtp.com; s=20150623; h=date:from:to:subject:message-id:mime-version:content-disposition :user-agent; bh=sSPjFGYOW0HzBlnrDqTENofrolt8ENn/yhCVKYdoPkg=; b=MLwuCCp8BIXRLbYOBOCWX/JR1DDOphiVy2NYvouwQJF8sVTVPpF9gfHhWfoWvj+gME LVTvHH1S/LkEWboMcgtbxoAH+J3e0COA3sQvRgzbuUGO3QfYxZ8K2NX2uNDBnYTL8zyv Lbsfw5h2j+fT2Tv0231RMS2AZ1OWB/lQBkgX8a8K7WW4fwm6RHjk7fHVYdinwkq/FOoC DL7YWdV0gXbzx++4Kf+j0XfCVcN9NOAmwQ2N/OuqSG2fsQLH4GsG728qA2isnfp+IyoI twZlTYZQr/VUXSoPGMkbFaWWBSLvG3c5le1S0fmqDPCgtZBDTqs7Z5A5EBLCELy26UrY kaiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=sSPjFGYOW0HzBlnrDqTENofrolt8ENn/yhCVKYdoPkg=; b=CSOBBBL+kCdOliLpjkvr5233K4+Fskt4Hbo5SXDEsUZsVKEEKZcfuNCBB4IUDaaGIn 8CqOZNxeqMQ3Lia3NBOt+jtpRGJT2EYA4ZXqF4SZGOtIHmXGlZ6NVkhBkmEftiYXCTlz pyu+FzHYOTD/hjb3yIztMmPHHb+8HwqxL8bWWOYXyzYr1CR+uejrlz76dwLSmJdZcUmI iXq4cZs3Y3mt+Lz2O2nkhlDBH6pGl2GNg8kBaGUrkNd0GjJZlOjNY1GobVB+9qXoYMz8 ZlZiyp7fEdOxmTKwbvftY1gxLI9feoDc5ekfMmkAuMpg/vaWmpLy6v396LtyOBtIrxDN BQBA== X-Gm-Message-State: AOAM5333tGJ5Tkcaf1I6batb4XmfpSQPEzOoytIaOtbgvzMFQrFtCYdk w5OEINNc/xz/zD9aZpHJbIccpXruIl7McA== X-Google-Smtp-Source: ABdhPJwhVI24m4t4JbzwxCXqgF0UuCMsxAgpJJ+Q0f01qiqqRzzGJsqIB0qrTM0bhcUJzmlYTVp8xw== X-Received: by 2002:a63:451c:: with SMTP id s28mr20974133pga.340.1591037241721; Mon, 01 Jun 2020 11:47:21 -0700 (PDT) Received: from kaaira-HP-Pavilion-Notebook ([103.113.213.174]) by smtp.gmail.com with ESMTPSA id z18sm139261pfj.148.2020.06.01.11.47.19 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 01 Jun 2020 11:47:21 -0700 (PDT) Date: Tue, 2 Jun 2020 00:17:15 +0530 From: Kaaira Gupta To: libcamera-devel@lists.libcamera.org, Kieran Bingham Message-ID: <20200601184715.GA25638@kaaira-HP-Pavilion-Notebook> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) Subject: [libcamera-devel] [PATCH v3] libcamera: v4l2subdev: Print mbus string instead of code X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2020 18:47:24 -0000 Modify toString() to print mbus format string instead of its hex code as the string is easier to understand. Signed-off-by: Kaaira Gupta --- Changes since V2: Re-formatted the code. Changes since v1: Add check for unsupported format. Rename struct src/libcamera/v4l2_subdevice.cpp | 175 +++++++++++++++++-------------- 1 file changed, 96 insertions(+), 79 deletions(-) diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp index 7aefc1b..f3cd04b 100644 --- a/src/libcamera/v4l2_subdevice.cpp +++ b/src/libcamera/v4l2_subdevice.cpp @@ -35,84 +35,93 @@ LOG_DECLARE_CATEGORY(V4L2) namespace { +/* + * \struct mbusFormatInfo + * \brief Bits per pixel and mbus format + */ +struct mbusFormatInfo { + unsigned int bits; + std::string format; +}; + /* * \var formatInfoMap - * \brief A map that associates bits per pixel to V4L2 media bus codes + * \brief A map that associates mbusFormatInfo struct to V4L2 media bus codes */ -const std::map formatInfoMap = { - { V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE, 16 }, - { V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE, 16 }, - { V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE, 16 }, - { V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE, 16 }, - { V4L2_MBUS_FMT_BGR565_2X8_BE, 16 }, - { V4L2_MBUS_FMT_BGR565_2X8_LE, 16 }, - { V4L2_MBUS_FMT_RGB565_2X8_BE, 16 }, - { V4L2_MBUS_FMT_RGB565_2X8_LE, 16 }, - { V4L2_MBUS_FMT_RGB666_1X18, 18 }, - { V4L2_MBUS_FMT_RGB888_1X24, 24 }, - { V4L2_MBUS_FMT_RGB888_2X12_BE, 24 }, - { V4L2_MBUS_FMT_RGB888_2X12_LE, 24 }, - { V4L2_MBUS_FMT_ARGB8888_1X32, 32 }, - { V4L2_MBUS_FMT_Y8_1X8, 8 }, - { V4L2_MBUS_FMT_UV8_1X8, 8 }, - { V4L2_MBUS_FMT_UYVY8_1_5X8, 12 }, - { V4L2_MBUS_FMT_VYUY8_1_5X8, 12 }, - { V4L2_MBUS_FMT_YUYV8_1_5X8, 12 }, - { V4L2_MBUS_FMT_YVYU8_1_5X8, 12 }, - { V4L2_MBUS_FMT_UYVY8_2X8, 16 }, - { V4L2_MBUS_FMT_VYUY8_2X8, 16 }, - { V4L2_MBUS_FMT_YUYV8_2X8, 16 }, - { V4L2_MBUS_FMT_YVYU8_2X8, 16 }, - { V4L2_MBUS_FMT_Y10_1X10, 10 }, - { V4L2_MBUS_FMT_UYVY10_2X10, 20 }, - { V4L2_MBUS_FMT_VYUY10_2X10, 20 }, - { V4L2_MBUS_FMT_YUYV10_2X10, 20 }, - { V4L2_MBUS_FMT_YVYU10_2X10, 20 }, - { V4L2_MBUS_FMT_Y12_1X12, 12 }, - { V4L2_MBUS_FMT_UYVY8_1X16, 16 }, - { V4L2_MBUS_FMT_VYUY8_1X16, 16 }, - { V4L2_MBUS_FMT_YUYV8_1X16, 16 }, - { V4L2_MBUS_FMT_YVYU8_1X16, 16 }, - { V4L2_MBUS_FMT_YDYUYDYV8_1X16, 16 }, - { V4L2_MBUS_FMT_UYVY10_1X20, 20 }, - { V4L2_MBUS_FMT_VYUY10_1X20, 20 }, - { V4L2_MBUS_FMT_YUYV10_1X20, 20 }, - { V4L2_MBUS_FMT_YVYU10_1X20, 20 }, - { V4L2_MBUS_FMT_YUV10_1X30, 30 }, - { V4L2_MBUS_FMT_AYUV8_1X32, 32 }, - { V4L2_MBUS_FMT_UYVY12_2X12, 24 }, - { V4L2_MBUS_FMT_VYUY12_2X12, 24 }, - { V4L2_MBUS_FMT_YUYV12_2X12, 24 }, - { V4L2_MBUS_FMT_YVYU12_2X12, 24 }, - { V4L2_MBUS_FMT_UYVY12_1X24, 24 }, - { V4L2_MBUS_FMT_VYUY12_1X24, 24 }, - { V4L2_MBUS_FMT_YUYV12_1X24, 24 }, - { V4L2_MBUS_FMT_YVYU12_1X24, 24 }, - { V4L2_MBUS_FMT_SBGGR8_1X8, 8 }, - { V4L2_MBUS_FMT_SGBRG8_1X8, 8 }, - { V4L2_MBUS_FMT_SGRBG8_1X8, 8 }, - { V4L2_MBUS_FMT_SRGGB8_1X8, 8 }, - { V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8, 8 }, - { V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8, 8 }, - { V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8, 8 }, - { V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8, 8 }, - { V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8, 8 }, - { V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8, 8 }, - { V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8, 8 }, - { V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8, 8 }, - { V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE, 16 }, - { V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE, 16 }, - { V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE, 16 }, - { V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE, 16 }, - { V4L2_MBUS_FMT_SBGGR10_1X10, 10 }, - { V4L2_MBUS_FMT_SGBRG10_1X10, 10 }, - { V4L2_MBUS_FMT_SGRBG10_1X10, 10 }, - { V4L2_MBUS_FMT_SRGGB10_1X10, 10 }, - { V4L2_MBUS_FMT_SBGGR12_1X12, 12 }, - { V4L2_MBUS_FMT_SGBRG12_1X12, 12 }, - { V4L2_MBUS_FMT_SGRBG12_1X12, 12 }, - { V4L2_MBUS_FMT_SRGGB12_1X12, 12 }, - { V4L2_MBUS_FMT_AHSV8888_1X32, 32 }, +const std::map formatInfoMap = { + { V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE, { 16, "RGB444_2X8_PADHI_BE" } }, + { V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE, { 16, "RGB444_2X8_PADHI_LE" } }, + { V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE, { 16, "RGB555_2X8_PADHI_BE" } }, + { V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE, { 16, "RGB555_2X8_PADHI_LE" } }, + { V4L2_MBUS_FMT_BGR565_2X8_BE, { 16, "BGR565_2X8_BE" } }, + { V4L2_MBUS_FMT_BGR565_2X8_LE, { 16, "BGR565_2X8_LE" } }, + { V4L2_MBUS_FMT_RGB565_2X8_BE, { 16, "RGB565_2X8_BE" } }, + { V4L2_MBUS_FMT_RGB565_2X8_LE, { 16, "RGB565_2X8_LE" } }, + { V4L2_MBUS_FMT_RGB666_1X18, { 18, "RGB666_1X18" } }, + { V4L2_MBUS_FMT_RGB888_1X24, { 24, "RGB888_1X24" } }, + { V4L2_MBUS_FMT_RGB888_2X12_BE, { 24, "RGB888_2X12_BE" } }, + { V4L2_MBUS_FMT_RGB888_2X12_LE, { 24, "RGB888_2X12_LE" } }, + { V4L2_MBUS_FMT_ARGB8888_1X32, { 32, "ARGB8888_1X32" } }, + { V4L2_MBUS_FMT_Y8_1X8, { 8, "Y8_1X8" } }, + { V4L2_MBUS_FMT_UV8_1X8, { 8, "UV8_1X8" } }, + { V4L2_MBUS_FMT_UYVY8_1_5X8, { 12, "UYVY8_1_5X8" } }, + { V4L2_MBUS_FMT_VYUY8_1_5X8, { 12, "VYUY8_1_5X8" } }, + { V4L2_MBUS_FMT_YUYV8_1_5X8, { 12, "YUYV8_1_5X8" } }, + { V4L2_MBUS_FMT_YVYU8_1_5X8, { 12, "YVYU8_1_5X8" } }, + { V4L2_MBUS_FMT_UYVY8_2X8, { 16, "UYVY8_2X8" } }, + { V4L2_MBUS_FMT_VYUY8_2X8, { 16, "VYUY8_2X8" } }, + { V4L2_MBUS_FMT_YUYV8_2X8, { 16, "YUYV8_2X8" } }, + { V4L2_MBUS_FMT_YVYU8_2X8, { 16, "YVYU8_2X8" } }, + { V4L2_MBUS_FMT_Y10_1X10, { 10, "Y10_1X10" } }, + { V4L2_MBUS_FMT_UYVY10_2X10, { 20, "UYVY10_2X10" } }, + { V4L2_MBUS_FMT_VYUY10_2X10, { 20, "VYUY10_2X10" } }, + { V4L2_MBUS_FMT_YUYV10_2X10, { 20, "YUYV10_2X10" } }, + { V4L2_MBUS_FMT_YVYU10_2X10, { 20, "YVYU10_2X10" } }, + { V4L2_MBUS_FMT_Y12_1X12, { 12, "Y12_1X12" } }, + { V4L2_MBUS_FMT_UYVY8_1X16, { 16, "UYVY8_1X16" } }, + { V4L2_MBUS_FMT_VYUY8_1X16, { 16, "VYUY8_1X16" } }, + { V4L2_MBUS_FMT_YUYV8_1X16, { 16, "YUYV8_1X16" } }, + { V4L2_MBUS_FMT_YVYU8_1X16, { 16, "YVYU8_1X16" } }, + { V4L2_MBUS_FMT_YDYUYDYV8_1X16, { 16, "YDYUYDYV8_1X16" } }, + { V4L2_MBUS_FMT_UYVY10_1X20, { 20, "UYVY10_1X20" } }, + { V4L2_MBUS_FMT_VYUY10_1X20, { 20, "VYUY10_1X20" } }, + { V4L2_MBUS_FMT_YUYV10_1X20, { 20, "YUYV10_1X20" } }, + { V4L2_MBUS_FMT_YVYU10_1X20, { 20, "YVYU10_1X20" } }, + { V4L2_MBUS_FMT_YUV10_1X30, { 30, "YUV10_1X30" } }, + { V4L2_MBUS_FMT_AYUV8_1X32, { 32, "AYUV8_1X32" } }, + { V4L2_MBUS_FMT_UYVY12_2X12, { 24, "UYVY12_2X12" } }, + { V4L2_MBUS_FMT_VYUY12_2X12, { 24, "VYUY12_2X12" } }, + { V4L2_MBUS_FMT_YUYV12_2X12, { 24, "YUYV12_2X12" } }, + { V4L2_MBUS_FMT_YVYU12_2X12, { 24, "YVYU12_2X12" } }, + { V4L2_MBUS_FMT_UYVY12_1X24, { 24, "UYVY12_1X24" } }, + { V4L2_MBUS_FMT_VYUY12_1X24, { 24, "VYUY12_1X24" } }, + { V4L2_MBUS_FMT_YUYV12_1X24, { 24, "YUYV12_1X24" } }, + { V4L2_MBUS_FMT_YVYU12_1X24, { 24, "YVYU12_1X24" } }, + { V4L2_MBUS_FMT_SBGGR8_1X8, { 8, "SBGGR8_1X8" } }, + { V4L2_MBUS_FMT_SGBRG8_1X8, { 8, "SGBRG8_1X8" } }, + { V4L2_MBUS_FMT_SGRBG8_1X8, { 8, "SGRBG8_1X8" } }, + { V4L2_MBUS_FMT_SRGGB8_1X8, { 8, "SRGGB8_1X8" } }, + { V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8, { 8, "SBGGR10_ALAW8_1X8" } }, + { V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8, { 8, "SGBRG10_ALAW8_1X8" } }, + { V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8, { 8, "SGRBG10_ALAW8_1X8" } }, + { V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8, { 8, "SRGGB10_ALAW8_1X8" } }, + { V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8, { 8, "SBGGR10_DPCM8_1X8" } }, + { V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8, { 8, "SGBRG10_DPCM8_1X8" } }, + { V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8, { 8, "SGRBG10_DPCM8_1X8" } }, + { V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8, { 8, "SRGGB10_DPCM8_1X8" } }, + { V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE, { 16, "SBGGR10_2X8_PADHI_BE" } }, + { V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE, { 16, "SBGGR10_2X8_PADHI_LE" } }, + { V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE, { 16, "SBGGR10_2X8_PADLO_BE" } }, + { V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE, { 16, "SBGGR10_2X8_PADLO_LE" } }, + { V4L2_MBUS_FMT_SBGGR10_1X10, { 10, "SBGGR10_1X10" } }, + { V4L2_MBUS_FMT_SGBRG10_1X10, { 10, "SGBRG10_1X10" } }, + { V4L2_MBUS_FMT_SGRBG10_1X10, { 10, "SGRBG10_1X10" } }, + { V4L2_MBUS_FMT_SRGGB10_1X10, { 10, "SRGGB10_1X10" } }, + { V4L2_MBUS_FMT_SBGGR12_1X12, { 12, "SBGGR12_1X12" } }, + { V4L2_MBUS_FMT_SGBRG12_1X12, { 12, "SGBRG12_1X12" } }, + { V4L2_MBUS_FMT_SGRBG12_1X12, { 12, "SGRBG12_1X12" } }, + { V4L2_MBUS_FMT_SRGGB12_1X12, { 12, "SRGGB12_1X12" } }, + { V4L2_MBUS_FMT_AHSV8888_1X32, { 32, "AHSV8888_1X32" } }, }; } /* namespace */ @@ -161,9 +170,17 @@ const std::map formatInfoMap = { */ const std::string V4L2SubdeviceFormat::toString() const { - std::stringstream ss; - ss << size.toString() << "-" << utils::hex(mbus_code, 4); - return ss.str(); + std::stringstream mbus; + mbus << size.toString() << "-"; + + const auto it = formatInfoMap.find(mbus_code); + + if (it == formatInfoMap.end()) + mbus << utils::hex(mbus_code, 4); + else + mbus << it->second.format; + + return mbus.str(); } /** @@ -180,7 +197,7 @@ uint8_t V4L2SubdeviceFormat::bitsPerPixel() const return 0; } - return it->second; + return it->second.bits; } /**