[{"id":12621,"web_url":"https://patchwork.libcamera.org/comment/12621/","msgid":"<CAHW6GYK8eS2YQ7O3BgpVih2+ET3Jjp06_ZtFXjX_bg1essK92Q@mail.gmail.com>","date":"2020-09-21T11:08:24","subject":"Re: [libcamera-devel] [RFC 0/4] prototype python bindings","submitter":{"id":42,"url":"https://patchwork.libcamera.org/api/people/42/","name":"David Plowman","email":"david.plowman@raspberrypi.com"},"content":"Hi Tomi\n\nThank you for sharing this, I think it is very interesting work.\n\nI was wondering, is there a discussion anywhere of what this Python API\nwill look like for end users and how it would be used? You may know that\nRaspberry Pi has something called PiCamera which is a set of Python\nbindings for our existing (non-libcamera) camera stack. However, I think\nit's probably at a rather higher level that what is being envisaged for\nlibcamera and therefore cannot be compared directly. But I'm definitely\ninterested to understand more about it, and how (for example) we might\nbuild on top of it to provide something closer to what our users have been\naccustomed to.\n\nThanks again!\nDavid\n\nOn Fri, 18 Sep 2020 at 16:21, Tomi Valkeinen <tomi.valkeinen@iki.fi> wrote:\n\n> Hi,\n>\n> Laurent asked me to send these to get discussions about the challenges\n> on the list (rather than in private chats...).\n>\n> This is a prototype, RFC, hack, whatever you want to call it, but it\n> works for me for the small subset of features used in test.py.\n>\n> The main patch \"libcamera python bindings\" has some questions/issues\n> listed in the description, and I've added comments to the code where I'm\n> not sure where to go.\n>\n> There were no submodules in libcamera, so I used the same convention\n> I've used in kms++: ext/<submodule>. pybind11 could be added as\n> something that comes from the system (at least Ubuntu 20.04 has it), but\n> as it's header only, I think having it as a submodule is the easiest and\n> most manageable way to add it.\n>\n>  Tomi\n>\n> Tomi Valkeinen (4):\n>   Add pybind11 submodule\n>   Add BoundMethodFunction\n>   hack: Camera public destructor\n>   libcamera python bindings\n>\n>  .gitmodules                      |   3 +\n>  ext/pybind11                     |   1 +\n>  include/libcamera/bound_method.h |  25 +++++\n>  include/libcamera/camera.h       |   2 +-\n>  include/libcamera/signal.h       |   6 ++\n>  meson.build                      |   1 +\n>  meson_options.txt                |   2 +\n>  py/meson.build                   |   1 +\n>  py/pycamera/__init__.py          |  29 +++++\n>  py/pycamera/meson.build          |  35 ++++++\n>  py/pycamera/pymain.cpp           | 169 +++++++++++++++++++++++++++++\n>  py/test/run-valgrind.sh          |   3 +\n>  py/test/run.sh                   |   3 +\n>  py/test/test.py                  | 177 +++++++++++++++++++++++++++++++\n>  py/test/valgrind-pycamera.supp   |  17 +++\n>  15 files changed, 473 insertions(+), 1 deletion(-)\n>  create mode 100644 .gitmodules\n>  create mode 160000 ext/pybind11\n>  create mode 100644 py/meson.build\n>  create mode 100644 py/pycamera/__init__.py\n>  create mode 100644 py/pycamera/meson.build\n>  create mode 100644 py/pycamera/pymain.cpp\n>  create mode 100755 py/test/run-valgrind.sh\n>  create mode 100755 py/test/run.sh\n>  create mode 100755 py/test/test.py\n>  create mode 100644 py/test/valgrind-pycamera.supp\n>\n> --\n> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.\n> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel\n>","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 E6F5AC3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Sep 2020 11:08:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 71AEC62FC8;\n\tMon, 21 Sep 2020 13:08:39 +0200 (CEST)","from mail-oo1-xc36.google.com (mail-oo1-xc36.google.com\n\t[IPv6:2607:f8b0:4864:20::c36])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DF47D60576\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Sep 2020 13:08:37 +0200 (CEST)","by mail-oo1-xc36.google.com with SMTP id 4so3131346ooh.11\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Sep 2020 04:08:37 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"rY+xKQxH\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=gVoLnDrRSDZYQZIHL8T7j+WdrcdGbdwlrt7uy4GlCpo=;\n\tb=rY+xKQxHpIXO2aZCVKJ5pz57qs4IdFYm3RDlZECknHv0lUlhI9PYM7p/PYZxXufCQA\n\tWvcWtEtRaCZMByJkLFTkMAEQJ68dKyw9fjukg5WNN05U2gp/yRtHTQk/ZzLmdyNQ0AhN\n\tAFRq4iRGlH002QnFLwo1z0o50XaUUthw9RnZ24eC4BJbpWdIbEOO2XZIn8zcd8E5rDL5\n\tJGDDR8SQGG6taXcKVHnVuu7W+jgt0gFvxICxF/8QBuK6w1ep6YTj1CfNtEICWKa1SU2X\n\tdwETMexxF/3OxSQYv/Dxa7Spkd3V7aYFXVicrBMYrpcTqyKI7axNTlCsR54TX/KS20vz\n\t7zTw==","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;\n\tbh=gVoLnDrRSDZYQZIHL8T7j+WdrcdGbdwlrt7uy4GlCpo=;\n\tb=Ic+maR86iy77OiTtoGD3RDHw6LBUeMy8YMyQQ8PNiL02xvsHKk+OdPX7kArITX9Aof\n\tEb9SW20x6fnFktRLho2ykJjYjEmbB3wKlk+YcMtrDxT6+nxBnG1onrKg9WRssjeeAEHZ\n\t9u6FnzAAMISCs3QcKHUpB8ddAjJWx/edf0FWAp2+R4lioP+gfImmifFd+xNwUMmIKXtY\n\tbag5DSDY2JzVfanuK6AZmgTvR8J5hOjyZZEAs7+6YgErFcOWPjzQ8ZTvC2K7VPx1VYum\n\ts0lf6dx6qLulJNFoXnLTKavkxiBUEHdVhXoES3v5QVeYy0sR63GCmu4othdEIN0UGQDY\n\tDKAg==","X-Gm-Message-State":"AOAM531OhKsY1Lbx7Mu/wk2sLIhqNvzWF2GgiaEExBEEccvl9B2cAoGj\n\tVKX4rNLY8f6tVcPPBRXLxoSGjKTaXEic1oCEG3hgKw==","X-Google-Smtp-Source":"ABdhPJxzAKNgJ26RRfvaVNc4HT1+ROmm6gZoee6SGRd9HkmFmXx2OHBgup0bro0PaP7dLn/A7XAVG/9olVGUERluX6A=","X-Received":"by 2002:a4a:e592:: with SMTP id\n\to18mr26367481oov.28.1600686516299; \n\tMon, 21 Sep 2020 04:08:36 -0700 (PDT)","MIME-Version":"1.0","References":"<20200918152019.784315-1-tomi.valkeinen@iki.fi>","In-Reply-To":"<20200918152019.784315-1-tomi.valkeinen@iki.fi>","From":"David Plowman <david.plowman@raspberrypi.com>","Date":"Mon, 21 Sep 2020 12:08:24 +0100","Message-ID":"<CAHW6GYK8eS2YQ7O3BgpVih2+ET3Jjp06_ZtFXjX_bg1essK92Q@mail.gmail.com>","To":"Tomi Valkeinen <tomi.valkeinen@iki.fi>","Subject":"Re: [libcamera-devel] [RFC 0/4] prototype python bindings","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":"libcamera-devel@lists.libcamera.org","Content-Type":"multipart/mixed;\n\tboundary=\"===============5940598281702723709==\"","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":12623,"web_url":"https://patchwork.libcamera.org/comment/12623/","msgid":"<db3b2a7a-d10a-3d18-9b84-56d35c051785@iki.fi>","date":"2020-09-21T11:37:38","subject":"Re: [libcamera-devel] [RFC 0/4] prototype python bindings","submitter":{"id":70,"url":"https://patchwork.libcamera.org/api/people/70/","name":"Tomi Valkeinen","email":"tomi.valkeinen@iki.fi"},"content":"Hi David,\n\nOn 21/09/2020 14:08, David Plowman wrote:\n> Hi Tomi\n> \n> Thank you for sharing this, I think it is very interesting work.\n> \n> I was wondering, is there a discussion anywhere of what this Python API will look like for end users\n> and how it would be used? You may know that Raspberry Pi has something called PiCamera which is a\n> set of Python bindings for our existing (non-libcamera) camera stack. However, I think it's probably\n> at a rather higher level that what is being envisaged for libcamera and therefore cannot be compared\n> directly. But I'm definitely interested to understand more about it, and how (for example) we might\n> build on top of it to provide something closer to what our users have been accustomed to.\n\nNo discussions.\n\nI don't really have a use case target for this work. I don't even have any hardware that works with\nlibcamera, so I have just used vivid and vimc.\n\nI wanted to do something with libcamera, and as I've implemented python bindings with pybind11 to\nkms++ and rwmem, I thought adding basic python bindings would be an interesting project.\n\nI had a super-quick look at PiCamera some time back (I was wondering if it would give me a hint\nabout the libcamera python API), but as you say, it seemed to be on a much higher level and I didn't\nlook further.\n\nI agree that a higher level API would be very useful too, and I think that can be implemented with\npure python. Possibly that API might need to be (at least partly) libcamera pipeline specific,\nalthough I'm just guessing here.\n\nOr maybe PiCamera could use libcamera's python API as a backend? I have no clue how it is\narchitected, so may not be sensible.\n\n Tomi","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 2663DBF01C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 21 Sep 2020 11:37:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AFEC662FAD;\n\tMon, 21 Sep 2020 13:37:41 +0200 (CEST)","from mail-lj1-x229.google.com (mail-lj1-x229.google.com\n\t[IPv6:2a00:1450:4864:20::229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6AB5D60576\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Sep 2020 13:37:40 +0200 (CEST)","by mail-lj1-x229.google.com with SMTP id k25so10755302ljg.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 21 Sep 2020 04:37:40 -0700 (PDT)","from [192.168.1.111] (91-152-83-50.elisa-laajakaista.fi.\n\t[91.152.83.50]) by smtp.gmail.com with ESMTPSA id\n\tb72sm2454575lfd.299.2020.09.21.04.37.38\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tMon, 21 Sep 2020 04:37:38 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"D7RE652e\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=sender:subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=F2jDXDaSkh1Ir6uQyhOLAroupPuxwFewdO1BSzrc4FI=;\n\tb=D7RE652exx1ChzPuyO0FpU4/r9hgo4yCYHeRmYWytJDxmtBQ4xgF0g/4Vl3BovrRvI\n\t654FctRvvHhpKo8XkT1B5yDy/G8coQ2pShK/CRKs/ED2Ll08nkCpRiWrsec19U5jIhbJ\n\t4+8dLnioyNCxfYrMjya1RMOnnTthlVERO9cWX3uQIioKHQyxpT5qH7FhxVo3O0JAKdO7\n\t6EM8adbFr1gLV6xocXyRtX84wpeEQFnVrDeeT/DTOUv/lUE6uFqRp4PVeq0CEr93OxTE\n\twnPkKLeAFcnfK5AJoeQi+ilc6uQilpWgv2hPeF6wOt78lFweZbcHwX2E2VAl4vEvCwIn\n\timPg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:sender:subject:to:cc:references:from:message-id\n\t:date:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=F2jDXDaSkh1Ir6uQyhOLAroupPuxwFewdO1BSzrc4FI=;\n\tb=JiHCRu6mBqo/spDEFSQjO061prEgfNIDB+kpVXxbjT5RDnlBP5B+1+bx7AtA9kN4Qw\n\tFAIwrhMm0VwNhGoJ0ZUlZHAiG2yyo/E6SJx8vogqkj+aL607Sq6b07pEwcNHylVGLOA5\n\t2XMaNA9WIJDaZ0ZQStlLPISI1Et6HjH4DpiinqQcuxv+mqBji/x5gHcrI8hLida71glc\n\tN1WmXxdsFG5I8tCR7EL1eaxw7NqKfIjFdwgrxcNEiZL3wGsswceXY6b5A4FeltLOZyC8\n\t6w5OWeI7brQ9mjrhn77JUqMBzBfJw9FP+mT0XGF4dj4hu+2ra7A5ezLmoy8erUGHPO9M\n\tzyiw==","X-Gm-Message-State":"AOAM530ehKZV/2Gd0DjNffDZq9No+xZODd/EDvuSm1x7YAbPG7B+dH7f\n\tQ30lczO1kPGvE6aWibY23J0xw3YYbYZU9g==","X-Google-Smtp-Source":"ABdhPJyS+vjSLBc7G7E7hBwcVWr0Unhwx2SLgB9PK8+Yx2F9CvkbNYM/dHgCCZOeWOQgLNv0MumPrA==","X-Received":"by 2002:a2e:b4a5:: with SMTP id\n\tq5mr17382592ljm.200.1600688259435; \n\tMon, 21 Sep 2020 04:37:39 -0700 (PDT)","To":"David Plowman <david.plowman@raspberrypi.com>","References":"<20200918152019.784315-1-tomi.valkeinen@iki.fi>\n\t<CAHW6GYK8eS2YQ7O3BgpVih2+ET3Jjp06_ZtFXjX_bg1essK92Q@mail.gmail.com>","From":"Tomi Valkeinen <tomi.valkeinen@iki.fi>","Message-ID":"<db3b2a7a-d10a-3d18-9b84-56d35c051785@iki.fi>","Date":"Mon, 21 Sep 2020 14:37:38 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<CAHW6GYK8eS2YQ7O3BgpVih2+ET3Jjp06_ZtFXjX_bg1essK92Q@mail.gmail.com>","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [RFC 0/4] prototype python bindings","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":"libcamera-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":12936,"web_url":"https://patchwork.libcamera.org/comment/12936/","msgid":"<fb85b398-daf4-ea41-db93-f2fbcb07649b@iki.fi>","date":"2020-10-02T11:34:32","subject":"Re: [libcamera-devel] [RFC 0/4] prototype python bindings","submitter":{"id":70,"url":"https://patchwork.libcamera.org/api/people/70/","name":"Tomi Valkeinen","email":"tomi.valkeinen@iki.fi"},"content":"Hi,\n\nI have continued this work, and my latest branch is available at:\n\nhttps://github.com/tomba/libcamera py\n\nDon't look at the history, it's full of \"some work\" commit messages, as I'm still experimenting with\ndifferent approaches.\n\nSome of the changes since the first version:\n\n- move under src/\n- add pybind11 via meson subproject\n- the binding covers much more of the libcamera API\n- simplecamera.py, an attempt to expose a single-stream simple-to-use camera class\n- qtest.sh, show the captured images with Qt, and show camera controls as sliders, using simplecamera.py\n\nMainly tested with vimc, and a bit with vivid and my laptop's camera.\n\n Tomi\n\nOn 18/09/2020 18:20, Tomi Valkeinen wrote:\n> Hi,\n> \n> Laurent asked me to send these to get discussions about the challenges\n> on the list (rather than in private chats...).\n> \n> This is a prototype, RFC, hack, whatever you want to call it, but it\n> works for me for the small subset of features used in test.py.\n> \n> The main patch \"libcamera python bindings\" has some questions/issues\n> listed in the description, and I've added comments to the code where I'm\n> not sure where to go.\n> \n> There were no submodules in libcamera, so I used the same convention\n> I've used in kms++: ext/<submodule>. pybind11 could be added as\n> something that comes from the system (at least Ubuntu 20.04 has it), but\n> as it's header only, I think having it as a submodule is the easiest and\n> most manageable way to add it.\n> \n>  Tomi\n> \n> Tomi Valkeinen (4):\n>   Add pybind11 submodule\n>   Add BoundMethodFunction\n>   hack: Camera public destructor\n>   libcamera python bindings\n> \n>  .gitmodules                      |   3 +\n>  ext/pybind11                     |   1 +\n>  include/libcamera/bound_method.h |  25 +++++\n>  include/libcamera/camera.h       |   2 +-\n>  include/libcamera/signal.h       |   6 ++\n>  meson.build                      |   1 +\n>  meson_options.txt                |   2 +\n>  py/meson.build                   |   1 +\n>  py/pycamera/__init__.py          |  29 +++++\n>  py/pycamera/meson.build          |  35 ++++++\n>  py/pycamera/pymain.cpp           | 169 +++++++++++++++++++++++++++++\n>  py/test/run-valgrind.sh          |   3 +\n>  py/test/run.sh                   |   3 +\n>  py/test/test.py                  | 177 +++++++++++++++++++++++++++++++\n>  py/test/valgrind-pycamera.supp   |  17 +++\n>  15 files changed, 473 insertions(+), 1 deletion(-)\n>  create mode 100644 .gitmodules\n>  create mode 160000 ext/pybind11\n>  create mode 100644 py/meson.build\n>  create mode 100644 py/pycamera/__init__.py\n>  create mode 100644 py/pycamera/meson.build\n>  create mode 100644 py/pycamera/pymain.cpp\n>  create mode 100755 py/test/run-valgrind.sh\n>  create mode 100755 py/test/run.sh\n>  create mode 100755 py/test/test.py\n>  create mode 100644 py/test/valgrind-pycamera.supp\n>","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 459D1C3B5B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  2 Oct 2020 11:34:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C8CE0623B6;\n\tFri,  2 Oct 2020 13:34:34 +0200 (CEST)","from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com\n\t[IPv6:2a00:1450:4864:20::12d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C2F846035D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  2 Oct 2020 13:34:33 +0200 (CEST)","by mail-lf1-x12d.google.com with SMTP id w11so1454473lfn.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 02 Oct 2020 04:34:33 -0700 (PDT)","from [192.168.1.111] (91-152-83-50.elisa-laajakaista.fi.\n\t[91.152.83.50]) by smtp.gmail.com with ESMTPSA id\n\t21sm244974lfg.263.2020.10.02.04.34.32\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tFri, 02 Oct 2020 04:34:32 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"GqvS4l2w\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=sender:subject:to:references:cc:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=zNedj8NmzLqWtNF1u/HcAQL0pAuLqDTje9oeAHBpYZ8=;\n\tb=GqvS4l2w8BqPfy28YPAjQdrZoU6N6+O01jmlIC3SwAOhjJS/D5zrfy0ObKlq8IGCh+\n\thk/gbF9l+TllwKOvzk63UAozWRoQ8NcnoDfLnyei/G8Cp4ehIVnnSPdLnl8jyyHoARKo\n\tExhCVxJnAnDnITwbB0+HPF8ryeKKF86JDryH1MPS5YS7wTNGl+8JxvOPHB28rWubPY0z\n\tE4gEkFWe9XIO++0vKzqHbSAU7KN7RujbgRq1CMfyJc8E/noDKPM2gnTv1fhE/akybAoO\n\t9Jw+srjmipKFwEezmcWFUnmLeccagACRxE4CAizupuWAaSXqZ3gf0Gizt7PUhb9DDiph\n\t8Rew==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:sender:subject:to:references:cc:from:message-id\n\t:date:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=zNedj8NmzLqWtNF1u/HcAQL0pAuLqDTje9oeAHBpYZ8=;\n\tb=G58xehwDaO8jN2I579lN3CK+VO05A3Ldw0JYtn7ctj3jpRmolqP+gFVlLtKbeEcDee\n\t6vH3t0Nom00SOFwqmsmti3osEMJrSx7S94VUkYaQV9msB9JXfjr77pZvJ67bXgn5o/Fh\n\tLq4cXp1OZ620tMNgsK/Bp7S/DjWi3+1J+OQedDOcg6uJqqHt3oYYtxTSbazdd4j3k2ky\n\tArg8nSC31o1KlXWvlXYjB6Ae+QqKeZkF1MOepbLvtFgqjIRqGxk9wPHiX+MqgPrC0pUQ\n\tckpdXcGU47Eo/Z9ErW7v5zl9gR/3JZCT0uBbv4YA4Xkbtaiu0p1jLJmbW0wtXOVJwu9q\n\trXIA==","X-Gm-Message-State":"AOAM53079KYcUCHXnC/aRjQ/DaZ/QtrCfIhxqge3WizflUMBCE9zuxGq\n\ttdJ1hY6+u8hn5qSD7Jg/DdIRhHXpKd/5eQ==","X-Google-Smtp-Source":"ABdhPJxNGCGB4N6Im5AVRMkZd/dhgggRIG+hayuRA/YxU8L5dWeA/dLjrE/K67510GN/2SpY4CKT9w==","X-Received":"by 2002:ac2:4d8e:: with SMTP id g14mr788164lfe.386.1601638473145;\n\tFri, 02 Oct 2020 04:34:33 -0700 (PDT)","To":"libcamera-devel@lists.libcamera.org","References":"<20200918152019.784315-1-tomi.valkeinen@iki.fi>","From":"Tomi Valkeinen <tomi.valkeinen@iki.fi>","Message-ID":"<fb85b398-daf4-ea41-db93-f2fbcb07649b@iki.fi>","Date":"Fri, 2 Oct 2020 14:34:32 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20200918152019.784315-1-tomi.valkeinen@iki.fi>","Content-Language":"en-US","Subject":"Re: [libcamera-devel] [RFC 0/4] prototype python bindings","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>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]