{"id":3423,"url":"https://patchwork.libcamera.org/api/patches/3423/?format=json","web_url":"https://patchwork.libcamera.org/patch/3423/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20200411001911.1143155-3-niklas.soderlund@ragnatech.se>","date":"2020-04-11T00:19:06","name":"[libcamera-devel,v3,2/7] libcamera: pipeline: rkisp1: Queue parameters even if they are not ready","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"56f7d5dc4fd25421c40bb3b4cec645abe17c15ae","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/?format=json","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/3423/mbox/","series":[{"id":802,"url":"https://patchwork.libcamera.org/api/series/802/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=802","date":"2020-04-11T00:19:04","name":"libcamera: ipa_manager: Proxy open-source IPAs to a thread","version":3,"mbox":"https://patchwork.libcamera.org/series/802/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/3423/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/3423/checks/","tags":{},"headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net\n\t[195.74.38.228])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7095762D33\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 11 Apr 2020 02:19:22 +0200 (CEST)","from bismarck.berto.se (p4fca2392.dip0.t-ipconnect.de\n\t[79.202.35.146]) by bin-vsp-out-02.atm.binero.net (Halon) with ESMTPA\n\tid 13664367-7b8a-11ea-aeed-005056917f90;\n\tSat, 11 Apr 2020 02:19:15 +0200 (CEST)"],"X-Halon-ID":"13664367-7b8a-11ea-aeed-005056917f90","Authorized-sender":"niklas@soderlund.pp.se","From":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","To":"libcamera-devel@lists.libcamera.org","Date":"Sat, 11 Apr 2020 02:19:06 +0200","Message-Id":"<20200411001911.1143155-3-niklas.soderlund@ragnatech.se>","X-Mailer":"git-send-email 2.26.0","In-Reply-To":"<20200411001911.1143155-1-niklas.soderlund@ragnatech.se>","References":"<20200411001911.1143155-1-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v3 2/7] libcamera: pipeline: rkisp1: Queue\n\tparameters even if they are not ready","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>","X-List-Received-Date":"Sat, 11 Apr 2020 00:19:22 -0000"},"content":"If the IPA has not filled in the parameters buffer still queue it to\nhardware. Not queuing the buffer results in the pipeline and hardware\ngoing out of sync.\n\nThis is not a permanent fix of the problem and a todo is added to fix it\nproperly. This change does not make the situation worse as the state of\nthe pipeline is just as unknown as if no param buffer is queued as if one\nwith old content in it.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nAcked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n* Changes since v2\n- Update commit message\n- Update todo comment in rkisp1.c\n---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 18 ++++++++++++++----\n 1 file changed, 14 insertions(+), 4 deletions(-)","diff":"diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 2f909cef7c75ba0f..3d37677fb433833a 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -351,13 +351,23 @@ protected:\n \t\tif (!info)\n \t\t\tLOG(RkISP1, Fatal) << \"Frame not known\";\n \n-\t\tif (info->paramFilled)\n-\t\t\tpipe_->param_->queueBuffer(info->paramBuffer);\n-\t\telse\n+\t\t/*\n+\t\t * \\todo: If parameters are not filled a better method to handle\n+\t\t * the situation than queuing a buffer with unknown content\n+\t\t * should be used.\n+\t\t *\n+\t\t * It seems excessive to keep an internal zeroed scratch\n+\t\t * parameters buffer around as this should not happen unless the\n+\t\t * devices is under too much load. Perhaps failing the request\n+\t\t * and returning it to the application with an error code is\n+\t\t * better than queue it to hardware?\n+\t\t */\n+\t\tif (!info->paramFilled)\n \t\t\tLOG(RkISP1, Error)\n \t\t\t\t<< \"Parameters not ready on time for frame \"\n-\t\t\t\t<< frame() << \", ignore parameters.\";\n+\t\t\t\t<< frame();\n \n+\t\tpipe_->param_->queueBuffer(info->paramBuffer);\n \t\tpipe_->stat_->queueBuffer(info->statBuffer);\n \t\tpipe_->video_->queueBuffer(info->videoBuffer);\n \t}\n","prefixes":["libcamera-devel","v3","2/7"]}