[libcamera-devel] [PATCH v2 2/5] libcamera: Add user Transform to CameraConfiguration

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Aug 19 10:34:13 CEST 2020


Hi Laurent,

On 19/08/2020 02:58, Laurent Pinchart wrote:
> Hi David,
> 
> Thank you for the patch.
> 
> On Thu, Aug 06, 2020 at 05:36:36PM +0100, David Plowman wrote:
>> Add a field to the CameraConfiguration to represent a 2d transform
>> requested by the application. All pipeline handlers are amended to
>> coerce this to the Identity, marking the configuration as "adjusted"
>> if something different had been requested.
>>
>> Pipeline handlers that support Transforms can be amended subsequently.
> 
> Missing SoB here too. Maybe that was done on purpose, as the series
> isn't complete yet. It's also customary to express that with RFC/PATCH
> in the subject line (git-format-patch has a --subject-prefix options for
> that).

it also has --rfc directly as a shorthand ;-)

git format-patch -3 --cover-letter --rfc -v2

cat v2-0000-cover-letter.patch  | grep Subject
Subject: [RFC PATCH v2 0/3] *** SUBJECT HERE ***

--
Kieran


> 
> Apart from the missing documentation, this looks fine to me.
> 
>> ---
>>  include/libcamera/camera.h                         | 3 +++
>>  src/libcamera/camera.cpp                           | 2 +-
>>  src/libcamera/pipeline/ipu3/ipu3.cpp               | 5 +++++
>>  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 5 +++++
>>  src/libcamera/pipeline/rkisp1/rkisp1.cpp           | 5 +++++
>>  src/libcamera/pipeline/simple/simple.cpp           | 5 +++++
>>  src/libcamera/pipeline/uvcvideo/uvcvideo.cpp       | 5 +++++
>>  src/libcamera/pipeline/vimc/vimc.cpp               | 5 +++++
>>  8 files changed, 34 insertions(+), 1 deletion(-)
>>
>> diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h
>> index 48d88d6..dedc1c6 100644
>> --- a/include/libcamera/camera.h
>> +++ b/include/libcamera/camera.h
>> @@ -17,6 +17,7 @@
>>  #include <libcamera/request.h>
>>  #include <libcamera/signal.h>
>>  #include <libcamera/stream.h>
>> +#include <libcamera/transform.h>
>>  
>>  namespace libcamera {
>>  
>> @@ -61,6 +62,8 @@ public:
>>  	bool empty() const;
>>  	std::size_t size() const;
>>  
>> +	Transform transform;
>> +
>>  protected:
>>  	CameraConfiguration();
>>  
>> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
>> index 820fa1e..4282a02 100644
>> --- a/src/libcamera/camera.cpp
>> +++ b/src/libcamera/camera.cpp
>> @@ -93,7 +93,7 @@ LOG_DECLARE_CATEGORY(Camera)
>>   * \brief Create an empty camera configuration
>>   */
>>  CameraConfiguration::CameraConfiguration()
>> -	: config_({})
>> +	: transform(Transform::Identity), config_({})
>>  {
>>  }
>>  
>> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
>> index d931ed3..a9a82a4 100644
>> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
>> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
>> @@ -138,6 +138,11 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
>>  	if (config_.empty())
>>  		return Invalid;
>>  
>> +	if (transform != Transform::Identity) {
>> +		transform = Transform::Identity;
>> +		status = Adjusted;
>> +	}
>> +
>>  	/* Cap the number of entries to the available streams. */
>>  	if (config_.size() > IPU3_MAX_STREAMS) {
>>  		config_.resize(IPU3_MAX_STREAMS);
>> diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
>> index eeaf335..236aa5c 100644
>> --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
>> +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
>> @@ -400,6 +400,11 @@ CameraConfiguration::Status RPiCameraConfiguration::validate()
>>  	if (config_.empty())
>>  		return Invalid;
>>  
>> +	if (transform != Transform::Identity) {
>> +		transform = Transform::Identity;
>> +		status = Adjusted;
>> +	}
>> +
>>  	unsigned int rawCount = 0, outCount = 0, count = 0, maxIndex = 0;
>>  	std::pair<int, Size> outSize[2];
>>  	Size maxSize;
>> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
>> index b7609cb..002f8e5 100644
>> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
>> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
>> @@ -478,6 +478,11 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate()
>>  	if (config_.empty())
>>  		return Invalid;
>>  
>> +	if (transform != Transform::Identity) {
>> +		transform = Transform::Identity;
>> +		status = Adjusted;
>> +	}
>> +
>>  	/* Cap the number of entries to the available streams. */
>>  	if (config_.size() > 1) {
>>  		config_.resize(1);
>> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
>> index eb72e3b..10223a9 100644
>> --- a/src/libcamera/pipeline/simple/simple.cpp
>> +++ b/src/libcamera/pipeline/simple/simple.cpp
>> @@ -438,6 +438,11 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate()
>>  	if (config_.empty())
>>  		return Invalid;
>>  
>> +	if (transform != Transform::Identity) {
>> +		transform = Transform::Identity;
>> +		status = Adjusted;
>> +	}
>> +
>>  	/* Cap the number of entries to the available streams. */
>>  	if (config_.size() > 1) {
>>  		config_.resize(1);
>> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
>> index bc892ec..fd14248 100644
>> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
>> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
>> @@ -108,6 +108,11 @@ CameraConfiguration::Status UVCCameraConfiguration::validate()
>>  	if (config_.empty())
>>  		return Invalid;
>>  
>> +	if (transform != Transform::Identity) {
>> +		transform = Transform::Identity;
>> +		status = Adjusted;
>> +	}
>> +
>>  	/* Cap the number of entries to the available streams. */
>>  	if (config_.size() > 1) {
>>  		config_.resize(1);
>> diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp
>> index cf244f1..bb791d6 100644
>> --- a/src/libcamera/pipeline/vimc/vimc.cpp
>> +++ b/src/libcamera/pipeline/vimc/vimc.cpp
>> @@ -130,6 +130,11 @@ CameraConfiguration::Status VimcCameraConfiguration::validate()
>>  	if (config_.empty())
>>  		return Invalid;
>>  
>> +	if (transform != Transform::Identity) {
>> +		transform = Transform::Identity;
>> +		status = Adjusted;
>> +	}
>> +
>>  	/* Cap the number of entries to the available streams. */
>>  	if (config_.size() > 1) {
>>  		config_.resize(1);
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list