/* * 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. */ #ifndef FRAMEWORKS_AV_SERVICES_CAMERA_LIBCAMERASERVICE_AIDL_AIDLUTILS_H_ #define FRAMEWORKS_AV_SERVICES_CAMERA_LIBCAMERASERVICE_AIDL_AIDLUTILS_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace android::hardware::cameraservice::utils::conversion::aidl { using ::aidl::android::hardware::common::fmq::SynchronizedReadWrite; using ::android::AidlMessageQueue; using ::android::CameraMetadata; using CaptureResultMetadataQueue = AidlMessageQueue; // VNDK classes using SCameraDeviceStatus = ::aidl::android::frameworks::cameraservice::service::CameraDeviceStatus; using SCameraMetadata = ::aidl::android::frameworks::cameraservice::device::CameraMetadata; using SCameraStatusAndId = ::aidl::android::frameworks::cameraservice::service::CameraStatusAndId; using SCaptureResultExtras = ::aidl::android::frameworks::cameraservice::device::CaptureResultExtras; using SErrorCode = ::aidl::android::frameworks::cameraservice::device::ErrorCode; using SCaptureMetadataInfo = ::aidl::android::frameworks::cameraservice::device::CaptureMetadataInfo; using SOutputConfiguration = ::aidl::android::frameworks::cameraservice::device::OutputConfiguration; using SPhysicalCaptureResultInfo = ::aidl::android::frameworks::cameraservice::device::PhysicalCaptureResultInfo; using SSessionConfiguration = ::aidl::android::frameworks::cameraservice::device::SessionConfiguration; using SStatus = ::aidl::android::frameworks::cameraservice::common::Status; using SStreamConfigurationMode = ::aidl::android::frameworks::cameraservice::device::StreamConfigurationMode; using SSubmitInfo = ::aidl::android::frameworks::cameraservice::device::SubmitInfo; using STemplateId = ::aidl::android::frameworks::cameraservice::device::TemplateId; // NDK classes using UCaptureResultExtras = ::android::hardware::camera2::impl::CaptureResultExtras; using UOutputConfiguration = ::android::hardware::camera2::params::OutputConfiguration; using UPhysicalCaptureResultInfo = ::android::hardware::camera2::impl::PhysicalCaptureResultInfo; using USessionConfiguration = ::android::hardware::camera2::params::SessionConfiguration; // Common macro to log errors returned from stable AIDL calls #define LOG_STATUS_ERROR_IF_NOT_OK(status, callName) \ if (!(status).isOk()) { \ if ((status).getExceptionCode() == EX_SERVICE_SPECIFIC) { \ SStatus errStatus = static_cast((status).getServiceSpecificError()); \ ALOGE("%s: %s callback failed: %s", __FUNCTION__, callName, \ toString(errStatus).c_str()); \ } else { \ ALOGE("%s: Transaction failed during %s: %d", __FUNCTION__, callName, \ (status).getExceptionCode()); \ } \ } // Note: existing data in dst will be gone. Caller still owns the memory of src void cloneToAidl(const camera_metadata_t *src, SCameraMetadata* dst); bool cloneFromAidl(const SCameraMetadata &src, CameraMetadata *dst); int32_t convertFromAidl(SStreamConfigurationMode streamConfigurationMode); UOutputConfiguration convertFromAidl(const SOutputConfiguration &src); USessionConfiguration convertFromAidl(const SSessionConfiguration &src); int convertFromAidl(SOutputConfiguration::Rotation rotation); int32_t convertFromAidl(STemplateId templateId); void convertToAidl(const hardware::camera2::utils::SubmitInfo &submitInfo, SSubmitInfo *hSubmitInfo); SStatus convertToAidl(const binder::Status &status); SCaptureResultExtras convertToAidl(const UCaptureResultExtras &captureResultExtras); SErrorCode convertToAidl(int32_t errorCode); std::vector convertToAidl( const std::vector& src, std::shared_ptr& fmq); SPhysicalCaptureResultInfo convertToAidl(const UPhysicalCaptureResultInfo& src, std::shared_ptr& fmq); void convertToAidl(const std::vector &src, std::vector* dst); SCameraDeviceStatus convertCameraStatusToAidl(int32_t src); bool areBindersEqual(const ndk::SpAIBinder& b1, const ndk::SpAIBinder& b2); status_t filterVndkKeys(int vndkVersion, CameraMetadata &metadata, bool isStatic = true); status_t copySessionCharacteristics(const CameraMetadata& from, CameraMetadata* to, int queryVersion); bool areExtensionKeysSupported(const CameraMetadata& metadata); status_t filterExtensionKeys(CameraMetadata* metadata /*out*/); } // namespace android::hardware::cameraservice::utils::conversion::aidl #endif // FRAMEWORKS_AV_SERVICES_CAMERA_LIBCAMERASERVICE_AIDL_AIDLUTILS_H_