libcamera: pipeline: simple: Migrate to Camera::Private

As part of the effort to remove the CameraData class, migrate the
pipeline handler-specific camera data from CameraData to the
Camera::Private class.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2021-07-23 04:39:44 +03:00
parent 678079fd4e
commit fb1bcb9c38

View file

@ -147,7 +147,7 @@ static const SimplePipelineInfo supportedDevices[] = {
} /* namespace */ } /* namespace */
class SimpleCameraData : public CameraData class SimpleCameraData : public Camera::Private
{ {
public: public:
SimpleCameraData(SimplePipelineHandler *pipe, SimpleCameraData(SimplePipelineHandler *pipe,
@ -213,7 +213,7 @@ private:
* reference to the camera data, store a new reference to the camera. * reference to the camera data, store a new reference to the camera.
*/ */
std::shared_ptr<Camera> camera_; std::shared_ptr<Camera> camera_;
const SimpleCameraData *data_; SimpleCameraData *data_;
const SimpleCameraData::Configuration *pipeConfig_; const SimpleCameraData::Configuration *pipeConfig_;
bool needConversion_; bool needConversion_;
@ -246,10 +246,9 @@ protected:
private: private:
static constexpr unsigned int kNumInternalBuffers = 3; static constexpr unsigned int kNumInternalBuffers = 3;
SimpleCameraData *cameraData(const Camera *camera) SimpleCameraData *cameraData(Camera *camera)
{ {
return static_cast<SimpleCameraData *>( return static_cast<SimpleCameraData *>(camera->_d());
PipelineHandler::cameraData(camera));
} }
std::vector<MediaEntity *> locateSensors(); std::vector<MediaEntity *> locateSensors();
@ -274,7 +273,7 @@ private:
SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe, SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
unsigned int numStreams, unsigned int numStreams,
MediaEntity *sensor) MediaEntity *sensor)
: CameraData(pipe), streams_(numStreams) : Camera::Private(pipe), streams_(numStreams)
{ {
int ret; int ret;
@ -355,7 +354,8 @@ SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
int SimpleCameraData::init() int SimpleCameraData::init()
{ {
SimplePipelineHandler *pipe = static_cast<SimplePipelineHandler *>(pipe_); SimplePipelineHandler *pipe =
static_cast<SimplePipelineHandler *>(this->pipe());
SimpleConverter *converter = pipe->converter(); SimpleConverter *converter = pipe->converter();
int ret; int ret;
@ -480,7 +480,8 @@ int SimpleCameraData::setupLinks()
int SimpleCameraData::setupFormats(V4L2SubdeviceFormat *format, int SimpleCameraData::setupFormats(V4L2SubdeviceFormat *format,
V4L2Subdevice::Whence whence) V4L2Subdevice::Whence whence)
{ {
SimplePipelineHandler *pipe = static_cast<SimplePipelineHandler *>(pipe_); SimplePipelineHandler *pipe =
static_cast<SimplePipelineHandler *>(this->pipe());
int ret; int ret;
/* /*
@ -581,7 +582,7 @@ CameraConfiguration::Status SimpleCameraConfiguration::validate()
} }
/* Adjust the requested streams. */ /* Adjust the requested streams. */
SimplePipelineHandler *pipe = static_cast<SimplePipelineHandler *>(data_->pipe_); SimplePipelineHandler *pipe = static_cast<SimplePipelineHandler *>(data_->pipe());
SimpleConverter *converter = pipe->converter(); SimpleConverter *converter = pipe->converter();
/* /*
@ -1046,10 +1047,10 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator)
std::inserter(streams, streams.end()), std::inserter(streams, streams.end()),
[](Stream &stream) { return &stream; }); [](Stream &stream) { return &stream; });
const std::string &id = data->sensor_->id();
std::shared_ptr<Camera> camera = std::shared_ptr<Camera> camera =
Camera::create(std::make_unique<Camera::Private>(this), Camera::create(std::move(data), id, streams);
data->sensor_->id(), streams); registerCamera(std::move(camera), nullptr);
registerCamera(std::move(camera), std::move(data));
registered = true; registered = true;
} }