{"id":1244,"url":"https://patchwork.libcamera.org/api/1.1/patches/1244/?format=json","web_url":"https://patchwork.libcamera.org/patch/1244/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20190521192740.28112-2-laurent.pinchart@ideasonboard.com>","date":"2019-05-21T19:27:35","name":"[libcamera-devel,v3,1/6] libcamera: camera: Rename configureStreams() and streamConfiguration()","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"d8d1f62e772593886e103d1bb14e538eda5e0ec6","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/1.1/people/2/?format=json","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/1244/mbox/","series":[{"id":313,"url":"https://patchwork.libcamera.org/api/1.1/series/313/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=313","date":"2019-05-21T19:27:34","name":"Rework camera configuration to introduce negotiation of parameters","version":3,"mbox":"https://patchwork.libcamera.org/series/313/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/1244/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/1244/checks/","tags":{},"headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 21EFE60C40\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 May 2019 21:28:03 +0200 (CEST)","from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 98D3454B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 May 2019 21:28:02 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1558466882;\n\tbh=kf0qQuOjLeRcfPtSt7rvswoquA6mkugTDVXu7Mxs/WQ=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=N7xGrOpKJXCE0TOl3BymfSMn9RJoKoF7DWmFwv5u6AJlCBzqflfiK+YlWp3qHBqS6\n\tgRefGqLXcCtyeZyTAwgc9qToQdkwCviPavb2A3yp3cxnwKjlsd6mQikTUNm6xrAyqF\n\t2FKZoF2FtfPEJh24wweHBrV2FV+OtDY6TM4RiKzY=","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Tue, 21 May 2019 22:27:35 +0300","Message-Id":"<20190521192740.28112-2-laurent.pinchart@ideasonboard.com>","X-Mailer":"git-send-email 2.21.0","In-Reply-To":"<20190521192740.28112-1-laurent.pinchart@ideasonboard.com>","References":"<20190521192740.28112-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH v3 1/6] libcamera: camera: Rename\n\tconfigureStreams() and streamConfiguration()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 21 May 2019 19:28:03 -0000"},"content":"Rename the configureStreams() and streamConfiguration() methods to\nconfigure() and generateConfiguration() respectively in order to clarify\nthe API. Both methods deal with CameraConfiguration objects, and are\nthus not limited to streams, even if a CameraConfiguration currently\ncontains streams only.\n\nWhile at it, remove the qcam MainWindow::configureStreams() method that\nis declared but never defined or used.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n---\n include/libcamera/camera.h               |  4 ++--\n src/cam/main.cpp                         |  6 ++---\n src/libcamera/camera.cpp                 | 28 ++++++++++++------------\n src/libcamera/include/pipeline_handler.h |  4 ++--\n src/libcamera/pipeline/ipu3/ipu3.cpp     | 21 +++++++++---------\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 10 ++++-----\n src/libcamera/pipeline/uvcvideo.cpp      | 16 +++++++-------\n src/libcamera/pipeline/vimc.cpp          | 16 +++++++-------\n src/libcamera/pipeline_handler.cpp       | 28 ++++++++++++------------\n src/libcamera/stream.cpp                 |  5 ++---\n src/qcam/main_window.cpp                 |  4 ++--\n src/qcam/main_window.h                   |  1 -\n test/camera/capture.cpp                  |  4 ++--\n test/camera/configuration_default.cpp    |  4 ++--\n test/camera/configuration_set.cpp        | 10 ++++-----\n test/camera/statemachine.cpp             | 16 +++++++-------\n 16 files changed, 87 insertions(+), 90 deletions(-)","diff":"diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h\nindex 777b7e4d48b8..306739b7014a 100644\n--- a/include/libcamera/camera.h\n+++ b/include/libcamera/camera.h\n@@ -75,8 +75,8 @@ public:\n \n \tconst std::set<Stream *> &streams() const;\n \tCameraConfiguration\n-\tstreamConfiguration(const std::vector<StreamUsage> &usage);\n-\tint configureStreams(const CameraConfiguration &config);\n+\tgenerateConfiguration(const std::vector<StreamUsage> &usage);\n+\tint configure(const CameraConfiguration &config);\n \n \tint allocateBuffers();\n \tint freeBuffers();\ndiff --git a/src/cam/main.cpp b/src/cam/main.cpp\nindex f03c32b385a9..6a2508dd3bd9 100644\n--- a/src/cam/main.cpp\n+++ b/src/cam/main.cpp\n@@ -93,7 +93,7 @@ static int prepareCameraConfig(CameraConfiguration *config)\n \n \t/* If no configuration is provided assume a single video stream. */\n \tif (!options.isSet(OptStream)) {\n-\t\t*config = camera->streamConfiguration({ Stream::VideoRecording() });\n+\t\t*config = camera->generateConfiguration({ Stream::VideoRecording() });\n \t\tstreamInfo[config->front()] = \"stream0\";\n \t\treturn 0;\n \t}\n@@ -121,7 +121,7 @@ static int prepareCameraConfig(CameraConfiguration *config)\n \t\t}\n \t}\n \n-\t*config = camera->streamConfiguration(roles);\n+\t*config = camera->generateConfiguration(roles);\n \n \tif (!config->isValid()) {\n \t\tstd::cerr << \"Failed to get default stream configuration\"\n@@ -211,7 +211,7 @@ static int capture()\n \t\treturn ret;\n \t}\n \n-\tret = camera->configureStreams(config);\n+\tret = camera->configure(config);\n \tif (ret < 0) {\n \t\tstd::cout << \"Failed to configure camera\" << std::endl;\n \t\treturn ret;\ndiff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\nindex 1a21acac9899..359174a41823 100644\n--- a/src/libcamera/camera.cpp\n+++ b/src/libcamera/camera.cpp\n@@ -275,10 +275,10 @@ const StreamConfiguration &CameraConfiguration::operator[](Stream *stream) const\n  *   Available -> Acquired [label = \"acquire()\"];\n  *\n  *   Acquired -> Available [label = \"release()\"];\n- *   Acquired -> Configured [label = \"configureStreams()\"];\n+ *   Acquired -> Configured [label = \"configure()\"];\n  *\n  *   Configured -> Available [label = \"release()\"];\n- *   Configured -> Configured [label = \"configureStreams()\"];\n+ *   Configured -> Configured [label = \"configure()\"];\n  *   Configured -> Prepared [label = \"allocateBuffers()\"];\n  *\n  *   Prepared -> Configured [label = \"freeBuffers()\"];\n@@ -542,23 +542,23 @@ const std::set<Stream *> &Camera::streams() const\n }\n \n /**\n- * \\brief Retrieve a group of stream configurations according to stream usages\n+ * \\brief Generate a default camera configuration according to stream usages\n  * \\param[in] usages A list of stream usages\n  *\n- * Retrieve configuration for a set of desired usages. The caller specifies a\n- * list of stream usages and the camera returns a map of suitable streams and\n- * their suggested default configurations.\n+ * Generate a camera configuration for a set of desired usages. The caller\n+ * specifies a list of stream usages and the camera returns a configuration\n+ * containing suitable streams and their suggested default configurations.\n  *\n  * \\return A valid CameraConfiguration if the requested usages can be satisfied,\n  * or a invalid one otherwise\n  */\n CameraConfiguration\n-Camera::streamConfiguration(const std::vector<StreamUsage> &usages)\n+Camera::generateConfiguration(const std::vector<StreamUsage> &usages)\n {\n \tif (disconnected_ || !usages.size() || usages.size() > streams_.size())\n \t\treturn CameraConfiguration();\n \n-\tCameraConfiguration config = pipe_->streamConfiguration(this, usages);\n+\tCameraConfiguration config = pipe_->generateConfiguration(this, usages);\n \n \tstd::ostringstream msg(\"streams configuration:\", std::ios_base::ate);\n \tunsigned int index = 0;\n@@ -575,7 +575,7 @@ Camera::streamConfiguration(const std::vector<StreamUsage> &usages)\n }\n \n /**\n- * \\brief Configure the camera's streams prior to capture\n+ * \\brief Configure the camera prior to capture\n  * \\param[in] config The camera configurations to setup\n  *\n  * Prior to starting capture, the camera must be configured to select a\n@@ -584,9 +584,9 @@ Camera::streamConfiguration(const std::vector<StreamUsage> &usages)\n  * by populating \\a config.\n  *\n  * The easiest way to populate the array of config is to fetch an initial\n- * configuration from the camera with streamConfiguration() and then change the\n- * parameters to fit the caller's need and once all the streams parameters are\n- * configured hand that over to configureStreams() to actually setup the camera.\n+ * configuration from the camera with generateConfiguration() and then change\n+ * the parameters to fit the caller's need and once all the streams parameters\n+ * are configured hand that over to configure() to actually setup the camera.\n  *\n  * Exclusive access to the camera shall be ensured by a call to acquire() prior\n  * to calling this function, otherwise an -EACCES error will be returned.\n@@ -598,7 +598,7 @@ Camera::streamConfiguration(const std::vector<StreamUsage> &usages)\n  * \\retval -EACCES The camera is not in a state where it can be configured\n  * \\retval -EINVAL The configuration is not valid\n  */\n-int Camera::configureStreams(const CameraConfiguration &config)\n+int Camera::configure(const CameraConfiguration &config)\n {\n \tint ret;\n \n@@ -629,7 +629,7 @@ int Camera::configureStreams(const CameraConfiguration &config)\n \n \tLOG(Camera, Info) << msg.str();\n \n-\tret = pipe_->configureStreams(this, config);\n+\tret = pipe_->configure(this, config);\n \tif (ret)\n \t\treturn ret;\n \ndiff --git a/src/libcamera/include/pipeline_handler.h b/src/libcamera/include/pipeline_handler.h\nindex 9f5fe3d673e2..9cc11a8e192e 100644\n--- a/src/libcamera/include/pipeline_handler.h\n+++ b/src/libcamera/include/pipeline_handler.h\n@@ -61,8 +61,8 @@ public:\n \tvoid unlock();\n \n \tvirtual CameraConfiguration\n-\tstreamConfiguration(Camera *camera, const std::vector<StreamUsage> &usages) = 0;\n-\tvirtual int configureStreams(Camera *camera, const CameraConfiguration &config) = 0;\n+\tgenerateConfiguration(Camera *camera, const std::vector<StreamUsage> &usages) = 0;\n+\tvirtual int configure(Camera *camera, const CameraConfiguration &config) = 0;\n \n \tvirtual int allocateBuffers(Camera *camera,\n \t\t\t\t    const std::set<Stream *> &streams) = 0;\ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 75a70e66eacc..ba0c708f9e1e 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -151,10 +151,10 @@ public:\n \tPipelineHandlerIPU3(CameraManager *manager);\n \n \tCameraConfiguration\n-\tstreamConfiguration(Camera *camera,\n-\t\t\t    const std::vector<StreamUsage> &usages) override;\n-\tint configureStreams(Camera *camera,\n-\t\t\t     const CameraConfiguration &config) override;\n+\tgenerateConfiguration(Camera *camera,\n+\t\t\t      const std::vector<StreamUsage> &usages) override;\n+\tint configure(Camera *camera,\n+\t\t      const CameraConfiguration &config) override;\n \n \tint allocateBuffers(Camera *camera,\n \t\t\t    const std::set<Stream *> &streams) override;\n@@ -210,8 +210,8 @@ PipelineHandlerIPU3::PipelineHandlerIPU3(CameraManager *manager)\n }\n \n CameraConfiguration\n-PipelineHandlerIPU3::streamConfiguration(Camera *camera,\n-\t\t\t\t\t const std::vector<StreamUsage> &usages)\n+PipelineHandlerIPU3::generateConfiguration(Camera *camera,\n+\t\t\t\t\t   const std::vector<StreamUsage> &usages)\n {\n \tIPU3CameraData *data = cameraData(camera);\n \tCameraConfiguration config = {};\n@@ -309,8 +309,8 @@ PipelineHandlerIPU3::streamConfiguration(Camera *camera,\n \treturn config;\n }\n \n-int PipelineHandlerIPU3::configureStreams(Camera *camera,\n-\t\t\t\t\t  const CameraConfiguration &config)\n+int PipelineHandlerIPU3::configure(Camera *camera,\n+\t\t\t\t   const CameraConfiguration &config)\n {\n \tIPU3CameraData *data = cameraData(camera);\n \tIPU3Stream *outStream = &data->outStream_;\n@@ -631,11 +631,10 @@ bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)\n \t * 1) Link enable/disable cannot be done at start/stop time as video\n \t * devices needs to be linked first before format can be configured on\n \t * them.\n-\t * 2) As link enable has to be done at the least in configureStreams,\n+\t * 2) As link enable has to be done at the least in configure(),\n \t * before configuring formats, the only place where to disable links\n \t * would be 'stop()', but the Camera class state machine allows\n-\t * start()<->stop() sequences without any streamConfiguration() in\n-\t * between.\n+\t * start()<->stop() sequences without any configure() in between.\n \t *\n \t * As of now, disable all links in the media graph at 'match()' time,\n \t * to allow testing different cameras in different test applications\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex 96553bf2d9ef..4d02f9604ad9 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -34,9 +34,9 @@ public:\n \tPipelineHandlerRkISP1(CameraManager *manager);\n \t~PipelineHandlerRkISP1();\n \n-\tCameraConfiguration streamConfiguration(Camera *camera,\n+\tCameraConfiguration generateConfiguration(Camera *camera,\n \t\tconst std::vector<StreamUsage> &usages) override;\n-\tint configureStreams(Camera *camera,\n+\tint configure(Camera *camera,\n \t\tconst CameraConfiguration &config) override;\n \n \tint allocateBuffers(Camera *camera,\n@@ -106,7 +106,7 @@ PipelineHandlerRkISP1::~PipelineHandlerRkISP1()\n  * Pipeline Operations\n  */\n \n-CameraConfiguration PipelineHandlerRkISP1::streamConfiguration(Camera *camera,\n+CameraConfiguration PipelineHandlerRkISP1::generateConfiguration(Camera *camera,\n \tconst std::vector<StreamUsage> &usages)\n {\n \tRkISP1CameraData *data = cameraData(camera);\n@@ -122,8 +122,8 @@ CameraConfiguration PipelineHandlerRkISP1::streamConfiguration(Camera *camera,\n \treturn config;\n }\n \n-int PipelineHandlerRkISP1::configureStreams(Camera *camera,\n-\t\t\t\t\t    const CameraConfiguration &config)\n+int PipelineHandlerRkISP1::configure(Camera *camera,\n+\t\t\t\t     const CameraConfiguration &config)\n {\n \tRkISP1CameraData *data = cameraData(camera);\n \tconst StreamConfiguration &cfg = config[&data->stream_];\ndiff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\nindex 351712cfdc69..118b97457d2a 100644\n--- a/src/libcamera/pipeline/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo.cpp\n@@ -26,10 +26,10 @@ public:\n \tPipelineHandlerUVC(CameraManager *manager);\n \n \tCameraConfiguration\n-\tstreamConfiguration(Camera *camera,\n-\t\t\t    const std::vector<StreamUsage> &usages) override;\n-\tint configureStreams(Camera *camera,\n-\t\t\t     const CameraConfiguration &config) override;\n+\tgenerateConfiguration(Camera *camera,\n+\t\t\t      const std::vector<StreamUsage> &usages) override;\n+\tint configure(Camera *camera,\n+\t\t      const CameraConfiguration &config) override;\n \n \tint allocateBuffers(Camera *camera,\n \t\t\t    const std::set<Stream *> &streams) override;\n@@ -76,8 +76,8 @@ PipelineHandlerUVC::PipelineHandlerUVC(CameraManager *manager)\n }\n \n CameraConfiguration\n-PipelineHandlerUVC::streamConfiguration(Camera *camera,\n-\t\t\t\t\tconst std::vector<StreamUsage> &usages)\n+PipelineHandlerUVC::generateConfiguration(Camera *camera,\n+\t\t\t\t\t  const std::vector<StreamUsage> &usages)\n {\n \tUVCCameraData *data = cameraData(camera);\n \tCameraConfiguration config;\n@@ -92,8 +92,8 @@ PipelineHandlerUVC::streamConfiguration(Camera *camera,\n \treturn config;\n }\n \n-int PipelineHandlerUVC::configureStreams(Camera *camera,\n-\t\t\t\t\t const CameraConfiguration &config)\n+int PipelineHandlerUVC::configure(Camera *camera,\n+\t\t\t\t  const CameraConfiguration &config)\n {\n \tUVCCameraData *data = cameraData(camera);\n \tconst StreamConfiguration *cfg = &config[&data->stream_];\ndiff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\nindex 737d6df67def..74959581a7ef 100644\n--- a/src/libcamera/pipeline/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc.cpp\n@@ -26,10 +26,10 @@ public:\n \tPipelineHandlerVimc(CameraManager *manager);\n \n \tCameraConfiguration\n-\tstreamConfiguration(Camera *camera,\n-\t\t\t    const std::vector<StreamUsage> &usages) override;\n-\tint configureStreams(Camera *camera,\n-\t\t\t     const CameraConfiguration &config) override;\n+\tgenerateConfiguration(Camera *camera,\n+\t\t\t      const std::vector<StreamUsage> &usages) override;\n+\tint configure(Camera *camera,\n+\t\t      const CameraConfiguration &config) override;\n \n \tint allocateBuffers(Camera *camera,\n \t\t\t    const std::set<Stream *> &streams) override;\n@@ -76,8 +76,8 @@ PipelineHandlerVimc::PipelineHandlerVimc(CameraManager *manager)\n }\n \n CameraConfiguration\n-PipelineHandlerVimc::streamConfiguration(Camera *camera,\n-\t\t\t\t\t const std::vector<StreamUsage> &usages)\n+PipelineHandlerVimc::generateConfiguration(Camera *camera,\n+\t\t\t\t\t   const std::vector<StreamUsage> &usages)\n {\n \tVimcCameraData *data = cameraData(camera);\n \tCameraConfiguration config;\n@@ -92,8 +92,8 @@ PipelineHandlerVimc::streamConfiguration(Camera *camera,\n \treturn config;\n }\n \n-int PipelineHandlerVimc::configureStreams(Camera *camera,\n-\t\t\t\t\t  const CameraConfiguration &config)\n+int PipelineHandlerVimc::configure(Camera *camera,\n+\t\t\t\t   const CameraConfiguration &config)\n {\n \tVimcCameraData *data = cameraData(camera);\n \tconst StreamConfiguration *cfg = &config[&data->stream_];\ndiff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\nindex 1eeaf4bb6dae..b9ac64328f1d 100644\n--- a/src/libcamera/pipeline_handler.cpp\n+++ b/src/libcamera/pipeline_handler.cpp\n@@ -218,26 +218,26 @@ void PipelineHandler::unlock()\n }\n \n /**\n- * \\fn PipelineHandler::streamConfiguration()\n- * \\brief Retrieve a group of stream configurations for a specified camera\n- * \\param[in] camera The camera to fetch default configuration from\n+ * \\fn PipelineHandler::generateConfiguration()\n+ * \\brief Generate a camera configuration for a specified camera\n+ * \\param[in] camera The camera to generate a default configuration for\n  * \\param[in] usages A list of stream usages\n  *\n- * Retrieve the species camera's default configuration for a specified group of\n- * use-cases. The caller shall populate the \\a usages array with the use-cases it\n- * wishes to fetch the default configuration for. The map of streams and\n- * configurations returned can then be examined by the caller to learn about\n- * the default parameters for the specified streams.\n+ * Generate a default configuration for the \\a camera for a specified group of\n+ * use-cases. The caller shall populate the \\a usages array with the use-cases\n+ * it wishes to fetch the default configuration for. The returned configuration\n+ * can then be examined by the caller to learn about the selected streams and\n+ * their default parameters.\n  *\n- * The intended companion to this is \\a configureStreams() which can be used to\n- * change the group of streams parameters.\n+ * The intended companion to this is \\a configure() which can be used to change\n+ * the group of streams parameters.\n  *\n  * \\return A valid CameraConfiguration if the requested usages can be satisfied,\n  * or a invalid configuration otherwise\n  */\n \n /**\n- * \\fn PipelineHandler::configureStreams()\n+ * \\fn PipelineHandler::configure()\n  * \\brief Configure a group of streams for capture\n  * \\param[in] camera The camera to configure\n  * \\param[in] config The camera configurations to setup\n@@ -293,9 +293,9 @@ void PipelineHandler::unlock()\n  * \\param[in] camera The camera to start\n  *\n  * Start the group of streams that have been configured for capture by\n- * \\a configureStreams(). The intended caller of this method is the Camera\n- * class which will in turn be called from the application to indicate that it\n- * has configured the streams and is ready to capture.\n+ * \\a configure(). The intended caller of this method is the Camera class which\n+ * will in turn be called from the application to indicate that it has\n+ * configured the streams and is ready to capture.\n  *\n  * \\return 0 on success or a negative error code otherwise\n  */\ndiff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\nindex 4ff296e3a75b..af259510b19c 100644\n--- a/src/libcamera/stream.cpp\n+++ b/src/libcamera/stream.cpp\n@@ -218,9 +218,8 @@ Stream::Stream()\n  * \\brief The stream configuration\n  *\n  * The configuration for the stream is set by any successful call to\n- * Camera::configureStreams() that includes the stream, and remains valid until\n- * the next call to Camera::configureStreams() regardless of if it includes the\n- * stream.\n+ * Camera::configure() that includes the stream, and remains valid until the\n+ * next call to Camera::configure() regardless of if it includes the stream.\n  */\n \n } /* namespace libcamera */\ndiff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\nindex ee06d751672b..c91b82727ec6 100644\n--- a/src/qcam/main_window.cpp\n+++ b/src/qcam/main_window.cpp\n@@ -97,9 +97,9 @@ int MainWindow::startCapture()\n {\n \tint ret;\n \n-\tconfig_ = camera_->streamConfiguration({ Stream::VideoRecording() });\n+\tconfig_ = camera_->generateConfiguration({ Stream::VideoRecording() });\n \tStream *stream = config_.front();\n-\tret = camera_->configureStreams(config_);\n+\tret = camera_->configure(config_);\n \tif (ret < 0) {\n \t\tstd::cout << \"Failed to configure camera\" << std::endl;\n \t\treturn ret;\ndiff --git a/src/qcam/main_window.h b/src/qcam/main_window.h\nindex 9b31da2bf4b7..143b5b08a5a0 100644\n--- a/src/qcam/main_window.h\n+++ b/src/qcam/main_window.h\n@@ -35,7 +35,6 @@ private:\n \tint openCamera();\n \n \tint startCapture();\n-\tint configureStreams(Camera *camera, std::set<Stream *> &streams);\n \tvoid stopCapture();\n \n \tvoid requestComplete(Request *request,\ndiff --git a/test/camera/capture.cpp b/test/camera/capture.cpp\nindex 0101cc94e665..bc3a4d6cb9f2 100644\n--- a/test/camera/capture.cpp\n+++ b/test/camera/capture.cpp\n@@ -43,7 +43,7 @@ protected:\n \tint run()\n \t{\n \t\tCameraConfiguration config =\n-\t\t\tcamera_->streamConfiguration({ Stream::VideoRecording() });\n+\t\t\tcamera_->generateConfiguration({ Stream::VideoRecording() });\n \t\tStream *stream = config.front();\n \t\tStreamConfiguration *cfg = &config[stream];\n \n@@ -57,7 +57,7 @@ protected:\n \t\t\treturn TestFail;\n \t\t}\n \n-\t\tif (camera_->configureStreams(config)) {\n+\t\tif (camera_->configure(config)) {\n \t\t\tcout << \"Failed to set default configuration\" << endl;\n \t\t\treturn TestFail;\n \t\t}\ndiff --git a/test/camera/configuration_default.cpp b/test/camera/configuration_default.cpp\nindex 2a10ea507a67..340b5f58f04c 100644\n--- a/test/camera/configuration_default.cpp\n+++ b/test/camera/configuration_default.cpp\n@@ -21,7 +21,7 @@ protected:\n \t\tCameraConfiguration config;\n \n \t\t/* Test asking for configuration for a video stream. */\n-\t\tconfig = camera_->streamConfiguration({ Stream::VideoRecording() });\n+\t\tconfig = camera_->generateConfiguration({ Stream::VideoRecording() });\n \t\tif (!config.isValid()) {\n \t\t\tcout << \"Default configuration invalid\" << endl;\n \t\t\treturn TestFail;\n@@ -31,7 +31,7 @@ protected:\n \t\t * Test that asking for configuration for an empty array of\n \t\t * stream usages returns an empty list of configurations.\n \t\t */\n-\t\tconfig = camera_->streamConfiguration({});\n+\t\tconfig = camera_->generateConfiguration({});\n \t\tif (config.isValid()) {\n \t\t\tcout << \"Failed to retrieve configuration for empty usage list\"\n \t\t\t     << endl;\ndiff --git a/test/camera/configuration_set.cpp b/test/camera/configuration_set.cpp\nindex ca41ed689511..24d5ca6690b7 100644\n--- a/test/camera/configuration_set.cpp\n+++ b/test/camera/configuration_set.cpp\n@@ -19,7 +19,7 @@ protected:\n \tint run()\n \t{\n \t\tCameraConfiguration config =\n-\t\t\tcamera_->streamConfiguration({ Stream::VideoRecording() });\n+\t\t\tcamera_->generateConfiguration({ Stream::VideoRecording() });\n \t\tStreamConfiguration *cfg = &config[config.front()];\n \n \t\tif (!config.isValid()) {\n@@ -33,7 +33,7 @@ protected:\n \t\t}\n \n \t\t/* Test that setting the default configuration works. */\n-\t\tif (camera_->configureStreams(config)) {\n+\t\tif (camera_->configure(config)) {\n \t\t\tcout << \"Failed to set default configuration\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n@@ -48,7 +48,7 @@ protected:\n \t\t\treturn TestFail;\n \t\t}\n \n-\t\tif (!camera_->configureStreams(config)) {\n+\t\tif (!camera_->configure(config)) {\n \t\t\tcout << \"Setting configuration on a camera not acquired succeeded when it should have failed\"\n \t\t\t     << endl;\n \t\t\treturn TestFail;\n@@ -66,7 +66,7 @@ protected:\n \t\t */\n \t\tcfg->size.width *= 2;\n \t\tcfg->size.height *= 2;\n-\t\tif (camera_->configureStreams(config)) {\n+\t\tif (camera_->configure(config)) {\n \t\t\tcout << \"Failed to set modified configuration\" << endl;\n \t\t\treturn TestFail;\n \t\t}\n@@ -75,7 +75,7 @@ protected:\n \t\t * Test that setting an invalid configuration fails.\n \t\t */\n \t\tcfg->size = { 0, 0 };\n-\t\tif (!camera_->configureStreams(config)) {\n+\t\tif (!camera_->configure(config)) {\n \t\t\tcout << \"Invalid configuration incorrectly accepted\" << endl;\n \t\t\treturn TestFail;\n \t\t}\ndiff --git a/test/camera/statemachine.cpp b/test/camera/statemachine.cpp\nindex 8ae93bee7ca1..bd2e61ff2939 100644\n--- a/test/camera/statemachine.cpp\n+++ b/test/camera/statemachine.cpp\n@@ -19,7 +19,7 @@ protected:\n \tint testAvailable()\n \t{\n \t\t/* Test operations which should fail. */\n-\t\tif (camera_->configureStreams(defconf_) != -EACCES)\n+\t\tif (camera_->configure(defconf_) != -EACCES)\n \t\t\treturn TestFail;\n \n \t\tif (camera_->allocateBuffers() != -EACCES)\n@@ -84,7 +84,7 @@ protected:\n \t\tif (camera_->acquire())\n \t\t\treturn TestFail;\n \n-\t\tif (camera_->configureStreams(defconf_))\n+\t\tif (camera_->configure(defconf_))\n \t\t\treturn TestFail;\n \n \t\treturn TestPass;\n@@ -113,7 +113,7 @@ protected:\n \t\t\treturn TestFail;\n \n \t\t/* Test operations which should pass. */\n-\t\tif (camera_->configureStreams(defconf_))\n+\t\tif (camera_->configure(defconf_))\n \t\t\treturn TestFail;\n \n \t\t/* Test valid state transitions, end in Prepared state. */\n@@ -123,7 +123,7 @@ protected:\n \t\tif (camera_->acquire())\n \t\t\treturn TestFail;\n \n-\t\tif (camera_->configureStreams(defconf_))\n+\t\tif (camera_->configure(defconf_))\n \t\t\treturn TestFail;\n \n \t\tif (camera_->allocateBuffers())\n@@ -141,7 +141,7 @@ protected:\n \t\tif (camera_->release() != -EBUSY)\n \t\t\treturn TestFail;\n \n-\t\tif (camera_->configureStreams(defconf_) != -EACCES)\n+\t\tif (camera_->configure(defconf_) != -EACCES)\n \t\t\treturn TestFail;\n \n \t\tif (camera_->allocateBuffers() != -EACCES)\n@@ -172,7 +172,7 @@ protected:\n \t\tif (camera_->acquire())\n \t\t\treturn TestFail;\n \n-\t\tif (camera_->configureStreams(defconf_))\n+\t\tif (camera_->configure(defconf_))\n \t\t\treturn TestFail;\n \n \t\tif (camera_->allocateBuffers())\n@@ -193,7 +193,7 @@ protected:\n \t\tif (camera_->release() != -EBUSY)\n \t\t\treturn TestFail;\n \n-\t\tif (camera_->configureStreams(defconf_) != -EACCES)\n+\t\tif (camera_->configure(defconf_) != -EACCES)\n \t\t\treturn TestFail;\n \n \t\tif (camera_->allocateBuffers() != -EACCES)\n@@ -235,7 +235,7 @@ protected:\n \n \tint run()\n \t{\n-\t\tdefconf_ = camera_->streamConfiguration({ Stream::VideoRecording() });\n+\t\tdefconf_ = camera_->generateConfiguration({ Stream::VideoRecording() });\n \n \t\tif (testAvailable() != TestPass) {\n \t\t\tcout << \"State machine in Available state failed\" << endl;\n","prefixes":["libcamera-devel","v3","1/6"]}