[{"id":26256,"web_url":"https://patchwork.libcamera.org/comment/26256/","msgid":"<167403657378.42371.14856724797554952181@Monstersaurus>","date":"2023-01-18T10:09:33","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Naush,\n\nQuoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> Add a new hints flags field in the StreamConfiguration structure to allow the\n> application to specify certain intended behavior when driving libcamera.\n> Pipeline handlers are expected to look at these hint flags and may optimise\n> internal operations based on them.\n> \n> Currently, only one flag is listed, OptionalStream, which the application can\n> set to inform the pipeline handler that a buffer may not be provided on every\n> Request for a given stream.\n\nSorry - Laurent had comments on this yesterday when I was discussing\nwith him, so I don't know which way it will go yet...\n\nI still think this is the better way around, but we'll have to consider\nthat this is an 'ABI' breakage, as now apps that were able to use two\nstreams won't unless they explicitly provide all buffers or inform\nlibcamera that they won't provide all buffers....\n\n \n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> ---\n>  include/libcamera/stream.h |  8 ++++++++\n>  src/libcamera/stream.cpp   | 24 ++++++++++++++++++++++++\n>  2 files changed, 32 insertions(+)\n> \n> diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> index 29235ddf0d8a..233ff0450451 100644\n> --- a/include/libcamera/stream.h\n> +++ b/include/libcamera/stream.h\n> @@ -13,6 +13,8 @@\n>  #include <string>\n>  #include <vector>\n>  \n> +#include <libcamera/base/flags.h>\n> +\n>  #include <libcamera/color_space.h>\n>  #include <libcamera/framebuffer.h>\n>  #include <libcamera/geometry.h>\n> @@ -51,6 +53,12 @@ struct StreamConfiguration {\n>  \n>         std::optional<ColorSpace> colorSpace;\n>  \n> +       enum class Hint {\n> +               None = 0,\n> +               OptionalStream = (1 << 0),\n> +       };\n> +       Flags<Hint> hints;\n> +\n>         Stream *stream() const { return stream_; }\n>         void setStream(Stream *stream) { stream_ = stream; }\n>         const StreamFormats &formats() const { return formats_; }\n> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> index 67f308157fbf..b7de85f8b9c7 100644\n> --- a/src/libcamera/stream.cpp\n> +++ b/src/libcamera/stream.cpp\n> @@ -349,6 +349,30 @@ StreamConfiguration::StreamConfiguration(const StreamFormats &formats)\n>   * color spaces can be supported and in what combinations.\n>   */\n>  \n> +/**\n> + * \\enum StreamConfiguration::Hint\n> + * \\brief List of available hint flags provided by the application for a stream\n> + *\n> + * \\var StreamConfiguration::Hint::None\n> + * No hints for this stream.\n> + * \\var StreamConfiguration::Hint::OptionalStream\n> + * Informs the pipeline handler that the application may not always provide a\n> + * buffer for the configured stream in every Request. This may ensure the\n> + * pipeline handler allocates additional stream buffers for internal use.\n> + */\n> +\n> +/**\n> + * \\var StreamConfiguration::hints\n> + * \\brief Application provided StreamConfiguration::Hint flags for specific\n> + * stream behavior\n> + *\n> + * Provides hints from the application to the pipeline handlers on how it\n> + * intends on handling a given configured stream. These hints may alter the\n> + * behavior of the pipeline handlers, for example, by allocating additional\n> + * buffers for internal use if an application does not guarantee buffers will be\n> + * provided in every Request for a stream.\n> + */\n> +\n>  /**\n>   * \\fn StreamConfiguration::stream()\n>   * \\brief Retrieve the stream associated with the configuration\n> -- \n> 2.25.1\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 D5B02BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Jan 2023 10:09:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2A561625E4;\n\tWed, 18 Jan 2023 11:09:38 +0100 (CET)","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 8C1C761EFD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jan 2023 11:09:36 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 119261643;\n\tWed, 18 Jan 2023 11:09:36 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674036578;\n\tbh=zoUUC28PaJQtJwtJhG/EBkv/2lgxALWjANzgMUI2vNg=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=yDMkGrRG6NTLENM6Y+GHe4jru6HN75FpkKap4s+zTjLc6kgRr11JKHUCcOhLS9GZW\n\tKvZoxgh6OqD4ou1KQh12RL+vaxyUI8B46WS95/vlzRnSYWlfwnmsTWYyUQYCi4wIWX\n\tzpCURIinQrO9dGysuL/GlKRbMEiTWrU3anjqXBuMtwpOnW5m94G/upjQRYlguNw4gS\n\tEk3dgxaT2ojmPI/zseCH8M5qFg1uGJxWiQLVQcv96NZOTQe1fsalaM01ul8aOr5fRM\n\tSSx/5Mjp9lhvuGbias1zJIZtZInCXgXZ4V0HWRXGHnAI7PgRNrCEZEUs7kdsSXsZC5\n\tEozGpOcFtC3TA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1674036576;\n\tbh=zoUUC28PaJQtJwtJhG/EBkv/2lgxALWjANzgMUI2vNg=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=ZzKMAwV+WqF/ScSfa17DRnRYBVN5fros1QlhwaS55IxcBspLz783ORs4PCE6rzR3U\n\tP73I3Mr+RffBJKctBj/kjQH2AKr6HN/QZCbfT3QM0QLTrXvs1q9qLQUnNWhDV+lTMB\n\t8wc7eTb2N9OaqqJqemFoUDQbwvfWBvlJ5JZvHIdk="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"ZzKMAwV+\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20230118085953.7027-2-naush@raspberrypi.com>","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>","To":"Naushir Patuck <naush@raspberrypi.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 18 Jan 2023 10:09:33 +0000","Message-ID":"<167403657378.42371.14856724797554952181@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26257,"web_url":"https://patchwork.libcamera.org/comment/26257/","msgid":"<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>","date":"2023-01-18T11:16:40","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > Add a new hints flags field in the StreamConfiguration structure to\n> allow the\n> > application to specify certain intended behavior when driving libcamera.\n> > Pipeline handlers are expected to look at these hint flags and may\n> optimise\n> > internal operations based on them.\n> >\n> > Currently, only one flag is listed, OptionalStream, which the\n> application can\n> > set to inform the pipeline handler that a buffer may not be provided on\n> every\n> > Request for a given stream.\n>\n> Sorry - Laurent had comments on this yesterday when I was discussing\n> with him, so I don't know which way it will go yet...\n>\n> I still think this is the better way around, but we'll have to consider\n> that this is an 'ABI' breakage, as now apps that were able to use two\n> streams won't unless they explicitly provide all buffers or inform\n> libcamera that they won't provide all buffers....\n>\n\nIn the earlier versions of this series, we didn't have hints but used config\nparams to indicate this.  Perhaps I should go back to this mechanism for the\ntime being to avoid any ABI breakages until there is an agreed path forward?\n\nNaush\n\n\n>\n>\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  include/libcamera/stream.h |  8 ++++++++\n> >  src/libcamera/stream.cpp   | 24 ++++++++++++++++++++++++\n> >  2 files changed, 32 insertions(+)\n> >\n> > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> > index 29235ddf0d8a..233ff0450451 100644\n> > --- a/include/libcamera/stream.h\n> > +++ b/include/libcamera/stream.h\n> > @@ -13,6 +13,8 @@\n> >  #include <string>\n> >  #include <vector>\n> >\n> > +#include <libcamera/base/flags.h>\n> > +\n> >  #include <libcamera/color_space.h>\n> >  #include <libcamera/framebuffer.h>\n> >  #include <libcamera/geometry.h>\n> > @@ -51,6 +53,12 @@ struct StreamConfiguration {\n> >\n> >         std::optional<ColorSpace> colorSpace;\n> >\n> > +       enum class Hint {\n> > +               None = 0,\n> > +               OptionalStream = (1 << 0),\n> > +       };\n> > +       Flags<Hint> hints;\n> > +\n> >         Stream *stream() const { return stream_; }\n> >         void setStream(Stream *stream) { stream_ = stream; }\n> >         const StreamFormats &formats() const { return formats_; }\n> > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> > index 67f308157fbf..b7de85f8b9c7 100644\n> > --- a/src/libcamera/stream.cpp\n> > +++ b/src/libcamera/stream.cpp\n> > @@ -349,6 +349,30 @@ StreamConfiguration::StreamConfiguration(const\n> StreamFormats &formats)\n> >   * color spaces can be supported and in what combinations.\n> >   */\n> >\n> > +/**\n> > + * \\enum StreamConfiguration::Hint\n> > + * \\brief List of available hint flags provided by the application for\n> a stream\n> > + *\n> > + * \\var StreamConfiguration::Hint::None\n> > + * No hints for this stream.\n> > + * \\var StreamConfiguration::Hint::OptionalStream\n> > + * Informs the pipeline handler that the application may not always\n> provide a\n> > + * buffer for the configured stream in every Request. This may ensure\n> the\n> > + * pipeline handler allocates additional stream buffers for internal\n> use.\n> > + */\n> > +\n> > +/**\n> > + * \\var StreamConfiguration::hints\n> > + * \\brief Application provided StreamConfiguration::Hint flags for\n> specific\n> > + * stream behavior\n> > + *\n> > + * Provides hints from the application to the pipeline handlers on how\n> it\n> > + * intends on handling a given configured stream. These hints may alter\n> the\n> > + * behavior of the pipeline handlers, for example, by allocating\n> additional\n> > + * buffers for internal use if an application does not guarantee\n> buffers will be\n> > + * provided in every Request for a stream.\n> > + */\n> > +\n> >  /**\n> >   * \\fn StreamConfiguration::stream()\n> >   * \\brief Retrieve the stream associated with the configuration\n> > --\n> > 2.25.1\n> >\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 8CF51C3240\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 18 Jan 2023 11:16:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0ACB4625D8;\n\tWed, 18 Jan 2023 12:16:59 +0100 (CET)","from mail-yw1-x1129.google.com (mail-yw1-x1129.google.com\n\t[IPv6:2607:f8b0:4864:20::1129])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 86387625CC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jan 2023 12:16:57 +0100 (CET)","by mail-yw1-x1129.google.com with SMTP id\n\t00721157ae682-4a2f8ad29d5so462142517b3.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 18 Jan 2023 03:16:57 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674040619;\n\tbh=1ALy+nIuGrkb2/LuskRWFQXSzq+6PfsNKAyQl9NIflM=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=UH85VYi1NbQTcM49CeoLgzlWdPxPhGU0wiXPr0Mae5BUGYpsLUoDyeoRFEkPy9q0P\n\tKnzuff3vixQ/0xX0o0fX65FQ6+F3NgAvCoQeQS/rXmR4moCa4ocoM2VqRNOQyB1NS5\n\t3Rgp1olQ2An4VMF3EEZMyOdODZHpQouABmPtc3vh1ir5wuBxBM1M7y+rc4sNfKi+K/\n\tZfkgOt/qDv9NWiW9KaRVDiRjrVsL5hRyCAUY1R3FVZoLv0ccTknMchdOMhuLg/vOQp\n\te6ph83TNZEUNpZ0ZwhOWM8QzlpFlBGbNV92eBJan4TFbvgW3lGODYXOfu2AkUi4nNQ\n\tE3f801GlvGoQg==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=mlsnoZVG2Av4aANE1PjoqndvHPgvCzp75nCFrbkZppc=;\n\tb=T0SMgSUL/uLqF3i6ZX9CmQtzV+F/foYivwLqz2ay0/DHnuTvH7xzitTrE3X6oD1oo1\n\toOyNWYZXGNVM4ZK3sVOl6uOYnItD1Spbvrfw40IdyiIm3kMgjpq/A8KD3tSodukRXNLi\n\tb8mXI6Maf0DB2SedBZQfyKhDc4hjqoJjRZFB6Tg+V+m/kGiYYFwDBPRKZKbxra7db4NY\n\t2fAb04Ay7nZ/A6JE5VRBBWh5I5h8pxkfjC9gqKfGpocM6SYQMz/7vqosDe3LA5BfbDPE\n\tJ6PzNCoNkECPAsGNQOIYFokDxJKD8T3HEQP+bJrUsVLFBhXqrS5ZcsUWFK2qRlOsP8M1\n\tW0JQ=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"T0SMgSUL\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=mlsnoZVG2Av4aANE1PjoqndvHPgvCzp75nCFrbkZppc=;\n\tb=LM7Dl7do5bF9AnCSgvsSzvuhmG1Xlwq1BE5drD+CC8vgQQNnlz8sp/3eUfzslsdQHR\n\tJ/wHbDQs/dFC90PRJupm+fDBQMpQY55a4f9rNIiYwyiDvlkm+FW6vMvSoumabHj1mVY0\n\ttQTaohvTUNoUeOLk8Jhg/zGhT4IaHI8cEXJp04wWTOH6yxguvZJj3WMr+ClBwiI+Y+XB\n\tbn6qt+fdv7nmZD90zXE/5+dL98Uhr+bZsju/JEZuI7pEul5uDxEn3PeHGLAbjVxwU18/\n\t5BLJIDAuDfU2ezYORtY8rTU4b6xzKdQKdnxbZN3dDpgKKRKT3nslyNEjFk2KF53vJktC\n\t+CIA==","X-Gm-Message-State":"AFqh2kpbjbTbjeF8U63zY2EuJ1MNA/hmx9SAivbJlVwQLVacVEl/L5ib\n\tyDgvecEZGzpJRmOeCD5+w8CLa5LDZAh8RL8Ny+ggEUj8J44uz3IDXeU=","X-Google-Smtp-Source":"AMrXdXsGtf627UtgWMBWts5KqTxW0JAjOnHHlH5z2HYUoHCqxFrQ/P/Bd0sfETY2TW4NsItdy7eWAwqpvmQqfh5+fMY=","X-Received":"by 2002:a81:55c9:0:b0:358:36cc:b6cf with SMTP id\n\tj192-20020a8155c9000000b0035836ccb6cfmr786230ywb.505.1674040616343;\n\tWed, 18 Jan 2023 03:16:56 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>","In-Reply-To":"<167403657378.42371.14856724797554952181@Monstersaurus>","Date":"Wed, 18 Jan 2023 11:16:40 +0000","Message-ID":"<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000046eecb05f287f430\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26270,"web_url":"https://patchwork.libcamera.org/comment/26270/","msgid":"<CAEmqJPqFu-MtCa47ZoBoupcri+PZ7zHe_QKfr0dkbTbF2ghfwg@mail.gmail.com>","date":"2023-01-20T08:04:41","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi all,\n\n\nOn Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > Add a new hints flags field in the StreamConfiguration structure to\n> allow the\n> > application to specify certain intended behavior when driving libcamera.\n> > Pipeline handlers are expected to look at these hint flags and may\n> optimise\n> > internal operations based on them.\n> >\n> > Currently, only one flag is listed, OptionalStream, which the\n> application can\n> > set to inform the pipeline handler that a buffer may not be provided on\n> every\n> > Request for a given stream.\n>\n> Sorry - Laurent had comments on this yesterday when I was discussing\n> with him, so I don't know which way it will go yet...\n>\n> I still think this is the better way around, but we'll have to consider\n> that this is an 'ABI' breakage, as now apps that were able to use two\n> streams won't unless they explicitly provide all buffers or inform\n> libcamera that they won't provide all buffers....\n>\n\nHas there been any consensus reached on this?\nI'm keen to get out an updated patch by the end of the day if any other\nchanges are needed.\n\nRegards,\nNaush\n\n\n>\n>\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > ---\n> >  include/libcamera/stream.h |  8 ++++++++\n> >  src/libcamera/stream.cpp   | 24 ++++++++++++++++++++++++\n> >  2 files changed, 32 insertions(+)\n> >\n> > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> > index 29235ddf0d8a..233ff0450451 100644\n> > --- a/include/libcamera/stream.h\n> > +++ b/include/libcamera/stream.h\n> > @@ -13,6 +13,8 @@\n> >  #include <string>\n> >  #include <vector>\n> >\n> > +#include <libcamera/base/flags.h>\n> > +\n> >  #include <libcamera/color_space.h>\n> >  #include <libcamera/framebuffer.h>\n> >  #include <libcamera/geometry.h>\n> > @@ -51,6 +53,12 @@ struct StreamConfiguration {\n> >\n> >         std::optional<ColorSpace> colorSpace;\n> >\n> > +       enum class Hint {\n> > +               None = 0,\n> > +               OptionalStream = (1 << 0),\n> > +       };\n> > +       Flags<Hint> hints;\n> > +\n> >         Stream *stream() const { return stream_; }\n> >         void setStream(Stream *stream) { stream_ = stream; }\n> >         const StreamFormats &formats() const { return formats_; }\n> > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> > index 67f308157fbf..b7de85f8b9c7 100644\n> > --- a/src/libcamera/stream.cpp\n> > +++ b/src/libcamera/stream.cpp\n> > @@ -349,6 +349,30 @@ StreamConfiguration::StreamConfiguration(const\n> StreamFormats &formats)\n> >   * color spaces can be supported and in what combinations.\n> >   */\n> >\n> > +/**\n> > + * \\enum StreamConfiguration::Hint\n> > + * \\brief List of available hint flags provided by the application for\n> a stream\n> > + *\n> > + * \\var StreamConfiguration::Hint::None\n> > + * No hints for this stream.\n> > + * \\var StreamConfiguration::Hint::OptionalStream\n> > + * Informs the pipeline handler that the application may not always\n> provide a\n> > + * buffer for the configured stream in every Request. This may ensure\n> the\n> > + * pipeline handler allocates additional stream buffers for internal\n> use.\n> > + */\n> > +\n> > +/**\n> > + * \\var StreamConfiguration::hints\n> > + * \\brief Application provided StreamConfiguration::Hint flags for\n> specific\n> > + * stream behavior\n> > + *\n> > + * Provides hints from the application to the pipeline handlers on how\n> it\n> > + * intends on handling a given configured stream. These hints may alter\n> the\n> > + * behavior of the pipeline handlers, for example, by allocating\n> additional\n> > + * buffers for internal use if an application does not guarantee\n> buffers will be\n> > + * provided in every Request for a stream.\n> > + */\n> > +\n> >  /**\n> >   * \\fn StreamConfiguration::stream()\n> >   * \\brief Retrieve the stream associated with the configuration\n> > --\n> > 2.25.1\n> >\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 2B64BBE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 08:05:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 58E53625E4;\n\tFri, 20 Jan 2023 09:05:00 +0100 (CET)","from mail-yb1-xb2c.google.com (mail-yb1-xb2c.google.com\n\t[IPv6:2607:f8b0:4864:20::b2c])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6CE7A6045E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 09:04:58 +0100 (CET)","by mail-yb1-xb2c.google.com with SMTP id p188so5735180yba.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 00:04:58 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674201900;\n\tbh=/N8GetAHo/DtPgzfFzjai/R/77eQlGhvTdb2iCI0wKY=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=ALQ3aTlMmk01EVU/ejuTrTclFS2TLqsLqELpkCJtIJpI0o1cXyMZw+w//HirgX6GS\n\t5f/boFZ+SIEzTFOwpZj60eUDiSLTkj0B+xNu0y1UAUt+ioR+yK2x4i2x4XptbWxq81\n\tV2paNpUdj0DpZcgFQ1kevBLfIP3EuPmhT725JHu0A24PW7/4vj1AUEFtbCPHhimLuB\n\tQktYc6y7QiMhqZfiKH/R2hBSrn3UDEXwlvrL/6Llx90HJC9QguOmEfvkyreNlDQLd7\n\tB2G+Lqa4pdWHR1vdwAthA9fadMFa+PJZWbdBi0qjogM6kYMEhcO8qO/dy1/oN+SAhI\n\tRzHK5TdZEeyuA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=TOshyXlftFAL9NF1Hf9iZ21R96tM/VBiltp/8TRfQMc=;\n\tb=Jh5ydt/UnOPL+kHE4L1YAb6ao66Ya+G7pDjczidEdbTxJ4yC2urlnKMRP+2pudsM95\n\thFRR5vv+f2gu2xhjW+6mZoB7jBm2BAiEWchmgfw3DonXoFO3S099b7St5SnR4XvFIoNr\n\t+k6QOcur38gyqtcs1dq9t8npnx+w5lECCsGgl1kQoEABWEl8KOfhM1z5pd5LRuZ0o44W\n\toAys9SzDUWhwieXKXEh+so06f+6WOBA0+jY3ltBvl77C2RJBQDZUvJrhGT5cS97k3TPI\n\tjX73AWOjm3/3JE9sWyBCrBlcAFGYlRup8OwoNYVoYB3o+pPabbneFTsb5r3QfIVAaVHY\n\tqhYw=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"Jh5ydt/U\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=TOshyXlftFAL9NF1Hf9iZ21R96tM/VBiltp/8TRfQMc=;\n\tb=EcjwUvxXjnNVBR9zw4Z8F0FSJxPFt5PZLYKothOgowoY4fRwCtBuewdk6uk/06o1Vl\n\tjrmxrINYCFvlrkl23h/V/uNtlqOZSiN4awanF9yCqW+Onx1HcFW0QMvkb4j8wDi6RVPQ\n\tqeyHlliYiIFGOEgBKtZRwn19IHab7sA3mPa5rfzz0SOVoqRjwel0nwVTpy7lqgB9WSK0\n\tnA1P9DnPW/qX4lnk7e6Uvev8jv6kApWmh1TDCmVeXcuUM1dVjwS6yj8vqkq79kEC7THs\n\tWCbo5uLCzYD3zUqnuMj7NItUFrG1Ng08Nhu1Jti92lbrYLBumEF6afm0MyCmaeWU6sEY\n\tcwDQ==","X-Gm-Message-State":"AFqh2kontu3+OZgja2LP7mFN4BWUdMgelxrRykhqkn1nQi+nYyVwpqzo\n\t4yXHaUDioQqryrOWAMC4xi5vI99I07pXTuMjBBUrTw==","X-Google-Smtp-Source":"AMrXdXsKEXAuf49n73wCQirXH0G0ryeb6xkzR1LtESnIbYGWZWzM8dqajmmxsWQboO+ixWzg4pOCb1ncGvskSUS2NMk=","X-Received":"by 2002:a25:7583:0:b0:783:bc5e:3d67 with SMTP id\n\tq125-20020a257583000000b00783bc5e3d67mr1180741ybc.524.1674201897228;\n\tFri, 20 Jan 2023 00:04:57 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>","In-Reply-To":"<167403657378.42371.14856724797554952181@Monstersaurus>","Date":"Fri, 20 Jan 2023 08:04:41 +0000","Message-ID":"<CAEmqJPqFu-MtCa47ZoBoupcri+PZ7zHe_QKfr0dkbTbF2ghfwg@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"0000000000005df09a05f2ad811d\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26273,"web_url":"https://patchwork.libcamera.org/comment/26273/","msgid":"<167421125471.42371.10016931816027617078@Monstersaurus>","date":"2023-01-20T10:40:54","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Naushir Patuck (2023-01-20 08:04:41)\n> Hi all,\n> \n> \n> On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> kieran.bingham@ideasonboard.com> wrote:\n> \n> > Hi Naush,\n> >\n> > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > > Add a new hints flags field in the StreamConfiguration structure to\n> > allow the\n> > > application to specify certain intended behavior when driving libcamera.\n> > > Pipeline handlers are expected to look at these hint flags and may\n> > optimise\n> > > internal operations based on them.\n> > >\n> > > Currently, only one flag is listed, OptionalStream, which the\n> > application can\n> > > set to inform the pipeline handler that a buffer may not be provided on\n> > every\n> > > Request for a given stream.\n> >\n> > Sorry - Laurent had comments on this yesterday when I was discussing\n> > with him, so I don't know which way it will go yet...\n> >\n> > I still think this is the better way around, but we'll have to consider\n> > that this is an 'ABI' breakage, as now apps that were able to use two\n> > streams won't unless they explicitly provide all buffers or inform\n> > libcamera that they won't provide all buffers....\n> >\n> \n> Has there been any consensus reached on this?\n> I'm keen to get out an updated patch by the end of the day if any other\n> changes are needed.\n\nI'm still trying to get to the bottom of all the consequences either\nway.\n\nI'm afraid now I have a worry about 'my' suggestion to require\napplications to specify optional streams.\n\nAt the moment, I think the only way to directly configure the sensor\nmode is to configure a raw stream, and then simply not request buffers\non that stream. If we make it so applictions must declare that the\nstream is an OptionalStream - setting the raw sensor mode would likely\nhave to directly inform that the raw buffers are not going to be\nprovided.\n\nThat might not be a bad thing, but I wanted to highlight it.\n\nAre there any other / better options to configure the sensor mode?\n\n--\nKieran\n\n\n\n> \n> Regards,\n> Naush\n> \n> \n> >\n> >\n> > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > ---\n> > >  include/libcamera/stream.h |  8 ++++++++\n> > >  src/libcamera/stream.cpp   | 24 ++++++++++++++++++++++++\n> > >  2 files changed, 32 insertions(+)\n> > >\n> > > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> > > index 29235ddf0d8a..233ff0450451 100644\n> > > --- a/include/libcamera/stream.h\n> > > +++ b/include/libcamera/stream.h\n> > > @@ -13,6 +13,8 @@\n> > >  #include <string>\n> > >  #include <vector>\n> > >\n> > > +#include <libcamera/base/flags.h>\n> > > +\n> > >  #include <libcamera/color_space.h>\n> > >  #include <libcamera/framebuffer.h>\n> > >  #include <libcamera/geometry.h>\n> > > @@ -51,6 +53,12 @@ struct StreamConfiguration {\n> > >\n> > >         std::optional<ColorSpace> colorSpace;\n> > >\n> > > +       enum class Hint {\n> > > +               None = 0,\n> > > +               OptionalStream = (1 << 0),\n> > > +       };\n> > > +       Flags<Hint> hints;\n> > > +\n> > >         Stream *stream() const { return stream_; }\n> > >         void setStream(Stream *stream) { stream_ = stream; }\n> > >         const StreamFormats &formats() const { return formats_; }\n> > > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> > > index 67f308157fbf..b7de85f8b9c7 100644\n> > > --- a/src/libcamera/stream.cpp\n> > > +++ b/src/libcamera/stream.cpp\n> > > @@ -349,6 +349,30 @@ StreamConfiguration::StreamConfiguration(const\n> > StreamFormats &formats)\n> > >   * color spaces can be supported and in what combinations.\n> > >   */\n> > >\n> > > +/**\n> > > + * \\enum StreamConfiguration::Hint\n> > > + * \\brief List of available hint flags provided by the application for\n> > a stream\n> > > + *\n> > > + * \\var StreamConfiguration::Hint::None\n> > > + * No hints for this stream.\n> > > + * \\var StreamConfiguration::Hint::OptionalStream\n> > > + * Informs the pipeline handler that the application may not always\n> > provide a\n> > > + * buffer for the configured stream in every Request. This may ensure\n> > the\n> > > + * pipeline handler allocates additional stream buffers for internal\n> > use.\n> > > + */\n> > > +\n> > > +/**\n> > > + * \\var StreamConfiguration::hints\n> > > + * \\brief Application provided StreamConfiguration::Hint flags for\n> > specific\n> > > + * stream behavior\n> > > + *\n> > > + * Provides hints from the application to the pipeline handlers on how\n> > it\n> > > + * intends on handling a given configured stream. These hints may alter\n> > the\n> > > + * behavior of the pipeline handlers, for example, by allocating\n> > additional\n> > > + * buffers for internal use if an application does not guarantee\n> > buffers will be\n> > > + * provided in every Request for a stream.\n> > > + */\n> > > +\n> > >  /**\n> > >   * \\fn StreamConfiguration::stream()\n> > >   * \\brief Retrieve the stream associated with the configuration\n> > > --\n> > > 2.25.1\n> > >\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 7410DC3240\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 10:40:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C2D16625D8;\n\tFri, 20 Jan 2023 11:40:58 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B21586045E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 11:40:57 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2AC99514;\n\tFri, 20 Jan 2023 11:40:57 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674211258;\n\tbh=FXqUkXYxVENKaeSO/J7Z5beNH3+6aHzweacAyTkCbs4=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=a4wQZkA5i1zZCm8jwlsmnKD7X1TNXq71bumvvXjSL+i5SH9C0t2enffAHjypycewr\n\tRgHQry5D0AJBe5PjRgHFW4qE7V/PdAau/vuNxN/KTbiAgP0dCpbW7fGveyaqVto/ie\n\tyGkA61RSwP1kRm0DK+uGl7aeK/NhXWNA78L4CnUX79+nDlwQvsI3mbcyWTTdpau0O7\n\tpFZwY6K6Jj3obiCIf/K8yQvYzJNgiharY0da+xFPBQWhHX24/Arh1NWflprn0+WWDb\n\tpcB0VhSH4AljX7cL0BqNQhSbsE5j/BLGZrB/t+CqcKGrZ7/53HEmOv9/ZAOtkMNAp1\n\t3FtkDcyz0o+lA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1674211257;\n\tbh=FXqUkXYxVENKaeSO/J7Z5beNH3+6aHzweacAyTkCbs4=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=DYCUDN+D4W+W51z0QKhjlvzuCEaaEKWMUd8mG4+C2O1KDQy/9wK4XytSiKuU/a/NN\n\tbnA3JCqgQtYuyL6bwH6t2HqmPjwhX9hnp/BYv9+h3wBZaMTuF1/dGTBugYTTJPcgTR\n\tfojlkI/2U37RyTLBcRXuGDJl9UTwmkxDRs6AmwE0="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"DYCUDN+D\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAEmqJPqFu-MtCa47ZoBoupcri+PZ7zHe_QKfr0dkbTbF2ghfwg@mail.gmail.com>","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPqFu-MtCa47ZoBoupcri+PZ7zHe_QKfr0dkbTbF2ghfwg@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Date":"Fri, 20 Jan 2023 10:40:54 +0000","Message-ID":"<167421125471.42371.10016931816027617078@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26274,"web_url":"https://patchwork.libcamera.org/comment/26274/","msgid":"<167421133838.42371.442505412187362174@Monstersaurus>","date":"2023-01-20T10:42:18","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Naushir Patuck (2023-01-18 11:16:40)\n> On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> kieran.bingham@ideasonboard.com> wrote:\n> \n> > Hi Naush,\n> >\n> > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > > Add a new hints flags field in the StreamConfiguration structure to\n> > allow the\n> > > application to specify certain intended behavior when driving libcamera.\n> > > Pipeline handlers are expected to look at these hint flags and may\n> > optimise\n> > > internal operations based on them.\n> > >\n> > > Currently, only one flag is listed, OptionalStream, which the\n> > application can\n> > > set to inform the pipeline handler that a buffer may not be provided on\n> > every\n> > > Request for a given stream.\n> >\n> > Sorry - Laurent had comments on this yesterday when I was discussing\n> > with him, so I don't know which way it will go yet...\n> >\n> > I still think this is the better way around, but we'll have to consider\n> > that this is an 'ABI' breakage, as now apps that were able to use two\n> > streams won't unless they explicitly provide all buffers or inform\n> > libcamera that they won't provide all buffers....\n> >\n> \n> In the earlier versions of this series, we didn't have hints but used config\n> params to indicate this.  Perhaps I should go back to this mechanism for the\n> time being to avoid any ABI breakages until there is an agreed path forward?\n\nThat's just swapping one ABI breakage for another - because then the\nhint would change (or we'd have both a 'MandatoryStream' hint, and an\n'OptionalStream' hint ?)\n\n\n\n> \n> Naush\n> \n> \n> >\n> >\n> > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > ---\n> > >  include/libcamera/stream.h |  8 ++++++++\n> > >  src/libcamera/stream.cpp   | 24 ++++++++++++++++++++++++\n> > >  2 files changed, 32 insertions(+)\n> > >\n> > > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> > > index 29235ddf0d8a..233ff0450451 100644\n> > > --- a/include/libcamera/stream.h\n> > > +++ b/include/libcamera/stream.h\n> > > @@ -13,6 +13,8 @@\n> > >  #include <string>\n> > >  #include <vector>\n> > >\n> > > +#include <libcamera/base/flags.h>\n> > > +\n> > >  #include <libcamera/color_space.h>\n> > >  #include <libcamera/framebuffer.h>\n> > >  #include <libcamera/geometry.h>\n> > > @@ -51,6 +53,12 @@ struct StreamConfiguration {\n> > >\n> > >         std::optional<ColorSpace> colorSpace;\n> > >\n> > > +       enum class Hint {\n> > > +               None = 0,\n> > > +               OptionalStream = (1 << 0),\n> > > +       };\n> > > +       Flags<Hint> hints;\n> > > +\n> > >         Stream *stream() const { return stream_; }\n> > >         void setStream(Stream *stream) { stream_ = stream; }\n> > >         const StreamFormats &formats() const { return formats_; }\n> > > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> > > index 67f308157fbf..b7de85f8b9c7 100644\n> > > --- a/src/libcamera/stream.cpp\n> > > +++ b/src/libcamera/stream.cpp\n> > > @@ -349,6 +349,30 @@ StreamConfiguration::StreamConfiguration(const\n> > StreamFormats &formats)\n> > >   * color spaces can be supported and in what combinations.\n> > >   */\n> > >\n> > > +/**\n> > > + * \\enum StreamConfiguration::Hint\n> > > + * \\brief List of available hint flags provided by the application for\n> > a stream\n> > > + *\n> > > + * \\var StreamConfiguration::Hint::None\n> > > + * No hints for this stream.\n> > > + * \\var StreamConfiguration::Hint::OptionalStream\n> > > + * Informs the pipeline handler that the application may not always\n> > provide a\n> > > + * buffer for the configured stream in every Request. This may ensure\n> > the\n> > > + * pipeline handler allocates additional stream buffers for internal\n> > use.\n> > > + */\n> > > +\n> > > +/**\n> > > + * \\var StreamConfiguration::hints\n> > > + * \\brief Application provided StreamConfiguration::Hint flags for\n> > specific\n> > > + * stream behavior\n> > > + *\n> > > + * Provides hints from the application to the pipeline handlers on how\n> > it\n> > > + * intends on handling a given configured stream. These hints may alter\n> > the\n> > > + * behavior of the pipeline handlers, for example, by allocating\n> > additional\n> > > + * buffers for internal use if an application does not guarantee\n> > buffers will be\n> > > + * provided in every Request for a stream.\n> > > + */\n> > > +\n> > >  /**\n> > >   * \\fn StreamConfiguration::stream()\n> > >   * \\brief Retrieve the stream associated with the configuration\n> > > --\n> > > 2.25.1\n> > >\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 A2BBBC3240\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 10:42:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 58149625D8;\n\tFri, 20 Jan 2023 11:42:23 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5975E6045E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 11:42:21 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 07DAD514;\n\tFri, 20 Jan 2023 11:42:20 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674211343;\n\tbh=liSVuadXpb6+rZN2nroo5P1J9S7k4FFjNtEL/ewMQxM=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=fBXv5FIqwsaKVCotNdaKSdzqEpTo9jf/DCfXuH8PCDohNjmu0jb6lJzhLRTOMsTTY\n\tnrxLPrKzg+Z5ehA6dbBHMs8M9jIlTV9tOoFHxJRkwM/HdgrkO5xALtOy7f5n0jIKFH\n\tK5iof2ye8u7I3PyEBjjrWIKZJV9xf+rfGQkq8zZEAaHbKWaBZAxS4LRWJ4hrWjC8Rv\n\tOu9qbe0VVyplXB4wv9uhPhWBtpb3T9dxAURKjqCmQQImTHTsnsxl2rnKzW/YxfXJLJ\n\t2LQjZJb+UwEDDmAKYr1QohL7ixyqPeW82X7wRcJYaEt3grSENlw1CQZQrERZ0ryI4q\n\tU5i+NhMAHh51A==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1674211341;\n\tbh=liSVuadXpb6+rZN2nroo5P1J9S7k4FFjNtEL/ewMQxM=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=m6CLWSe2PCvH5U1qAoHXEYoYO/ln5891RMOuiIT+nRIx4jDzWqyhGGUSmnXrjdBvv\n\tQAQRTS58SXOys5bx4faajujkavjSK1eqwr30EOx6YbYd20NAtmHXEYPI6lepRqZBkD\n\tlGnUyLGuEVI8izj/zgyCL/eITC977JQC3MCqBiIw="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"m6CLWSe2\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Date":"Fri, 20 Jan 2023 10:42:18 +0000","Message-ID":"<167421133838.42371.442505412187362174@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26278,"web_url":"https://patchwork.libcamera.org/comment/26278/","msgid":"<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>","date":"2023-01-20T10:53:38","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Fri, 20 Jan 2023 at 10:42, Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Quoting Naushir Patuck (2023-01-18 11:16:40)\n> > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> > kieran.bingham@ideasonboard.com> wrote:\n> >\n> > > Hi Naush,\n> > >\n> > > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > > > Add a new hints flags field in the StreamConfiguration structure to\n> > > allow the\n> > > > application to specify certain intended behavior when driving\n> libcamera.\n> > > > Pipeline handlers are expected to look at these hint flags and may\n> > > optimise\n> > > > internal operations based on them.\n> > > >\n> > > > Currently, only one flag is listed, OptionalStream, which the\n> > > application can\n> > > > set to inform the pipeline handler that a buffer may not be provided\n> on\n> > > every\n> > > > Request for a given stream.\n> > >\n> > > Sorry - Laurent had comments on this yesterday when I was discussing\n> > > with him, so I don't know which way it will go yet...\n> > >\n> > > I still think this is the better way around, but we'll have to consider\n> > > that this is an 'ABI' breakage, as now apps that were able to use two\n> > > streams won't unless they explicitly provide all buffers or inform\n> > > libcamera that they won't provide all buffers....\n> > >\n> >\n> > In the earlier versions of this series, we didn't have hints but used\n> config\n> > params to indicate this.  Perhaps I should go back to this mechanism for\n> the\n> > time being to avoid any ABI breakages until there is an agreed path\n> forward?\n>\n> That's just swapping one ABI breakage for another - because then the\n> hint would change (or we'd have both a 'MandatoryStream' hint, and an\n> 'OptionalStream' hint ?)\n>\n\nIf the \"hint\" were to move back to the config file, I would make it such\nthat the value is true for applications that provide buffers for every\nconfigured stream on every request.\nThis would be defaulted to false, and libcamera-apps/picamera2 would set a\nconfig file with the flag to true.  This would preserve behavior for any\nother existing applications that don't pass in a configuration file, though\nit may be suboptimal with allocations.  No ABI breakages either...\n\n\n\n>\n>\n>\n> >\n> > Naush\n> >\n> >\n> > >\n> > >\n> > > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > > ---\n> > > >  include/libcamera/stream.h |  8 ++++++++\n> > > >  src/libcamera/stream.cpp   | 24 ++++++++++++++++++++++++\n> > > >  2 files changed, 32 insertions(+)\n> > > >\n> > > > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> > > > index 29235ddf0d8a..233ff0450451 100644\n> > > > --- a/include/libcamera/stream.h\n> > > > +++ b/include/libcamera/stream.h\n> > > > @@ -13,6 +13,8 @@\n> > > >  #include <string>\n> > > >  #include <vector>\n> > > >\n> > > > +#include <libcamera/base/flags.h>\n> > > > +\n> > > >  #include <libcamera/color_space.h>\n> > > >  #include <libcamera/framebuffer.h>\n> > > >  #include <libcamera/geometry.h>\n> > > > @@ -51,6 +53,12 @@ struct StreamConfiguration {\n> > > >\n> > > >         std::optional<ColorSpace> colorSpace;\n> > > >\n> > > > +       enum class Hint {\n> > > > +               None = 0,\n> > > > +               OptionalStream = (1 << 0),\n> > > > +       };\n> > > > +       Flags<Hint> hints;\n> > > > +\n> > > >         Stream *stream() const { return stream_; }\n> > > >         void setStream(Stream *stream) { stream_ = stream; }\n> > > >         const StreamFormats &formats() const { return formats_; }\n> > > > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> > > > index 67f308157fbf..b7de85f8b9c7 100644\n> > > > --- a/src/libcamera/stream.cpp\n> > > > +++ b/src/libcamera/stream.cpp\n> > > > @@ -349,6 +349,30 @@ StreamConfiguration::StreamConfiguration(const\n> > > StreamFormats &formats)\n> > > >   * color spaces can be supported and in what combinations.\n> > > >   */\n> > > >\n> > > > +/**\n> > > > + * \\enum StreamConfiguration::Hint\n> > > > + * \\brief List of available hint flags provided by the application\n> for\n> > > a stream\n> > > > + *\n> > > > + * \\var StreamConfiguration::Hint::None\n> > > > + * No hints for this stream.\n> > > > + * \\var StreamConfiguration::Hint::OptionalStream\n> > > > + * Informs the pipeline handler that the application may not always\n> > > provide a\n> > > > + * buffer for the configured stream in every Request. This may\n> ensure\n> > > the\n> > > > + * pipeline handler allocates additional stream buffers for internal\n> > > use.\n> > > > + */\n> > > > +\n> > > > +/**\n> > > > + * \\var StreamConfiguration::hints\n> > > > + * \\brief Application provided StreamConfiguration::Hint flags for\n> > > specific\n> > > > + * stream behavior\n> > > > + *\n> > > > + * Provides hints from the application to the pipeline handlers on\n> how\n> > > it\n> > > > + * intends on handling a given configured stream. These hints may\n> alter\n> > > the\n> > > > + * behavior of the pipeline handlers, for example, by allocating\n> > > additional\n> > > > + * buffers for internal use if an application does not guarantee\n> > > buffers will be\n> > > > + * provided in every Request for a stream.\n> > > > + */\n> > > > +\n> > > >  /**\n> > > >   * \\fn StreamConfiguration::stream()\n> > > >   * \\brief Retrieve the stream associated with the configuration\n> > > > --\n> > > > 2.25.1\n> > > >\n> > >\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 BA7CEBE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 10:53:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 76F2F625D8;\n\tFri, 20 Jan 2023 11:53:57 +0100 (CET)","from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com\n\t[IPv6:2607:f8b0:4864:20::b29])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 58A2B6045E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 11:53:55 +0100 (CET)","by mail-yb1-xb29.google.com with SMTP id 188so6158782ybi.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 02:53:55 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674212037;\n\tbh=LmShtA634qL7Hlx4THCPyf7CfrAi2L0s2yAKNez3S10=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=Sc8HhcPfMDf8ECRVpPSAylChNCggt3VV7+AEC4SMlNXKJ+3A7Px0s1LGFrPvfmtPB\n\tvSIrQ8RVBO+dARDaciJ4IgIFPgOXrz1L6OfQ17XidMmg53CaNiM4QVbKeN4DB8PG2U\n\tqAKQk9ecvVCM+TuD67p3+Kf+I1PhKlkxO5bxjtojyNvUAIhOaGAvE2mrqGFjqStaxo\n\tgs/uJ/gaR/PTGDrxkiGxbEjAo8w7tYCc+18fa8h/EFvW5OwsPF1IyBhwXyhgprDzJR\n\tFUQHUX46YDU/L/xYLQwNVBxlUV8/e4fqlhuwuec/KjpvD83ktR9rm3YFo2H5O2q8Go\n\tFvLiGKfzzyT6g==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=Ube/ArgtSWcu7C5cUDJQOg4P/e1bfJGmQSApfB4DbBA=;\n\tb=cUhwv+CCLzhsiQ/oOLg6MhDWK4JsEDNFNHxqcqb0+tCc1/aLN3sR7ZQuWO9Kjn7iHY\n\t3UmFHieg6imSUbG0dq6FYyDN6KacIuYjFZ5/fGnIP/BNHH//1z/KW9xGjmAMGiwv1S6d\n\tIuZpbvGrvbq/MqeHdrsZTHJgjPB0LY/6g6LvZA9Q+T0/ueQ3xv/iMK3xvO7HjRi0IY3F\n\tTgeNr19lJXdxhoOlF5KUvqXWuwzObFQXhgiKNJUwk11wSkMzCJ998s5aOoJatz7aXo2J\n\twwVLgvDLArIO5R0MQ9TMo/ah2UDKWyqDDQUX7dXCPE8yWEII6l6S4ZBZQ+2LqmKd6DTo\n\thLNg=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"cUhwv+CC\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=Ube/ArgtSWcu7C5cUDJQOg4P/e1bfJGmQSApfB4DbBA=;\n\tb=EE88lc+YzHi42jdERmKL4Yqr1TbdeeBbxy01W3EB2oB27CFi0catRA8VD8UAEeQMdp\n\tHBupQSntOgyGGs6gXWgc/gLzgk/5aGxjD7JZTqgXuIgJFacPgi89XtyDUjxHCguVz42/\n\tNufXq0s1wM+UGS2zy0XylWeZzb+AQpXyfB2GYXL5r/7xoPpyyOQRbHlsJh//4Hro3FDO\n\tUxKtBu8MZn1wNLTUq4GlxhuZwpbAhgqSfXn4LpUaZX6WQ5vlH04Qc002WsQ06uJwsQpj\n\t8EKLLpCTeDrcQtCwfDu2QE7Uv+VWJo45azxuqWw9oGKf3lHTtQllSFjXy4hJEI6LXO4O\n\twYRg==","X-Gm-Message-State":"AFqh2krqp1VsJJ5K0w/mNfaPG9MsRrWx4gy/ihx4R2G0tin2GdkgkNhq\n\ttExwKLgaoS4OMjZ4snBPxV09X6hyF84UOSL3Woz98qleAF0GSSOL8w8=","X-Google-Smtp-Source":"AMrXdXuBbKroWA0q5OQnnrNkjaSf7V03IbzKTFahx+rdxJiQwCmCqv8PlnalpN/8sw8u6djTxlft7Ba5PKhZcpw98gM=","X-Received":"by 2002:a25:8a91:0:b0:7ff:fd5f:f4c3 with SMTP id\n\th17-20020a258a91000000b007fffd5ff4c3mr287813ybl.223.1674212034305;\n\tFri, 20 Jan 2023 02:53:54 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>","In-Reply-To":"<167421133838.42371.442505412187362174@Monstersaurus>","Date":"Fri, 20 Jan 2023 10:53:38 +0000","Message-ID":"<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"0000000000009576a305f2afdd6a\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26280,"web_url":"https://patchwork.libcamera.org/comment/26280/","msgid":"<CAEmqJPqw8+mScMpbjyOP_HL0+0PzSDoUdYL6zZAhYFj6vfzTCw@mail.gmail.com>","date":"2023-01-20T10:55:26","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Kieran,\n\nOn Fri, 20 Jan 2023 at 10:40, Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Quoting Naushir Patuck (2023-01-20 08:04:41)\n> > Hi all,\n> >\n> >\n> > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> > kieran.bingham@ideasonboard.com> wrote:\n> >\n> > > Hi Naush,\n> > >\n> > > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > > > Add a new hints flags field in the StreamConfiguration structure to\n> > > allow the\n> > > > application to specify certain intended behavior when driving\n> libcamera.\n> > > > Pipeline handlers are expected to look at these hint flags and may\n> > > optimise\n> > > > internal operations based on them.\n> > > >\n> > > > Currently, only one flag is listed, OptionalStream, which the\n> > > application can\n> > > > set to inform the pipeline handler that a buffer may not be provided\n> on\n> > > every\n> > > > Request for a given stream.\n> > >\n> > > Sorry - Laurent had comments on this yesterday when I was discussing\n> > > with him, so I don't know which way it will go yet...\n> > >\n> > > I still think this is the better way around, but we'll have to consider\n> > > that this is an 'ABI' breakage, as now apps that were able to use two\n> > > streams won't unless they explicitly provide all buffers or inform\n> > > libcamera that they won't provide all buffers....\n> > >\n> >\n> > Has there been any consensus reached on this?\n> > I'm keen to get out an updated patch by the end of the day if any other\n> > changes are needed.\n>\n> I'm still trying to get to the bottom of all the consequences either\n> way.\n>\n> I'm afraid now I have a worry about 'my' suggestion to require\n> applications to specify optional streams.\n>\n> At the moment, I think the only way to directly configure the sensor\n> mode is to configure a raw stream, and then simply not request buffers\n> on that stream. If we make it so applictions must declare that the\n> stream is an OptionalStream - setting the raw sensor mode would likely\n> have to directly inform that the raw buffers are not going to be\n> provided.\n>\n> That might not be a bad thing, but I wanted to highlight it.\n>\n> Are there any other / better options to configure the sensor mode?\n>\n\nThis is the only way to configure a particular sensor mode with the\nexisting API.\n\nRegards,\nNaush\n\n\n>\n> --\n> Kieran\n>\n>\n>\n> >\n> > Regards,\n> > Naush\n> >\n> >\n> > >\n> > >\n> > > > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > > > ---\n> > > >  include/libcamera/stream.h |  8 ++++++++\n> > > >  src/libcamera/stream.cpp   | 24 ++++++++++++++++++++++++\n> > > >  2 files changed, 32 insertions(+)\n> > > >\n> > > > diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> > > > index 29235ddf0d8a..233ff0450451 100644\n> > > > --- a/include/libcamera/stream.h\n> > > > +++ b/include/libcamera/stream.h\n> > > > @@ -13,6 +13,8 @@\n> > > >  #include <string>\n> > > >  #include <vector>\n> > > >\n> > > > +#include <libcamera/base/flags.h>\n> > > > +\n> > > >  #include <libcamera/color_space.h>\n> > > >  #include <libcamera/framebuffer.h>\n> > > >  #include <libcamera/geometry.h>\n> > > > @@ -51,6 +53,12 @@ struct StreamConfiguration {\n> > > >\n> > > >         std::optional<ColorSpace> colorSpace;\n> > > >\n> > > > +       enum class Hint {\n> > > > +               None = 0,\n> > > > +               OptionalStream = (1 << 0),\n> > > > +       };\n> > > > +       Flags<Hint> hints;\n> > > > +\n> > > >         Stream *stream() const { return stream_; }\n> > > >         void setStream(Stream *stream) { stream_ = stream; }\n> > > >         const StreamFormats &formats() const { return formats_; }\n> > > > diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> > > > index 67f308157fbf..b7de85f8b9c7 100644\n> > > > --- a/src/libcamera/stream.cpp\n> > > > +++ b/src/libcamera/stream.cpp\n> > > > @@ -349,6 +349,30 @@ StreamConfiguration::StreamConfiguration(const\n> > > StreamFormats &formats)\n> > > >   * color spaces can be supported and in what combinations.\n> > > >   */\n> > > >\n> > > > +/**\n> > > > + * \\enum StreamConfiguration::Hint\n> > > > + * \\brief List of available hint flags provided by the application\n> for\n> > > a stream\n> > > > + *\n> > > > + * \\var StreamConfiguration::Hint::None\n> > > > + * No hints for this stream.\n> > > > + * \\var StreamConfiguration::Hint::OptionalStream\n> > > > + * Informs the pipeline handler that the application may not always\n> > > provide a\n> > > > + * buffer for the configured stream in every Request. This may\n> ensure\n> > > the\n> > > > + * pipeline handler allocates additional stream buffers for internal\n> > > use.\n> > > > + */\n> > > > +\n> > > > +/**\n> > > > + * \\var StreamConfiguration::hints\n> > > > + * \\brief Application provided StreamConfiguration::Hint flags for\n> > > specific\n> > > > + * stream behavior\n> > > > + *\n> > > > + * Provides hints from the application to the pipeline handlers on\n> how\n> > > it\n> > > > + * intends on handling a given configured stream. These hints may\n> alter\n> > > the\n> > > > + * behavior of the pipeline handlers, for example, by allocating\n> > > additional\n> > > > + * buffers for internal use if an application does not guarantee\n> > > buffers will be\n> > > > + * provided in every Request for a stream.\n> > > > + */\n> > > > +\n> > > >  /**\n> > > >   * \\fn StreamConfiguration::stream()\n> > > >   * \\brief Retrieve the stream associated with the configuration\n> > > > --\n> > > > 2.25.1\n> > > >\n> > >\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 300E0BE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 10:55:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D69C8625E4;\n\tFri, 20 Jan 2023 11:55:44 +0100 (CET)","from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com\n\t[IPv6:2607:f8b0:4864:20::b29])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 73DDE6045E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 11:55:43 +0100 (CET)","by mail-yb1-xb29.google.com with SMTP id 129so2190462ybb.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 02:55:43 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674212144;\n\tbh=G7TAmKeyl6rX5saiJ1MjUkgotww8EaHqs2VTNycr3oI=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=0XIY3hpfPdlZ5L14IPQ1We6hxhVYqYmxZ2VthCc5S6lzDXdIzR42Ga6x+RbVfOtnO\n\tr4QdnulxpnI+815xAlvH+SXv7mZUZd7yWMmm24zHQ7ilVXn9zL+0RMMS1kbfakPmWB\n\th82pczeVen2zGjrw8ZNTc8J4datSeux4RFORt6ToxaxKEgLkxrVkaizgEHm6LMeRG8\n\tstzlZUVzzQDkA1vfXDnKb7w+7FSviVPo5yqC8qkreOzrabrhzxoQ5u0zLdJFNutQp5\n\tHbKHH0ugmc0NGna0popAaUL9A84UvSEistDg8FLMX6NyoCRCl3ctBiVQkxz0k+a+x1\n\t9tmlrKN1+CVEA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=U/NL3Hgo2srJaOP3iVxRpeTjIwoXzGZEDuckqYIdeDg=;\n\tb=nhVaZPJKfNUTs4420DrSpRWx1+1ggUBj1Eb+Uqqycr+GirwluQRKY7IT0RdPTH0c/L\n\tk89j2mmoc1Bl0BX9JC+iHvvdTsajEFr2B4K29Et9A10XR6crx8D2je34WoDoI9UPSPzB\n\tOFS4leGHtWtzr1URXK21Uett4MOEJ+S+4kQXFLokkd2iLfu7KTGaepyvjq5jcyFqRw8t\n\tNm7JK3hkaovTKFQUoZ0CvkaYLJgy7b22FRfDDsvPXnIqy0lhrRvDdSjEEdkN6M/V/D78\n\tAj6aCKHVXga7Vd/Qb8elz9tuoUQsV18QMURhk6KMEfvzzQxqQjs3Bb4K9AkOjN+8FJoW\n\tJgaA=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"nhVaZPJK\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=U/NL3Hgo2srJaOP3iVxRpeTjIwoXzGZEDuckqYIdeDg=;\n\tb=giAUtZaoDPfuKb3DT/X6hrsJbq+o9YeDJSY4Jx0VfrO240mJ5leeeCB9F5aCAFB06l\n\t2UG4nfQqB/T6xP40lmvVyGjTeU7CkVRaOv0uRFf7vj71ket+5Fm/zHq0hleiK9atJ2uQ\n\tTQAsbu2g38HEAaIhxSGTwlaturSbBxVKTr+lalKWsobu/toViMzhBYER/GdHbKdZy/gH\n\tHEx6/WHNbxXmusD0fGhVBweTybcdsiQau0mE0eF//zs0HFsuqCeNQpVP1v9JBgUPDMcJ\n\tsdg/QaOOOiRV5BP/MO48NyHje8u2r5cf1SZcUN/pQKE7nF2MKPz/xLQdL26mMZOesLT3\n\ttJgA==","X-Gm-Message-State":"AFqh2kpt4ZrICfzZemHePUs995F6DtNuhSvgm2ZUJPkycatmcF2alcfo\n\tnpfTmeORuS6Hp5jV5tG9oP5RBhPyjb5IjU3PLGIBbA==","X-Google-Smtp-Source":"AMrXdXtS2Zuk6SNLQXLF2FQbmu4SrUhlJwnkwpeALrdaZ0Awm7/bt1fNUGxT8ktAgVuZgRCnja6KJx+j+7xW2k2SCc0=","X-Received":"by 2002:a25:8a91:0:b0:7ff:fd5f:f4c3 with SMTP id\n\th17-20020a258a91000000b007fffd5ff4c3mr288172ybl.223.1674212142411;\n\tFri, 20 Jan 2023 02:55:42 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPqFu-MtCa47ZoBoupcri+PZ7zHe_QKfr0dkbTbF2ghfwg@mail.gmail.com>\n\t<167421125471.42371.10016931816027617078@Monstersaurus>","In-Reply-To":"<167421125471.42371.10016931816027617078@Monstersaurus>","Date":"Fri, 20 Jan 2023 10:55:26 +0000","Message-ID":"<CAEmqJPqw8+mScMpbjyOP_HL0+0PzSDoUdYL6zZAhYFj6vfzTCw@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"0000000000000705dc05f2afe470\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26287,"web_url":"https://patchwork.libcamera.org/comment/26287/","msgid":"<167421405379.42371.7092889898443630232@Monstersaurus>","date":"2023-01-20T11:27:33","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Naushir Patuck (2023-01-20 10:53:38)\n> On Fri, 20 Jan 2023 at 10:42, Kieran Bingham <\n> kieran.bingham@ideasonboard.com> wrote:\n> \n> > Quoting Naushir Patuck (2023-01-18 11:16:40)\n> > > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> > > kieran.bingham@ideasonboard.com> wrote:\n> > >\n> > > > Hi Naush,\n> > > >\n> > > > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > > > > Add a new hints flags field in the StreamConfiguration structure to\n> > > > allow the\n> > > > > application to specify certain intended behavior when driving\n> > libcamera.\n> > > > > Pipeline handlers are expected to look at these hint flags and may\n> > > > optimise\n> > > > > internal operations based on them.\n> > > > >\n> > > > > Currently, only one flag is listed, OptionalStream, which the\n> > > > application can\n> > > > > set to inform the pipeline handler that a buffer may not be provided\n> > on\n> > > > every\n> > > > > Request for a given stream.\n> > > >\n> > > > Sorry - Laurent had comments on this yesterday when I was discussing\n> > > > with him, so I don't know which way it will go yet...\n> > > >\n> > > > I still think this is the better way around, but we'll have to consider\n> > > > that this is an 'ABI' breakage, as now apps that were able to use two\n> > > > streams won't unless they explicitly provide all buffers or inform\n> > > > libcamera that they won't provide all buffers....\n> > > >\n> > >\n> > > In the earlier versions of this series, we didn't have hints but used\n> > config\n> > > params to indicate this.  Perhaps I should go back to this mechanism for\n> > the\n> > > time being to avoid any ABI breakages until there is an agreed path\n> > forward?\n> >\n> > That's just swapping one ABI breakage for another - because then the\n> > hint would change (or we'd have both a 'MandatoryStream' hint, and an\n> > 'OptionalStream' hint ?)\n> >\n> \n> If the \"hint\" were to move back to the config file, I would make it such\n\nMove back to ? Was there previous discussion that moved this out of a\nconfig file that I've missed?\n\n\n> that the value is true for applications that provide buffers for every\n> configured stream on every request.\n> This would be defaulted to false, and libcamera-apps/picamera2 would set a\n> config file with the flag to true.  This would preserve behavior for any\n> other existing applications that don't pass in a configuration file, though\n> it may be suboptimal with allocations.  No ABI breakages either...\n\n--\nKieran","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 D2CB0C3240\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 11:27:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 932D5625E4;\n\tFri, 20 Jan 2023 12:27:37 +0100 (CET)","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 C7A1B61EFD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 12:27:36 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 67F70514;\n\tFri, 20 Jan 2023 12:27:36 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674214057;\n\tbh=P6hZUhPAENSysHp9FJ+nHI0re1CBuXhPj7NEaULeMZQ=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=JwqHdxCTt/If01wWOsxjNQF4SIHbSdb6VCG2eDKciSprApj5w3H/zwul32BgFdFUD\n\t1FD8ASw0Bkve7zlvbVQbyFLFPBa6urfLb62ZG1ChdXnuLe3dTu8qhl+x3sL43aLb9I\n\tnSKMlctc7G6MTOC3UUvkoNfBa889IQ9aMp5W3TFepRT9lC8s84lwPjq4BqbfqQezuI\n\tw0rd5DV3rElqzciaHKsY8afafPCp4jW3k8E6JutCe9dvkgxOBUXt/u5coHDbIpeuxJ\n\t8/wNuXlqRgXPiS+OtWBxEpm74xznDsLEXVsLGy9scvJtZE79KedBkBEpDGWkhgqlyk\n\tm3WVu5zW30xwQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1674214056;\n\tbh=P6hZUhPAENSysHp9FJ+nHI0re1CBuXhPj7NEaULeMZQ=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=BPKKA7rsagcjHJK9szz/3w3Mh+aMDDoJ9ASE51AxkcPATP6cZNyyjAoPBJYettOO5\n\tfen9S+XSvAYGNRFE1vLjyHar6508Juv3VrYBp5D5mirlKmsBoYO4F5hd2wiBUaLPS9\n\tNmE+AjyMEsAOFU47h9adRz4KxXZsI88vqy6u9HGQ="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"BPKKA7rs\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>\n\t<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Date":"Fri, 20 Jan 2023 11:27:33 +0000","Message-ID":"<167421405379.42371.7092889898443630232@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26288,"web_url":"https://patchwork.libcamera.org/comment/26288/","msgid":"<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>","date":"2023-01-20T11:34:30","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Fri, 20 Jan 2023 at 11:27, Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Quoting Naushir Patuck (2023-01-20 10:53:38)\n> > On Fri, 20 Jan 2023 at 10:42, Kieran Bingham <\n> > kieran.bingham@ideasonboard.com> wrote:\n> >\n> > > Quoting Naushir Patuck (2023-01-18 11:16:40)\n> > > > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> > > > kieran.bingham@ideasonboard.com> wrote:\n> > > >\n> > > > > Hi Naush,\n> > > > >\n> > > > > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > > > > > Add a new hints flags field in the StreamConfiguration structure\n> to\n> > > > > allow the\n> > > > > > application to specify certain intended behavior when driving\n> > > libcamera.\n> > > > > > Pipeline handlers are expected to look at these hint flags and\n> may\n> > > > > optimise\n> > > > > > internal operations based on them.\n> > > > > >\n> > > > > > Currently, only one flag is listed, OptionalStream, which the\n> > > > > application can\n> > > > > > set to inform the pipeline handler that a buffer may not be\n> provided\n> > > on\n> > > > > every\n> > > > > > Request for a given stream.\n> > > > >\n> > > > > Sorry - Laurent had comments on this yesterday when I was\n> discussing\n> > > > > with him, so I don't know which way it will go yet...\n> > > > >\n> > > > > I still think this is the better way around, but we'll have to\n> consider\n> > > > > that this is an 'ABI' breakage, as now apps that were able to use\n> two\n> > > > > streams won't unless they explicitly provide all buffers or inform\n> > > > > libcamera that they won't provide all buffers....\n> > > > >\n> > > >\n> > > > In the earlier versions of this series, we didn't have hints but used\n> > > config\n> > > > params to indicate this.  Perhaps I should go back to this mechanism\n> for\n> > > the\n> > > > time being to avoid any ABI breakages until there is an agreed path\n> > > forward?\n> > >\n> > > That's just swapping one ABI breakage for another - because then the\n> > > hint would change (or we'd have both a 'MandatoryStream' hint, and an\n> > > 'OptionalStream' hint ?)\n> > >\n> >\n> > If the \"hint\" were to move back to the config file, I would make it such\n>\n> Move back to ? Was there previous discussion that moved this out of a\n> config file that I've missed?\n>\n\nIn earlier versions of this series, these hints were effectively flags in\nthe config files.\nIt was suggested to move these into the StreamConfig as hints since they\nmay be useful to other pipeline handlers, and enforce explicit application\nbehavior through the API.\n\n\n>\n> > that the value is true for applications that provide buffers for every\n> > configured stream on every request.\n> > This would be defaulted to false, and libcamera-apps/picamera2 would set\n> a\n> > config file with the flag to true.  This would preserve behavior for any\n> > other existing applications that don't pass in a configuration file,\n> though\n> > it may be suboptimal with allocations.  No ABI breakages either...\n>\n> --\n> Kieran\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 46F30BE175\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 11:34:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B0B54625D8;\n\tFri, 20 Jan 2023 12:34:49 +0100 (CET)","from mail-yw1-x1134.google.com (mail-yw1-x1134.google.com\n\t[IPv6:2607:f8b0:4864:20::1134])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A03FF61EFD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 12:34:47 +0100 (CET)","by mail-yw1-x1134.google.com with SMTP id\n\t00721157ae682-4c131bede4bso68060757b3.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 03:34:47 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674214489;\n\tbh=2zSxK24WlPTn3KVtGibDVTg516YmicwGS0HcXybyJg8=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=CkhkzFaBv/m2fKsNulDRLdKiPaL0Pxr3GHH3vySlKcl1fIavyEiyy1qfM3CvL3m3P\n\tHxxk1fQMbxFPOAbl00pYHCwEfSjnMfIrV8dhVfRRMl5wlA39IVoxcy/pT38iO032tN\n\thVPOwnUXtB7VwhHIiknJW2z7s+ilq47f2UOqt4J7st2jwT6lM6UBpXh1eMAGlhiaoY\n\tjsnF54UxYYv/D6o4c6Ay0A1NA0iEf9+0H1h2yJBkVN2UDG8/SfH3DF28OUJRI/W8lT\n\tyKpMTVI8Sg42Yln3KcgHk4y3JD9doyXC+UVGZWVf13ysJV+YB2dbsw5ZfFdYlVEmvP\n\tiem49FUjZ8aSA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=9iTApO/ZRJGIMD8dvaTstePIN8VZtBNgonAv7Jx1fRU=;\n\tb=UtteEe7cXC/g2xnPjldUzILtltDQ3BXmqaZIy7xseAgbeGPizNkmeuMAlG1bJlPUI4\n\tVkklpqINjXJbAr2fCWVYvvUqWr3xDU7XIHqXE8VB0dbBQxWidmPGQr+n0fvSinuCqnI0\n\t/fWpBpnJiepfgcHEJaHtwPY+7ZMuw4K64wcG26wwZhqfff7IVYNbDbPIbpmF6QPMGIW1\n\t9Gj1nlRG/3lnZkJV35TDrCKQ7k1F/7xwiUapiouO0aHs9HUUOgl61lgVIbbHckdnK1z+\n\tnLDwUo3dShsHvSLlmL4PgwQBmgSIrNGA55w+frsdRrARy/hEMwrar+0ww2pjeXi0d06+\n\txfew=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"UtteEe7c\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=9iTApO/ZRJGIMD8dvaTstePIN8VZtBNgonAv7Jx1fRU=;\n\tb=hajBjfOyhnjn0exjATPfmbB5cK6XxKXaRCsEKYfy+0bbIUc2XMYPpP+n+QqwZ0Yolx\n\t+uU7heGMwKkx/6oGrpIKnA/95bRLWZWMUmOVnIcf+6fEJjH+uOwmMIU/itilvN9GOHg8\n\t8v+tWI8jxf903Ci6BQm/hQknTCF9BQxLf6HopfUYVvc42ifg7FF9mQA9fxztsVOrPmaO\n\tsy7ofaNjP+ffOOu2AO+AcMhN4zIDk0pCA+uq0Fbk+76VvbXcOhV0VBM8lU9dPMePWKaZ\n\tjYphG9uf8iTzXP0RP36bPyTloqpi5BR9oNbY3bvxP+JpIae8uDHkdUDGy2mS4fBZQDpW\n\tspvw==","X-Gm-Message-State":"AFqh2koCCmlvNow2qnxFUnTzh9xHuaYkIRZdJcxZ3sj414sqHwLxplma\n\tyyue16Qnm56IcI5/vbTQfefXUP2drxacz+JzqRCP0oT9uWZYYvfE","X-Google-Smtp-Source":"AMrXdXtOikWuJmh7/qNXJZAuwO6zKtVOEqYW9RyrZaKZ14QiufvmBzbmmV7n1STKxb1+qxpTO/sj/yqdzwv5lhSThwc=","X-Received":"by 2002:a81:55c9:0:b0:358:36cc:b6cf with SMTP id\n\tj192-20020a8155c9000000b0035836ccb6cfmr1720341ywb.505.1674214486218;\n\tFri, 20 Jan 2023 03:34:46 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>\n\t<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>\n\t<167421405379.42371.7092889898443630232@Monstersaurus>","In-Reply-To":"<167421405379.42371.7092889898443630232@Monstersaurus>","Date":"Fri, 20 Jan 2023 11:34:30 +0000","Message-ID":"<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"000000000000baae4b05f2b06f5e\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26290,"web_url":"https://patchwork.libcamera.org/comment/26290/","msgid":"<167421493884.42371.531419197244492875@Monstersaurus>","date":"2023-01-20T11:42:18","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Naushir Patuck (2023-01-20 11:34:30)\n> On Fri, 20 Jan 2023 at 11:27, Kieran Bingham <\n> kieran.bingham@ideasonboard.com> wrote:\n> \n> > Quoting Naushir Patuck (2023-01-20 10:53:38)\n> > > On Fri, 20 Jan 2023 at 10:42, Kieran Bingham <\n> > > kieran.bingham@ideasonboard.com> wrote:\n> > >\n> > > > Quoting Naushir Patuck (2023-01-18 11:16:40)\n> > > > > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> > > > > kieran.bingham@ideasonboard.com> wrote:\n> > > > >\n> > > > > > Hi Naush,\n> > > > > >\n> > > > > > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > > > > > > Add a new hints flags field in the StreamConfiguration structure\n> > to\n> > > > > > allow the\n> > > > > > > application to specify certain intended behavior when driving\n> > > > libcamera.\n> > > > > > > Pipeline handlers are expected to look at these hint flags and\n> > may\n> > > > > > optimise\n> > > > > > > internal operations based on them.\n> > > > > > >\n> > > > > > > Currently, only one flag is listed, OptionalStream, which the\n> > > > > > application can\n> > > > > > > set to inform the pipeline handler that a buffer may not be\n> > provided\n> > > > on\n> > > > > > every\n> > > > > > > Request for a given stream.\n> > > > > >\n> > > > > > Sorry - Laurent had comments on this yesterday when I was\n> > discussing\n> > > > > > with him, so I don't know which way it will go yet...\n> > > > > >\n> > > > > > I still think this is the better way around, but we'll have to\n> > consider\n> > > > > > that this is an 'ABI' breakage, as now apps that were able to use\n> > two\n> > > > > > streams won't unless they explicitly provide all buffers or inform\n> > > > > > libcamera that they won't provide all buffers....\n> > > > > >\n> > > > >\n> > > > > In the earlier versions of this series, we didn't have hints but used\n> > > > config\n> > > > > params to indicate this.  Perhaps I should go back to this mechanism\n> > for\n> > > > the\n> > > > > time being to avoid any ABI breakages until there is an agreed path\n> > > > forward?\n> > > >\n> > > > That's just swapping one ABI breakage for another - because then the\n> > > > hint would change (or we'd have both a 'MandatoryStream' hint, and an\n> > > > 'OptionalStream' hint ?)\n> > > >\n> > >\n> > > If the \"hint\" were to move back to the config file, I would make it such\n> >\n> > Move back to ? Was there previous discussion that moved this out of a\n> > config file that I've missed?\n> >\n> \n> In earlier versions of this series, these hints were effectively flags in\n> the config files.\n> It was suggested to move these into the StreamConfig as hints since they\n> may be useful to other pipeline handlers, and enforce explicit application\n> behavior through the API.\n> \n\nOk - in that case, that confirms that the checks/assertions in [9/12]\nshould be in the core, not just against raspberry pi pipeline handler.\n\nThis may also require updating any tests that could be affected, and\nlc-compliance.\n\nIt may be helpful to split out this core API 'hint's part to it's own\nseries as I don't think it should necessarily block the configuration\nfile work here.\n\n--\nKB\n\n\n> > > that the value is true for applications that provide buffers for every\n> > > configured stream on every request.\n> > > This would be defaulted to false, and libcamera-apps/picamera2 would set\n> > a\n> > > config file with the flag to true.  This would preserve behavior for any\n> > > other existing applications that don't pass in a configuration file,\n> > though\n> > > it may be suboptimal with allocations.  No ABI breakages either...\n> >\n> > --\n> > Kieran\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 DA435C3240\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 11:42:23 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 38F7B625D8;\n\tFri, 20 Jan 2023 12:42:23 +0100 (CET)","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 AD98D61EFD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 12:42:21 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4292C514;\n\tFri, 20 Jan 2023 12:42:21 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674214943;\n\tbh=gKR3zu3cqWXn3MH2g1o35MOnBbAEUnTUfeQY/ZMXMNI=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=2JJ+Pn606hQT/hAy6xv8w9ULsrzWmJW8x9no+xnHCHTXYxKrJ1MMWx/MM+HDP9vON\n\tntJrvDSuy0I1k+sZjpf+yzSMOZ9dnSKO7Hno53C70BhT++qUYTK+/cKkSHvlOL277X\n\tgDFagJntNeVvpK2gYBZ/6ncKXDzy5wo6/5EtOjH3EMMwp4K9Wv3l/Y2lzPCnGfU8vo\n\tohs/niC13hRC/gEjci5w+sFJzAoHOity2NlQSoOnbleWZVEC77YKXsITusyh4VjAly\n\tCZkdxzyJUJyfqpVWt36Fr/Z2gZ2DgEJ4vCc8tSwllqoQWb87Z6HAMvGrf88jbINl7L\n\tVeXk0vhDJK1fw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1674214941;\n\tbh=gKR3zu3cqWXn3MH2g1o35MOnBbAEUnTUfeQY/ZMXMNI=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=CF0WfdUeailOsuhKUKfoMa5wDZqd0FgUy+b+vEnTvs+sZ//nbWB85QaaOUC3spqAi\n\tBcJ9jxxSlxmCmdrurIQ7jjgyLadj6r8KfKFFGtrXkFgyIdzMRz1mdHF5lQ3J/h2Wuo\n\tAtx8eYRL7P52YOictKaVaWKWft9xwsMItUzLlF9Q="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"CF0WfdUe\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>\n\t<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>\n\t<167421405379.42371.7092889898443630232@Monstersaurus>\n\t<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Date":"Fri, 20 Jan 2023 11:42:18 +0000","Message-ID":"<167421493884.42371.531419197244492875@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26293,"web_url":"https://patchwork.libcamera.org/comment/26293/","msgid":"<CAEmqJPpa4MT-aYx7Kb4G5FTRYZEnpDnM4aRZ3nzVvQgOfJhSUg@mail.gmail.com>","date":"2023-01-20T12:29:40","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Kieran,\n\nOn Fri, 20 Jan 2023 at 11:42, Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Quoting Naushir Patuck (2023-01-20 11:34:30)\n> > On Fri, 20 Jan 2023 at 11:27, Kieran Bingham <\n> > kieran.bingham@ideasonboard.com> wrote:\n> >\n> > > Quoting Naushir Patuck (2023-01-20 10:53:38)\n> > > > On Fri, 20 Jan 2023 at 10:42, Kieran Bingham <\n> > > > kieran.bingham@ideasonboard.com> wrote:\n> > > >\n> > > > > Quoting Naushir Patuck (2023-01-18 11:16:40)\n> > > > > > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n> > > > > > kieran.bingham@ideasonboard.com> wrote:\n> > > > > >\n> > > > > > > Hi Naush,\n> > > > > > >\n> > > > > > > Quoting Naushir Patuck via libcamera-devel (2023-01-18\n> 08:59:42)\n> > > > > > > > Add a new hints flags field in the StreamConfiguration\n> structure\n> > > to\n> > > > > > > allow the\n> > > > > > > > application to specify certain intended behavior when driving\n> > > > > libcamera.\n> > > > > > > > Pipeline handlers are expected to look at these hint flags\n> and\n> > > may\n> > > > > > > optimise\n> > > > > > > > internal operations based on them.\n> > > > > > > >\n> > > > > > > > Currently, only one flag is listed, OptionalStream, which the\n> > > > > > > application can\n> > > > > > > > set to inform the pipeline handler that a buffer may not be\n> > > provided\n> > > > > on\n> > > > > > > every\n> > > > > > > > Request for a given stream.\n> > > > > > >\n> > > > > > > Sorry - Laurent had comments on this yesterday when I was\n> > > discussing\n> > > > > > > with him, so I don't know which way it will go yet...\n> > > > > > >\n> > > > > > > I still think this is the better way around, but we'll have to\n> > > consider\n> > > > > > > that this is an 'ABI' breakage, as now apps that were able to\n> use\n> > > two\n> > > > > > > streams won't unless they explicitly provide all buffers or\n> inform\n> > > > > > > libcamera that they won't provide all buffers....\n> > > > > > >\n> > > > > >\n> > > > > > In the earlier versions of this series, we didn't have hints but\n> used\n> > > > > config\n> > > > > > params to indicate this.  Perhaps I should go back to this\n> mechanism\n> > > for\n> > > > > the\n> > > > > > time being to avoid any ABI breakages until there is an agreed\n> path\n> > > > > forward?\n> > > > >\n> > > > > That's just swapping one ABI breakage for another - because then\n> the\n> > > > > hint would change (or we'd have both a 'MandatoryStream' hint, and\n> an\n> > > > > 'OptionalStream' hint ?)\n> > > > >\n> > > >\n> > > > If the \"hint\" were to move back to the config file, I would make it\n> such\n> > >\n> > > Move back to ? Was there previous discussion that moved this out of a\n> > > config file that I've missed?\n> > >\n> >\n> > In earlier versions of this series, these hints were effectively flags in\n> > the config files.\n> > It was suggested to move these into the StreamConfig as hints since they\n> > may be useful to other pipeline handlers, and enforce explicit\n> application\n> > behavior through the API.\n> >\n>\n> Ok - in that case, that confirms that the checks/assertions in [9/12]\n> should be in the core, not just against raspberry pi pipeline handler.\n>\n\nI did consider this at the start, but didn't exactly know where to put the\ntest.\nI tried to put it in  PipelineHandler::doQueueRequest(), but we don't have\naccess to the advertised StreamConfig structures there, do we?  Any other\nplace you could suggest where we have access to the objects?\n\nNaush\n\n\n> This may also require updating any tests that could be affected, and\n> lc-compliance.\n>\n> It may be helpful to split out this core API 'hint's part to it's own\n> series as I don't think it should necessarily block the configuration\n> file work here.\n>\n> --\n> KB\n>\n>\n> > > > that the value is true for applications that provide buffers for\n> every\n> > > > configured stream on every request.\n> > > > This would be defaulted to false, and libcamera-apps/picamera2 would\n> set\n> > > a\n> > > > config file with the flag to true.  This would preserve behavior for\n> any\n> > > > other existing applications that don't pass in a configuration file,\n> > > though\n> > > > it may be suboptimal with allocations.  No ABI breakages either...\n> > >\n> > > --\n> > > Kieran\n> > >\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 B8985C3240\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 12:30:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0EE01625E4;\n\tFri, 20 Jan 2023 13:30:00 +0100 (CET)","from mail-yw1-x112f.google.com (mail-yw1-x112f.google.com\n\t[IPv6:2607:f8b0:4864:20::112f])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6657B61EFD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 13:29:58 +0100 (CET)","by mail-yw1-x112f.google.com with SMTP id\n\t00721157ae682-4a2f8ad29d5so69591987b3.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 04:29:58 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674217800;\n\tbh=XFFyM0UFEYHTrqogNh8/c0NeROgou7uAzreHndGa8R0=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=PK+ZcSQKobEkFZKH3opx4DZUFli7z/Npk7FZkQ/Rm0y5bdMnxCkjr9zShz0WTrTFi\n\tZtnBYzkew8Oi4IoY2zh70gB0O6yO8gwMq2DwIqIEP0KR4eOXlw0oaKHzsgvxFVwcmB\n\tTKS7SxeIvConXMQCGvZXRV/64JGFN/OYUIyV1U3zwv6u0ogUdBgqjFToMGhdkduZsX\n\thskOzgjN6zKX9stB0skpW85kXbtbkAVVeSSiRxcxrI4LxsoXHNdNa/6GavMkWIOIpw\n\tVdsCVo/75861Qjc510DN6wFSw8wnNWMe+fU30VuTOnx/EqBC31H0ovSZ0uVB2SyW/T\n\t5vBgBj22JVP0A==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=EPGkZ5KnwSMgZSykb9X0Dhz0LB4mETgJN79prwvJiV8=;\n\tb=nsrkrnCvUpP7B8nnZHl8vIHy/e9QAljzkqQpw6LUMYwbMg5XFmviOY3Fmk7Nt4U47q\n\tMeRPp6JEkSVUw2wrT9oQ46J7OGj/9RANFVbn5/5dxCLLXEn0JHO8fSxeQa8LH4TdN/gc\n\tnCx/aT1RZmDmwHFcYIYhPSx0JCrWFNITuMrDkgSaXC8Rd/xzzFR4XGJnMWUg1nYl2Aft\n\tSPgvQ8R8GZPxtrJF+YovMWoKFtdoJslaFi3ddDWvUXzgfwRpOIgsn7t+0dVJRt4V5r24\n\tACIClhVAYlAndk+FGV3UHBGWWwIrP3ftjdHTQk5YcK3QrYRwRLVQKZgCyRoL8krPPlM3\n\tgC1w=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"nsrkrnCv\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=EPGkZ5KnwSMgZSykb9X0Dhz0LB4mETgJN79prwvJiV8=;\n\tb=1raiVy0/3AOeiwVPIxSqWcico9V6G+5wkBLpIIYJZmWbweIIKhb7slLD6jHra01te0\n\tls0fQwy/eVeD3csfcHlp1rdKSTvtFythLusBINZHz4/XPq24SQiQY9PS++U33D/ejpa9\n\tqdXNp3qX5QriwmrXmPovyfPLhxqrznkif5nKv9G7oAzGWuw6b9XZalLla7opYsXZ0GP6\n\tjVulzjXHDQbS0d68hlRp4RpodpovvgzBmxhJVjAxnCK+XkXsiPZil/H4iHLyXCDyIeYP\n\tUEoGgBvmYkl8PnxR1MnrcJdATg0CO1ewx5s5bbIvlCtpJPXLwttuneBBmCOHzfKz/7+h\n\tUvaA==","X-Gm-Message-State":"AFqh2kqfCUclKA6Wdr25s0q+R8+coE06wp2upZ4PR4NRaqZplfzwdj5R\n\taE24e8eKsM3iYTyofzzydUyqtX80wPxQDv+17syr8oyHbiCq/8fdEFE=","X-Google-Smtp-Source":"AMrXdXsAexdTCTpTJExk1xF8CP+Dh8Z/XWpEF3btukVQE+YXu/i5w2rINmK+mm4e1VROdZeLorIDKpP+V5O4x/cC8XY=","X-Received":"by 2002:a81:7096:0:b0:3ec:2e89:409c with SMTP id\n\tl144-20020a817096000000b003ec2e89409cmr1905708ywc.20.1674217796352;\n\tFri, 20 Jan 2023 04:29:56 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>\n\t<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>\n\t<167421405379.42371.7092889898443630232@Monstersaurus>\n\t<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>\n\t<167421493884.42371.531419197244492875@Monstersaurus>","In-Reply-To":"<167421493884.42371.531419197244492875@Monstersaurus>","Date":"Fri, 20 Jan 2023 12:29:40 +0000","Message-ID":"<CAEmqJPpa4MT-aYx7Kb4G5FTRYZEnpDnM4aRZ3nzVvQgOfJhSUg@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000007538e05f2b13545\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26300,"web_url":"https://patchwork.libcamera.org/comment/26300/","msgid":"<CAEmqJPraj2iDLGOvG9-9C6bekti5uoUgQswNzQeRa6S27mgHAA@mail.gmail.com>","date":"2023-01-20T15:10:23","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"On Fri, 20 Jan 2023 at 12:29, Naushir Patuck <naush@raspberrypi.com> wrote:\n\n> Hi Kieran,\n>\n> On Fri, 20 Jan 2023 at 11:42, Kieran Bingham <\n> kieran.bingham@ideasonboard.com> wrote:\n>\n>> Quoting Naushir Patuck (2023-01-20 11:34:30)\n>> > On Fri, 20 Jan 2023 at 11:27, Kieran Bingham <\n>> > kieran.bingham@ideasonboard.com> wrote:\n>> >\n>> > > Quoting Naushir Patuck (2023-01-20 10:53:38)\n>> > > > On Fri, 20 Jan 2023 at 10:42, Kieran Bingham <\n>> > > > kieran.bingham@ideasonboard.com> wrote:\n>> > > >\n>> > > > > Quoting Naushir Patuck (2023-01-18 11:16:40)\n>> > > > > > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham <\n>> > > > > > kieran.bingham@ideasonboard.com> wrote:\n>> > > > > >\n>> > > > > > > Hi Naush,\n>> > > > > > >\n>> > > > > > > Quoting Naushir Patuck via libcamera-devel (2023-01-18\n>> 08:59:42)\n>> > > > > > > > Add a new hints flags field in the StreamConfiguration\n>> structure\n>> > > to\n>> > > > > > > allow the\n>> > > > > > > > application to specify certain intended behavior when\n>> driving\n>> > > > > libcamera.\n>> > > > > > > > Pipeline handlers are expected to look at these hint flags\n>> and\n>> > > may\n>> > > > > > > optimise\n>> > > > > > > > internal operations based on them.\n>> > > > > > > >\n>> > > > > > > > Currently, only one flag is listed, OptionalStream, which\n>> the\n>> > > > > > > application can\n>> > > > > > > > set to inform the pipeline handler that a buffer may not be\n>> > > provided\n>> > > > > on\n>> > > > > > > every\n>> > > > > > > > Request for a given stream.\n>> > > > > > >\n>> > > > > > > Sorry - Laurent had comments on this yesterday when I was\n>> > > discussing\n>> > > > > > > with him, so I don't know which way it will go yet...\n>> > > > > > >\n>> > > > > > > I still think this is the better way around, but we'll have to\n>> > > consider\n>> > > > > > > that this is an 'ABI' breakage, as now apps that were able to\n>> use\n>> > > two\n>> > > > > > > streams won't unless they explicitly provide all buffers or\n>> inform\n>> > > > > > > libcamera that they won't provide all buffers....\n>> > > > > > >\n>> > > > > >\n>> > > > > > In the earlier versions of this series, we didn't have hints\n>> but used\n>> > > > > config\n>> > > > > > params to indicate this.  Perhaps I should go back to this\n>> mechanism\n>> > > for\n>> > > > > the\n>> > > > > > time being to avoid any ABI breakages until there is an agreed\n>> path\n>> > > > > forward?\n>> > > > >\n>> > > > > That's just swapping one ABI breakage for another - because then\n>> the\n>> > > > > hint would change (or we'd have both a 'MandatoryStream' hint,\n>> and an\n>> > > > > 'OptionalStream' hint ?)\n>> > > > >\n>> > > >\n>> > > > If the \"hint\" were to move back to the config file, I would make it\n>> such\n>> > >\n>> > > Move back to ? Was there previous discussion that moved this out of a\n>> > > config file that I've missed?\n>> > >\n>> >\n>> > In earlier versions of this series, these hints were effectively flags\n>> in\n>> > the config files.\n>> > It was suggested to move these into the StreamConfig as hints since they\n>> > may be useful to other pipeline handlers, and enforce explicit\n>> application\n>> > behavior through the API.\n>> >\n>>\n>> Ok - in that case, that confirms that the checks/assertions in [9/12]\n>> should be in the core, not just against raspberry pi pipeline handler.\n>>\n>\n> I did consider this at the start, but didn't exactly know where to put the\n> test.\n> I tried to put it in  PipelineHandler::doQueueRequest(), but we don't have\n> access to the advertised StreamConfig structures there, do we?  Any other\n> place you could suggest where we have access to the objects?\n>\n\nActually, I did not look hard enough.  Request::camera->stream() will give\nme access\nto the StreamConfiguration objects I think.  I can then do the validation in\nPipelineHandler::doQueueRequest() as I originally intended.  I'll make that\nchange.\n\nThe question of what sense to use for the hints is still outstanding\nthough....\n\nRegards,\nNaush\n\n\n> Naush\n>\n>\n>> This may also require updating any tests that could be affected, and\n>> lc-compliance.\n>>\n>> It may be helpful to split out this core API 'hint's part to it's own\n>> series as I don't think it should necessarily block the configuration\n>> file work here.\n>>\n>> --\n>> KB\n>>\n>>\n>> > > > that the value is true for applications that provide buffers for\n>> every\n>> > > > configured stream on every request.\n>> > > > This would be defaulted to false, and libcamera-apps/picamera2\n>> would set\n>> > > a\n>> > > > config file with the flag to true.  This would preserve behavior\n>> for any\n>> > > > other existing applications that don't pass in a configuration file,\n>> > > though\n>> > > > it may be suboptimal with allocations.  No ABI breakages either...\n>> > >\n>> > > --\n>> > > Kieran\n>> > >\n>>\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 EB454C3240\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 20 Jan 2023 15:10:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B62DB625D8;\n\tFri, 20 Jan 2023 16:10:45 +0100 (CET)","from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com\n\t[IPv6:2607:f8b0:4864:20::b35])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5407161EFD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 16:10:43 +0100 (CET)","by mail-yb1-xb35.google.com with SMTP id a9so7064006ybb.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 20 Jan 2023 07:10:43 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674227445;\n\tbh=mkbD+Fw6jB6aqrHhARBR6cBTnonHibyD+X07SJjkU+c=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=mNo8JzUIb3RFn6VarvLmjg0kKQ0DSGiRVphjUpIzxiSmlL7MG7khdwDo8A2qfk4SQ\n\tWtgml7kwETQWIbTTUe3skkb1SFltd1GL7pf8lQjET/QRPRBeec60R4ZxRESsfizcem\n\tpignRyS4DBO8ykigi5FUioc5Q1Xo5D9Fx+aobCYEEMZTS9iWrXBalNjXlask34r8Nu\n\tj9WpZ1AFsnHh8tt+p9nZcPgM+FtQ5sMITgLeCJMBTd1LtXmfbP8xqvVAtxvMk+MKwf\n\tNsFnkqNZMDBQmzAvv47KW6N22wm9FyvScmPKV67asCpvwqw7ZgHJk1yHpDURZFjF6H\n\tbcVdWAA1W71VQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=pSwr9KgKLEnepSH7AXLODzxgsIgQFfbnmDRRN2rNjVc=;\n\tb=MmbkDeDCXxVTkPUVRm5KRFbzPtcHyRVFRVyjb8moQy88U5vxgOxI51O8bVL9u8CUBI\n\tAty9AmqRETHTdqL9i6YV3sOgKIR7/iqOypy2XIxwHXeiiEeFa6VjcJgaEB9UCkuc8Hxn\n\tc6HwwnTx+4GpH1JJXEQWS5qYMSN4+jE8+5U2ufNKoRSx9F9QtOJBvU1Q1e0PJz6Xk6v8\n\tBApmMlp2n2yCXxMAo6RZa5jVrsJc7+l7gL7pfBizqw//sQxHUD4SPueJkiyDuilOZcb4\n\tP9hauppxPKQt6lRj4cwlT27KxgqyZQnFGruIpjVqsl1bkYvlaQfPg34joxA/iMGkCzhh\n\tEXsQ=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"MmbkDeDC\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=pSwr9KgKLEnepSH7AXLODzxgsIgQFfbnmDRRN2rNjVc=;\n\tb=5V3gZBAF6Chatnv+AHf7SO+Fo2O90U0PbLjRIQGnmeUmrEkTIkreF+hMwzF6CiVd7J\n\tzZfeg/p9FCm5JgWjZqKgNtGQAHYMOqsJ9RxT0GizNO3ABx8ZR3Qj69wO+u4bhF16qbOZ\n\trfj0llkjz418Xy8oRozY1sJX+JdkLKXtfKu7R5XeF+/jXX38wan8M09p2QvGYiukbo/7\n\t2W8AHUaGYTWngdyoBLMRh2gBAWeTE2k21Pof4yU6JydxILFzhHfPnnUUd3SiqBs77Xur\n\tRy6iHexk/l5jSYda1kbpAmXu97Kin3Oz58aBMQvGW2kRkB3uDjKKYnxeWqG7Fy8JyYB3\n\tdd/g==","X-Gm-Message-State":"AFqh2ko95PfnbTu6CERLpnFnaXim9AwThWdRMISzFq/Hsj+reHG/sUq4\n\tFIxNGY1gFmeqpDL7bmDAIhZ8CYkyBUtSKts8ZTDykA==","X-Google-Smtp-Source":"AMrXdXuHbHsAKqzB96f5iQaQc2O35Wq7qcm1Nkyh+IziEWiwRAoWxUg3HAfaStKAUIAodSJiYgDhkbthjy+VSm5swRs=","X-Received":"by 2002:a25:6886:0:b0:801:a067:ee9a with SMTP id\n\td128-20020a256886000000b00801a067ee9amr239554ybc.181.1674227442100;\n\tFri, 20 Jan 2023 07:10:42 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-1-naush@raspberrypi.com>\n\t<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>\n\t<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>\n\t<167421405379.42371.7092889898443630232@Monstersaurus>\n\t<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>\n\t<167421493884.42371.531419197244492875@Monstersaurus>\n\t<CAEmqJPpa4MT-aYx7Kb4G5FTRYZEnpDnM4aRZ3nzVvQgOfJhSUg@mail.gmail.com>","In-Reply-To":"<CAEmqJPpa4MT-aYx7Kb4G5FTRYZEnpDnM4aRZ3nzVvQgOfJhSUg@mail.gmail.com>","Date":"Fri, 20 Jan 2023 15:10:23 +0000","Message-ID":"<CAEmqJPraj2iDLGOvG9-9C6bekti5uoUgQswNzQeRa6S27mgHAA@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"000000000000f5be9105f2b373e0\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26311,"web_url":"https://patchwork.libcamera.org/comment/26311/","msgid":"<Y82rRxHSQscnnPyB@pendragon.ideasonboard.com>","date":"2023-01-22T21:31:51","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Fri, Jan 20, 2023 at 03:10:23PM +0000, Naushir Patuck via libcamera-devel wrote:\n> On Fri, 20 Jan 2023 at 12:29, Naushir Patuck wrote:\n> > On Fri, 20 Jan 2023 at 11:42, Kieran Bingham wrote:\n> >> Quoting Naushir Patuck (2023-01-20 11:34:30)\n> >> > On Fri, 20 Jan 2023 at 11:27, Kieran Bingham wrote:\n> >> > > Quoting Naushir Patuck (2023-01-20 10:53:38)\n> >> > > > On Fri, 20 Jan 2023 at 10:42, Kieran Bingham wrote:\n> >> > > > > Quoting Naushir Patuck (2023-01-18 11:16:40)\n> >> > > > > > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham  wrote:\n> >> > > > > > > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> >> > > > > > > > Add a new hints flags field in the StreamConfiguration structure to allow the\n> >> > > > > > > > application to specify certain intended behavior when driving libcamera.\n> >> > > > > > > > Pipeline handlers are expected to look at these hint flags and may optimise\n> >> > > > > > > > internal operations based on them.\n> >> > > > > > > >\n> >> > > > > > > > Currently, only one flag is listed, OptionalStream, which the application can\n> >> > > > > > > > set to inform the pipeline handler that a buffer may not be provided on every\n> >> > > > > > > > Request for a given stream.\n> >> > > > > > >\n> >> > > > > > > Sorry - Laurent had comments on this yesterday when I was discussing\n> >> > > > > > > with him, so I don't know which way it will go yet...\n> >> > > > > > >\n> >> > > > > > > I still think this is the better way around, but we'll have to consider\n> >> > > > > > > that this is an 'ABI' breakage, as now apps that were able to use two\n> >> > > > > > > streams won't unless they explicitly provide all buffers or inform\n> >> > > > > > > libcamera that they won't provide all buffers....\n> >> > > > > >\n> >> > > > > > In the earlier versions of this series, we didn't have hints but used config\n> >> > > > > > params to indicate this.  Perhaps I should go back to this mechanism for the\n> >> > > > > > time being to avoid any ABI breakages until there is an agreed path forward?\n\nNo no please, let's keep hints. The only way to agree on a path forward\nis to try things out, send out patches, and discuss them (I wish it\ncould happen by magic instead, but I haven't found the right spell so\nfar). Your series does it right, even if the road can sometimes be\nbumpy.\n\n> >> > > > > That's just swapping one ABI breakage for another - because then the\n> >> > > > > hint would change (or we'd have both a 'MandatoryStream' hint, and an\n> >> > > > > 'OptionalStream' hint ?)\n> >> > > >\n> >> > > > If the \"hint\" were to move back to the config file, I would make it such\n> >> > >\n> >> > > Move back to ? Was there previous discussion that moved this out of a\n> >> > > config file that I've missed?\n> >> >\n> >> > In earlier versions of this series, these hints were effectively flags in\n> >> > the config files.\n> >> > It was suggested to move these into the StreamConfig as hints since they\n> >> > may be useful to other pipeline handlers, and enforce explicit application\n> >> > behavior through the API.\n> >>\n> >> Ok - in that case, that confirms that the checks/assertions in [9/12]\n> >> should be in the core, not just against raspberry pi pipeline handler.\n\nAgreed.\n\n> > I did consider this at the start, but didn't exactly know where to put the test.\n> > I tried to put it in  PipelineHandler::doQueueRequest(), but we don't have\n> > access to the advertised StreamConfig structures there, do we?  Any other\n> > place you could suggest where we have access to the objects?\n> \n> Actually, I did not look hard enough.  Request::camera->stream() will give me access\n> to the StreamConfiguration objects I think.  I can then do the validation in\n> PipelineHandler::doQueueRequest() as I originally intended.  I'll make that change.\n\nIt would be best if we could validate requests synchronously though, but\nwe can probably live with asynchronous validation to start with. Please\ntest this with an application that submits an invalid request. Even\nbetter, a test in lc-compliance would be good.\n\n> The question of what sense to use for the hints is still outstanding\n> though....\n\nThe libcamera API makes buffers optional by default, to support, for\ninstance, use cases with a viewfinder stream and a still image capture\nstream. Requiring a buffer for all streams in all requests by default\nwould be a big change with lots of implications that we need to\nconsider. Maybe we'll do so, but I don't think now is the right time.\nThat's why I prefer for now a hint to indicate that the application will\nprovide a buffer for the stream in every request.\n\n> >> This may also require updating any tests that could be affected, and\n> >> lc-compliance.\n> >>\n> >> It may be helpful to split out this core API 'hint's part to it's own\n> >> series as I don't think it should necessarily block the configuration\n> >> file work here.\n> >>\n> >> > > > that the value is true for applications that provide buffers for every\n> >> > > > configured stream on every request.\n> >> > > > This would be defaulted to false, and libcamera-apps/picamera2 would set a\n> >> > > > config file with the flag to true.  This would preserve behavior for any\n> >> > > > other existing applications that don't pass in a configuration file, though\n> >> > > > it may be suboptimal with allocations.  No ABI breakages either...","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 84569BEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 22 Jan 2023 21:31:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 05E9E625DF;\n\tSun, 22 Jan 2023 22:31:55 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B62F7625DD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 22 Jan 2023 22:31:53 +0100 (CET)","from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi\n\t[213.243.189.158])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 07C27471;\n\tSun, 22 Jan 2023 22:31:52 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674423115;\n\tbh=6NRPvJHxW8Ly8RgzL0fJXn5s4yt7uE9+f/vfPF7PAPs=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=Mr/UHPj2G1vXpTzX7LkdryZg1yC2/l18Ia7KH4SF4QPw3AnSWFblG+PeSDDv+dEyy\n\tJtMRir+EN9jlq2Z/pfOqcnkCrEx+JT1zT7cIS6RNzVNGqphqdI2Fz6CIAquY3q6ovy\n\tyKBte3Imx6TQ82p3/jktNPJB/TP9qxSCB34xGBImFNlNeLOk77yWHMOxwzTU7JDtFd\n\t86RLTKV4V31480BOxGA/Ni6ryr1uRPkJ6pATuxO7fhPSpCI4IKVMD4fpoFwd856KAK\n\txAPStRg/oFH29wfmB5eVkGYwYnNawF59gs1TjOyGbN3fiy9srWixs7uwupJFDBYky8\n\toNC7lMYGUSAPw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1674423113;\n\tbh=6NRPvJHxW8Ly8RgzL0fJXn5s4yt7uE9+f/vfPF7PAPs=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=cpAoKbv1f/SkLl3B4zH6gAha/ULUmKbXWSDTEzXvKMeO+IKKhYE93LVfz/VQ9cjba\n\tYugQH9qY3ojVYP/+QXY90sppbbZhecco8gZt2C8jkzlOrfN5srbGlpi+cpq4KUadrb\n\tfQxrz0o6FXBTE8mRfpEjRssl12KYkXI/ntXKYI38="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"cpAoKbv1\"; dkim-atps=neutral","Date":"Sun, 22 Jan 2023 23:31:51 +0200","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<Y82rRxHSQscnnPyB@pendragon.ideasonboard.com>","References":"<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>\n\t<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>\n\t<167421405379.42371.7092889898443630232@Monstersaurus>\n\t<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>\n\t<167421493884.42371.531419197244492875@Monstersaurus>\n\t<CAEmqJPpa4MT-aYx7Kb4G5FTRYZEnpDnM4aRZ3nzVvQgOfJhSUg@mail.gmail.com>\n\t<CAEmqJPraj2iDLGOvG9-9C6bekti5uoUgQswNzQeRa6S27mgHAA@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAEmqJPraj2iDLGOvG9-9C6bekti5uoUgQswNzQeRa6S27mgHAA@mail.gmail.com>","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":26348,"web_url":"https://patchwork.libcamera.org/comment/26348/","msgid":"<CAEmqJPr9VF7mGa8VCp-ai0d-N9Fe1__2wfGCH-K26WG8RNWWhQ@mail.gmail.com>","date":"2023-01-25T11:48:55","subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nThank you for the feedback.\n\nOn Sun, 22 Jan 2023 at 21:31, Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> On Fri, Jan 20, 2023 at 03:10:23PM +0000, Naushir Patuck via libcamera-devel wrote:\n> > On Fri, 20 Jan 2023 at 12:29, Naushir Patuck wrote:\n> > > On Fri, 20 Jan 2023 at 11:42, Kieran Bingham wrote:\n> > >> Quoting Naushir Patuck (2023-01-20 11:34:30)\n> > >> > On Fri, 20 Jan 2023 at 11:27, Kieran Bingham wrote:\n> > >> > > Quoting Naushir Patuck (2023-01-20 10:53:38)\n> > >> > > > On Fri, 20 Jan 2023 at 10:42, Kieran Bingham wrote:\n> > >> > > > > Quoting Naushir Patuck (2023-01-18 11:16:40)\n> > >> > > > > > On Wed, 18 Jan 2023 at 10:09, Kieran Bingham  wrote:\n> > >> > > > > > > Quoting Naushir Patuck via libcamera-devel (2023-01-18 08:59:42)\n> > >> > > > > > > > Add a new hints flags field in the StreamConfiguration structure to allow the\n> > >> > > > > > > > application to specify certain intended behavior when driving libcamera.\n> > >> > > > > > > > Pipeline handlers are expected to look at these hint flags and may optimise\n> > >> > > > > > > > internal operations based on them.\n> > >> > > > > > > >\n> > >> > > > > > > > Currently, only one flag is listed, OptionalStream, which the application can\n> > >> > > > > > > > set to inform the pipeline handler that a buffer may not be provided on every\n> > >> > > > > > > > Request for a given stream.\n> > >> > > > > > >\n> > >> > > > > > > Sorry - Laurent had comments on this yesterday when I was discussing\n> > >> > > > > > > with him, so I don't know which way it will go yet...\n> > >> > > > > > >\n> > >> > > > > > > I still think this is the better way around, but we'll have to consider\n> > >> > > > > > > that this is an 'ABI' breakage, as now apps that were able to use two\n> > >> > > > > > > streams won't unless they explicitly provide all buffers or inform\n> > >> > > > > > > libcamera that they won't provide all buffers....\n> > >> > > > > >\n> > >> > > > > > In the earlier versions of this series, we didn't have hints but used config\n> > >> > > > > > params to indicate this.  Perhaps I should go back to this mechanism for the\n> > >> > > > > > time being to avoid any ABI breakages until there is an agreed path forward?\n>\n> No no please, let's keep hints. The only way to agree on a path forward\n> is to try things out, send out patches, and discuss them (I wish it\n> could happen by magic instead, but I haven't found the right spell so\n> far). Your series does it right, even if the road can sometimes be\n> bumpy.\n>\n> > >> > > > > That's just swapping one ABI breakage for another - because then the\n> > >> > > > > hint would change (or we'd have both a 'MandatoryStream' hint, and an\n> > >> > > > > 'OptionalStream' hint ?)\n> > >> > > >\n> > >> > > > If the \"hint\" were to move back to the config file, I would make it such\n> > >> > >\n> > >> > > Move back to ? Was there previous discussion that moved this out of a\n> > >> > > config file that I've missed?\n> > >> >\n> > >> > In earlier versions of this series, these hints were effectively flags in\n> > >> > the config files.\n> > >> > It was suggested to move these into the StreamConfig as hints since they\n> > >> > may be useful to other pipeline handlers, and enforce explicit application\n> > >> > behavior through the API.\n> > >>\n> > >> Ok - in that case, that confirms that the checks/assertions in [9/12]\n> > >> should be in the core, not just against raspberry pi pipeline handler.\n>\n> Agreed.\n>\n> > > I did consider this at the start, but didn't exactly know where to put the test.\n> > > I tried to put it in  PipelineHandler::doQueueRequest(), but we don't have\n> > > access to the advertised StreamConfig structures there, do we?  Any other\n> > > place you could suggest where we have access to the objects?\n> >\n> > Actually, I did not look hard enough.  Request::camera->stream() will give me access\n> > to the StreamConfiguration objects I think.  I can then do the validation in\n> > PipelineHandler::doQueueRequest() as I originally intended.  I'll make that change.\n>\n> It would be best if we could validate requests synchronously though, but\n> we can probably live with asynchronous validation to start with. Please\n> test this with an application that submits an invalid request. Even\n> better, a test in lc-compliance would be good.\n\nI'll add a test in lc-compliance to simulate this.  Having had a brief look at\nthe code, lc-compliance does not seem geared up for multiple streams, so the\ntest may take me some time to implement.\n\n>\n> > The question of what sense to use for the hints is still outstanding\n> > though....\n>\n> The libcamera API makes buffers optional by default, to support, for\n> instance, use cases with a viewfinder stream and a still image capture\n> stream. Requiring a buffer for all streams in all requests by default\n> would be a big change with lots of implications that we need to\n> consider. Maybe we'll do so, but I don't think now is the right time.\n> That's why I prefer for now a hint to indicate that the application will\n> provide a buffer for the stream in every request.\n\nGot it, I'll update this patch and replace OptionalStream with MandatoryStream\nas the hint.\n\nRegards,\nNaush\n\n>\n> > >> This may also require updating any tests that could be affected, and\n> > >> lc-compliance.\n> > >>\n> > >> It may be helpful to split out this core API 'hint's part to it's own\n> > >> series as I don't think it should necessarily block the configuration\n> > >> file work here.\n> > >>\n> > >> > > > that the value is true for applications that provide buffers for every\n> > >> > > > configured stream on every request.\n> > >> > > > This would be defaulted to false, and libcamera-apps/picamera2 would set a\n> > >> > > > config file with the flag to true.  This would preserve behavior for any\n> > >> > > > other existing applications that don't pass in a configuration file, though\n> > >> > > > it may be suboptimal with allocations.  No ABI breakages either...\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","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 6ED0ABEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Jan 2023 11:49:15 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DC9ED625E4;\n\tWed, 25 Jan 2023 12:49:14 +0100 (CET)","from mail-yb1-xb34.google.com (mail-yb1-xb34.google.com\n\t[IPv6:2607:f8b0:4864:20::b34])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0BF38603C0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Jan 2023 12:49:13 +0100 (CET)","by mail-yb1-xb34.google.com with SMTP id 188so22612397ybi.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Jan 2023 03:49:12 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1674647354;\n\tbh=QtUsBR2a9pjgDPy1S9UfHlXeB3ohj6OM47DYRBjSwFQ=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=LPzQMI8sR5XYD6S7dzmE1RdixLsDnpOuTRqR8j7XmvH+v9GCGNQIU477clInsOYfP\n\tIcLDDIqWXforImVW6nYSN7HKe2le8MdjorukwjnydDEId8K6ZwF49INQUHR3R/Ry/8\n\tn0JKSvpr7CPFEIExwYwihRrrvzT4qUQH6U1I9bTel1WjmdKOhnByKmmthaPXHRgbz8\n\tcofGFQIR9UxvhVyGuk7Al24YGN0KVQbwuGKHCZ20osFyt5h/H0Euse5mxULhygWMIo\n\txJuxv22vzN+e18WaH3BwOrjBYwuNUDXV74VI6l8KZD6Zu5X7GMZLWnha0skT2NX8gN\n\tslsTuJHv/N2yg==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=4VdpzSUYrJDzYGQdLPy1byhNCQnex5+y1IzPE6E1G1A=;\n\tb=N+SeJBM9xs7YcpgnbQKmynysT2M+ZcpmHKgK9WAfNuKSr5aEnLSE0Tv4lH53LJ9a8a\n\tl7L5yPQjXMg8KP3Mk0VI5LyrmjUUOUWp7glgqF3d+VT2PinNqMoVVnzrQId5NSC0+FkQ\n\tm7+ZFqz4HroRNb9uwu50lFvGaXkVUK/l+v3+sxDxyitlG2x1TdFYIBZ7hbf0hGnoLvFy\n\t/4XjykdMP+vns4hpImZqkrxy60+9xsz9yUtWRD+E2Q/Pcp6DZjL+XKBxdKUKTxR/OF1X\n\tWo+EAqnlCxd++qoku2/F+KGzspCAuk+p62xzI7S+/Z2b2OKA4p2nbHAFgTE6ymP0rdGB\n\t8UBA=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"N+SeJBM9\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=4VdpzSUYrJDzYGQdLPy1byhNCQnex5+y1IzPE6E1G1A=;\n\tb=U1otgDYf6CYizV1pAZ2VEb4sX33vS4QB+IqLUEcEoG8a9gHK7pXT93OchDRHbQ25Vq\n\tVxuDUt4lo6JhJapqE/rnPkirB7G2zDXx6kvCeYgdItNzwpBLVQWjC+0jIiK7eNvhIELi\n\te9KVyrDJ3AnHrnxrNxZ1qFCAK80f/NmU0dvA32Y78nEw0S/jqVy2uUrdG5ibo9nXJ87M\n\t5XSrp0CfQg4eylAebawm8944NPJTehmV+Zhj1TGhqA1IWn21no28ShfkezWwNthIR9KZ\n\tkEchkiLcBnzuedvp8ol3bqjulHlB9Ew+qWkQdSeZNOdWP6o5Uz2IuVso6V1DXBqG8FZF\n\tQopQ==","X-Gm-Message-State":"AO0yUKVbzKg+80OfL1xGWbK9QBWEAIISrMqTkKFJGz7fkomwpr8fFLti\n\tr9rnc8GTwSKvInOsBopbj2G3OKxzdzCjtLWBBNQ+eA==","X-Google-Smtp-Source":"AK7set/13HaUjAwZE7tPqFF6rWYjrfwLqyeJ2tj55G8skeOZaXTXs5W0iR+YzYNgwEGld8qjjpF9pI5SHcG3Q4PW9tc=","X-Received":"by 2002:a25:a28e:0:b0:80b:72cc:ba35 with SMTP id\n\tc14-20020a25a28e000000b0080b72ccba35mr506272ybi.330.1674647351680;\n\tWed, 25 Jan 2023 03:49:11 -0800 (PST)","MIME-Version":"1.0","References":"<20230118085953.7027-2-naush@raspberrypi.com>\n\t<167403657378.42371.14856724797554952181@Monstersaurus>\n\t<CAEmqJPrDT8_ZuFiNaiWmuBD4mjbuX6vwts7JkXKwzXMF-C6Pgw@mail.gmail.com>\n\t<167421133838.42371.442505412187362174@Monstersaurus>\n\t<CAEmqJPoxUAY6yPZH=C6jK86aYp5XPZ4NW5hAsGNbJUQXLopB4Q@mail.gmail.com>\n\t<167421405379.42371.7092889898443630232@Monstersaurus>\n\t<CAEmqJPoZM_cK1cPT1+cfzmuK2AD75Cn8i7JF0zyUWOB=B4eG9Q@mail.gmail.com>\n\t<167421493884.42371.531419197244492875@Monstersaurus>\n\t<CAEmqJPpa4MT-aYx7Kb4G5FTRYZEnpDnM4aRZ3nzVvQgOfJhSUg@mail.gmail.com>\n\t<CAEmqJPraj2iDLGOvG9-9C6bekti5uoUgQswNzQeRa6S27mgHAA@mail.gmail.com>\n\t<Y82rRxHSQscnnPyB@pendragon.ideasonboard.com>","In-Reply-To":"<Y82rRxHSQscnnPyB@pendragon.ideasonboard.com>","Date":"Wed, 25 Jan 2023 11:48:55 +0000","Message-ID":"<CAEmqJPr9VF7mGa8VCp-ai0d-N9Fe1__2wfGCH-K26WG8RNWWhQ@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH v5 01/12] libcamera: stream: Add\n\tstream hints to StreamConfiguration","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]