[{"id":12425,"web_url":"https://patchwork.libcamera.org/comment/12425/","msgid":"<20200910113605.GU4095624@oden.dyn.berto.se>","date":"2020-09-10T11:36:05","subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nThanks for your patch.\n\nOn 2020-09-09 17:54:57 +0200, Jacopo Mondi wrote:\n> To ease following how Android stream gets mapped onto libcamera ones\n> add a (quite verbose) printout before queueing a request to libcamera.\n> \n> The output looks like:\n>  0 -  (320x240)[0x00000022] -> (320x240)[NV12] (external)\n>  1 -  (640x480)[0x00000021] -> (640x480)[NV12] (internal)\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n>  1 file changed, 20 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index f94b313581e7..811f0a66cf2f 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -1419,9 +1419,12 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n>  \tRequest *request =\n>  \t\tcamera_->createRequest(reinterpret_cast<uint64_t>(descriptor));\n>  \n> +\tLOG(HAL, Debug) << \"Queueing Request to libcamera with \"\n> +\t\t\t<< descriptor->numBuffers << \" streams\";\n>  \tfor (unsigned int i = 0; i < descriptor->numBuffers; ++i) {\n> +\t\tcamera3_stream *camera3Stream = camera3Buffers[i].stream;\n>  \t\tCameraStream *cameraStream =\n> -\t\t\tstatic_cast<CameraStream *>(camera3Buffers[i].stream->priv);\n> +\t\t\tstatic_cast<CameraStream *>(camera3Stream->priv);\n>  \t\tconst StreamConfiguration &config = config_->at(cameraStream->index());\n>  \t\tStream *stream = config.stream();\n>  \n> @@ -1432,9 +1435,18 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n>  \t\tdescriptor->buffers[i].stream = camera3Buffers[i].stream;\n>  \t\tdescriptor->buffers[i].buffer = camera3Buffers[i].buffer;\n>  \n> -\t\t/* Mapped streams don't need to be added to the Request. */\n> -\t\tif (cameraStream->type() == CameraStream::Type::Mapped)\n> +\t\tstd::stringstream ss;\n> +\t\tss << i << \" - (\";\n> +\t\tss << camera3Stream->width << \"x\" << camera3Stream->height << \")\"\n> +\t\t   << \"[\" << utils::hex(camera3Stream->format) << \"] -> \"\n> +\t\t   << \"(\" << config.size.toString() << \")[\"\n> +\t\t   << config.pixelFormat.toString() << \"]\";\n> +\n> +\t\t/* Mapped streams don't need buffers added to the Request. */\n> +\t\tif (cameraStream->type() == CameraStream::Type::Mapped) {\n> +\t\t\tLOG(HAL, Debug) << ss.str() << \" (mapped)\";\n>  \t\t\tcontinue;\n> +\t\t}\n>  \n>  \t\tFrameBuffer *buffer;\n>  \t\tif (cameraStream->type() == CameraStream::Type::Direct) {\n> @@ -1446,6 +1458,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n>  \t\t\t */\n>  \t\t\tbuffer = createFrameBuffer(*camera3Buffers[i].buffer);\n>  \t\t\tdescriptor->frameBuffers.emplace_back(buffer);\n> +\t\t\tss << \" (external)\";\n>  \n>  \t\t} else {\n>  \t\t\t/*\n> @@ -1458,7 +1471,11 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n>  \t\t\t * allocator once it has been processed.\n>  \t\t\t */\n>  \t\t\tbuffer = allocator_.getBuffer(stream);\n> +\t\t\tss << \" (internal)\";\n>  \t\t}\n> +\n> +\t\tLOG(HAL, Debug) << ss.str();\n> +\n>  \t\tif (!buffer) {\n>  \t\t\tLOG(HAL, Error) << \"Failed to create buffer\";\n>  \t\t\tdelete request;\n> -- \n> 2.28.0\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 B2F45C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 10 Sep 2020 11:36:08 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8129C62D8E;\n\tThu, 10 Sep 2020 13:36:08 +0200 (CEST)","from mail-lf1-x141.google.com (mail-lf1-x141.google.com\n\t[IPv6:2a00:1450:4864:20::141])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 44C7762D60\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 13:36:07 +0200 (CEST)","by mail-lf1-x141.google.com with SMTP id u8so3418015lff.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 10 Sep 2020 04:36:07 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tv16sm1504628ljc.84.2020.09.10.04.36.06\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 10 Sep 2020 04:36:06 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"Cz4kXBiQ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=7XESyjDSw8TQhV4u3Jo72iIieJ3pkS4DGFIU7UyYM1c=;\n\tb=Cz4kXBiQ2Pq6cQKaw3md15OrJBIWTJsOft286cBC4NEEbEpFpQsBgD6Vga1RzOLCa0\n\t/vMrdyIYXmuPGV/etYDgBMKnmz73tUijTn31ii0y03s5e9yjFxIMp+EzMgeq+xgRHcl/\n\tCozHEPj0s2IUn01di6eOtpYmWXScvrGmigq86GALOxOOd/eJANInIEFgcBYsmQyYUr9a\n\t6/yUvtJoXmPppHiKJAO4Y+81hRH/RSgP7t6wXe9asXcxvN2jHgoRadO3uYzV6WzgjwcB\n\tCkkgHj+tSYQP6hGUi0Z00fq0hSuxh9VdjwY4sAayu0nAUyj1seFIG6RwBpt3V0Lzm8DS\n\tZGNQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=7XESyjDSw8TQhV4u3Jo72iIieJ3pkS4DGFIU7UyYM1c=;\n\tb=PH0x4SyHgPsqvYG47m81+bnrr1ySKkuc0yO2TJsUZEhI88HYwsAi1NN/PgG9WKaYus\n\tfQ0qsEjg+YKzm8g9hPbIp8QCh9qEaierhqtzKYhiH8v6Js3BSbGzIq1tFtXZHhTqNt0B\n\t9XNH6TgT9p834Q04VvZBK1fsnqVNC2fdYtBvQ7meLT8FI8her16jcu6DW0Vs//jRYBi9\n\tl2iChQewgK/lsV83x9GhyYkkyAv34twLqMQLGCYQG/LHeeSfUoKGMssfrS3d9PTB67Ee\n\tEjD7GU9+SNb+2sKAaFA87ntSZlLbgvMeSVSrW0t0qlCXVyQqQliQddWQql8lhzBPy8ho\n\tW2hw==","X-Gm-Message-State":"AOAM530/LYM0tCz2zA8s9Tq9pKn3usI6iqnMADSTAKOhJ34OiZI1ZZcW\n\telrZFoVlggj7ecD+bmSaoZANLA==","X-Google-Smtp-Source":"ABdhPJy+ZRh6r7Z5IeHxjfoTdVhpVDH+6PVuOaevL2r79YkMCR2taSPQcGauaU5XPHGqfHPdUmWGdw==","X-Received":"by 2002:ac2:522e:: with SMTP id i14mr4053013lfl.82.1599737766663;\n\tThu, 10 Sep 2020 04:36:06 -0700 (PDT)","Date":"Thu, 10 Sep 2020 13:36:05 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Message-ID":"<20200910113605.GU4095624@oden.dyn.berto.se>","References":"<20200909155457.153907-1-jacopo@jmondi.org>\n\t<20200909155457.153907-9-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200909155457.153907-9-jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","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>","Cc":"hanlinchen@chromium.org, libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12449,"web_url":"https://patchwork.libcamera.org/comment/12449/","msgid":"<CAO5uPHMfTj6DfN0ea3zSdYSsGA0ewoK2oBoePB7a9-Tt73p=ag@mail.gmail.com>","date":"2020-09-11T08:55:55","subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"On Thu, Sep 10, 2020 at 8:36 PM Niklas Söderlund\n<niklas.soderlund@ragnatech.se> wrote:\n>\n> Hi Jacopo,\n>\n> Thanks for your patch.\n>\n> On 2020-09-09 17:54:57 +0200, Jacopo Mondi wrote:\n> > To ease following how Android stream gets mapped onto libcamera ones\n> > add a (quite verbose) printout before queueing a request to libcamera.\n> >\n> > The output looks like:\n> >  0 -  (320x240)[0x00000022] -> (320x240)[NV12] (external)\n> >  1 -  (640x480)[0x00000021] -> (640x480)[NV12] (internal)\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n>\n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n>\n> > ---\n> >  src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n> >  1 file changed, 20 insertions(+), 3 deletions(-)\n> >\n> > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > index f94b313581e7..811f0a66cf2f 100644\n> > --- a/src/android/camera_device.cpp\n> > +++ b/src/android/camera_device.cpp\n> > @@ -1419,9 +1419,12 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> >       Request *request =\n> >               camera_->createRequest(reinterpret_cast<uint64_t>(descriptor));\n> >\n> > +     LOG(HAL, Debug) << \"Queueing Request to libcamera with \"\n> > +                     << descriptor->numBuffers << \" streams\";\n> >       for (unsigned int i = 0; i < descriptor->numBuffers; ++i) {\n> > +             camera3_stream *camera3Stream = camera3Buffers[i].stream;\n> >               CameraStream *cameraStream =\n> > -                     static_cast<CameraStream *>(camera3Buffers[i].stream->priv);\n> > +                     static_cast<CameraStream *>(camera3Stream->priv);\n> >               const StreamConfiguration &config = config_->at(cameraStream->index());\n> >               Stream *stream = config.stream();\n> >\n> > @@ -1432,9 +1435,18 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> >               descriptor->buffers[i].stream = camera3Buffers[i].stream;\n> >               descriptor->buffers[i].buffer = camera3Buffers[i].buffer;\n> >\n> > -             /* Mapped streams don't need to be added to the Request. */\n> > -             if (cameraStream->type() == CameraStream::Type::Mapped)\n> > +             std::stringstream ss;\n> > +             ss << i << \" - (\";\n> > +             ss << camera3Stream->width << \"x\" << camera3Stream->height << \")\"\n> > +                << \"[\" << utils::hex(camera3Stream->format) << \"] -> \"\n> > +                << \"(\" << config.size.toString() << \")[\"\n> > +                << config.pixelFormat.toString() << \"]\";\n> > +\n\nnit: ss is used only in debug mode. Can we execute this process in\ndebug mode only as well?\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n> > +             /* Mapped streams don't need buffers added to the Request. */\n> > +             if (cameraStream->type() == CameraStream::Type::Mapped) {\n> > +                     LOG(HAL, Debug) << ss.str() << \" (mapped)\";\n> >                       continue;\n> > +             }\n> >\n> >               FrameBuffer *buffer;\n> >               if (cameraStream->type() == CameraStream::Type::Direct) {\n> > @@ -1446,6 +1458,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> >                        */\n> >                       buffer = createFrameBuffer(*camera3Buffers[i].buffer);\n> >                       descriptor->frameBuffers.emplace_back(buffer);\n> > +                     ss << \" (external)\";\n> >\n> >               } else {\n> >                       /*\n> > @@ -1458,7 +1471,11 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> >                        * allocator once it has been processed.\n> >                        */\n> >                       buffer = allocator_.getBuffer(stream);\n> > +                     ss << \" (internal)\";\n> >               }\n> > +\n> > +             LOG(HAL, Debug) << ss.str();\n> > +\n> >               if (!buffer) {\n> >                       LOG(HAL, Error) << \"Failed to create buffer\";\n> >                       delete request;\n> > --\n> > 2.28.0\n> >\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel\n>\n> --\n> Regards,\n> Niklas Söderlund\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","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 17BFCBDB1D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Sep 2020 08:56:08 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D687B62D5B;\n\tFri, 11 Sep 2020 10:56:07 +0200 (CEST)","from mail-ej1-x641.google.com (mail-ej1-x641.google.com\n\t[IPv6:2a00:1450:4864:20::641])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5389562C8C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 10:56:06 +0200 (CEST)","by mail-ej1-x641.google.com with SMTP id i22so12757077eja.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 01:56:06 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"Sv+pamL1\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=T55jURq9e7elJv1fz9eLhLtX0hNv9EfmODUEDx+EmUY=;\n\tb=Sv+pamL1RFBrziO/NKM8bgFu0TwXzAQVhk9C1u60wso167aFOUD6iOpsvlzZunxo5k\n\tqLO/u4XZK+0BTN0mA4gjn0RA4gjNm/sR/jm8D2+s5VFlrfciuZal6WfdsEkYlpzgCTIG\n\t0Mdozo2MZYXzu62xiUGDB/N6f5nH0rvc9/Hqs=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=T55jURq9e7elJv1fz9eLhLtX0hNv9EfmODUEDx+EmUY=;\n\tb=bXC1Q4CLcWdqRyENQylIkYOvJcaT/F6l5qOV8ptSvxW0r2dJI1ho7lAu/Qggz+SUz8\n\tWAblRt6Jg/xoXAz1gQOfPQrQ/tG0KaQqjb2YV5gXeCZ140aDMCuJ6f7gWxtwreUmkP7y\n\tcJIJBGG7OhIxlzHRDa49xncx6pygT7pHsz76h6TkbiRXcFLpzdRz8yp4D5nehQzGkds3\n\tdCGReXgDUoFfumT+drpaxGQqpzOC/T4R1VuNm3OARwAP94MQmuE4CHw4/8FVTqjWYz0w\n\tzHyvWouDFz+ULEZ3dpUjOxiCnsoR6P0pO33Plt/CM//InumpFG9dS2zm3s3Q4FoZXCii\n\tcK9w==","X-Gm-Message-State":"AOAM531LaV8yKkxzTe6ROeUnDN8J+ad9iS17JYTwrDHrLKCoD0zaORNb\n\t+FhP3hjJ9oW9HAVpjg3BUmPtfYf73Tl9kcvCZqODUA==","X-Google-Smtp-Source":"ABdhPJyyE2WtKF8Tlw64S4CGKjhNSK0r1xu+I4nI6CaV2dDD2SfnkrE85lKAyE9BGF5C191WMTd+vG0VNXSGYZiNcLA=","X-Received":"by 2002:a17:906:3506:: with SMTP id\n\tr6mr1027775eja.55.1599814566017; \n\tFri, 11 Sep 2020 01:56:06 -0700 (PDT)","MIME-Version":"1.0","References":"<20200909155457.153907-1-jacopo@jmondi.org>\n\t<20200909155457.153907-9-jacopo@jmondi.org>\n\t<20200910113605.GU4095624@oden.dyn.berto.se>","In-Reply-To":"<20200910113605.GU4095624@oden.dyn.berto.se>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Fri, 11 Sep 2020 17:55:55 +0900","Message-ID":"<CAO5uPHMfTj6DfN0ea3zSdYSsGA0ewoK2oBoePB7a9-Tt73p=ag@mail.gmail.com>","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","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>","Cc":"Hanlin Chen <hanlinchen@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12450,"web_url":"https://patchwork.libcamera.org/comment/12450/","msgid":"<20200911090848.rxfw3j7o7npfuyxh@uno.localdomain>","date":"2020-09-11T09:08:48","subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Hiro,\n\nOn Fri, Sep 11, 2020 at 05:55:55PM +0900, Hirokazu Honda wrote:\n> On Thu, Sep 10, 2020 at 8:36 PM Niklas Söderlund\n> <niklas.soderlund@ragnatech.se> wrote:\n> >\n> > Hi Jacopo,\n> >\n> > Thanks for your patch.\n> >\n> > On 2020-09-09 17:54:57 +0200, Jacopo Mondi wrote:\n> > > To ease following how Android stream gets mapped onto libcamera ones\n> > > add a (quite verbose) printout before queueing a request to libcamera.\n> > >\n> > > The output looks like:\n> > >  0 -  (320x240)[0x00000022] -> (320x240)[NV12] (external)\n> > >  1 -  (640x480)[0x00000021] -> (640x480)[NV12] (internal)\n> > >\n> > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> >\n> > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> >\n> > > ---\n> > >  src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n> > >  1 file changed, 20 insertions(+), 3 deletions(-)\n> > >\n> > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > > index f94b313581e7..811f0a66cf2f 100644\n> > > --- a/src/android/camera_device.cpp\n> > > +++ b/src/android/camera_device.cpp\n> > > @@ -1419,9 +1419,12 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > >       Request *request =\n> > >               camera_->createRequest(reinterpret_cast<uint64_t>(descriptor));\n> > >\n> > > +     LOG(HAL, Debug) << \"Queueing Request to libcamera with \"\n> > > +                     << descriptor->numBuffers << \" streams\";\n> > >       for (unsigned int i = 0; i < descriptor->numBuffers; ++i) {\n> > > +             camera3_stream *camera3Stream = camera3Buffers[i].stream;\n> > >               CameraStream *cameraStream =\n> > > -                     static_cast<CameraStream *>(camera3Buffers[i].stream->priv);\n> > > +                     static_cast<CameraStream *>(camera3Stream->priv);\n> > >               const StreamConfiguration &config = config_->at(cameraStream->index());\n> > >               Stream *stream = config.stream();\n> > >\n> > > @@ -1432,9 +1435,18 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > >               descriptor->buffers[i].stream = camera3Buffers[i].stream;\n> > >               descriptor->buffers[i].buffer = camera3Buffers[i].buffer;\n> > >\n> > > -             /* Mapped streams don't need to be added to the Request. */\n> > > -             if (cameraStream->type() == CameraStream::Type::Mapped)\n> > > +             std::stringstream ss;\n> > > +             ss << i << \" - (\";\n> > > +             ss << camera3Stream->width << \"x\" << camera3Stream->height << \")\"\n> > > +                << \"[\" << utils::hex(camera3Stream->format) << \"] -> \"\n> > > +                << \"(\" << config.size.toString() << \")[\"\n> > > +                << config.pixelFormat.toString() << \"]\";\n> > > +\n>\n> nit: ss is used only in debug mode. Can we execute this process in\n> debug mode only as well?\n\nDo you mean assembling the debug string only if a certain debug level\nis enabled ? I'm afraid that's not possible, libcamera debug and\nlogging system implementes a run-time selectable log filtering system,\nwe don't have anything that allows us to enable/disable debug at compile\ntime afaict.\n\n>\n> Reviewed-by: Hirokazu Honda <hiroh@chromium.org>\n> > > +             /* Mapped streams don't need buffers added to the Request. */\n> > > +             if (cameraStream->type() == CameraStream::Type::Mapped) {\n> > > +                     LOG(HAL, Debug) << ss.str() << \" (mapped)\";\n> > >                       continue;\n> > > +             }\n> > >\n> > >               FrameBuffer *buffer;\n> > >               if (cameraStream->type() == CameraStream::Type::Direct) {\n> > > @@ -1446,6 +1458,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > >                        */\n> > >                       buffer = createFrameBuffer(*camera3Buffers[i].buffer);\n> > >                       descriptor->frameBuffers.emplace_back(buffer);\n> > > +                     ss << \" (external)\";\n> > >\n> > >               } else {\n> > >                       /*\n> > > @@ -1458,7 +1471,11 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > >                        * allocator once it has been processed.\n> > >                        */\n> > >                       buffer = allocator_.getBuffer(stream);\n> > > +                     ss << \" (internal)\";\n> > >               }\n> > > +\n> > > +             LOG(HAL, Debug) << ss.str();\n> > > +\n> > >               if (!buffer) {\n> > >                       LOG(HAL, Error) << \"Failed to create buffer\";\n> > >                       delete request;\n> > > --\n> > > 2.28.0\n> > >\n> > > _______________________________________________\n> > > libcamera-devel mailing list\n> > > libcamera-devel@lists.libcamera.org\n> > > https://lists.libcamera.org/listinfo/libcamera-devel\n> >\n> > --\n> > Regards,\n> > Niklas Söderlund\n> > _______________________________________________\n> > libcamera-devel mailing list\n> > libcamera-devel@lists.libcamera.org\n> > https://lists.libcamera.org/listinfo/libcamera-devel","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 74920C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Sep 2020 09:05:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 19CE462D38;\n\tFri, 11 Sep 2020 11:05:01 +0200 (CEST)","from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net\n\t[217.70.183.201])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9132362901\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 11:04:59 +0200 (CEST)","from uno.localdomain (93-34-118-233.ip49.fastwebnet.it\n\t[93.34.118.233]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 8A7341BF209;\n\tFri, 11 Sep 2020 09:04:58 +0000 (UTC)"],"X-Originating-IP":"93.34.118.233","Date":"Fri, 11 Sep 2020 11:08:48 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Hirokazu Honda <hiroh@chromium.org>","Message-ID":"<20200911090848.rxfw3j7o7npfuyxh@uno.localdomain>","References":"<20200909155457.153907-1-jacopo@jmondi.org>\n\t<20200909155457.153907-9-jacopo@jmondi.org>\n\t<20200910113605.GU4095624@oden.dyn.berto.se>\n\t<CAO5uPHMfTj6DfN0ea3zSdYSsGA0ewoK2oBoePB7a9-Tt73p=ag@mail.gmail.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<CAO5uPHMfTj6DfN0ea3zSdYSsGA0ewoK2oBoePB7a9-Tt73p=ag@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","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>","Cc":"Hanlin Chen <hanlinchen@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12451,"web_url":"https://patchwork.libcamera.org/comment/12451/","msgid":"<CAO5uPHOeciGiUg4ueYiR33M8qHAJBT697urujz3yhHe13wRaCA@mail.gmail.com>","date":"2020-09-11T10:17:39","subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Jacopo.\n\nOn Fri, Sep 11, 2020 at 6:04 PM Jacopo Mondi <jacopo@jmondi.org> wrote:\n>\n> Hi Hiro,\n>\n> On Fri, Sep 11, 2020 at 05:55:55PM +0900, Hirokazu Honda wrote:\n> > On Thu, Sep 10, 2020 at 8:36 PM Niklas Söderlund\n> > <niklas.soderlund@ragnatech.se> wrote:\n> > >\n> > > Hi Jacopo,\n> > >\n> > > Thanks for your patch.\n> > >\n> > > On 2020-09-09 17:54:57 +0200, Jacopo Mondi wrote:\n> > > > To ease following how Android stream gets mapped onto libcamera ones\n> > > > add a (quite verbose) printout before queueing a request to libcamera.\n> > > >\n> > > > The output looks like:\n> > > >  0 -  (320x240)[0x00000022] -> (320x240)[NV12] (external)\n> > > >  1 -  (640x480)[0x00000021] -> (640x480)[NV12] (internal)\n> > > >\n> > > > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > >\n> > > Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> > >\n> > > > ---\n> > > >  src/android/camera_device.cpp | 23 ++++++++++++++++++++---\n> > > >  1 file changed, 20 insertions(+), 3 deletions(-)\n> > > >\n> > > > diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> > > > index f94b313581e7..811f0a66cf2f 100644\n> > > > --- a/src/android/camera_device.cpp\n> > > > +++ b/src/android/camera_device.cpp\n> > > > @@ -1419,9 +1419,12 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > > >       Request *request =\n> > > >               camera_->createRequest(reinterpret_cast<uint64_t>(descriptor));\n> > > >\n> > > > +     LOG(HAL, Debug) << \"Queueing Request to libcamera with \"\n> > > > +                     << descriptor->numBuffers << \" streams\";\n> > > >       for (unsigned int i = 0; i < descriptor->numBuffers; ++i) {\n> > > > +             camera3_stream *camera3Stream = camera3Buffers[i].stream;\n> > > >               CameraStream *cameraStream =\n> > > > -                     static_cast<CameraStream *>(camera3Buffers[i].stream->priv);\n> > > > +                     static_cast<CameraStream *>(camera3Stream->priv);\n> > > >               const StreamConfiguration &config = config_->at(cameraStream->index());\n> > > >               Stream *stream = config.stream();\n> > > >\n> > > > @@ -1432,9 +1435,18 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > > >               descriptor->buffers[i].stream = camera3Buffers[i].stream;\n> > > >               descriptor->buffers[i].buffer = camera3Buffers[i].buffer;\n> > > >\n> > > > -             /* Mapped streams don't need to be added to the Request. */\n> > > > -             if (cameraStream->type() == CameraStream::Type::Mapped)\n> > > > +             std::stringstream ss;\n> > > > +             ss << i << \" - (\";\n> > > > +             ss << camera3Stream->width << \"x\" << camera3Stream->height << \")\"\n> > > > +                << \"[\" << utils::hex(camera3Stream->format) << \"] -> \"\n> > > > +                << \"(\" << config.size.toString() << \")[\"\n> > > > +                << config.pixelFormat.toString() << \"]\";\n> > > > +\n> >\n> > nit: ss is used only in debug mode. Can we execute this process in\n> > debug mode only as well?\n>\n> Do you mean assembling the debug string only if a certain debug level\n> is enabled ? I'm afraid that's not possible, libcamera debug and\n> logging system implementes a run-time selectable log filtering system,\n> we don't have anything that allows us to enable/disable debug at compile\n> time afaict.\n>\n\nThanks for info. Got it.\n> >\n> > Reviewed-by: Hirokazu Honda <hiroh@chromium.org>\n> > > > +             /* Mapped streams don't need buffers added to the Request. */\n> > > > +             if (cameraStream->type() == CameraStream::Type::Mapped) {\n> > > > +                     LOG(HAL, Debug) << ss.str() << \" (mapped)\";\n> > > >                       continue;\n> > > > +             }\n> > > >\n> > > >               FrameBuffer *buffer;\n> > > >               if (cameraStream->type() == CameraStream::Type::Direct) {\n> > > > @@ -1446,6 +1458,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > > >                        */\n> > > >                       buffer = createFrameBuffer(*camera3Buffers[i].buffer);\n> > > >                       descriptor->frameBuffers.emplace_back(buffer);\n> > > > +                     ss << \" (external)\";\n> > > >\n> > > >               } else {\n> > > >                       /*\n> > > > @@ -1458,7 +1471,11 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n> > > >                        * allocator once it has been processed.\n> > > >                        */\n> > > >                       buffer = allocator_.getBuffer(stream);\n> > > > +                     ss << \" (internal)\";\n> > > >               }\n> > > > +\n> > > > +             LOG(HAL, Debug) << ss.str();\n> > > > +\n> > > >               if (!buffer) {\n> > > >                       LOG(HAL, Error) << \"Failed to create buffer\";\n> > > >                       delete request;\n> > > > --\n> > > > 2.28.0\n> > > >\n> > > > _______________________________________________\n> > > > libcamera-devel mailing list\n> > > > libcamera-devel@lists.libcamera.org\n> > > > https://lists.libcamera.org/listinfo/libcamera-devel\n> > >\n> > > --\n> > > Regards,\n> > > Niklas Söderlund\n> > > _______________________________________________\n> > > libcamera-devel mailing list\n> > > libcamera-devel@lists.libcamera.org\n> > > https://lists.libcamera.org/listinfo/libcamera-devel","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 50011BDB1D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 11 Sep 2020 10:17:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CC091603EE;\n\tFri, 11 Sep 2020 12:17:51 +0200 (CEST)","from mail-ed1-x542.google.com (mail-ed1-x542.google.com\n\t[IPv6:2a00:1450:4864:20::542])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8C1CB603ED\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 12:17:50 +0200 (CEST)","by mail-ed1-x542.google.com with SMTP id i1so9401743edv.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 11 Sep 2020 03:17:50 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"jSGSx3EO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=tIalU1StIEygRWo31vz4QkJHeIaMCAEYdg3ScBmN3x0=;\n\tb=jSGSx3EOJ2KwiPZb/px0OiUBBmakRwFYb/viGwrEcZtqeEOdfGikbzDzuyz6Q8X7DE\n\tfV9SaY5eIU2XyVYdMVUGvg1emdXFiIrOgxbABM3MsbaztQsicvoHnDprz6sJvKiVzlwW\n\tbVmMV2ATSYV29DIlAwVUHLSX5YFwzNDEwvW/8=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=tIalU1StIEygRWo31vz4QkJHeIaMCAEYdg3ScBmN3x0=;\n\tb=aVjXyfNYNTHVyvbkW5Fr50azSfBirg16IyK/A5BUtSoxL3h+BpR1eUxhWDrOhepUKD\n\tR74D8flTjsr6xNFcLOFFyMfex11CDLhbnbZptyKPNy+0qqiIdToqYXXhkEO4aNL0/hed\n\tXUpiBrlkitCtufE+lnwxJWkxHUcWvoeJYpkNbHlJVN3f2Yq6aUTBJhBGqZ+DChO5TQxI\n\tfYxQVR0GmJ6pdJNsp9YoBpSJNncuzD9ERmfNjq4mZ/GoQMnIh8q1WuX9+C+67uqmuEZH\n\tXVgsMD+uptiEW80/kDRkURnDL2/3p30HVQe4MVOSoZHERuTrcqk6231ynWhs/jUuE1c/\n\t/IPw==","X-Gm-Message-State":"AOAM532vQM9Lh9avzcBnorm0j8n3TP8P5c1pCynpbLaq1Q/hfENqdTgI\n\taqyNyIyjYEWPdsdcbYCwXDrg7VjmmfhScY56sR+vxKSt4F0=","X-Google-Smtp-Source":"ABdhPJwbod75D/7IPIysDGjvgmvN+Iw4JlvS7+UlFHIGZMpXaxAWCU7gMQxdZ7zEDLoP2l2WJt7p8ydT08nW6MvaEgQ=","X-Received":"by 2002:a05:6402:70f:: with SMTP id\n\tw15mr1233880edx.202.1599819470144; \n\tFri, 11 Sep 2020 03:17:50 -0700 (PDT)","MIME-Version":"1.0","References":"<20200909155457.153907-1-jacopo@jmondi.org>\n\t<20200909155457.153907-9-jacopo@jmondi.org>\n\t<20200910113605.GU4095624@oden.dyn.berto.se>\n\t<CAO5uPHMfTj6DfN0ea3zSdYSsGA0ewoK2oBoePB7a9-Tt73p=ag@mail.gmail.com>\n\t<20200911090848.rxfw3j7o7npfuyxh@uno.localdomain>","In-Reply-To":"<20200911090848.rxfw3j7o7npfuyxh@uno.localdomain>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Fri, 11 Sep 2020 19:17:39 +0900","Message-ID":"<CAO5uPHOeciGiUg4ueYiR33M8qHAJBT697urujz3yhHe13wRaCA@mail.gmail.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Subject":"Re: [libcamera-devel] [PATCH 8/8] android: camera_device: Add\n\tstream mapping log","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>","Cc":"Hanlin Chen <hanlinchen@chromium.org>,\n\tlibcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]