libcamera: pipeline: simple: Delay opening of video device until init()
The video device is currently opened in the SimpleCameraData constructor. This requires opening the video devices on-demand the first time they're accessed, which gets in the way of refactoring of per-entity data storage in the pipeline handler. Move opening of the video device to the SimpleCameraData::init() function. The on-demand open mechanism isn't touched yet, it will be refactored later. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Martin Kepplinger <martin.kepplinger@puri.sm>
This commit is contained in:
@@ -309,6 +309,7 @@ SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
|
||||
/* Remember at each entity where we came from. */
|
||||
std::unordered_map<MediaEntity *, Entity> parents;
|
||||
MediaEntity *entity = nullptr;
|
||||
MediaEntity *video = nullptr;
|
||||
|
||||
queue.push({ sensor, nullptr });
|
||||
|
||||
@@ -322,7 +323,7 @@ SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
|
||||
if (entity->function() == MEDIA_ENT_F_IO_V4L) {
|
||||
LOG(SimplePipeline, Debug)
|
||||
<< "Found capture device " << entity->name();
|
||||
video_ = pipe->video(entity);
|
||||
video = entity;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -342,7 +343,7 @@ SimpleCameraData::SimpleCameraData(SimplePipelineHandler *pipe,
|
||||
}
|
||||
}
|
||||
|
||||
if (!video_)
|
||||
if (!video)
|
||||
return;
|
||||
|
||||
/*
|
||||
@@ -386,9 +387,16 @@ SimplePipelineHandler *SimpleCameraData::pipe()
|
||||
|
||||
int SimpleCameraData::init()
|
||||
{
|
||||
SimpleConverter *converter = pipe()->converter();
|
||||
SimplePipelineHandler *pipe = SimpleCameraData::pipe();
|
||||
SimpleConverter *converter = pipe->converter();
|
||||
int ret;
|
||||
|
||||
video_ = pipe->video(entities_.back().entity);
|
||||
if (!video_) {
|
||||
LOG(SimplePipeline, Error) << "Failed to open video device";
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup links first as some subdev drivers take active links into
|
||||
* account to propagate TRY formats. Such is life :-(
|
||||
|
||||
Reference in New Issue
Block a user