[{"id":673,"web_url":"https://patchwork.libcamera.org/comment/673/","msgid":"<eb70530a-269f-2561-92e4-ae1040e40e63@ideasonboard.com>","date":"2019-01-29T09:33:32","subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Niklas,\n\nExcept for a \"we're writing an option parser rather than pulling one in\"\nconcern, I don't see anything too wrong with this series and it's a\nstand-alone tool (which you currently own :D )\n\nSo I'd say,\n\nAcked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n <edit: a couple of minor notes on 6/6>\n\nI think creating an opaque object to manage the camera from the\napplication point of view will give us a lot of benefits to hiding the\ninternal implementation and shared-ptrs.\n\nThen an application can get a single 'unique' ptr - and it's destruction\ncan handle all clean up on the internal calls.\n\nAnyway - Keeping the tool in use and actively developed will help us\ndevelop how the applications will use the library - so I'm all for\ngetting this series in and developing it as we go.\n\n\n\nOn 28/01/2019 00:41, Niklas Söderlund wrote:\n> Hi,\n> \n> This series aims to add a --format option to the cam utility so that it \n> can set the format of a stream of a specified camera. To do this in an \n> efficient manner a new key=value parser is needed to understand the \n> arguments given to the new option, example\n> \n>     cam --camera mycam --format width=800,height=600\n> \n> This series adds such a parser and then moves on to adding the new \n> operation to the cam utility in 6/6. This series depends on [1] for 6/6 \n> which needs the stream API in the camera object to actually set the \n> requested format.\n> \n> 1. [PATCH v3 0/6] libcamera: add basic support for streams and format \n>    configuration\n> \n> Niklas Söderlund (6):\n>   cam: options: move enum OptionArgument\n>   cam: options: create a template class for options\n>   cam: options: return if addOption() succeeds or not\n>   cam: options: remove OptionsParser::options_\n>   cam: options: add a key=value parser\n>   cam: add --format option to configure a stream\n> \n>  src/cam/main.cpp    | 107 ++++++++++++++++++++++----\n>  src/cam/options.cpp | 178 +++++++++++++++++++++++++++++++++++++++-----\n>  src/cam/options.h   |  70 +++++++++++++----\n>  3 files changed, 305 insertions(+), 50 deletions(-)\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 418FF60B2D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 29 Jan 2019 10:33:36 +0100 (CET)","from [192.168.0.21]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BB8A085;\n\tTue, 29 Jan 2019 10:33:35 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548754415;\n\tbh=bfi7sCv5EXl4z7iVChyz8R5U//u9Fg3lUf57LmbJSy4=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=YBneypN958lSoUozu+ZkeCr1mBmsDp9s/j1nT4849cB3bydL6YErMNuMc1oXwJdet\n\t3v8ZHns2GZjlQL6gfFfFTrPl6WHLQOnQgFvc3koMG7+Wu5KDIuNwHaLySn66WcnkLX\n\t4qTTm0koC62OATssDORu4OKLcrLZvWaDoLsDgle4=","Reply-To":"kieran.bingham@ideasonboard.com","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<eb70530a-269f-2561-92e4-ae1040e40e63@ideasonboard.com>","Date":"Tue, 29 Jan 2019 09:33:32 +0000","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.2.1","MIME-Version":"1.0","In-Reply-To":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Tue, 29 Jan 2019 09:33:36 -0000"}},{"id":702,"web_url":"https://patchwork.libcamera.org/comment/702/","msgid":"<17f92b89-c6a8-5c94-b2fc-ba16282f7a91@ideasonboard.com>","date":"2019-01-30T13:46:17","subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Niklas,\n\nWhen I rebase a series with these patches included - it fails to compile\neach patch cleanly using the -x command.\n\n git rebase -i $BASECOMMIT -x \"cd build && ninja\"\n\n\nNow I don't think that's a fault of this series, but a fault of the\nsrc/cam/meson.build file not specifying the options.h header as part of\nthe sources. I think that is causing the main.cpp not to get\nrebuilt/re-linked when there are further changes here to the options\nfile ...\n\nHowever - I'm surprised, as I would have expected meson to do some sort\nof include depend checking or generation.\n\nHave you experienced anything similar here? or am I going crazy.\n\nNow I think about it - the options.cpp changes too - so it should still\nrebuild. Ugh.. so I'm not sure what the underlying fault is yet.\n\n--\nKieran\n\n\nOn 28/01/2019 00:41, Niklas Söderlund wrote:\n> Hi,\n> \n> This series aims to add a --format option to the cam utility so that it \n> can set the format of a stream of a specified camera. To do this in an \n> efficient manner a new key=value parser is needed to understand the \n> arguments given to the new option, example\n> \n>     cam --camera mycam --format width=800,height=600\n> \n> This series adds such a parser and then moves on to adding the new \n> operation to the cam utility in 6/6. This series depends on [1] for 6/6 \n> which needs the stream API in the camera object to actually set the \n> requested format.\n> \n> 1. [PATCH v3 0/6] libcamera: add basic support for streams and format \n>    configuration\n> \n> Niklas Söderlund (6):\n>   cam: options: move enum OptionArgument\n>   cam: options: create a template class for options\n>   cam: options: return if addOption() succeeds or not\n>   cam: options: remove OptionsParser::options_\n>   cam: options: add a key=value parser\n>   cam: add --format option to configure a stream\n> \n>  src/cam/main.cpp    | 107 ++++++++++++++++++++++----\n>  src/cam/options.cpp | 178 +++++++++++++++++++++++++++++++++++++++-----\n>  src/cam/options.h   |  70 +++++++++++++----\n>  3 files changed, 305 insertions(+), 50 deletions(-)\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A9D7B60C78\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 30 Jan 2019 14:46:20 +0100 (CET)","from [192.168.0.21]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0EF0C41;\n\tWed, 30 Jan 2019 14:46:20 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548855980;\n\tbh=ZGscCwvdl2+aZiqNxVQ0CgtOC3NuqrchmnFc0VmXFKc=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=kSlTf2Z2Kt4y3XtiLtUMO5yina40KHsX5U41B/9Q9ADf1U+Xz86b/lZVNeb/aMp1M\n\tU3WSbKaf8TaBVmLJ88yawLztuM6jU28LKCSCWQwGCCMiNcjiehOATmlBAGtFHdedl4\n\txCO8kBeejkm/kKlrF+ITcjQgGG23XtEjdYueRr+A=","Reply-To":"kieran.bingham@ideasonboard.com","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<17f92b89-c6a8-5c94-b2fc-ba16282f7a91@ideasonboard.com>","Date":"Wed, 30 Jan 2019 13:46:17 +0000","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.4.0","MIME-Version":"1.0","In-Reply-To":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Wed, 30 Jan 2019 13:46:20 -0000"}},{"id":704,"web_url":"https://patchwork.libcamera.org/comment/704/","msgid":"<20190130170534.GI19527@bigcity.dyn.berto.se>","date":"2019-01-30T17:05:34","subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Kieran,\n\nOn 2019-01-30 13:46:17 +0000, Kieran Bingham wrote:\n> Hi Niklas,\n> \n> When I rebase a series with these patches included - it fails to compile\n> each patch cleanly using the -x command.\n> \n>  git rebase -i $BASECOMMIT -x \"cd build && ninja\"\n> \n> \n> Now I don't think that's a fault of this series, but a fault of the\n> src/cam/meson.build file not specifying the options.h header as part of\n> the sources. I think that is causing the main.cpp not to get\n> rebuilt/re-linked when there are further changes here to the options\n> file ...\n> \n> However - I'm surprised, as I would have expected meson to do some sort\n> of include depend checking or generation.\n> \n> Have you experienced anything similar here? or am I going crazy.\n\nI have experienced it, and not only with the cam tool but the library as \na whole. As I understand it we don't list any header files as sources.  \nWe just list them to feed them to Doxygen if I understand it correctly.  \n\nI had it on my todo list to figure out why, but have not gotten around \nto do it as other things have been higher on my list and my workaround \nof using ccache and\n\n    git rebase .. --exec \"cd build && ninja clean && ninja\"\n\nallowed me to move forward :-)\n\n> \n> Now I think about it - the options.cpp changes too - so it should still\n> rebuild. Ugh.. so I'm not sure what the underlying fault is yet.\n\nHow do you think we should solve this? Looking around it seems other \npeople are including there header files in the source file list, should \nwe do the same?\n\n> \n> --\n> Kieran\n> \n> \n> On 28/01/2019 00:41, Niklas Söderlund wrote:\n> > Hi,\n> > \n> > This series aims to add a --format option to the cam utility so that it \n> > can set the format of a stream of a specified camera. To do this in an \n> > efficient manner a new key=value parser is needed to understand the \n> > arguments given to the new option, example\n> > \n> >     cam --camera mycam --format width=800,height=600\n> > \n> > This series adds such a parser and then moves on to adding the new \n> > operation to the cam utility in 6/6. This series depends on [1] for 6/6 \n> > which needs the stream API in the camera object to actually set the \n> > requested format.\n> > \n> > 1. [PATCH v3 0/6] libcamera: add basic support for streams and format \n> >    configuration\n> > \n> > Niklas Söderlund (6):\n> >   cam: options: move enum OptionArgument\n> >   cam: options: create a template class for options\n> >   cam: options: return if addOption() succeeds or not\n> >   cam: options: remove OptionsParser::options_\n> >   cam: options: add a key=value parser\n> >   cam: add --format option to configure a stream\n> > \n> >  src/cam/main.cpp    | 107 ++++++++++++++++++++++----\n> >  src/cam/options.cpp | 178 +++++++++++++++++++++++++++++++++++++++-----\n> >  src/cam/options.h   |  70 +++++++++++++----\n> >  3 files changed, 305 insertions(+), 50 deletions(-)\n> > \n> \n> -- \n> Regards\n> --\n> Kieran","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lf1-x143.google.com (mail-lf1-x143.google.com\n\t[IPv6:2a00:1450:4864:20::143])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 94DA260C78\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 30 Jan 2019 18:05:36 +0100 (CET)","by mail-lf1-x143.google.com with SMTP id u18so160718lff.10\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 30 Jan 2019 09:05:36 -0800 (PST)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\td23sm379223lfc.11.2019.01.30.09.05.34\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tWed, 30 Jan 2019 09:05:34 -0800 (PST)"],"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\t:user-agent; bh=XsBiXUBe6Llb43fLGvDxppDBRMmQsQU60Fg/x86G7/A=;\n\tb=bFKcYZb8YcQp2Ftq2FICLjfEFx6YfM4pVB+cZ/EvkYlpCWY6Mv3JFosGqB2AaAFj8G\n\tmI3w4axCka6Rt5vkTpWNcsUqCJFagDBIT92Ol0J3NiOSdCGoG0DjDAKp0nnbwVo0tgD/\n\tMIylQY3/v4IyzKmpQUtUj2s85mqrF+57txxZ+uoOUgxw9c1Vn3sbKGS+swXOZegcS4p7\n\tB1XbJCi3yk47mwSyRSCQhycQqHmtdIQIWcEGA6FiR8wSgh5LMDFS1m2P5YVuiEBLt5g0\n\t3bWZ8nANAyYEqYtHH9da2gYeFYXtoDimTqQzxP63WEacdyL+W7BP8QN2fS/p1Xp/SYYw\n\togIw==","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:user-agent;\n\tbh=XsBiXUBe6Llb43fLGvDxppDBRMmQsQU60Fg/x86G7/A=;\n\tb=sGfiO0HRWweU0qyQrAGkrBrDncTgYjRK6hNucFIO0KwfuXW/RWpR15V9KoNRtBT7zU\n\tXoxKrs01wdU/eXKZC6mjLaZuk0pyASRyPoqWd6+zt2+Y1OG21cU8kxdom3G3Rfax64zv\n\tIURIZtJWJRPr70N4C+eneLgFWufwKhM10sHgQLfNA7p6OqYSd62PkCIDLI41h4AUlTJ9\n\tqd9UD7YtoCYmgF4IPGVBZIbh3/jaQ6FnTA7pVj/jPDxvoF6It5wEgDCWl2+ghSu0SyBN\n\tCZa6dh1/mCtbUeEl0LDP33vN2ZPbu0DURzGIc1tHL18XCJdtYeuE4b5XE/4iGQR/suCY\n\tZ8tA==","X-Gm-Message-State":"AJcUukdEVb4kubaiBGvH8ZB5ScZzSqV+wD1WLYRWv4qpSk2F9W1aSBbK\n\tlNNPnZ0Mi85xBMD0F1UYbDxVbw==","X-Google-Smtp-Source":"ALg8bN4QNXQ01bzH1mmJpNFrfiJjVmFO4f0vWe0ms8lcsuCvttOHAc6fwpAQDNbgFbPm/+v/L3ktGw==","X-Received":"by 2002:a19:5508:: with SMTP id\n\tn8mr23857776lfe.164.1548867935562; \n\tWed, 30 Jan 2019 09:05:35 -0800 (PST)","Date":"Wed, 30 Jan 2019 18:05:34 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190130170534.GI19527@bigcity.dyn.berto.se>","References":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>\n\t<17f92b89-c6a8-5c94-b2fc-ba16282f7a91@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<17f92b89-c6a8-5c94-b2fc-ba16282f7a91@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Wed, 30 Jan 2019 17:05:36 -0000"}},{"id":716,"web_url":"https://patchwork.libcamera.org/comment/716/","msgid":"<20190131095657.GE4197@pendragon.ideasonboard.com>","date":"2019-01-31T09:56:57","subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hello,\n\nOn Wed, Jan 30, 2019 at 06:05:34PM +0100, Niklas Söderlund wrote:\n> On 2019-01-30 13:46:17 +0000, Kieran Bingham wrote:\n> > Hi Niklas,\n> > \n> > When I rebase a series with these patches included - it fails to compile\n> > each patch cleanly using the -x command.\n> > \n> >  git rebase -i $BASECOMMIT -x \"cd build && ninja\"\n> > \n> > \n> > Now I don't think that's a fault of this series, but a fault of the\n> > src/cam/meson.build file not specifying the options.h header as part of\n> > the sources. I think that is causing the main.cpp not to get\n> > rebuilt/re-linked when there are further changes here to the options\n> > file ...\n\n$ ninja -v\nninja: no work to do.\n$ touch ../src/cam/options.h\n$ ninja -v\n[1/3] c++ -Isrc/cam/src@cam@@cam@exe -Isrc/cam -I../src/cam -Iinclude -I../include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -std=c++11 -g -Wno-unused-parameter  -MD -MQ 'src/cam/src@cam@@cam@exe/main.cpp.o' -MF 'src/cam/src@cam@@cam@exe/main.cpp.o.d' -o 'src/cam/src@cam@@cam@exe/main.cpp.o' -c ../src/cam/main.cpp\n[2/3] c++ -Isrc/cam/src@cam@@cam@exe -Isrc/cam -I../src/cam -Iinclude -I../include -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -Wextra -Werror -std=c++11 -g -Wno-unused-parameter  -MD -MQ 'src/cam/src@cam@@cam@exe/options.cpp.o' -MF 'src/cam/src@cam@@cam@exe/options.cpp.o.d' -o 'src/cam/src@cam@@cam@exe/options.cpp.o' -c ../src/cam/options.cpp\n[3/3] c++  -o src/cam/cam 'src/cam/src@cam@@cam@exe/event_loop.cpp.o' 'src/cam/src@cam@@cam@exe/main.cpp.o' 'src/cam/src@cam@@cam@exe/options.cpp.o' -Wl,--no-undefined -Wl,--as-needed -Wl,--start-group src/libcamera/libcamera.so -Wl,--end-group '-Wl,-rpath,$ORIGIN/../libcamera' -Wl,-rpath-link,src/libcamera\n\nAm I missing something ?\n\n> > However - I'm surprised, as I would have expected meson to do some sort\n> > of include depend checking or generation.\n> > \n> > Have you experienced anything similar here? or am I going crazy.\n> \n> I have experienced it, and not only with the cam tool but the library as \n> a whole. As I understand it we don't list any header files as sources.  \n> We just list them to feed them to Doxygen if I understand it correctly.  \n> \n> I had it on my todo list to figure out why, but have not gotten around \n> to do it as other things have been higher on my list and my workaround \n> of using ccache and\n> \n>     git rebase .. --exec \"cd build && ninja clean && ninja\"\n> \n> allowed me to move forward :-)\n> \n> > \n> > Now I think about it - the options.cpp changes too - so it should still\n> > rebuild. Ugh.. so I'm not sure what the underlying fault is yet.\n> \n> How do you think we should solve this? Looking around it seems other \n> people are including there header files in the source file list, should \n> we do the same?\n> \n> > On 28/01/2019 00:41, Niklas Söderlund wrote:\n> >> Hi,\n> >> \n> >> This series aims to add a --format option to the cam utility so that it \n> >> can set the format of a stream of a specified camera. To do this in an \n> >> efficient manner a new key=value parser is needed to understand the \n> >> arguments given to the new option, example\n> >> \n> >>     cam --camera mycam --format width=800,height=600\n> >> \n> >> This series adds such a parser and then moves on to adding the new \n> >> operation to the cam utility in 6/6. This series depends on [1] for 6/6 \n> >> which needs the stream API in the camera object to actually set the \n> >> requested format.\n> >> \n> >> 1. [PATCH v3 0/6] libcamera: add basic support for streams and format \n> >>    configuration\n> >> \n> >> Niklas Söderlund (6):\n> >>   cam: options: move enum OptionArgument\n> >>   cam: options: create a template class for options\n> >>   cam: options: return if addOption() succeeds or not\n> >>   cam: options: remove OptionsParser::options_\n> >>   cam: options: add a key=value parser\n> >>   cam: add --format option to configure a stream\n> >> \n> >>  src/cam/main.cpp    | 107 ++++++++++++++++++++++----\n> >>  src/cam/options.cpp | 178 +++++++++++++++++++++++++++++++++++++++-----\n> >>  src/cam/options.h   |  70 +++++++++++++----\n> >>  3 files changed, 305 insertions(+), 50 deletions(-)","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5D01D60B10\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 31 Jan 2019 10:57:02 +0100 (CET)","from pendragon.ideasonboard.com (85-76-34-136-nat.elisa-mobile.fi\n\t[85.76.34.136])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9133E41;\n\tThu, 31 Jan 2019 10:57:00 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548928621;\n\tbh=9+0FiVMBBq+a1vmOpHfPLmibcF0Sr7YxmqK3gvpHb6Q=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=HjiGVuh4aBvK3siqFZSPAfPosveEZgKVo1xNL0zDgoiSG+Yt8+hBQruvyMe1591sT\n\tYZBqcfC0Gggb7bA4f7u8mJw0DdtkeOAg1XHsMhPpgiP/X63eBe7v51hxZWEUMseh5n\n\tDVjzbxwvd3n9C6NDqsaI0WPqIaF2tmK0h05nucmw=","Date":"Thu, 31 Jan 2019 11:56:57 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Message-ID":"<20190131095657.GE4197@pendragon.ideasonboard.com>","References":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>\n\t<17f92b89-c6a8-5c94-b2fc-ba16282f7a91@ideasonboard.com>\n\t<20190130170534.GI19527@bigcity.dyn.berto.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190130170534.GI19527@bigcity.dyn.berto.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Thu, 31 Jan 2019 09:57:02 -0000"}},{"id":717,"web_url":"https://patchwork.libcamera.org/comment/717/","msgid":"<20190131100635.GF4197@pendragon.ideasonboard.com>","date":"2019-01-31T10:06:35","subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Tue, Jan 29, 2019 at 09:33:32AM +0000, Kieran Bingham wrote:\n> Hi Niklas,\n> \n> Except for a \"we're writing an option parser rather than pulling one in\"\n> concern, I don't see anything too wrong with this series and it's a\n> stand-alone tool (which you currently own :D )\n> \n> So I'd say,\n> \n> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n>  <edit: a couple of minor notes on 6/6>\n> \n> I think creating an opaque object to manage the camera from the\n> application point of view will give us a lot of benefits to hiding the\n> internal implementation and shared-ptrs.\n\nThat's Tomasz's proposal, right ?\n\n> Then an application can get a single 'unique' ptr - and it's destruction\n> can handle all clean up on the internal calls.\n\nShould that be a std::unique_ptr<>, or just a normal pointer ?\n\n> Anyway - Keeping the tool in use and actively developed will help us\n> develop how the applications will use the library - so I'm all for\n> getting this series in and developing it as we go.\n> \n> On 28/01/2019 00:41, Niklas Söderlund wrote:\n> > Hi,\n> > \n> > This series aims to add a --format option to the cam utility so that it \n> > can set the format of a stream of a specified camera. To do this in an \n> > efficient manner a new key=value parser is needed to understand the \n> > arguments given to the new option, example\n> > \n> >     cam --camera mycam --format width=800,height=600\n> > \n> > This series adds such a parser and then moves on to adding the new \n> > operation to the cam utility in 6/6. This series depends on [1] for 6/6 \n> > which needs the stream API in the camera object to actually set the \n> > requested format.\n> > \n> > 1. [PATCH v3 0/6] libcamera: add basic support for streams and format \n> >    configuration\n> > \n> > Niklas Söderlund (6):\n> >   cam: options: move enum OptionArgument\n> >   cam: options: create a template class for options\n> >   cam: options: return if addOption() succeeds or not\n> >   cam: options: remove OptionsParser::options_\n> >   cam: options: add a key=value parser\n> >   cam: add --format option to configure a stream\n> > \n> >  src/cam/main.cpp    | 107 ++++++++++++++++++++++----\n> >  src/cam/options.cpp | 178 +++++++++++++++++++++++++++++++++++++++-----\n> >  src/cam/options.h   |  70 +++++++++++++----\n> >  3 files changed, 305 insertions(+), 50 deletions(-)","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AD0AD60B10\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 31 Jan 2019 11:06:37 +0100 (CET)","from pendragon.ideasonboard.com (85-76-34-136-nat.elisa-mobile.fi\n\t[85.76.34.136])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 35ADD41;\n\tThu, 31 Jan 2019 11:06:36 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1548929197;\n\tbh=rxb9VV+9kcAvQQAH/1d1jbjRSlLk6b8oX4emf2T/K8A=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=bfbnuX7LI6dtdeL2DLDZ1C1kMtTDdMuQmdcL4ieSXrT2cN+3BdoMH6T1BmPadyMnQ\n\tJLhLezHQAkSwY1ff66yPttHEhBFOiRGxSwBRO/AFqhS0BKBsZ/hZbISUPFJOVcXpj/\n\tcbDzMBwKBlSzC1mjLqPEonjrIJloINwB70bOfDUA=","Date":"Thu, 31 Jan 2019 12:06:35 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tlibcamera-devel@lists.libcamera.org","Message-ID":"<20190131100635.GF4197@pendragon.ideasonboard.com>","References":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>\n\t<eb70530a-269f-2561-92e4-ae1040e40e63@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<eb70530a-269f-2561-92e4-ae1040e40e63@ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Thu, 31 Jan 2019 10:06:37 -0000"}},{"id":739,"web_url":"https://patchwork.libcamera.org/comment/739/","msgid":"<20190201152200.GP19527@bigcity.dyn.berto.se>","date":"2019-02-01T15:22:00","subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nOn 2019-01-31 12:06:35 +0200, Laurent Pinchart wrote:\n> Hi Kieran,\n> \n> On Tue, Jan 29, 2019 at 09:33:32AM +0000, Kieran Bingham wrote:\n> > Hi Niklas,\n> > \n> > Except for a \"we're writing an option parser rather than pulling one in\"\n> > concern, I don't see anything too wrong with this series and it's a\n> > stand-alone tool (which you currently own :D )\n> > \n> > So I'd say,\n> > \n> > Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > \n> >  <edit: a couple of minor notes on 6/6>\n> > \n> > I think creating an opaque object to manage the camera from the\n> > application point of view will give us a lot of benefits to hiding the\n> > internal implementation and shared-ptrs.\n> \n> That's Tomasz's proposal, right ?\n\nTo me this is the d-pointer discussion we had in the past and recoded as \n'Research ABI stability with regard to private data' topic. And if I \nunderstand Tomasz proposal his view is somewhat aligned whit this, but I \nmight have misunderstood.\n\n> \n> > Then an application can get a single 'unique' ptr - and it's destruction\n> > can handle all clean up on the internal calls.\n> \n> Should that be a std::unique_ptr<>, or just a normal pointer ?\n> \n> > Anyway - Keeping the tool in use and actively developed will help us\n> > develop how the applications will use the library - so I'm all for\n> > getting this series in and developing it as we go.\n> > \n> > On 28/01/2019 00:41, Niklas Söderlund wrote:\n> > > Hi,\n> > > \n> > > This series aims to add a --format option to the cam utility so that it \n> > > can set the format of a stream of a specified camera. To do this in an \n> > > efficient manner a new key=value parser is needed to understand the \n> > > arguments given to the new option, example\n> > > \n> > >     cam --camera mycam --format width=800,height=600\n> > > \n> > > This series adds such a parser and then moves on to adding the new \n> > > operation to the cam utility in 6/6. This series depends on [1] for 6/6 \n> > > which needs the stream API in the camera object to actually set the \n> > > requested format.\n> > > \n> > > 1. [PATCH v3 0/6] libcamera: add basic support for streams and format \n> > >    configuration\n> > > \n> > > Niklas Söderlund (6):\n> > >   cam: options: move enum OptionArgument\n> > >   cam: options: create a template class for options\n> > >   cam: options: return if addOption() succeeds or not\n> > >   cam: options: remove OptionsParser::options_\n> > >   cam: options: add a key=value parser\n> > >   cam: add --format option to configure a stream\n> > > \n> > >  src/cam/main.cpp    | 107 ++++++++++++++++++++++----\n> > >  src/cam/options.cpp | 178 +++++++++++++++++++++++++++++++++++++++-----\n> > >  src/cam/options.h   |  70 +++++++++++++----\n> > >  3 files changed, 305 insertions(+), 50 deletions(-)\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-f176.google.com (mail-lj1-f176.google.com\n\t[209.85.208.176])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5D9EC60B10\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  1 Feb 2019 16:23:03 +0100 (CET)","by mail-lj1-f176.google.com with SMTP id v1-v6so6157002ljd.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 01 Feb 2019 07:23:03 -0800 (PST)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\tn22sm815886lfe.49.2019.02.01.07.22.01\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tFri, 01 Feb 2019 07:22:01 -0800 (PST)"],"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\t:user-agent; bh=JGOi/SGrtOPdApa4ZcmiDz4F7ZMYzqaAp5UFNWTKzz4=;\n\tb=pZQ1P4ZRbZiFgmPpIH4qNSmtujRHG4Ex1S3I/G0u9nCL24ZV2ku8Ysm5TMNd1dqWtR\n\tz+m0a7BS5mdL92v9hvy196z6l2SNfKbcf8la4T9iV4rmQk7TyIiRE24hrUxr2cn2nI2B\n\tX15NnAiwZeGmzuLvRiaPE5w0AbRDhSAwH3vlOC8Ak6AZQbxaRMlZ8PUjpQnR+fR5lTwO\n\tWshITFiCGeAxpNH4dIbCM+BhnOpBh8jKyiAKbc5MnbJ3HDLzu0gKyhcpK11c4mojccCq\n\tFHF67mlD67RyJL58knFAwkF5//aAM56p7c+pFXP1Y2MBRk0IddnB2LMbjMP6nvnyiPzq\n\tQLwA==","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:user-agent;\n\tbh=JGOi/SGrtOPdApa4ZcmiDz4F7ZMYzqaAp5UFNWTKzz4=;\n\tb=kmOBIaPntpKCQVX4wz2dGs/npmYtOgF5C4ZIU9ofoQsKP5nJoP2WqvaAPmsngBNktd\n\te+vZCnkIuKJJ4WppBQHsJxkRwwxaHG21F9SRToJU/VyZ4YqmSbNWCFdOYUZ1jsWqSOn8\n\tHK3wa+gYfJZKZWvQ55loJbiq9+kQZMrsj/VEBgRYqFASPYvNZRILAA9ptJonYPiRhWo0\n\t1aCLMZIghQYhPZUutNmUasJPfNrEEcARR1u9S5wqmKOHJduwKgDXK4o8g4ClZoe28TVh\n\tBoK5pFXc0g7yLUGeuXmiCc7hfAjxYdoUWi4WheE+gC/GQO0smqkZKXZxKWWuCT1qWwtU\n\t7RLA==","X-Gm-Message-State":"AJcUukfLunXx83g/WAQ/uze8qA6oUf3WPscErLkZOkc/8g9tJ2Bywv6+\n\tF40dmSScxgbm8y3+stPMdNKsKmHV17U=","X-Google-Smtp-Source":"ALg8bN78UAKPrHuyDzxgi/6jNso8qwkpgDTeG7WMAzli1xJTLIShT3+fyApKfG21YXdSTc6bo/AMgg==","X-Received":"by 2002:a2e:145a:: with SMTP id\n\t26-v6mr31080188lju.116.1549034522292; \n\tFri, 01 Feb 2019 07:22:02 -0800 (PST)","Date":"Fri, 1 Feb 2019 16:22:00 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Message-ID":"<20190201152200.GP19527@bigcity.dyn.berto.se>","References":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>\n\t<eb70530a-269f-2561-92e4-ae1040e40e63@ideasonboard.com>\n\t<20190131100635.GF4197@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190131100635.GF4197@pendragon.ideasonboard.com>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Fri, 01 Feb 2019 15:23:03 -0000"}},{"id":756,"web_url":"https://patchwork.libcamera.org/comment/756/","msgid":"<20190204184204.GC4561@pendragon.ideasonboard.com>","date":"2019-02-04T18:42:04","subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nOn Fri, Feb 01, 2019 at 04:22:00PM +0100, Niklas Söderlund wrote:\n> On 2019-01-31 12:06:35 +0200, Laurent Pinchart wrote:\n> > On Tue, Jan 29, 2019 at 09:33:32AM +0000, Kieran Bingham wrote:\n> >> Hi Niklas,\n> >> \n> >> Except for a \"we're writing an option parser rather than pulling one in\"\n> >> concern, I don't see anything too wrong with this series and it's a\n> >> stand-alone tool (which you currently own :D )\n> >> \n> >> So I'd say,\n> >> \n> >> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> >> \n> >>  <edit: a couple of minor notes on 6/6>\n> >> \n> >> I think creating an opaque object to manage the camera from the\n> >> application point of view will give us a lot of benefits to hiding the\n> >> internal implementation and shared-ptrs.\n> > \n> > That's Tomasz's proposal, right ?\n> \n> To me this is the d-pointer discussion we had in the past and recoded as \n> 'Research ABI stability with regard to private data' topic. And if I \n> understand Tomasz proposal his view is somewhat aligned whit this, but I \n> might have misunderstood.\n\nIt's similar in purpose to the d-pointer, yes. Usually a d-pointer will\nhave the same lifetime as the object that holds it, so this case is\nslightly different in the sense that the d-pointer would be shared, but\notherwise it does indeed serve as a way to hide the underlying\nimplementation.\n\n> >> Then an application can get a single 'unique' ptr - and it's destruction\n> >> can handle all clean up on the internal calls.\n> > \n> > Should that be a std::unique_ptr<>, or just a normal pointer ?\n> > \n> >> Anyway - Keeping the tool in use and actively developed will help us\n> >> develop how the applications will use the library - so I'm all for\n> >> getting this series in and developing it as we go.\n> >> \n> >> On 28/01/2019 00:41, Niklas Söderlund wrote:\n> >>> Hi,\n> >>> \n> >>> This series aims to add a --format option to the cam utility so that it \n> >>> can set the format of a stream of a specified camera. To do this in an \n> >>> efficient manner a new key=value parser is needed to understand the \n> >>> arguments given to the new option, example\n> >>> \n> >>>     cam --camera mycam --format width=800,height=600\n> >>> \n> >>> This series adds such a parser and then moves on to adding the new \n> >>> operation to the cam utility in 6/6. This series depends on [1] for 6/6 \n> >>> which needs the stream API in the camera object to actually set the \n> >>> requested format.\n> >>> \n> >>> 1. [PATCH v3 0/6] libcamera: add basic support for streams and format \n> >>>    configuration\n> >>> \n> >>> Niklas Söderlund (6):\n> >>>   cam: options: move enum OptionArgument\n> >>>   cam: options: create a template class for options\n> >>>   cam: options: return if addOption() succeeds or not\n> >>>   cam: options: remove OptionsParser::options_\n> >>>   cam: options: add a key=value parser\n> >>>   cam: add --format option to configure a stream\n> >>> \n> >>>  src/cam/main.cpp    | 107 ++++++++++++++++++++++----\n> >>>  src/cam/options.cpp | 178 +++++++++++++++++++++++++++++++++++++++-----\n> >>>  src/cam/options.h   |  70 +++++++++++++----\n> >>>  3 files changed, 305 insertions(+), 50 deletions(-)","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 82B9660B2D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  4 Feb 2019 19:42:08 +0100 (CET)","from pendragon.ideasonboard.com (85-76-64-229-nat.elisa-mobile.fi\n\t[85.76.64.229])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D089E41;\n\tMon,  4 Feb 2019 19:42:06 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1549305728;\n\tbh=NWrjedQTyxLNOdoiFifXJZBdBQI2kMcw2YOqvHm3UC4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=l1USl1ZSeBiCOpb6c6z8GybuXtitHtsTFtk72GMJBKv5dILUIbghsa+eyXmwCYZ+c\n\tlMtv3XQtMPQdILHKK8oHYsLyliZgb7wUnuqZuUfZK0qelgdA+TWZ2noi0IYJNvTAZq\n\t1W19dXeyWRDDybvD2K5+r/aUuOuF9enRAWMwAQRw=","Date":"Mon, 4 Feb 2019 20:42:04 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Message-ID":"<20190204184204.GC4561@pendragon.ideasonboard.com>","References":"<20190128004109.25860-1-niklas.soderlund@ragnatech.se>\n\t<eb70530a-269f-2561-92e4-ae1040e40e63@ideasonboard.com>\n\t<20190131100635.GF4197@pendragon.ideasonboard.com>\n\t<20190201152200.GP19527@bigcity.dyn.berto.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190201152200.GP19527@bigcity.dyn.berto.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 0/6] cam: add --format option to\n\tconfigure a stream","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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":"Mon, 04 Feb 2019 18:42:08 -0000"}}]