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()
|
CameraDevice::~CameraDevice() = default;
|
||||||
{
|
|
||||||
for (auto &it : requestTemplates_)
|
|
||||||
delete it.second;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<CameraDevice> CameraDevice::create(unsigned int id,
|
std::unique_ptr<CameraDevice> CameraDevice::create(unsigned int id,
|
||||||
std::shared_ptr<Camera> cam)
|
std::shared_ptr<Camera> cam)
|
||||||
|
@ -1358,15 +1354,14 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
|
||||||
return staticMetadata_->get();
|
return staticMetadata_->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraMetadata *CameraDevice::requestTemplatePreview()
|
std::unique_ptr<CameraMetadata> CameraDevice::requestTemplatePreview()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* \todo Keep this in sync with the actual number of entries.
|
* \todo Keep this in sync with the actual number of entries.
|
||||||
* Currently: 20 entries, 35 bytes
|
* Currently: 20 entries, 35 bytes
|
||||||
*/
|
*/
|
||||||
CameraMetadata *requestTemplate = new CameraMetadata(21, 36);
|
auto requestTemplate = std::make_unique<CameraMetadata>(21, 36);
|
||||||
if (!requestTemplate->isValid()) {
|
if (!requestTemplate->isValid()) {
|
||||||
delete requestTemplate;
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1454,9 +1449,9 @@ CameraMetadata *CameraDevice::requestTemplatePreview()
|
||||||
return requestTemplate;
|
return requestTemplate;
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraMetadata *CameraDevice::requestTemplateVideo()
|
std::unique_ptr<CameraMetadata> CameraDevice::requestTemplateVideo()
|
||||||
{
|
{
|
||||||
CameraMetadata *previewTemplate = requestTemplatePreview();
|
std::unique_ptr<CameraMetadata> previewTemplate = requestTemplatePreview();
|
||||||
if (!previewTemplate)
|
if (!previewTemplate)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
|
@ -1488,7 +1483,7 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
|
||||||
return it->second->get();
|
return it->second->get();
|
||||||
|
|
||||||
/* Use the capture intent matching the requested template type. */
|
/* Use the capture intent matching the requested template type. */
|
||||||
CameraMetadata *requestTemplate;
|
std::unique_ptr<CameraMetadata> requestTemplate;
|
||||||
uint8_t captureIntent;
|
uint8_t captureIntent;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case CAMERA3_TEMPLATE_PREVIEW:
|
case CAMERA3_TEMPLATE_PREVIEW:
|
||||||
|
@ -1521,15 +1516,14 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
|
||||||
|
|
||||||
if (!requestTemplate || !requestTemplate->isValid()) {
|
if (!requestTemplate || !requestTemplate->isValid()) {
|
||||||
LOG(HAL, Error) << "Failed to construct request template";
|
LOG(HAL, Error) << "Failed to construct request template";
|
||||||
delete requestTemplate;
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
requestTemplate->updateEntry(ANDROID_CONTROL_CAPTURE_INTENT,
|
requestTemplate->updateEntry(ANDROID_CONTROL_CAPTURE_INTENT,
|
||||||
&captureIntent, 1);
|
&captureIntent, 1);
|
||||||
|
|
||||||
requestTemplates_[type] = requestTemplate;
|
requestTemplates_[type] = std::move(requestTemplate);
|
||||||
return requestTemplate->get();
|
return requestTemplates_[type]->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
PixelFormat CameraDevice::toPixelFormat(int format) const
|
PixelFormat CameraDevice::toPixelFormat(int format) const
|
||||||
|
|
|
@ -97,8 +97,8 @@ private:
|
||||||
libcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);
|
libcamera::FrameBuffer *createFrameBuffer(const buffer_handle_t camera3buffer);
|
||||||
void notifyShutter(uint32_t frameNumber, uint64_t timestamp);
|
void notifyShutter(uint32_t frameNumber, uint64_t timestamp);
|
||||||
void notifyError(uint32_t frameNumber, camera3_stream_t *stream);
|
void notifyError(uint32_t frameNumber, camera3_stream_t *stream);
|
||||||
CameraMetadata *requestTemplatePreview();
|
std::unique_ptr<CameraMetadata> requestTemplatePreview();
|
||||||
CameraMetadata *requestTemplateVideo();
|
std::unique_ptr<CameraMetadata> requestTemplateVideo();
|
||||||
libcamera::PixelFormat toPixelFormat(int format) const;
|
libcamera::PixelFormat toPixelFormat(int format) const;
|
||||||
int processControls(Camera3RequestDescriptor *descriptor);
|
int processControls(Camera3RequestDescriptor *descriptor);
|
||||||
std::unique_ptr<CameraMetadata> getResultMetadata(
|
std::unique_ptr<CameraMetadata> getResultMetadata(
|
||||||
|
@ -114,7 +114,7 @@ private:
|
||||||
std::unique_ptr<libcamera::CameraConfiguration> config_;
|
std::unique_ptr<libcamera::CameraConfiguration> config_;
|
||||||
|
|
||||||
std::unique_ptr<CameraMetadata> staticMetadata_;
|
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_;
|
const camera3_callback_ops_t *callbacks_;
|
||||||
|
|
||||||
std::vector<Camera3StreamConfiguration> streamConfigurations_;
|
std::vector<Camera3StreamConfiguration> streamConfigurations_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue