[libcamera-devel,RFC,2/5] test: camera: Remove streams argument from configurationValid()

Message ID 20190402005332.25018-3-niklas.soderlund@ragnatech.se
State Accepted
Headers show
Series
  • libcamera: camera: Add support for stream usage hint
Related show

Commit Message

Niklas Söderlund April 2, 2019, 12:53 a.m. UTC
In preparation of reworking how a default configuration is retrieved
from a camera remove the streams and validation using the stream when
judging if a camera configuration is valid. This is needed as once
stream usage hints are added applications will no longer fetch default
configuration based on Stream IDs so using them to verify the returned
format is not useful.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
---
 test/camera/camera_test.cpp           | 26 ++++++++------------------
 test/camera/camera_test.h             |  3 +--
 test/camera/capture.cpp               |  2 +-
 test/camera/configuration_default.cpp |  2 +-
 test/camera/configuration_set.cpp     |  2 +-
 5 files changed, 12 insertions(+), 23 deletions(-)

Comments

Jacopo Mondi April 2, 2019, 7:42 a.m. UTC | #1
Hi Niklas

On Tue, Apr 02, 2019 at 02:53:29AM +0200, Niklas Söderlund wrote:
> In preparation of reworking how a default configuration is retrieved
> from a camera remove the streams and validation using the stream when
> judging if a camera configuration is valid. This is needed as once
> stream usage hints are added applications will no longer fetch default
> configuration based on Stream IDs so using them to verify the returned
> format is not useful.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> ---
>  test/camera/camera_test.cpp           | 26 ++++++++------------------
>  test/camera/camera_test.h             |  3 +--
>  test/camera/capture.cpp               |  2 +-
>  test/camera/configuration_default.cpp |  2 +-
>  test/camera/configuration_set.cpp     |  2 +-
>  5 files changed, 12 insertions(+), 23 deletions(-)
>
> diff --git a/test/camera/camera_test.cpp b/test/camera/camera_test.cpp
> index a92f2165bf3a53c1..5985b85c44816e30 100644
> --- a/test/camera/camera_test.cpp
> +++ b/test/camera/camera_test.cpp
> @@ -46,27 +46,17 @@ void CameraTest::cleanup()
>  	cm_->stop();
>  };
>
> -bool CameraTest::configurationValid(const std::set<Stream *> &streams,
> -				    const std::map<Stream *, StreamConfiguration> &conf) const
> +bool CameraTest::configurationValid(const std::map<Stream *, StreamConfiguration> &config) const
>  {
> -	/* Test that the numbers of streams matches that of configuration. */
> -	if (streams.size() != conf.size())
> +	/* Test that the configuration is not empty. */
> +	if (config.empty())
>  		return false;
>
> -	/*
> -	 * Test that stream can be found in configuration and that the
> -	 * configuration is valid.
> -	 */
> -	for (Stream *stream : streams) {
> -		std::map<Stream *, StreamConfiguration>::const_iterator it =
> -			conf.find(stream);
> -
> -		if (it == conf.end())
> -			return false;
> -
> -		const StreamConfiguration *sconf = &it->second;
> -		if (sconf->width == 0 || sconf->height == 0 ||
> -		    sconf->pixelFormat == 0 || sconf->bufferCount == 0)
> +	/* Test that configuration is valid. */
> +	for (auto const &it : config) {
> +		const StreamConfiguration &conf = it.second;

empty line maybe?

> +		if (conf.width == 0 || conf.height == 0 ||
> +		    conf.pixelFormat == 0 || conf.bufferCount == 0)

Should we do any sanity check on the Stream * too? Like it's unique in
the map? This might not be required, as we would actually validate the
pipeline handler in that case, but...

Thanks
  j

>  			return false;
>  	}
>
> diff --git a/test/camera/camera_test.h b/test/camera/camera_test.h
> index 48fb47a23fe8f49c..5801fad3281e1653 100644
> --- a/test/camera/camera_test.h
> +++ b/test/camera/camera_test.h
> @@ -23,8 +23,7 @@ protected:
>  	int init();
>  	void cleanup();
>
> -	bool configurationValid(const std::set<Stream *> &streams,
> -				const std::map<Stream *, StreamConfiguration> &conf) const;
> +	bool configurationValid(const std::map<Stream *, StreamConfiguration> &config) const;
>
>  	std::shared_ptr<Camera> camera_;
>
> diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp
> index 28eb61405d90a4c7..f6932b7505571712 100644
> --- a/test/camera/capture.cpp
> +++ b/test/camera/capture.cpp
> @@ -48,7 +48,7 @@ protected:
>  			camera_->streamConfiguration(streams);
>  		StreamConfiguration *sconf = &conf.begin()->second;
>
> -		if (!configurationValid(streams, conf)) {
> +		if (!configurationValid(conf)) {
>  			cout << "Failed to read default configuration" << endl;
>  			return TestFail;
>  		}
> diff --git a/test/camera/configuration_default.cpp b/test/camera/configuration_default.cpp
> index 71e79844667591b2..53ee021d33ca39b1 100644
> --- a/test/camera/configuration_default.cpp
> +++ b/test/camera/configuration_default.cpp
> @@ -32,7 +32,7 @@ protected:
>  			return TestFail;
>  		}
>
> -		if (!configurationValid(streams, conf)) {
> +		if (!configurationValid(conf)) {
>  			cout << "Default configuration invalid" << endl;
>  			return TestFail;
>  		}
> diff --git a/test/camera/configuration_set.cpp b/test/camera/configuration_set.cpp
> index dedb85009335aa46..cac1da959f241bc5 100644
> --- a/test/camera/configuration_set.cpp
> +++ b/test/camera/configuration_set.cpp
> @@ -23,7 +23,7 @@ protected:
>  			camera_->streamConfiguration(streams);
>  		StreamConfiguration *sconf = &conf.begin()->second;
>
> -		if (!configurationValid(streams, conf)) {
> +		if (!configurationValid(conf)) {
>  			cout << "Failed to read default configuration" << endl;
>  			return TestFail;
>  		}
> --
> 2.21.0
>
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Niklas Söderlund April 2, 2019, 11:48 a.m. UTC | #2
Hi Jacopo,

Thanks for your feedback.

On 2019-04-02 09:42:11 +0200, Jacopo Mondi wrote:
> Hi Niklas
> 
> On Tue, Apr 02, 2019 at 02:53:29AM +0200, Niklas Söderlund wrote:
> > In preparation of reworking how a default configuration is retrieved
> > from a camera remove the streams and validation using the stream when
> > judging if a camera configuration is valid. This is needed as once
> > stream usage hints are added applications will no longer fetch default
> > configuration based on Stream IDs so using them to verify the returned
> > format is not useful.
> >
> > Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> > ---
> >  test/camera/camera_test.cpp           | 26 ++++++++------------------
> >  test/camera/camera_test.h             |  3 +--
> >  test/camera/capture.cpp               |  2 +-
> >  test/camera/configuration_default.cpp |  2 +-
> >  test/camera/configuration_set.cpp     |  2 +-
> >  5 files changed, 12 insertions(+), 23 deletions(-)
> >
> > diff --git a/test/camera/camera_test.cpp b/test/camera/camera_test.cpp
> > index a92f2165bf3a53c1..5985b85c44816e30 100644
> > --- a/test/camera/camera_test.cpp
> > +++ b/test/camera/camera_test.cpp
> > @@ -46,27 +46,17 @@ void CameraTest::cleanup()
> >  	cm_->stop();
> >  };
> >
> > -bool CameraTest::configurationValid(const std::set<Stream *> &streams,
> > -				    const std::map<Stream *, StreamConfiguration> &conf) const
> > +bool CameraTest::configurationValid(const std::map<Stream *, StreamConfiguration> &config) const
> >  {
> > -	/* Test that the numbers of streams matches that of configuration. */
> > -	if (streams.size() != conf.size())
> > +	/* Test that the configuration is not empty. */
> > +	if (config.empty())
> >  		return false;
> >
> > -	/*
> > -	 * Test that stream can be found in configuration and that the
> > -	 * configuration is valid.
> > -	 */
> > -	for (Stream *stream : streams) {
> > -		std::map<Stream *, StreamConfiguration>::const_iterator it =
> > -			conf.find(stream);
> > -
> > -		if (it == conf.end())
> > -			return false;
> > -
> > -		const StreamConfiguration *sconf = &it->second;
> > -		if (sconf->width == 0 || sconf->height == 0 ||
> > -		    sconf->pixelFormat == 0 || sconf->bufferCount == 0)
> > +	/* Test that configuration is valid. */
> > +	for (auto const &it : config) {
> > +		const StreamConfiguration &conf = it.second;
> 
> empty line maybe?

I have no strong opinion, will add for next version.

> 
> > +		if (conf.width == 0 || conf.height == 0 ||
> > +		    conf.pixelFormat == 0 || conf.bufferCount == 0)
> 
> Should we do any sanity check on the Stream * too? Like it's unique in
> the map? This might not be required, as we would actually validate the
> pipeline handler in that case, but...

The Stream * is always unique as it's the key of the map :-)

> 
> Thanks
>   j
> 
> >  			return false;
> >  	}
> >
> > diff --git a/test/camera/camera_test.h b/test/camera/camera_test.h
> > index 48fb47a23fe8f49c..5801fad3281e1653 100644
> > --- a/test/camera/camera_test.h
> > +++ b/test/camera/camera_test.h
> > @@ -23,8 +23,7 @@ protected:
> >  	int init();
> >  	void cleanup();
> >
> > -	bool configurationValid(const std::set<Stream *> &streams,
> > -				const std::map<Stream *, StreamConfiguration> &conf) const;
> > +	bool configurationValid(const std::map<Stream *, StreamConfiguration> &config) const;
> >
> >  	std::shared_ptr<Camera> camera_;
> >
> > diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp
> > index 28eb61405d90a4c7..f6932b7505571712 100644
> > --- a/test/camera/capture.cpp
> > +++ b/test/camera/capture.cpp
> > @@ -48,7 +48,7 @@ protected:
> >  			camera_->streamConfiguration(streams);
> >  		StreamConfiguration *sconf = &conf.begin()->second;
> >
> > -		if (!configurationValid(streams, conf)) {
> > +		if (!configurationValid(conf)) {
> >  			cout << "Failed to read default configuration" << endl;
> >  			return TestFail;
> >  		}
> > diff --git a/test/camera/configuration_default.cpp b/test/camera/configuration_default.cpp
> > index 71e79844667591b2..53ee021d33ca39b1 100644
> > --- a/test/camera/configuration_default.cpp
> > +++ b/test/camera/configuration_default.cpp
> > @@ -32,7 +32,7 @@ protected:
> >  			return TestFail;
> >  		}
> >
> > -		if (!configurationValid(streams, conf)) {
> > +		if (!configurationValid(conf)) {
> >  			cout << "Default configuration invalid" << endl;
> >  			return TestFail;
> >  		}
> > diff --git a/test/camera/configuration_set.cpp b/test/camera/configuration_set.cpp
> > index dedb85009335aa46..cac1da959f241bc5 100644
> > --- a/test/camera/configuration_set.cpp
> > +++ b/test/camera/configuration_set.cpp
> > @@ -23,7 +23,7 @@ protected:
> >  			camera_->streamConfiguration(streams);
> >  		StreamConfiguration *sconf = &conf.begin()->second;
> >
> > -		if (!configurationValid(streams, conf)) {
> > +		if (!configurationValid(conf)) {
> >  			cout << "Failed to read default configuration" << endl;
> >  			return TestFail;
> >  		}
> > --
> > 2.21.0
> >
> > _______________________________________________
> > libcamera-devel mailing list
> > libcamera-devel@lists.libcamera.org
> > https://lists.libcamera.org/listinfo/libcamera-devel
Laurent Pinchart April 2, 2019, 2:22 p.m. UTC | #3
On Tue, Apr 02, 2019 at 02:53:29AM +0200, Niklas Söderlund wrote:
> In preparation of reworking how a default configuration is retrieved
> from a camera remove the streams and validation using the stream when
> judging if a camera configuration is valid. This is needed as once
> stream usage hints are added applications will no longer fetch default
> configuration based on Stream IDs so using them to verify the returned
> format is not useful.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  test/camera/camera_test.cpp           | 26 ++++++++------------------
>  test/camera/camera_test.h             |  3 +--
>  test/camera/capture.cpp               |  2 +-
>  test/camera/configuration_default.cpp |  2 +-
>  test/camera/configuration_set.cpp     |  2 +-
>  5 files changed, 12 insertions(+), 23 deletions(-)
> 
> diff --git a/test/camera/camera_test.cpp b/test/camera/camera_test.cpp
> index a92f2165bf3a53c1..5985b85c44816e30 100644
> --- a/test/camera/camera_test.cpp
> +++ b/test/camera/camera_test.cpp
> @@ -46,27 +46,17 @@ void CameraTest::cleanup()
>  	cm_->stop();
>  };
>  
> -bool CameraTest::configurationValid(const std::set<Stream *> &streams,
> -				    const std::map<Stream *, StreamConfiguration> &conf) const
> +bool CameraTest::configurationValid(const std::map<Stream *, StreamConfiguration> &config) const
>  {
> -	/* Test that the numbers of streams matches that of configuration. */
> -	if (streams.size() != conf.size())
> +	/* Test that the configuration is not empty. */
> +	if (config.empty())
>  		return false;
>  
> -	/*
> -	 * Test that stream can be found in configuration and that the
> -	 * configuration is valid.
> -	 */
> -	for (Stream *stream : streams) {
> -		std::map<Stream *, StreamConfiguration>::const_iterator it =
> -			conf.find(stream);
> -
> -		if (it == conf.end())
> -			return false;
> -
> -		const StreamConfiguration *sconf = &it->second;
> -		if (sconf->width == 0 || sconf->height == 0 ||
> -		    sconf->pixelFormat == 0 || sconf->bufferCount == 0)
> +	/* Test that configuration is valid. */
> +	for (auto const &it : config) {
> +		const StreamConfiguration &conf = it.second;
> +		if (conf.width == 0 || conf.height == 0 ||
> +		    conf.pixelFormat == 0 || conf.bufferCount == 0)
>  			return false;
>  	}
>  
> diff --git a/test/camera/camera_test.h b/test/camera/camera_test.h
> index 48fb47a23fe8f49c..5801fad3281e1653 100644
> --- a/test/camera/camera_test.h
> +++ b/test/camera/camera_test.h
> @@ -23,8 +23,7 @@ protected:
>  	int init();
>  	void cleanup();
>  
> -	bool configurationValid(const std::set<Stream *> &streams,
> -				const std::map<Stream *, StreamConfiguration> &conf) const;
> +	bool configurationValid(const std::map<Stream *, StreamConfiguration> &config) const;
>  
>  	std::shared_ptr<Camera> camera_;
>  
> diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp
> index 28eb61405d90a4c7..f6932b7505571712 100644
> --- a/test/camera/capture.cpp
> +++ b/test/camera/capture.cpp
> @@ -48,7 +48,7 @@ protected:
>  			camera_->streamConfiguration(streams);
>  		StreamConfiguration *sconf = &conf.begin()->second;
>  
> -		if (!configurationValid(streams, conf)) {
> +		if (!configurationValid(conf)) {
>  			cout << "Failed to read default configuration" << endl;
>  			return TestFail;
>  		}
> diff --git a/test/camera/configuration_default.cpp b/test/camera/configuration_default.cpp
> index 71e79844667591b2..53ee021d33ca39b1 100644
> --- a/test/camera/configuration_default.cpp
> +++ b/test/camera/configuration_default.cpp
> @@ -32,7 +32,7 @@ protected:
>  			return TestFail;
>  		}
>  
> -		if (!configurationValid(streams, conf)) {
> +		if (!configurationValid(conf)) {
>  			cout << "Default configuration invalid" << endl;
>  			return TestFail;
>  		}
> diff --git a/test/camera/configuration_set.cpp b/test/camera/configuration_set.cpp
> index dedb85009335aa46..cac1da959f241bc5 100644
> --- a/test/camera/configuration_set.cpp
> +++ b/test/camera/configuration_set.cpp
> @@ -23,7 +23,7 @@ protected:
>  			camera_->streamConfiguration(streams);
>  		StreamConfiguration *sconf = &conf.begin()->second;
>  
> -		if (!configurationValid(streams, conf)) {
> +		if (!configurationValid(conf)) {
>  			cout << "Failed to read default configuration" << endl;
>  			return TestFail;
>  		}

Patch

diff --git a/test/camera/camera_test.cpp b/test/camera/camera_test.cpp
index a92f2165bf3a53c1..5985b85c44816e30 100644
--- a/test/camera/camera_test.cpp
+++ b/test/camera/camera_test.cpp
@@ -46,27 +46,17 @@  void CameraTest::cleanup()
 	cm_->stop();
 };
 
-bool CameraTest::configurationValid(const std::set<Stream *> &streams,
-				    const std::map<Stream *, StreamConfiguration> &conf) const
+bool CameraTest::configurationValid(const std::map<Stream *, StreamConfiguration> &config) const
 {
-	/* Test that the numbers of streams matches that of configuration. */
-	if (streams.size() != conf.size())
+	/* Test that the configuration is not empty. */
+	if (config.empty())
 		return false;
 
-	/*
-	 * Test that stream can be found in configuration and that the
-	 * configuration is valid.
-	 */
-	for (Stream *stream : streams) {
-		std::map<Stream *, StreamConfiguration>::const_iterator it =
-			conf.find(stream);
-
-		if (it == conf.end())
-			return false;
-
-		const StreamConfiguration *sconf = &it->second;
-		if (sconf->width == 0 || sconf->height == 0 ||
-		    sconf->pixelFormat == 0 || sconf->bufferCount == 0)
+	/* Test that configuration is valid. */
+	for (auto const &it : config) {
+		const StreamConfiguration &conf = it.second;
+		if (conf.width == 0 || conf.height == 0 ||
+		    conf.pixelFormat == 0 || conf.bufferCount == 0)
 			return false;
 	}
 
diff --git a/test/camera/camera_test.h b/test/camera/camera_test.h
index 48fb47a23fe8f49c..5801fad3281e1653 100644
--- a/test/camera/camera_test.h
+++ b/test/camera/camera_test.h
@@ -23,8 +23,7 @@  protected:
 	int init();
 	void cleanup();
 
-	bool configurationValid(const std::set<Stream *> &streams,
-				const std::map<Stream *, StreamConfiguration> &conf) const;
+	bool configurationValid(const std::map<Stream *, StreamConfiguration> &config) const;
 
 	std::shared_ptr<Camera> camera_;
 
diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp
index 28eb61405d90a4c7..f6932b7505571712 100644
--- a/test/camera/capture.cpp
+++ b/test/camera/capture.cpp
@@ -48,7 +48,7 @@  protected:
 			camera_->streamConfiguration(streams);
 		StreamConfiguration *sconf = &conf.begin()->second;
 
-		if (!configurationValid(streams, conf)) {
+		if (!configurationValid(conf)) {
 			cout << "Failed to read default configuration" << endl;
 			return TestFail;
 		}
diff --git a/test/camera/configuration_default.cpp b/test/camera/configuration_default.cpp
index 71e79844667591b2..53ee021d33ca39b1 100644
--- a/test/camera/configuration_default.cpp
+++ b/test/camera/configuration_default.cpp
@@ -32,7 +32,7 @@  protected:
 			return TestFail;
 		}
 
-		if (!configurationValid(streams, conf)) {
+		if (!configurationValid(conf)) {
 			cout << "Default configuration invalid" << endl;
 			return TestFail;
 		}
diff --git a/test/camera/configuration_set.cpp b/test/camera/configuration_set.cpp
index dedb85009335aa46..cac1da959f241bc5 100644
--- a/test/camera/configuration_set.cpp
+++ b/test/camera/configuration_set.cpp
@@ -23,7 +23,7 @@  protected:
 			camera_->streamConfiguration(streams);
 		StreamConfiguration *sconf = &conf.begin()->second;
 
-		if (!configurationValid(streams, conf)) {
+		if (!configurationValid(conf)) {
 			cout << "Failed to read default configuration" << endl;
 			return TestFail;
 		}