/* * Copyright (C) 2022 The Android Open Source Project * * 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. */ #define LOG_TAG "android.hardware.camera.device@3.4-convert-impl" #include #include "convert.h" #include #include #include namespace android { namespace hardware { namespace camera { namespace device { namespace implementation { using ::aidl::android::hardware::camera::device::ErrorCode; using ::aidl::android::hardware::camera::device::ErrorMsg; using ::aidl::android::hardware::camera::device::ShutterMsg; using ::aidl::android::hardware::graphics::common::BufferUsage; using ::aidl::android::hardware::graphics::common::PixelFormat; void convertToAidl(const camera_metadata_t* src, CameraMetadata* dest) { if (src == nullptr) { return; } size_t size = get_camera_metadata_size(src); auto* src_start = (uint8_t*)src; uint8_t* src_end = src_start + size; dest->metadata.assign(src_start, src_end); } bool convertFromAidl(const CameraMetadata& src, const camera_metadata_t** dst) { const std::vector& metadata = src.metadata; if (metadata.empty()) { // Special case for null metadata *dst = nullptr; return true; } const uint8_t* data = metadata.data(); // check that the size of CameraMetadata match underlying camera_metadata_t if (get_camera_metadata_size((camera_metadata_t*)data) != metadata.size()) { ALOGE("%s: input CameraMetadata is corrupt!", __FUNCTION__); return false; } *dst = (camera_metadata_t*)data; return true; } } // namespace implementation } // namespace device } // namespace camera } // namespace hardware } // namespace android