Show a patch.

GET /api/patches/15759/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 15759,
    "url": "https://patchwork.libcamera.org/api/patches/15759/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/15759/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20220429212348.18063-6-laurent.pinchart@ideasonboard.com>",
    "date": "2022-04-29T21:23:48",
    "name": "[libcamera-devel,5/5] libcamera: Replace toString with operator<<() for format classes",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "1d1217faa7d3ef1d3cdae94a986c6ba88a0db82b",
    "submitter": {
        "id": 2,
        "url": "https://patchwork.libcamera.org/api/people/2/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/15759/mbox/",
    "series": [
        {
            "id": 3084,
            "url": "https://patchwork.libcamera.org/api/series/3084/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3084",
            "date": "2022-04-29T21:23:43",
            "name": "libcamera: More operator<<() for stream output",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/3084/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/15759/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/15759/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>",
        "X-Original-To": "parsemail@patchwork.libcamera.org",
        "Delivered-To": "parsemail@patchwork.libcamera.org",
        "Received": [
            "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 602F1C3256\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 29 Apr 2022 21:24:00 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2425E65655;\n\tFri, 29 Apr 2022 23:24:00 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4A9BF6564D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 29 Apr 2022 23:23:55 +0200 (CEST)",
            "from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B66CC963;\n\tFri, 29 Apr 2022 23:23:54 +0200 (CEST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1651267440;\n\tbh=7JllKk5ohTN+hG2+DMqyFmy5gLktUP6vSVBORBvCV4o=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=i2E4BQLptHKI+5CHLsJ/Xf/kF9iwq+fZqRIiH0IzL70aszKAsOtrc9YzqcWMhlNLZ\n\tj5lqIAZr/7wjgcNHBKkeyiJu/N1fdWPtIvQaZ5Kl77NNkUTuWz4Dng+eHGGuUwyvq3\n\tnTAV8pGDH2o6JzMfmNlQe/zvSZfC36/wf8hllRJ33AfNX3xBOIyLopQr9XJKSSEaFn\n\temV9FiS9+Rq5eqtvVA7lRSQ8jzZQ096DkIXR3p4MWET008hzFmMiT28+fgxPkiOwP+\n\tLYS7gCuBm9zLRpYG/wehyPj/XcYkGkNPiDTyqGAISqIJUFyb+vFK069jdrziFZnIsS\n\ti8OzmcqZmC2Ww==",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1651267435;\n\tbh=7JllKk5ohTN+hG2+DMqyFmy5gLktUP6vSVBORBvCV4o=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=S8kQHEAPBowaMoiCLVkkQID41M5zFPQoshSdJp/NMo8Wd6C+tuJI9nBwvWiPu1PIW\n\t93b4zwAs1PI24cDpf57o8+g7Ix+QuutPzk2kEQHfSIIlBQz4KzN1Va4M3mM12LIyif\n\tLTfQ3ia0WovOcl+W2VKfNV+Wf3gSgzH99FIxoyhw="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"S8kQHEAP\"; dkim-atps=neutral",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Sat, 30 Apr 2022 00:23:48 +0300",
        "Message-Id": "<20220429212348.18063-6-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.35.1",
        "In-Reply-To": "<20220429212348.18063-1-laurent.pinchart@ideasonboard.com>",
        "References": "<20220429212348.18063-1-laurent.pinchart@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 5/5] libcamera: Replace toString with\n\toperator<<() for format classes",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "From": "Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Now that format classes implement the stream formatting operator<<(),\nuse it instead of the toString() function.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/android/camera_capabilities.cpp           |  6 ++---\n src/android/camera_device.cpp                 |  4 ++--\n src/android/jpeg/encoder_libjpeg.cpp          |  2 +-\n src/android/jpeg/thumbnailer.cpp              |  2 +-\n src/android/mm/generic_camera_buffer.cpp      |  3 +--\n src/android/yuv/post_processor_yuv.cpp        |  4 ++--\n src/cam/camera_session.cpp                    |  2 +-\n src/cam/kms_sink.cpp                          |  2 +-\n src/libcamera/pipeline/ipu3/cio2.cpp          |  2 +-\n src/libcamera/pipeline/ipu3/imgu.cpp          |  6 ++---\n .../pipeline/raspberrypi/raspberrypi.cpp      | 20 ++++++++--------\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      | 10 ++++----\n src/libcamera/pipeline/rkisp1/rkisp1_path.cpp |  6 ++---\n src/libcamera/pipeline/simple/converter.cpp   |  4 ++--\n src/libcamera/pipeline/simple/simple.cpp      |  9 ++++---\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  |  5 ++--\n src/libcamera/pipeline/vimc/vimc.cpp          |  2 +-\n src/libcamera/v4l2_subdevice.cpp              |  2 +-\n src/qcam/viewfinder_qt.cpp                    |  3 +--\n src/v4l2/v4l2_camera_proxy.cpp                |  2 +-\n test/bayer-format.cpp                         | 24 +++++++++----------\n test/camera-sensor.cpp                        |  2 +-\n 22 files changed, 59 insertions(+), 63 deletions(-)",
    "diff": "diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp\nindex e06a517d84b8..6f197eb80195 100644\n--- a/src/android/camera_capabilities.cpp\n+++ b/src/android/camera_capabilities.cpp\n@@ -554,7 +554,7 @@ int CameraCapabilities::initializeStreamConfigurations()\n \t\t\tformatsMap_[androidFormat] = formats::MJPEG;\n \t\t\tLOG(HAL, Debug) << \"Mapped Android format \"\n \t\t\t\t\t<< camera3Format.name << \" to \"\n-\t\t\t\t\t<< formats::MJPEG.toString()\n+\t\t\t\t\t<< formats::MJPEG\n \t\t\t\t\t<< \" (fixed mapping)\";\n \t\t\tcontinue;\n \t\t}\n@@ -566,7 +566,7 @@ int CameraCapabilities::initializeStreamConfigurations()\n \t\tPixelFormat mappedFormat;\n \t\tfor (const PixelFormat &pixelFormat : libcameraFormats) {\n \n-\t\t\tLOG(HAL, Debug) << \"Testing \" << pixelFormat.toString();\n+\t\t\tLOG(HAL, Debug) << \"Testing \" << pixelFormat;\n \n \t\t\t/*\n \t\t\t * The stream configuration size can be adjusted,\n@@ -605,7 +605,7 @@ int CameraCapabilities::initializeStreamConfigurations()\n \t\tformatsMap_[androidFormat] = mappedFormat;\n \t\tLOG(HAL, Debug) << \"Mapped Android format \"\n \t\t\t\t<< camera3Format.name << \" to \"\n-\t\t\t\t<< mappedFormat.toString();\n+\t\t\t\t<< mappedFormat;\n \n \t\tstd::vector<Size> resolutions;\n \t\tconst PixelFormatInfo &info = PixelFormatInfo::info(mappedFormat);\ndiff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\nindex f7ec95eb720e..8e804d4d5aed 100644\n--- a/src/android/camera_device.cpp\n+++ b/src/android/camera_device.cpp\n@@ -575,7 +575,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)\n \t\t\t       << \", crop_rotate_scale_degrees: \"\n \t\t\t       << rotationToString(stream->crop_rotate_scale_degrees)\n #endif\n-\t\t\t       << \" (\" << format.toString() << \")\";\n+\t\t\t       << \" (\" << format << \")\";\n \n \t\tif (!format.isValid())\n \t\t\treturn -EINVAL;\n@@ -926,7 +926,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n \t\t   << camera3Stream->height << \")\"\n \t\t   << \"[\" << utils::hex(camera3Stream->format) << \"] -> \"\n \t\t   << \"(\" << cameraStream->configuration().size << \")[\"\n-\t\t   << cameraStream->configuration().pixelFormat.toString() << \"]\";\n+\t\t   << cameraStream->configuration().pixelFormat << \"]\";\n \n \t\t/*\n \t\t * Inspect the camera stream type, create buffers opportunely\ndiff --git a/src/android/jpeg/encoder_libjpeg.cpp b/src/android/jpeg/encoder_libjpeg.cpp\nindex 21a3b33dd92c..fd62bd9c7c5b 100644\n--- a/src/android/jpeg/encoder_libjpeg.cpp\n+++ b/src/android/jpeg/encoder_libjpeg.cpp\n@@ -59,7 +59,7 @@ const struct JPEGPixelFormatInfo &findPixelInfo(const PixelFormat &format)\n \tconst auto iter = pixelInfo.find(format);\n \tif (iter == pixelInfo.end()) {\n \t\tLOG(JPEG, Error) << \"Unsupported pixel format for JPEG encoder: \"\n-\t\t\t\t << format.toString();\n+\t\t\t\t << format;\n \t\treturn invalidPixelFormat;\n \t}\n \ndiff --git a/src/android/jpeg/thumbnailer.cpp b/src/android/jpeg/thumbnailer.cpp\nindex 1fab80724f3c..41c71c76e9ce 100644\n--- a/src/android/jpeg/thumbnailer.cpp\n+++ b/src/android/jpeg/thumbnailer.cpp\n@@ -30,7 +30,7 @@ void Thumbnailer::configure(const Size &sourceSize, PixelFormat pixelFormat)\n \tif (pixelFormat_ != formats::NV12) {\n \t\tLOG(Thumbnailer, Error)\n \t\t\t<< \"Failed to configure: Pixel Format \"\n-\t\t\t<< pixelFormat_.toString() << \" unsupported.\";\n+\t\t\t<< pixelFormat_ << \" unsupported.\";\n \t\treturn;\n \t}\n \ndiff --git a/src/android/mm/generic_camera_buffer.cpp b/src/android/mm/generic_camera_buffer.cpp\nindex a4349f89cb13..1bd7090d634f 100644\n--- a/src/android/mm/generic_camera_buffer.cpp\n+++ b/src/android/mm/generic_camera_buffer.cpp\n@@ -66,8 +66,7 @@ CameraBuffer::Private::Private([[maybe_unused]] CameraBuffer *cameraBuffer,\n \tconst auto &info = PixelFormatInfo::info(pixelFormat);\n \tif (!info.isValid()) {\n \t\terror_ = -EINVAL;\n-\t\tLOG(HAL, Error) << \"Invalid pixel format: \"\n-\t\t\t\t<< pixelFormat.toString();\n+\t\tLOG(HAL, Error) << \"Invalid pixel format: \" << pixelFormat;\n \t\treturn;\n \t}\n \ndiff --git a/src/android/yuv/post_processor_yuv.cpp b/src/android/yuv/post_processor_yuv.cpp\nindex 513c6ef86153..ed44e6fe02da 100644\n--- a/src/android/yuv/post_processor_yuv.cpp\n+++ b/src/android/yuv/post_processor_yuv.cpp\n@@ -27,8 +27,8 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg,\n {\n \tif (inCfg.pixelFormat != outCfg.pixelFormat) {\n \t\tLOG(YUV, Error) << \"Pixel format conversion is not supported\"\n-\t\t\t\t<< \" (from \" << inCfg.pixelFormat.toString()\n-\t\t\t\t<< \" to \" << outCfg.pixelFormat.toString() << \")\";\n+\t\t\t\t<< \" (from \" << inCfg.pixelFormat\n+\t\t\t\t<< \" to \" << outCfg.pixelFormat << \")\";\n \t\treturn -EINVAL;\n \t}\n \ndiff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp\nindex bacb42561560..efffafbf9e9a 100644\n--- a/src/cam/camera_session.cpp\n+++ b/src/cam/camera_session.cpp\n@@ -145,7 +145,7 @@ void CameraSession::infoConfiguration() const\n \t\tconst StreamFormats &formats = cfg.formats();\n \t\tfor (PixelFormat pixelformat : formats.pixelformats()) {\n \t\t\tstd::cout << \" * Pixelformat: \"\n-\t\t\t\t  << pixelformat.toString() << \" \"\n+\t\t\t\t  << pixelformat << \" \"\n \t\t\t\t  << formats.range(pixelformat).toString()\n \t\t\t\t  << std::endl;\n \ndiff --git a/src/cam/kms_sink.cpp b/src/cam/kms_sink.cpp\nindex 29be5623cb17..7add81a64334 100644\n--- a/src/cam/kms_sink.cpp\n+++ b/src/cam/kms_sink.cpp\n@@ -194,7 +194,7 @@ int KMSSink::configurePipeline(const libcamera::PixelFormat &format)\n \tif (ret) {\n \t\tstd::cerr\n \t\t\t<< \"Unable to find display pipeline for format \"\n-\t\t\t<< format.toString() << std::endl;\n+\t\t\t<< format << std::endl;\n \n \t\treturn ret;\n \t}\ndiff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp\nindex f4e8c6632c2f..a4e4d302f841 100644\n--- a/src/libcamera/pipeline/ipu3/cio2.cpp\n+++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n@@ -211,7 +211,7 @@ int CIO2Device::configure(const Size &size, V4L2DeviceFormat *outputFormat)\n \tif (ret)\n \t\treturn ret;\n \n-\tLOG(IPU3, Debug) << \"CIO2 output format \" << outputFormat->toString();\n+\tLOG(IPU3, Debug) << \"CIO2 output format \" << outputFormat;\n \n \treturn 0;\n }\ndiff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp\nindex 3ac997cc1acf..34613feb8130 100644\n--- a/src/libcamera/pipeline/ipu3/imgu.cpp\n+++ b/src/libcamera/pipeline/ipu3/imgu.cpp\n@@ -479,7 +479,7 @@ int ImgUDevice::configure(const PipeConfig &pipeConfig, V4L2DeviceFormat *inputF\n \tif (ret)\n \t\treturn ret;\n \n-\tLOG(IPU3, Debug) << \"ImgU input format = \" << inputFormat->toString();\n+\tLOG(IPU3, Debug) << \"ImgU input format = \" << inputFormat;\n \n \t/*\n \t * \\todo The IPU3 driver implementation shall be changed to use the\n@@ -511,7 +511,7 @@ int ImgUDevice::configure(const PipeConfig &pipeConfig, V4L2DeviceFormat *inputF\n \tif (ret)\n \t\treturn ret;\n \n-\tLOG(IPU3, Debug) << \"ImgU GDC format = \" << gdcFormat.toString();\n+\tLOG(IPU3, Debug) << \"ImgU GDC format = \" << gdcFormat;\n \n \tStreamConfiguration paramCfg = {};\n \tparamCfg.size = inputFormat->size;\n@@ -568,7 +568,7 @@ int ImgUDevice::configureVideoDevice(V4L2VideoDevice *dev, unsigned int pad,\n \n \tconst char *name = dev == output_.get() ? \"output\" : \"viewfinder\";\n \tLOG(IPU3, Debug) << \"ImgU \" << name << \" format = \"\n-\t\t\t << outputFormat->toString();\n+\t\t\t << outputFormat;\n \n \treturn 0;\n }\ndiff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\nindex d8c709b7a503..e2ee7f1ace21 100644\n--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n@@ -167,7 +167,7 @@ V4L2SubdeviceFormat findBestFormat(const SensorFormats &formatsMap, const Size &\n \t\t\t}\n \n \t\t\tLOG(RPI, Debug) << \"Format: \" << size\n-\t\t\t\t\t<< \" fmt \" << format.toString()\n+\t\t\t\t\t<< \" fmt \" << format\n \t\t\t\t\t<< \" Score: \" << score\n \t\t\t\t\t<< \" (best \" << bestScore << \")\";\n \t\t}\n@@ -758,8 +758,8 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t\treturn ret;\n \n \tLOG(RPI, Info) << \"Sensor: \" << camera->id()\n-\t\t       << \" - Selected sensor format: \" << sensorFormat.toString()\n-\t\t       << \" - Selected unicam format: \" << unicamFormat.toString();\n+\t\t       << \" - Selected sensor format: \" << sensorFormat\n+\t\t       << \" - Selected unicam format: \" << unicamFormat;\n \n \tret = data->isp_[Isp::Input].dev()->setFormat(&unicamFormat);\n \tif (ret)\n@@ -790,7 +790,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t\tformat.colorSpace = cfg.colorSpace;\n \n \t\tLOG(RPI, Debug) << \"Setting \" << stream->name() << \" to \"\n-\t\t\t\t<< format.toString();\n+\t\t\t\t<< format;\n \n \t\tret = stream->dev()->setFormat(&format);\n \t\tif (ret)\n@@ -799,7 +799,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t\tif (format.size != cfg.size || format.fourcc != fourcc) {\n \t\t\tLOG(RPI, Error)\n \t\t\t\t<< \"Failed to set requested format on \" << stream->name()\n-\t\t\t\t<< \", returned \" << format.toString();\n+\t\t\t\t<< \", returned \" << format;\n \t\t\treturn -EINVAL;\n \t\t}\n \n@@ -842,7 +842,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t\t}\n \n \t\tLOG(RPI, Debug) << \"Defaulting ISP Output0 format to \"\n-\t\t\t\t<< format.toString();\n+\t\t\t\t<< format;\n \t}\n \n \t/*\n@@ -866,7 +866,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t\toutput1Format.fourcc = V4L2PixelFormat::fromPixelFormat(formats::YUV420);\n \n \t\tLOG(RPI, Debug) << \"Setting ISP Output1 (internal) to \"\n-\t\t\t\t<< output1Format.toString();\n+\t\t\t\t<< output1Format;\n \n \t\tret = data->isp_[Isp::Output1].dev()->setFormat(&output1Format);\n \t\tif (ret) {\n@@ -882,7 +882,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \tret = data->isp_[Isp::Stats].dev()->setFormat(&format);\n \tif (ret) {\n \t\tLOG(RPI, Error) << \"Failed to set format on ISP stats stream: \"\n-\t\t\t\t<< format.toString();\n+\t\t\t\t<< format;\n \t\treturn ret;\n \t}\n \n@@ -923,7 +923,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t\tret = data->unicam_[Unicam::Embedded].dev()->setFormat(&format);\n \t\tif (ret) {\n \t\t\tLOG(RPI, Error) << \"Failed to set format on Unicam embedded: \"\n-\t\t\t\t\t<< format.toString();\n+\t\t\t\t\t<< format;\n \t\t\treturn ret;\n \t\t}\n \t}\n@@ -965,7 +965,7 @@ int PipelineHandlerRPi::configure(Camera *camera, CameraConfiguration *config)\n \t\tif (ret) {\n \t\t\tLOG(RPI, Error) << \"Failed to set format on \" << device->entity()->name()\n \t\t\t\t\t<< \" pad \" << sinkPad->index()\n-\t\t\t\t\t<< \" with format  \" << format.toString()\n+\t\t\t\t\t<< \" with format  \" << format\n \t\t\t\t\t<< \": \" << ret;\n \t\t\treturn ret;\n \t\t}\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 1c53495c97cc..7cf36524ccc4 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -573,13 +573,13 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n \t * the pipeline.\n \t */\n \tV4L2SubdeviceFormat format = config->sensorFormat();\n-\tLOG(RkISP1, Debug) << \"Configuring sensor with \" << format.toString();\n+\tLOG(RkISP1, Debug) << \"Configuring sensor with \" << format;\n \n \tret = sensor->setFormat(&format);\n \tif (ret < 0)\n \t\treturn ret;\n \n-\tLOG(RkISP1, Debug) << \"Sensor configured with \" << format.toString();\n+\tLOG(RkISP1, Debug) << \"Sensor configured with \" << format;\n \n \tret = isp_->setFormat(0, &format);\n \tif (ret < 0)\n@@ -591,13 +591,13 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n \t\treturn ret;\n \n \tLOG(RkISP1, Debug)\n-\t\t<< \"ISP input pad configured with \" << format.toString()\n+\t\t<< \"ISP input pad configured with \" << format\n \t\t<< \" crop \" << rect;\n \n \t/* YUYV8_2X8 is required on the ISP source path pad for YUV output. */\n \tformat.mbus_code = MEDIA_BUS_FMT_YUYV8_2X8;\n \tLOG(RkISP1, Debug)\n-\t\t<< \"Configuring ISP output pad with \" << format.toString()\n+\t\t<< \"Configuring ISP output pad with \" << format\n \t\t<< \" crop \" << rect;\n \n \tret = isp_->setSelection(2, V4L2_SEL_TGT_CROP, &rect);\n@@ -609,7 +609,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)\n \t\treturn ret;\n \n \tLOG(RkISP1, Debug)\n-\t\t<< \"ISP output pad configured with \" << format.toString()\n+\t\t<< \"ISP output pad configured with \" << format\n \t\t<< \" crop \" << rect;\n \n \tstd::map<unsigned int, IPAStream> streamConfig;\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\nindex f195f91ead1f..07a6566d308c 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp\n@@ -119,13 +119,13 @@ int RkISP1Path::configure(const StreamConfiguration &config,\n \n \tLOG(RkISP1, Debug)\n \t\t<< \"Configured \" << name_ << \" resizer input pad with \"\n-\t\t<< ispFormat.toString() << \" crop \" << rect.toString();\n+\t\t<< ispFormat << \" crop \" << rect.toString();\n \n \tispFormat.size = config.size;\n \n \tLOG(RkISP1, Debug)\n \t\t<< \"Configuring \" << name_ << \" resizer output pad with \"\n-\t\t<< ispFormat.toString();\n+\t\t<< ispFormat;\n \n \tswitch (config.pixelFormat) {\n \tcase formats::NV12:\n@@ -143,7 +143,7 @@ int RkISP1Path::configure(const StreamConfiguration &config,\n \n \tLOG(RkISP1, Debug)\n \t\t<< \"Configured \" << name_ << \" resizer output pad with \"\n-\t\t<< ispFormat.toString();\n+\t\t<< ispFormat;\n \n \tconst PixelFormatInfo &info = PixelFormatInfo::info(config.pixelFormat);\n \tV4L2DeviceFormat outputFormat;\ndiff --git a/src/libcamera/pipeline/simple/converter.cpp b/src/libcamera/pipeline/simple/converter.cpp\nindex ee8376dea1e0..77c44fc8714f 100644\n--- a/src/libcamera/pipeline/simple/converter.cpp\n+++ b/src/libcamera/pipeline/simple/converter.cpp\n@@ -65,8 +65,8 @@ int SimpleConverter::Stream::configure(const StreamConfiguration &inputCfg,\n \t    format.planes[0].bpl != inputCfg.stride) {\n \t\tLOG(SimplePipeline, Error)\n \t\t\t<< \"Input format not supported (requested \"\n-\t\t\t<< inputCfg.size << \"-\" << videoFormat.toString()\n-\t\t\t<< \", got \" << format.toString() << \")\";\n+\t\t\t<< inputCfg.size << \"-\" << videoFormat\n+\t\t\t<< \", got \" << format << \")\";\n \t\treturn -EINVAL;\n \t}\n \ndiff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp\nindex e76bf01261b0..76bd228b5aba 100644\n--- a/src/libcamera/pipeline/simple/simple.cpp\n+++ b/src/libcamera/pipeline/simple/simple.cpp\n@@ -607,10 +607,10 @@ int SimpleCameraData::setupFormats(V4L2SubdeviceFormat *format,\n \t\t\t\tLOG(SimplePipeline, Debug)\n \t\t\t\t\t<< \"Source '\" << source->entity()->name()\n \t\t\t\t\t<< \"':\" << source->index()\n-\t\t\t\t\t<< \" produces \" << sourceFormat.toString()\n+\t\t\t\t\t<< \" produces \" << sourceFormat\n \t\t\t\t\t<< \", sink '\" << sink->entity()->name()\n \t\t\t\t\t<< \"':\" << sink->index()\n-\t\t\t\t\t<< \" requires \" << format->toString();\n+\t\t\t\t\t<< \" requires \" << format;\n \t\t\t\treturn -EINVAL;\n \t\t\t}\n \t\t}\n@@ -620,7 +620,7 @@ int SimpleCameraData::setupFormats(V4L2SubdeviceFormat *format,\n \t\t\t<< \"':\" << source->index()\n \t\t\t<< \" -> '\" << sink->entity()->name()\n \t\t\t<< \"':\" << sink->index()\n-\t\t\t<< \" configured with format \" << format->toString();\n+\t\t\t<< \" configured with format \" << format;\n \t}\n \n \treturn 0;\n@@ -939,8 +939,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c)\n \t    captureFormat.size != pipeConfig->captureSize) {\n \t\tLOG(SimplePipeline, Error)\n \t\t\t<< \"Unable to configure capture in \"\n-\t\t\t<< pipeConfig->captureSize << \"-\"\n-\t\t\t<< videoFormat.toString();\n+\t\t\t<< pipeConfig->captureSize << \"-\" << videoFormat;\n \t\treturn -EINVAL;\n \t}\n \ndiff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\nindex e5a79417f923..2ebf2788c3b4 100644\n--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n@@ -126,9 +126,8 @@ CameraConfiguration::Status UVCCameraConfiguration::validate()\n \tif (iter == pixelFormats.end()) {\n \t\tcfg.pixelFormat = pixelFormats.front();\n \t\tLOG(UVC, Debug)\n-\t\t\t<< \"Adjusting pixel format from \"\n-\t\t\t<< pixelFormat.toString() << \" to \"\n-\t\t\t<< cfg.pixelFormat.toString();\n+\t\t\t<< \"Adjusting pixel format from \" << pixelFormat\n+\t\t\t<< \" to \" << cfg.pixelFormat;\n \t\tstatus = Adjusted;\n \t}\n \ndiff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\nindex 3db0ffe58c39..3379ac5cd47d 100644\n--- a/src/libcamera/pipeline/vimc/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc/vimc.cpp\n@@ -209,7 +209,7 @@ CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,\n \t\t\tif (pixelformat.first != formats::BGR888) {\n \t\t\t\tLOG(VIMC, Info)\n \t\t\t\t\t<< \"Skipping unsupported pixel format \"\n-\t\t\t\t\t<< pixelformat.first.toString();\n+\t\t\t\t\t<< pixelformat.first;\n \t\t\t\tcontinue;\n \t\t\t}\n \t\t}\ndiff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp\nindex b3d0ddad83db..ca6b43cea5f1 100644\n--- a/src/libcamera/v4l2_subdevice.cpp\n+++ b/src/libcamera/v4l2_subdevice.cpp\n@@ -206,7 +206,7 @@ uint8_t V4L2SubdeviceFormat::bitsPerPixel() const\n \tconst auto it = formatInfoMap.find(mbus_code);\n \tif (it == formatInfoMap.end()) {\n \t\tLOG(V4L2, Error) << \"No information available for format '\"\n-\t\t\t\t << toString() << \"'\";\n+\t\t\t\t << *this << \"'\";\n \t\treturn 0;\n \t}\n \ndiff --git a/src/qcam/viewfinder_qt.cpp b/src/qcam/viewfinder_qt.cpp\nindex a05c75ed9e12..6844f998bbe0 100644\n--- a/src/qcam/viewfinder_qt.cpp\n+++ b/src/qcam/viewfinder_qt.cpp\n@@ -67,8 +67,7 @@ int ViewFinderQt::setFormat(const libcamera::PixelFormat &format,\n \n \t\timage_ = QImage(size, QImage::Format_RGB32);\n \n-\t\tqInfo() << \"Using software format conversion from\"\n-\t\t\t<< format.toString().c_str();\n+\t\tqInfo() << \"Using software format conversion from\" << format;\n \t} else {\n \t\tqInfo() << \"Zero-copy enabled\";\n \t}\ndiff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp\nindex 4913e44a6f5f..26a227da6db2 100644\n--- a/src/v4l2/v4l2_camera_proxy.cpp\n+++ b/src/v4l2/v4l2_camera_proxy.cpp\n@@ -327,7 +327,7 @@ int V4L2CameraProxy::tryFormat(struct v4l2_format *arg)\n \tif (ret < 0) {\n \t\tLOG(V4L2Compat, Error)\n \t\t\t<< \"Failed to negotiate a valid format: \"\n-\t\t\t<< format.toString();\n+\t\t\t<< format;\n \t\treturn -EINVAL;\n \t}\n \ndiff --git a/test/bayer-format.cpp b/test/bayer-format.cpp\nindex 135bcb5214c8..54f03487fa0e 100644\n--- a/test/bayer-format.cpp\n+++ b/test/bayer-format.cpp\n@@ -72,8 +72,8 @@ protected:\n \t\tbayerFmt = BayerFormat::fromV4L2PixelFormat(v4l2FmtExpect);\n \t\tV4L2PixelFormat v4l2Fmt = bayerFmt.toV4L2PixelFormat();\n \t\tif (v4l2Fmt != v4l2FmtExpect) {\n-\t\t\tcerr << \"Expected: '\" << v4l2FmtExpect.toString()\n-\t\t\t     << \"' got: '\" << v4l2Fmt.toString() << \"'\" << endl;\n+\t\t\tcerr << \"Expected: '\" << v4l2FmtExpect\n+\t\t\t     << \"' got: '\" << v4l2Fmt << \"'\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n \n@@ -86,7 +86,7 @@ protected:\n \t\tv4l2Fmt = bayerFmt.toV4L2PixelFormat();\n \t\tif (v4l2Fmt != v4l2FmtExpect) {\n \t\t\tcerr << \"Expected: empty V4L2PixelFormat got: '\"\n-\t\t\t     << v4l2Fmt.toString() << \"'\" << endl;\n+\t\t\t     << v4l2Fmt << \"'\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n \n@@ -101,8 +101,8 @@ protected:\n \t\tbayerFmt = BayerFormat::fromV4L2PixelFormat(v4l2Fmt);\n \t\tif (bayerFmt != bayerFmtExpect) {\n \t\t\tcerr << \"Expected BayerFormat '\"\n-\t\t\t     << bayerFmtExpect.toString() << \"', got: '\"\n-\t\t\t     << bayerFmt.toString() << \"'\" << endl;\n+\t\t\t     << bayerFmtExpect << \"', got: '\"\n+\t\t\t     << bayerFmt << \"'\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n \n@@ -115,7 +115,7 @@ protected:\n \t\tbayerFmt = BayerFormat::fromV4L2PixelFormat(v4l2FmtUnknown);\n \t\tif (bayerFmt.isValid()) {\n \t\t\tcerr << \"Expected empty BayerFormat got: '\"\n-\t\t\t     << bayerFmt.toString() << \"'\" << endl;\n+\t\t\t     << bayerFmt << \"'\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n \n@@ -151,8 +151,8 @@ protected:\n \t\tBayerFormat hFlipFmt = bayerFmt.transform(Transform::HFlip);\n \t\tif (hFlipFmt != bayerFmtExpect) {\n \t\t\tcerr << \"Horizontal flip of 'BGGR-8' should result in '\"\n-\t\t\t     << bayerFmtExpect.toString() << \"', got: '\"\n-\t\t\t     << hFlipFmt.toString() << \"'\" << endl;\n+\t\t\t     << bayerFmtExpect << \"', got: '\"\n+\t\t\t     << hFlipFmt << \"'\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n \n@@ -166,8 +166,8 @@ protected:\n \t\tBayerFormat vFlipFmt = bayerFmt.transform(Transform::VFlip);\n \t\tif (vFlipFmt != bayerFmtExpect) {\n \t\t\tcerr << \"Vertical flip of 'BGGR-8' should result in '\"\n-\t\t\t     << bayerFmtExpect.toString() << \"', got: '\"\n-\t\t\t     << vFlipFmt.toString() << \"'\" << endl;\n+\t\t\t     << bayerFmtExpect << \"', got: '\"\n+\t\t\t     << vFlipFmt << \"'\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n \n@@ -182,7 +182,7 @@ protected:\n \t\tif (transposeFmt != bayerFmt) {\n \t\t\tcerr << \"Transpose with both green pixels on the \"\n \t\t\t     << \"antidiagonal should not change the order \"\n-\t\t\t     << \"(got '\" << transposeFmt.toString() << \"')\"\n+\t\t\t     << \"(got '\" << transposeFmt << \"')\"\n \t\t\t     << endl;\n \t\t\treturn TestFail;\n \t\t}\n@@ -199,7 +199,7 @@ protected:\n \t\tif (transposeFmt != bayerFmtExpect) {\n \t\t\tcerr << \"Transpose with the red & blue pixels on the \"\n \t\t\t     << \"antidiagonal should switch their position \"\n-\t\t\t     << \"(got '\" << transposeFmt.toString() << \"')\"\n+\t\t\t     << \"(got '\" << transposeFmt << \"')\"\n \t\t\t     << endl;\n \t\t\treturn TestFail;\n \t\t}\ndiff --git a/test/camera-sensor.cpp b/test/camera-sensor.cpp\nindex 9b06a60e7695..d3dcb51056f1 100644\n--- a/test/camera-sensor.cpp\n+++ b/test/camera-sensor.cpp\n@@ -99,7 +99,7 @@ protected:\n \t\t    format.size != Size(4096, 2160)) {\n \t\t\tcerr << \"Failed to get a suitable format, expected 4096x2160-0x\"\n \t\t\t     << utils::hex(MEDIA_BUS_FMT_SBGGR10_1X10)\n-\t\t\t     << \", got \" << format.toString() << endl;\n+\t\t\t     << \", got \" << format << endl;\n \t\t\treturn TestFail;\n \t\t}\n \n",
    "prefixes": [
        "libcamera-devel",
        "5/5"
    ]
}