[libcamera-devel,v2,6/9] android: jpeg: Factor out thumbnailer configuration
diff mbox series

Message ID 20210121101549.134574-7-paul.elder@ideasonboard.com
State Superseded
Delegated to: Paul Elder
Headers show
Series
  • Fill in android result metadata and EXIF tags
Related show

Commit Message

Paul Elder Jan. 21, 2021, 10:15 a.m. UTC
Move configuration of the thumbnailer into a function so that it can be
called later in post-processing if a different size thumbnail is
requested.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>

---
New in v2
---
 src/android/jpeg/post_processor_jpeg.cpp | 26 ++++++++++++++++--------
 src/android/jpeg/post_processor_jpeg.h   |  2 ++
 src/android/jpeg/thumbnailer.h           |  1 +
 3 files changed, 21 insertions(+), 8 deletions(-)

Comments

Laurent Pinchart Jan. 21, 2021, 8:36 p.m. UTC | #1
Hi Paul,

Thank you for the patch.

On Thu, Jan 21, 2021 at 07:15:46PM +0900, Paul Elder wrote:
> Move configuration of the thumbnailer into a function so that it can be
> called later in post-processing if a different size thumbnail is
> requested.
> 
> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>

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

> ---
> New in v2
> ---
>  src/android/jpeg/post_processor_jpeg.cpp | 26 ++++++++++++++++--------
>  src/android/jpeg/post_processor_jpeg.h   |  2 ++
>  src/android/jpeg/thumbnailer.h           |  1 +
>  3 files changed, 21 insertions(+), 8 deletions(-)
> 
> diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp
> index 436a50f8..0c1226ad 100644
> --- a/src/android/jpeg/post_processor_jpeg.cpp
> +++ b/src/android/jpeg/post_processor_jpeg.cpp
> @@ -25,6 +25,21 @@ PostProcessorJpeg::PostProcessorJpeg(CameraDevice *const device)
>  {
>  }
>  
> +int PostProcessorJpeg::configureThumbnailer(const Size &size,
> +					    const PixelFormat &pixelFormat)
> +{
> +	thumbnailer_.configure(size, pixelFormat);
> +	StreamConfiguration thCfg;
> +	thCfg.size = thumbnailer_.size();
> +	thCfg.pixelFormat = pixelFormat;
> +	if (thumbnailEncoder_.configure(thCfg) != 0) {
> +		LOG(JPEG, Error) << "Failed to configure thumbnail encoder";
> +		return -EINVAL;
> +	}
> +
> +	return 0;
> +}
> +
>  int PostProcessorJpeg::configure(const StreamConfiguration &inCfg,
>  				 const StreamConfiguration &outCfg)
>  {
> @@ -40,16 +55,11 @@ int PostProcessorJpeg::configure(const StreamConfiguration &inCfg,
>  
>  	streamSize_ = outCfg.size;
>  
> -	thumbnailer_.configure(inCfg.size, inCfg.pixelFormat);
> -	StreamConfiguration thCfg = inCfg;
> -	thCfg.size = thumbnailer_.size();
> -	if (thumbnailEncoder_.configure(thCfg) != 0) {
> -		LOG(JPEG, Error) << "Failed to configure thumbnail encoder";
> -		return -EINVAL;
> -	}
> +	int ret = configureThumbnailer(inCfg.size, inCfg.pixelFormat);
> +	if (ret)
> +		return ret;
>  
>  	encoder_ = std::make_unique<EncoderLibJpeg>();
> -
>  	return encoder_->configure(inCfg);
>  }
>  
> diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h
> index 5afa831c..c545c29c 100644
> --- a/src/android/jpeg/post_processor_jpeg.h
> +++ b/src/android/jpeg/post_processor_jpeg.h
> @@ -31,6 +31,8 @@ public:
>  private:
>  	void generateThumbnail(const libcamera::FrameBuffer &source,
>  			       std::vector<unsigned char> *thumbnail);
> +	int configureThumbnailer(const libcamera::Size &size,
> +				 const libcamera::PixelFormat &pixelFormat);
>  
>  	CameraDevice *const cameraDevice_;
>  	std::unique_ptr<Encoder> encoder_;
> diff --git a/src/android/jpeg/thumbnailer.h b/src/android/jpeg/thumbnailer.h
> index 98f11833..f393db47 100644
> --- a/src/android/jpeg/thumbnailer.h
> +++ b/src/android/jpeg/thumbnailer.h
> @@ -22,6 +22,7 @@ public:
>  	void createThumbnail(const libcamera::FrameBuffer &source,
>  			     std::vector<unsigned char> *dest);
>  	const libcamera::Size &size() const { return targetSize_; }
> +	const libcamera::PixelFormat &pixelFormat() const { return pixelFormat_; }
>  
>  private:
>  	libcamera::Size computeThumbnailSize() const;

Patch
diff mbox series

diff --git a/src/android/jpeg/post_processor_jpeg.cpp b/src/android/jpeg/post_processor_jpeg.cpp
index 436a50f8..0c1226ad 100644
--- a/src/android/jpeg/post_processor_jpeg.cpp
+++ b/src/android/jpeg/post_processor_jpeg.cpp
@@ -25,6 +25,21 @@  PostProcessorJpeg::PostProcessorJpeg(CameraDevice *const device)
 {
 }
 
+int PostProcessorJpeg::configureThumbnailer(const Size &size,
+					    const PixelFormat &pixelFormat)
+{
+	thumbnailer_.configure(size, pixelFormat);
+	StreamConfiguration thCfg;
+	thCfg.size = thumbnailer_.size();
+	thCfg.pixelFormat = pixelFormat;
+	if (thumbnailEncoder_.configure(thCfg) != 0) {
+		LOG(JPEG, Error) << "Failed to configure thumbnail encoder";
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
 int PostProcessorJpeg::configure(const StreamConfiguration &inCfg,
 				 const StreamConfiguration &outCfg)
 {
@@ -40,16 +55,11 @@  int PostProcessorJpeg::configure(const StreamConfiguration &inCfg,
 
 	streamSize_ = outCfg.size;
 
-	thumbnailer_.configure(inCfg.size, inCfg.pixelFormat);
-	StreamConfiguration thCfg = inCfg;
-	thCfg.size = thumbnailer_.size();
-	if (thumbnailEncoder_.configure(thCfg) != 0) {
-		LOG(JPEG, Error) << "Failed to configure thumbnail encoder";
-		return -EINVAL;
-	}
+	int ret = configureThumbnailer(inCfg.size, inCfg.pixelFormat);
+	if (ret)
+		return ret;
 
 	encoder_ = std::make_unique<EncoderLibJpeg>();
-
 	return encoder_->configure(inCfg);
 }
 
diff --git a/src/android/jpeg/post_processor_jpeg.h b/src/android/jpeg/post_processor_jpeg.h
index 5afa831c..c545c29c 100644
--- a/src/android/jpeg/post_processor_jpeg.h
+++ b/src/android/jpeg/post_processor_jpeg.h
@@ -31,6 +31,8 @@  public:
 private:
 	void generateThumbnail(const libcamera::FrameBuffer &source,
 			       std::vector<unsigned char> *thumbnail);
+	int configureThumbnailer(const libcamera::Size &size,
+				 const libcamera::PixelFormat &pixelFormat);
 
 	CameraDevice *const cameraDevice_;
 	std::unique_ptr<Encoder> encoder_;
diff --git a/src/android/jpeg/thumbnailer.h b/src/android/jpeg/thumbnailer.h
index 98f11833..f393db47 100644
--- a/src/android/jpeg/thumbnailer.h
+++ b/src/android/jpeg/thumbnailer.h
@@ -22,6 +22,7 @@  public:
 	void createThumbnail(const libcamera::FrameBuffer &source,
 			     std::vector<unsigned char> *dest);
 	const libcamera::Size &size() const { return targetSize_; }
+	const libcamera::PixelFormat &pixelFormat() const { return pixelFormat_; }
 
 private:
 	libcamera::Size computeThumbnailSize() const;