| /* |
| * 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 <log/log.h> |
| |
| #include "convert.h" |
| |
| #include <aidl/android/hardware/graphics/common/BufferUsage.h> |
| #include <aidl/android/hardware/graphics/common/PixelFormat.h> |
| #include <hardware/camera_common.h> |
| |
| 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<uint8_t>& 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 |