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:
parent
6b706e1c3e
commit
05862a7e35
6 changed files with 12 additions and 14 deletions
|
@ -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()
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue