mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-15 08:25:07 +03:00
android: CameraDevice: Manage requestTemplates_ with std::unique_ptr
CameraMetadata stored in requestTemplates_ in CameraDevice is not necessary to be a raw pointer. This reduces the manual new/delete code by changing the type to std::unique_ptr. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
dca709c44a
commit
f101cc6878
2 changed files with 11 additions and 17 deletions
|
@ -338,11 +338,7 @@ CameraDevice::CameraDevice(unsigned int id, std::shared_ptr<Camera> camera)
|
|||
}
|
||||
}
|
||||
|
||||
CameraDevice::~CameraDevice()
|
||||
{
|
||||
for (auto &it : requestTemplates_)
|
||||
delete it.second;
|
||||
}
|
||||
CameraDevice::~CameraDevice() = default;
|
||||
|
||||
std::unique_ptr<CameraDevice> CameraDevice::create(unsigned int id,
|
||||
std::shared_ptr<Camera> cam)
|
||||
|
@ -1358,15 +1354,14 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
|
|||
return staticMetadata_->get();
|
||||
}
|
||||
|
||||
CameraMetadata *CameraDevice::requestTemplatePreview()
|
||||
std::unique_ptr<CameraMetadata> CameraDevice::requestTemplatePreview()
|
||||
{
|
||||
/*
|
||||
* \todo Keep this in sync with the actual number of entries.
|
||||
* Currently: 20 entries, 35 bytes
|
||||
*/
|
||||
CameraMetadata *requestTemplate = new CameraMetadata(21, 36);
|
||||
auto requestTemplate = std::make_unique<CameraMetadata>(21, 36);
|
||||
if (!requestTemplate->isValid()) {
|
||||
delete requestTemplate;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -1454,9 +1449,9 @@ CameraMetadata *CameraDevice::requestTemplatePreview()
|
|||
return requestTemplate;
|
||||
}
|
||||
|
||||
CameraMetadata *CameraDevice::requestTemplateVideo()
|
||||
std::unique_ptr<CameraMetadata> CameraDevice::requestTemplateVideo()
|
||||
{
|
||||
CameraMetadata *previewTemplate = requestTemplatePreview();
|
||||
std::unique_ptr<CameraMetadata> previewTemplate = requestTemplatePreview();
|
||||
if (!previewTemplate)
|
||||
return nullptr;
|
||||
|
||||
|
@ -1488,7 +1483,7 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
|
|||
return it->second->get();
|
||||
|
||||
/* Use the capture intent matching the requested template type. */
|
||||
CameraMetadata *requestTemplate;
|
||||
std::unique_ptr<CameraMetadata> requestTemplate;
|
||||
uint8_t captureIntent;
|
||||
switch (type) {
|
||||
case CAMERA3_TEMPLATE_PREVIEW:
|
||||
|
@ -1521,15 +1516,14 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
|
|||
|
||||
if (!requestTemplate || !requestTemplate->isValid()) {
|
||||
LOG(HAL, Error) << "Failed to construct request template";
|
||||
delete requestTemplate;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
requestTemplate->updateEntry(ANDROID_CONTROL_CAPTURE_INTENT,
|
||||
&captureIntent, 1);
|
||||
|
||||
requestTemplates_[type] = requestTemplate;
|
||||
return requestTemplate->get();
|
||||
requestTemplates_[type] = std::move(requestTemplate);
|
||||
return requestTemplates_[type]->get();
|
||||
}
|
||||
|
||||
PixelFormat CameraDevice::toPixelFormat(int format) const
|
||||
|
|
|
@ -97,8 +97,8 @@ private:
|
|||
libcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);
|
||||
void notifyShutter(uint32_t frameNumber, uint64_t timestamp);
|
||||
void notifyError(uint32_t frameNumber, camera3_stream_t *stream);
|
||||
CameraMetadata *requestTemplatePreview();
|
||||
CameraMetadata *requestTemplateVideo();
|
||||
std::unique_ptr<CameraMetadata> requestTemplatePreview();
|
||||
std::unique_ptr<CameraMetadata> requestTemplateVideo();
|
||||
libcamera::PixelFormat toPixelFormat(int format) const;
|
||||
int processControls(Camera3RequestDescriptor *descriptor);
|
||||
std::unique_ptr<CameraMetadata> getResultMetadata(
|
||||
|
@ -114,7 +114,7 @@ private:
|
|||
std::unique_ptr<libcamera::CameraConfiguration> config_;
|
||||
|
||||
std::unique_ptr<CameraMetadata> staticMetadata_;
|
||||
std::map<unsigned int, const CameraMetadata *> requestTemplates_;
|
||||
std::map<unsigned int, std::unique_ptr<CameraMetadata>> requestTemplates_;
|
||||
const camera3_callback_ops_t *callbacks_;
|
||||
|
||||
std::vector<Camera3StreamConfiguration> streamConfigurations_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue