* Copyright (c) 2026-2026 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "kits/native/include/camera/metadata_object_ext.h"
#include "impl/metadata_object_ext_impl.h"
#include "camera_log.h"
#include "hilog/log.h"
#ifdef __cplusplus
extern "C" {
#endif
Camera_ErrorCode OH_MetadataObjectExt_GetMetadataObjectType(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
Camera_MetadataObjectType* type)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
type == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, type is null!");
return metadataObjectExt->GetMetadataObjectType(type);
}
Camera_ErrorCode OH_MetadataObjectExt_GetTimestamp(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
int64_t* timestamp)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
timestamp == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, timestamp is null!");
return metadataObjectExt->GetTimestamp(timestamp);
}
Camera_ErrorCode OH_MetadataObjectExt_GetBoundingBox(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
OH_Camera_Rect_Ext* boundingBox)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
boundingBox == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, boundingBox is null!");
return metadataObjectExt->GetBoundingBox(boundingBox);
}
Camera_ErrorCode OH_MetadataObjectExt_GetPitchAngle(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
float* pitchAngle)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
pitchAngle == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, pitchAngle is null!");
return metadataObjectExt->GetPitchAngle(pitchAngle);
}
Camera_ErrorCode OH_MetadataObjectExt_GetYawAngle(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
float* yawAngle)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
yawAngle == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, yawAngle is null!");
return metadataObjectExt->GetYawAngle(yawAngle);
}
Camera_ErrorCode OH_MetadataObjectExt_GetRollAngle(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
float* rollAngle)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
rollAngle == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, rollAngle is null!");
return metadataObjectExt->GetRollAngle(rollAngle);
}
Camera_ErrorCode OH_MetadataObjectExt_GetLeftEyeBoundingBox(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
OH_Camera_Rect_Ext* boundingBox)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
boundingBox == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, boundingBox is null!");
return metadataObjectExt->GetLeftEyeBoundingBox(boundingBox);
}
Camera_ErrorCode OH_MetadataObjectExt_GetRightEyeBoundingBox(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
OH_Camera_Rect_Ext* boundingBox)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
boundingBox == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, boundingBox is null!");
return metadataObjectExt->GetRightEyeBoundingBox(boundingBox);
}
Camera_ErrorCode OH_MetadataObjectExt_GetEmotion(
const OH_Camera_MetadataObjectExt* metadataObjectExt,
OH_Camera_MetadataObjectEmotion* emotion)
{
CHECK_RETURN_RET_ELOG(
metadataObjectExt == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, metadataObjectExt is null!");
CHECK_RETURN_RET_ELOG(
emotion == nullptr, CAMERA_INVALID_ARGUMENT, "Invalid argument, emotion is null!");
return metadataObjectExt->GetEmotion(emotion);
}
void OH_MetadataObjectExt_Destroy(
OH_Camera_MetadataObjectExt** metadataObjectExt,
uint32_t objectCount)
{
CHECK_RETURN_ELOG(metadataObjectExt == nullptr, "Invalid argument, metadataObjectExt is null!");
for (uint32_t i = 0; i < objectCount; i++) {
CHECK_EXECUTE(metadataObjectExt[i] != nullptr,
delete metadataObjectExt[i];
metadataObjectExt[i] = nullptr);
}
delete[] metadataObjectExt;
}
#ifdef __cplusplus
}
#endif