android: post_processor: Drop return value for process()

PostProcessor::process() is invoked by CameraStream class
in case any post-processing is required for the camera stream.
The failure or success is checked via the value returned by
CameraStream::process().

Now that the post-processor notifies about the post-processing
completion operation, we can drop the return value of
PostProcessor::process(). The status of post-processing is passed
to CameraDevice::streamProcessingComplete() by the
PostProcessor::processComplete signal's slot.

Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Hirokazu Honda <hiroh@chromium.org>
This commit is contained in:
Umang Jain 2021-10-26 12:51:47 +05:30
parent 6b706e1c3e
commit 05862a7e35
6 changed files with 12 additions and 14 deletions

View file

@ -191,7 +191,9 @@ int CameraStream::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)
return -EINVAL; return -EINVAL;
} }
return postProcessor_->process(streamBuffer); postProcessor_->process(streamBuffer);
return 0;
} }
FrameBuffer *CameraStream::getBuffer() FrameBuffer *CameraStream::getBuffer()

View file

@ -98,7 +98,7 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer &source,
} }
} }
int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) void PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)
{ {
ASSERT(encoder_); ASSERT(encoder_);
@ -199,7 +199,7 @@ int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuf
if (jpeg_size < 0) { if (jpeg_size < 0) {
LOG(JPEG, Error) << "Failed to encode stream image"; LOG(JPEG, Error) << "Failed to encode stream image";
processComplete.emit(streamBuffer, PostProcessor::Status::Error); processComplete.emit(streamBuffer, PostProcessor::Status::Error);
return jpeg_size; return;
} }
/* Fill in the JPEG blob header. */ /* Fill in the JPEG blob header. */
@ -213,6 +213,4 @@ int PostProcessorJpeg::process(Camera3RequestDescriptor::StreamBuffer *streamBuf
/* Update the JPEG result Metadata. */ /* Update the JPEG result Metadata. */
resultMetadata->addEntry(ANDROID_JPEG_SIZE, jpeg_size); resultMetadata->addEntry(ANDROID_JPEG_SIZE, jpeg_size);
processComplete.emit(streamBuffer, PostProcessor::Status::Success); processComplete.emit(streamBuffer, PostProcessor::Status::Success);
return 0;
} }

View file

@ -22,7 +22,7 @@ public:
int configure(const libcamera::StreamConfiguration &incfg, int configure(const libcamera::StreamConfiguration &incfg,
const libcamera::StreamConfiguration &outcfg) override; const libcamera::StreamConfiguration &outcfg) override;
int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override; void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;
private: private:
void generateThumbnail(const libcamera::FrameBuffer &source, void generateThumbnail(const libcamera::FrameBuffer &source,

View file

@ -27,7 +27,7 @@ public:
virtual int configure(const libcamera::StreamConfiguration &inCfg, virtual int configure(const libcamera::StreamConfiguration &inCfg,
const libcamera::StreamConfiguration &outCfg) = 0; const libcamera::StreamConfiguration &outCfg) = 0;
virtual int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) = 0; virtual void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) = 0;
libcamera::Signal<Camera3RequestDescriptor::StreamBuffer *, Status> processComplete; libcamera::Signal<Camera3RequestDescriptor::StreamBuffer *, Status> processComplete;
}; };

View file

@ -49,21 +49,21 @@ int PostProcessorYuv::configure(const StreamConfiguration &inCfg,
return 0; return 0;
} }
int PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) void PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuffer)
{ {
const FrameBuffer &source = *streamBuffer->srcBuffer; const FrameBuffer &source = *streamBuffer->srcBuffer;
CameraBuffer *destination = streamBuffer->dstBuffer.get(); CameraBuffer *destination = streamBuffer->dstBuffer.get();
if (!isValidBuffers(source, *destination)) { if (!isValidBuffers(source, *destination)) {
processComplete.emit(streamBuffer, PostProcessor::Status::Error); processComplete.emit(streamBuffer, PostProcessor::Status::Error);
return -EINVAL; return;
} }
const MappedFrameBuffer sourceMapped(&source, MappedFrameBuffer::MapFlag::Read); const MappedFrameBuffer sourceMapped(&source, MappedFrameBuffer::MapFlag::Read);
if (!sourceMapped.isValid()) { if (!sourceMapped.isValid()) {
LOG(YUV, Error) << "Failed to mmap camera frame buffer"; LOG(YUV, Error) << "Failed to mmap camera frame buffer";
processComplete.emit(streamBuffer, PostProcessor::Status::Error); processComplete.emit(streamBuffer, PostProcessor::Status::Error);
return -EINVAL; return;
} }
int ret = libyuv::NV12Scale(sourceMapped.planes()[0].data(), int ret = libyuv::NV12Scale(sourceMapped.planes()[0].data(),
@ -81,12 +81,10 @@ int PostProcessorYuv::process(Camera3RequestDescriptor::StreamBuffer *streamBuff
if (ret) { if (ret) {
LOG(YUV, Error) << "Failed NV12 scaling: " << ret; LOG(YUV, Error) << "Failed NV12 scaling: " << ret;
processComplete.emit(streamBuffer, PostProcessor::Status::Error); processComplete.emit(streamBuffer, PostProcessor::Status::Error);
return -EINVAL; return;
} }
processComplete.emit(streamBuffer, PostProcessor::Status::Success); processComplete.emit(streamBuffer, PostProcessor::Status::Success);
return 0;
} }
bool PostProcessorYuv::isValidBuffers(const FrameBuffer &source, bool PostProcessorYuv::isValidBuffers(const FrameBuffer &source,

View file

@ -18,7 +18,7 @@ public:
int configure(const libcamera::StreamConfiguration &incfg, int configure(const libcamera::StreamConfiguration &incfg,
const libcamera::StreamConfiguration &outcfg) override; const libcamera::StreamConfiguration &outcfg) override;
int process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override; void process(Camera3RequestDescriptor::StreamBuffer *streamBuffer) override;
private: private:
bool isValidBuffers(const libcamera::FrameBuffer &source, bool isValidBuffers(const libcamera::FrameBuffer &source,