[libcamera-devel,v2,2/4] android: Modify Encoder interface
diff mbox series

Message ID 20201020074229.119151-2-hiroh@chromium.org
State Accepted
Headers show
Series
  • [libcamera-devel,v2,1/4] android: Modify PostProcessor interface
Related show

Commit Message

Hirokazu Honda Oct. 20, 2020, 7:42 a.m. UTC
In Encoder::encode(), the |source| argument doesn't have to be a
pointer. This replaces its type, const pointer, with const
reference as the latter is preferred to the former.
libcamera::Span is chea to construct/copy/move. We should deal
with the type as pass-by-value parameter. Therefore this also
drops the const reference in the |destination| argument.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
---
 src/android/jpeg/encoder.h               | 4 ++--
 src/android/jpeg/encoder_libjpeg.cpp     | 6 +++---
 src/android/jpeg/encoder_libjpeg.h       | 4 ++--
 src/android/jpeg/post_processor_jpeg.cpp | 2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

Comments

Umang Jain Oct. 20, 2020, 10:38 a.m. UTC | #1
Hi Hiro,

Thanks for your work.

On 10/20/20 1:12 PM, Hirokazu Honda wrote:
> In Encoder::encode(), the |source| argument doesn't have to be a
> pointer. This replaces its type, const pointer, with const
> reference as the latter is preferred to the former.
> libcamera::Span is chea to construct/copy/move. We should deal
s/chea/cheap
> with the type as pass-by-value parameter. Therefore this also
> drops the const reference in the |destination| argument.
>
> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
LGTM again.
Reviewed-by: Umang Jain <email@uajain.com>
> ---
>   src/android/jpeg/encoder.h               | 4 ++--
>   src/android/jpeg/encoder_libjpeg.cpp     | 6 +++---
>   src/android/jpeg/encoder_libjpeg.h       | 4 ++--
>   src/android/jpeg/post_processor_jpeg.cpp | 2 +-
>   4 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/src/android/jpeg/encoder.h b/src/android/jpeg/encoder.h
> index 4483153..4fe71cf 100644
> --- a/src/android/jpeg/encoder.h
> +++ b/src/android/jpeg/encoder.h
> @@ -17,8 +17,8 @@ public:
>   	virtual ~Encoder() {};
>   
>   	virtual int configure(const libcamera::StreamConfiguration &cfg) = 0;
> -	virtual int encode(const libcamera::FrameBuffer *source,
> -			   const libcamera::Span<uint8_t> &destination,
> +	virtual int encode(const libcamera::FrameBuffer &source,
> +			   libcamera::Span<uint8_t> destination,
>   			   const libcamera::Span<const uint8_t> &exifData) = 0;
>   };
>   
> diff --git a/src/android/jpeg/encoder_libjpeg.cpp b/src/android/jpeg/encoder_libjpeg.cpp
> index 8995ba5..4236c9d 100644
> --- a/src/android/jpeg/encoder_libjpeg.cpp
> +++ b/src/android/jpeg/encoder_libjpeg.cpp
> @@ -179,11 +179,11 @@ void EncoderLibJpeg::compressNV(const libcamera::MappedBuffer *frame)
>   	}
>   }
>   
> -int EncoderLibJpeg::encode(const FrameBuffer *source,
> -			   const libcamera::Span<uint8_t> &dest,
> +int EncoderLibJpeg::encode(const FrameBuffer &source,
> +			   libcamera::Span<uint8_t> dest,
>   			   const libcamera::Span<const uint8_t> &exifData)
>   {
> -	MappedFrameBuffer frame(source, PROT_READ);
> +	MappedFrameBuffer frame(&source, PROT_READ);
>   	if (!frame.isValid()) {
>   		LOG(JPEG, Error) << "Failed to map FrameBuffer : "
>   				 << strerror(frame.error());
> diff --git a/src/android/jpeg/encoder_libjpeg.h b/src/android/jpeg/encoder_libjpeg.h
> index 934caef..391a53c 100644
> --- a/src/android/jpeg/encoder_libjpeg.h
> +++ b/src/android/jpeg/encoder_libjpeg.h
> @@ -21,8 +21,8 @@ public:
>   	~EncoderLibJpeg();
>   
>   	int configure(const libcamera::StreamConfiguration &cfg) override;
> -	int encode(const libcamera::FrameBuffer *source,
> -		   const libcamera::Span<uint8_t> &destination,
> +	int encode(const libcamera::FrameBuffer &source,
> +		   libcamera::Span<uint8_t> destination,
>   		   const libcamera::Span<const uint8_t> &exifData) override;
>   
>   private:
> diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp
> index 55b9088..6f33631 100644
> --- a/src/android/jpeg/post_processor_jpeg.cpp
> +++ b/src/android/jpeg/post_processor_jpeg.cpp
> @@ -67,7 +67,7 @@ int PostProcessorJpeg::process(const libcamera::FrameBuffer &source,
>   	if (exif.generate() != 0)
>   		LOG(JPEG, Error) << "Failed to generate valid EXIF data";
>   
> -	int jpeg_size = encoder_->encode(&source, destination, exif.data());
> +	int jpeg_size = encoder_->encode(source, destination, exif.data());
Perfect. I was expecting this from v1.
>   	if (jpeg_size < 0) {
>   		LOG(JPEG, Error) << "Failed to encode stream image";
>   		return jpeg_size;
Kieran Bingham Oct. 20, 2020, 2:57 p.m. UTC | #2
Hi Hiro,

On 20/10/2020 11:38, Umang Jain wrote:
> Hi Hiro,
> 
> Thanks for your work.
> 
> On 10/20/20 1:12 PM, Hirokazu Honda wrote:
>> In Encoder::encode(), the |source| argument doesn't have to be a
>> pointer. This replaces its type, const pointer, with const
>> reference as the latter is preferred to the former.
>> libcamera::Span is chea to construct/copy/move. We should deal
> s/chea/cheap

Hrm, this is fine in the original. Must have caught it while editing.

>> with the type as pass-by-value parameter. Therefore this also
>> drops the const reference in the |destination| argument.
>>
>> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
> LGTM again.
> Reviewed-by: Umang Jain <email@uajain.com>

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

>> ---
>>   src/android/jpeg/encoder.h               | 4 ++--
>>   src/android/jpeg/encoder_libjpeg.cpp     | 6 +++---
>>   src/android/jpeg/encoder_libjpeg.h       | 4 ++--
>>   src/android/jpeg/post_processor_jpeg.cpp | 2 +-
>>   4 files changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/src/android/jpeg/encoder.h b/src/android/jpeg/encoder.h
>> index 4483153..4fe71cf 100644
>> --- a/src/android/jpeg/encoder.h
>> +++ b/src/android/jpeg/encoder.h
>> @@ -17,8 +17,8 @@ public:
>>       virtual ~Encoder() {};
>>         virtual int configure(const libcamera::StreamConfiguration
>> &cfg) = 0;
>> -    virtual int encode(const libcamera::FrameBuffer *source,
>> -               const libcamera::Span<uint8_t> &destination,
>> +    virtual int encode(const libcamera::FrameBuffer &source,
>> +               libcamera::Span<uint8_t> destination,
>>                  const libcamera::Span<const uint8_t> &exifData) = 0;
>>   };
>>   diff --git a/src/android/jpeg/encoder_libjpeg.cpp
>> b/src/android/jpeg/encoder_libjpeg.cpp
>> index 8995ba5..4236c9d 100644
>> --- a/src/android/jpeg/encoder_libjpeg.cpp
>> +++ b/src/android/jpeg/encoder_libjpeg.cpp
>> @@ -179,11 +179,11 @@ void EncoderLibJpeg::compressNV(const
>> libcamera::MappedBuffer *frame)
>>       }
>>   }
>>   -int EncoderLibJpeg::encode(const FrameBuffer *source,
>> -               const libcamera::Span<uint8_t> &dest,
>> +int EncoderLibJpeg::encode(const FrameBuffer &source,
>> +               libcamera::Span<uint8_t> dest,
>>                  const libcamera::Span<const uint8_t> &exifData)
>>   {
>> -    MappedFrameBuffer frame(source, PROT_READ);
>> +    MappedFrameBuffer frame(&source, PROT_READ);

Perhaps MappedFrameBuffer should also take a reference, but lets not
worry about that here.

>>       if (!frame.isValid()) {
>>           LOG(JPEG, Error) << "Failed to map FrameBuffer : "
>>                    << strerror(frame.error());
>> diff --git a/src/android/jpeg/encoder_libjpeg.h
>> b/src/android/jpeg/encoder_libjpeg.h
>> index 934caef..391a53c 100644
>> --- a/src/android/jpeg/encoder_libjpeg.h
>> +++ b/src/android/jpeg/encoder_libjpeg.h
>> @@ -21,8 +21,8 @@ public:
>>       ~EncoderLibJpeg();
>>         int configure(const libcamera::StreamConfiguration &cfg)
>> override;
>> -    int encode(const libcamera::FrameBuffer *source,
>> -           const libcamera::Span<uint8_t> &destination,
>> +    int encode(const libcamera::FrameBuffer &source,
>> +           libcamera::Span<uint8_t> destination,
>>              const libcamera::Span<const uint8_t> &exifData) override;
>>     private:
>> diff --git a/src/android/jpeg/post_processor_jpeg.cpp
>> b/src/android/jpeg/post_processor_jpeg.cpp
>> index 55b9088..6f33631 100644
>> --- a/src/android/jpeg/post_processor_jpeg.cpp
>> +++ b/src/android/jpeg/post_processor_jpeg.cpp
>> @@ -67,7 +67,7 @@ int PostProcessorJpeg::process(const
>> libcamera::FrameBuffer &source,
>>       if (exif.generate() != 0)
>>           LOG(JPEG, Error) << "Failed to generate valid EXIF data";
>>   -    int jpeg_size = encoder_->encode(&source, destination,
>> exif.data());
>> +    int jpeg_size = encoder_->encode(source, destination, exif.data());
> Perfect. I was expecting this from v1.
>>       if (jpeg_size < 0) {
>>           LOG(JPEG, Error) << "Failed to encode stream image";
>>           return jpeg_size;
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel
Kieran Bingham Oct. 20, 2020, 3:05 p.m. UTC | #3
On 20/10/2020 15:57, Kieran Bingham wrote:
> Hi Hiro,
> 
> On 20/10/2020 11:38, Umang Jain wrote:
>> Hi Hiro,
>>
>> Thanks for your work.
>>
>> On 10/20/20 1:12 PM, Hirokazu Honda wrote:
>>> In Encoder::encode(), the |source| argument doesn't have to be a
>>> pointer. This replaces its type, const pointer, with const
>>> reference as the latter is preferred to the former.
>>> libcamera::Span is chea to construct/copy/move. We should deal
>> s/chea/cheap
> 
> Hrm, this is fine in the original. Must have caught it while editing.

Ignore that - I was comparing against a different patch ;-)

Fixed up here locally.

> 
>>> with the type as pass-by-value parameter. Therefore this also
>>> drops the const reference in the |destination| argument.
>>>
>>> Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
>> LGTM again.
>> Reviewed-by: Umang Jain <email@uajain.com>
> 
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
>>> ---
>>>   src/android/jpeg/encoder.h               | 4 ++--
>>>   src/android/jpeg/encoder_libjpeg.cpp     | 6 +++---
>>>   src/android/jpeg/encoder_libjpeg.h       | 4 ++--
>>>   src/android/jpeg/post_processor_jpeg.cpp | 2 +-
>>>   4 files changed, 8 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/src/android/jpeg/encoder.h b/src/android/jpeg/encoder.h
>>> index 4483153..4fe71cf 100644
>>> --- a/src/android/jpeg/encoder.h
>>> +++ b/src/android/jpeg/encoder.h
>>> @@ -17,8 +17,8 @@ public:
>>>       virtual ~Encoder() {};
>>>         virtual int configure(const libcamera::StreamConfiguration
>>> &cfg) = 0;
>>> -    virtual int encode(const libcamera::FrameBuffer *source,
>>> -               const libcamera::Span<uint8_t> &destination,
>>> +    virtual int encode(const libcamera::FrameBuffer &source,
>>> +               libcamera::Span<uint8_t> destination,
>>>                  const libcamera::Span<const uint8_t> &exifData) = 0;
>>>   };
>>>   diff --git a/src/android/jpeg/encoder_libjpeg.cpp
>>> b/src/android/jpeg/encoder_libjpeg.cpp
>>> index 8995ba5..4236c9d 100644
>>> --- a/src/android/jpeg/encoder_libjpeg.cpp
>>> +++ b/src/android/jpeg/encoder_libjpeg.cpp
>>> @@ -179,11 +179,11 @@ void EncoderLibJpeg::compressNV(const
>>> libcamera::MappedBuffer *frame)
>>>       }
>>>   }
>>>   -int EncoderLibJpeg::encode(const FrameBuffer *source,
>>> -               const libcamera::Span<uint8_t> &dest,
>>> +int EncoderLibJpeg::encode(const FrameBuffer &source,
>>> +               libcamera::Span<uint8_t> dest,
>>>                  const libcamera::Span<const uint8_t> &exifData)
>>>   {
>>> -    MappedFrameBuffer frame(source, PROT_READ);
>>> +    MappedFrameBuffer frame(&source, PROT_READ);
> 
> Perhaps MappedFrameBuffer should also take a reference, but lets not
> worry about that here.
> 
>>>       if (!frame.isValid()) {
>>>           LOG(JPEG, Error) << "Failed to map FrameBuffer : "
>>>                    << strerror(frame.error());
>>> diff --git a/src/android/jpeg/encoder_libjpeg.h
>>> b/src/android/jpeg/encoder_libjpeg.h
>>> index 934caef..391a53c 100644
>>> --- a/src/android/jpeg/encoder_libjpeg.h
>>> +++ b/src/android/jpeg/encoder_libjpeg.h
>>> @@ -21,8 +21,8 @@ public:
>>>       ~EncoderLibJpeg();
>>>         int configure(const libcamera::StreamConfiguration &cfg)
>>> override;
>>> -    int encode(const libcamera::FrameBuffer *source,
>>> -           const libcamera::Span<uint8_t> &destination,
>>> +    int encode(const libcamera::FrameBuffer &source,
>>> +           libcamera::Span<uint8_t> destination,
>>>              const libcamera::Span<const uint8_t> &exifData) override;
>>>     private:
>>> diff --git a/src/android/jpeg/post_processor_jpeg.cpp
>>> b/src/android/jpeg/post_processor_jpeg.cpp
>>> index 55b9088..6f33631 100644
>>> --- a/src/android/jpeg/post_processor_jpeg.cpp
>>> +++ b/src/android/jpeg/post_processor_jpeg.cpp
>>> @@ -67,7 +67,7 @@ int PostProcessorJpeg::process(const
>>> libcamera::FrameBuffer &source,
>>>       if (exif.generate() != 0)
>>>           LOG(JPEG, Error) << "Failed to generate valid EXIF data";
>>>   -    int jpeg_size = encoder_->encode(&source, destination,
>>> exif.data());
>>> +    int jpeg_size = encoder_->encode(source, destination, exif.data());
>> Perfect. I was expecting this from v1.
>>>       if (jpeg_size < 0) {
>>>           LOG(JPEG, Error) << "Failed to encode stream image";
>>>           return jpeg_size;
>>
>> _______________________________________________
>> libcamera-devel mailing list
>> libcamera-devel@lists.libcamera.org
>> https://lists.libcamera.org/listinfo/libcamera-devel
>

Patch
diff mbox series

diff --git a/src/android/jpeg/encoder.h b/src/android/jpeg/encoder.h
index 4483153..4fe71cf 100644
--- a/src/android/jpeg/encoder.h
+++ b/src/android/jpeg/encoder.h
@@ -17,8 +17,8 @@  public:
 	virtual ~Encoder() {};
 
 	virtual int configure(const libcamera::StreamConfiguration &cfg) = 0;
-	virtual int encode(const libcamera::FrameBuffer *source,
-			   const libcamera::Span<uint8_t> &destination,
+	virtual int encode(const libcamera::FrameBuffer &source,
+			   libcamera::Span<uint8_t> destination,
 			   const libcamera::Span<const uint8_t> &exifData) = 0;
 };
 
diff --git a/src/android/jpeg/encoder_libjpeg.cpp b/src/android/jpeg/encoder_libjpeg.cpp
index 8995ba5..4236c9d 100644
--- a/src/android/jpeg/encoder_libjpeg.cpp
+++ b/src/android/jpeg/encoder_libjpeg.cpp
@@ -179,11 +179,11 @@  void EncoderLibJpeg::compressNV(const libcamera::MappedBuffer *frame)
 	}
 }
 
-int EncoderLibJpeg::encode(const FrameBuffer *source,
-			   const libcamera::Span<uint8_t> &dest,
+int EncoderLibJpeg::encode(const FrameBuffer &source,
+			   libcamera::Span<uint8_t> dest,
 			   const libcamera::Span<const uint8_t> &exifData)
 {
-	MappedFrameBuffer frame(source, PROT_READ);
+	MappedFrameBuffer frame(&source, PROT_READ);
 	if (!frame.isValid()) {
 		LOG(JPEG, Error) << "Failed to map FrameBuffer : "
 				 << strerror(frame.error());
diff --git a/src/android/jpeg/encoder_libjpeg.h b/src/android/jpeg/encoder_libjpeg.h
index 934caef..391a53c 100644
--- a/src/android/jpeg/encoder_libjpeg.h
+++ b/src/android/jpeg/encoder_libjpeg.h
@@ -21,8 +21,8 @@  public:
 	~EncoderLibJpeg();
 
 	int configure(const libcamera::StreamConfiguration &cfg) override;
-	int encode(const libcamera::FrameBuffer *source,
-		   const libcamera::Span<uint8_t> &destination,
+	int encode(const libcamera::FrameBuffer &source,
+		   libcamera::Span<uint8_t> destination,
 		   const libcamera::Span<const uint8_t> &exifData) override;
 
 private:
diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp
index 55b9088..6f33631 100644
--- a/src/android/jpeg/post_processor_jpeg.cpp
+++ b/src/android/jpeg/post_processor_jpeg.cpp
@@ -67,7 +67,7 @@  int PostProcessorJpeg::process(const libcamera::FrameBuffer &source,
 	if (exif.generate() != 0)
 		LOG(JPEG, Error) << "Failed to generate valid EXIF data";
 
-	int jpeg_size = encoder_->encode(&source, destination, exif.data());
+	int jpeg_size = encoder_->encode(source, destination, exif.data());
 	if (jpeg_size < 0) {
 		LOG(JPEG, Error) << "Failed to encode stream image";
 		return jpeg_size;