android: camera_stream: Delegate Encoder construction

Delegate the construction of the encoder to the CameraStream class
for streams that need post-processing.

Reviewed-by: Umang Jain <email@uajain.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2020-10-02 19:40:42 +02:00
parent 94c4d49ebe
commit 3c84d88193
3 changed files with 26 additions and 17 deletions

View file

@ -1273,19 +1273,7 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
StreamConfiguration &cfg = config_->at(index);
/*
* Construct a software encoder for the MJPEG streams from the
* chosen libcamera source stream.
*/
Encoder *encoder = new EncoderLibJpeg();
int ret = encoder->configure(cfg);
if (ret) {
LOG(HAL, Error) << "Failed to configure encoder";
delete encoder;
return ret;
}
streams_.emplace_back(formats::MJPEG, cfg.size, type, index, encoder);
streams_.emplace_back(formats::MJPEG, cfg.size, type, index);
jpegStream->priv = static_cast<void *>(&streams_.back());
}
@ -1306,11 +1294,20 @@ int CameraDevice::configureStreams(camera3_stream_configuration_t *stream_list)
return -EINVAL;
}
/*
* Configure the HAL CameraStream instances using the associated
* StreamConfiguration and set the number of required buffers in
* the Android camera3_stream_t.
*/
for (unsigned int i = 0; i < stream_list->num_streams; ++i) {
camera3_stream_t *stream = stream_list->streams[i];
CameraStream *cameraStream = static_cast<CameraStream *>(stream->priv);
StreamConfiguration &cfg = config_->at(cameraStream->index());
int ret = cameraStream->configure(cfg);
if (ret)
return ret;
/* Use the bufferCount confirmed by the validation process. */
stream->max_buffers = cfg.bufferCount;
}