Loading camera/common/1.0/default/Android.bp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -8,7 +8,7 @@ cc_library_static { "CameraParameters.cpp", "CameraParameters.cpp", "VendorTagDescriptor.cpp", "VendorTagDescriptor.cpp", "HandleImporter.cpp", "HandleImporter.cpp", "Exif.cpp" "Exif.cpp", ], ], cflags: [ cflags: [ "-Werror", "-Werror", Loading @@ -17,6 +17,7 @@ cc_library_static { ], ], shared_libs: [ shared_libs: [ "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", "android.hardware.graphics.mapper@2.0", "android.hardware.graphics.mapper@2.0", Loading @@ -25,6 +26,5 @@ cc_library_static { "libexif", "libexif", ], ], include_dirs: ["system/media/private/camera/include"], include_dirs: ["system/media/private/camera/include"], export_include_dirs : ["include"] export_include_dirs: ["include"], } } camera/common/1.0/default/HandleImporter.cpp +79 −7 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ #define LOG_TAG "HandleImporter" #define LOG_TAG "HandleImporter" #include "HandleImporter.h" #include "HandleImporter.h" #include <gralloctypes/Gralloc4.h> #include <log/log.h> #include <log/log.h> namespace android { namespace android { Loading @@ -25,6 +27,9 @@ namespace common { namespace V1_0 { namespace V1_0 { namespace helper { namespace helper { using aidl::android::hardware::graphics::common::PlaneLayout; using aidl::android::hardware::graphics::common::PlaneLayoutComponent; using aidl::android::hardware::graphics::common::PlaneLayoutComponentType; using MapperErrorV2 = android::hardware::graphics::mapper::V2_0::Error; using MapperErrorV2 = android::hardware::graphics::mapper::V2_0::Error; using MapperErrorV3 = android::hardware::graphics::mapper::V3_0::Error; using MapperErrorV3 = android::hardware::graphics::mapper::V3_0::Error; using MapperErrorV4 = android::hardware::graphics::mapper::V4_0::Error; using MapperErrorV4 = android::hardware::graphics::mapper::V4_0::Error; Loading Loading @@ -118,6 +123,79 @@ YCbCrLayout HandleImporter::lockYCbCrInternal(const sp<M> mapper, buffer_handle_ return layout; return layout; } } template <> YCbCrLayout HandleImporter::lockYCbCrInternal<IMapperV4, MapperErrorV4>( const sp<IMapperV4> mapper, buffer_handle_t& buf, uint64_t cpuUsage, const IMapper::Rect& accessRegion) { hidl_handle acquireFenceHandle; auto buffer = const_cast<native_handle_t*>(buf); YCbCrLayout layout = {}; void* mapped = nullptr; typename IMapperV4::Rect accessRegionV4 = {accessRegion.left, accessRegion.top, accessRegion.width, accessRegion.height}; mapper->lock(buffer, cpuUsage, accessRegionV4, acquireFenceHandle, [&](const auto& tmpError, const auto& tmpPtr) { if (tmpError == MapperErrorV4::NONE) { mapped = tmpPtr; } else { ALOGE("%s: failed to lock error %d!", __FUNCTION__, tmpError); } }); if (mapped == nullptr) { return layout; } hidl_vec<uint8_t> encodedPlaneLayouts; mapper->get(buffer, gralloc4::MetadataType_PlaneLayouts, [&](const auto& tmpError, const auto& tmpEncodedPlaneLayouts) { if (tmpError == MapperErrorV4::NONE) { encodedPlaneLayouts = tmpEncodedPlaneLayouts; } else { ALOGE("%s: failed to get plane layouts %d!", __FUNCTION__, tmpError); } }); std::vector<PlaneLayout> planeLayouts; gralloc4::decodePlaneLayouts(encodedPlaneLayouts, &planeLayouts); for (const auto& planeLayout : planeLayouts) { for (const auto& planeLayoutComponent : planeLayout.components) { const auto& type = planeLayoutComponent.type; if (!gralloc4::isStandardPlaneLayoutComponentType(type)) { continue; } uint8_t* data = reinterpret_cast<uint8_t*>(mapped); data += planeLayout.offsetInBytes; data += planeLayoutComponent.offsetInBits / 8; switch (static_cast<PlaneLayoutComponentType>(type.value)) { case PlaneLayoutComponentType::Y: layout.y = data; layout.yStride = planeLayout.strideInBytes; break; case PlaneLayoutComponentType::CB: layout.cb = data; layout.cStride = planeLayout.strideInBytes; layout.chromaStep = planeLayout.sampleIncrementInBits / 8; break; case PlaneLayoutComponentType::CR: layout.cr = data; layout.cStride = planeLayout.strideInBytes; layout.chromaStep = planeLayout.sampleIncrementInBits / 8; break; default: break; } } } return layout; } template<class M, class E> template<class M, class E> int HandleImporter::unlockInternal(const sp<M> mapper, buffer_handle_t& buf) { int HandleImporter::unlockInternal(const sp<M> mapper, buffer_handle_t& buf) { int releaseFence = -1; int releaseFence = -1; Loading Loading @@ -306,13 +384,7 @@ YCbCrLayout HandleImporter::lockYCbCr( } } if (mMapperV4 != nullptr) { if (mMapperV4 != nullptr) { // No device currently supports IMapper 4.0 so it is safe to just return an error code here. return lockYCbCrInternal<IMapperV4, MapperErrorV4>(mMapperV4, buf, cpuUsage, accessRegion); // // This will be supported by a combination of lock and BufferMetadata getters. We are going // to refactor all the IAllocator/IMapper versioning code into a shared library. We will // then add the IMapper 4.0 lockYCbCr support then. ALOGE("%s: MapperV4 doesn't support lockYCbCr directly!", __FUNCTION__); return {}; } } if (mMapperV3 != nullptr) { if (mMapperV3 != nullptr) { Loading camera/device/1.0/default/Android.bp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -20,15 +20,15 @@ cc_library_shared { "android.hidl.memory@1.0", "android.hidl.memory@1.0", "libcutils", "libcutils", "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", ], ], static_libs: [ static_libs: [ "android.hardware.camera.common@1.0-helper" "android.hardware.camera.common@1.0-helper", ], ], header_libs: [ header_libs: [ "media_plugin_headers", "media_plugin_headers", ], ], export_include_dirs: ["."] export_include_dirs: ["."], } } camera/device/3.2/default/Android.bp +9 −6 Original line number Original line Diff line number Diff line Loading @@ -2,9 +2,11 @@ cc_library_shared { name: "camera.device@3.2-impl", name: "camera.device@3.2-impl", defaults: ["hidl_defaults"], defaults: ["hidl_defaults"], proprietary: true, proprietary: true, srcs: ["CameraDevice.cpp", srcs: [ "CameraDevice.cpp", "CameraDeviceSession.cpp", "CameraDeviceSession.cpp", "convert.cpp"], "convert.cpp", ], shared_libs: [ shared_libs: [ "libhidlbase", "libhidlbase", "libutils", "libutils", Loading @@ -15,15 +17,16 @@ cc_library_shared { "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", "android.hardware.graphics.mapper@4.0", "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", "libfmq" "libfmq", ], ], static_libs: [ static_libs: [ "android.hardware.camera.common@1.0-helper" "android.hardware.camera.common@1.0-helper", ], ], export_include_dirs: ["."], export_include_dirs: ["."], export_shared_lib_headers: [ export_shared_lib_headers: [ "libfmq", "libfmq", ] ], } } camera/device/3.3/default/Android.bp +9 −6 Original line number Original line Diff line number Diff line Loading @@ -2,9 +2,11 @@ cc_library_shared { name: "camera.device@3.3-impl", name: "camera.device@3.3-impl", defaults: ["hidl_defaults"], defaults: ["hidl_defaults"], proprietary: true, proprietary: true, srcs: ["CameraDevice.cpp", srcs: [ "CameraDevice.cpp", "CameraDeviceSession.cpp", "CameraDeviceSession.cpp", "convert.cpp"], "convert.cpp", ], shared_libs: [ shared_libs: [ "libhidlbase", "libhidlbase", "libutils", "libutils", Loading @@ -17,15 +19,16 @@ cc_library_shared { "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", "android.hardware.graphics.mapper@4.0", "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", "libfmq" "libfmq", ], ], static_libs: [ static_libs: [ "android.hardware.camera.common@1.0-helper" "android.hardware.camera.common@1.0-helper", ], ], export_include_dirs: ["."], export_include_dirs: ["."], export_shared_lib_headers: [ export_shared_lib_headers: [ "libfmq", "libfmq", ] ], } } Loading
camera/common/1.0/default/Android.bp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -8,7 +8,7 @@ cc_library_static { "CameraParameters.cpp", "CameraParameters.cpp", "VendorTagDescriptor.cpp", "VendorTagDescriptor.cpp", "HandleImporter.cpp", "HandleImporter.cpp", "Exif.cpp" "Exif.cpp", ], ], cflags: [ cflags: [ "-Werror", "-Werror", Loading @@ -17,6 +17,7 @@ cc_library_static { ], ], shared_libs: [ shared_libs: [ "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", "android.hardware.graphics.mapper@2.0", "android.hardware.graphics.mapper@2.0", Loading @@ -25,6 +26,5 @@ cc_library_static { "libexif", "libexif", ], ], include_dirs: ["system/media/private/camera/include"], include_dirs: ["system/media/private/camera/include"], export_include_dirs : ["include"] export_include_dirs: ["include"], } }
camera/common/1.0/default/HandleImporter.cpp +79 −7 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ #define LOG_TAG "HandleImporter" #define LOG_TAG "HandleImporter" #include "HandleImporter.h" #include "HandleImporter.h" #include <gralloctypes/Gralloc4.h> #include <log/log.h> #include <log/log.h> namespace android { namespace android { Loading @@ -25,6 +27,9 @@ namespace common { namespace V1_0 { namespace V1_0 { namespace helper { namespace helper { using aidl::android::hardware::graphics::common::PlaneLayout; using aidl::android::hardware::graphics::common::PlaneLayoutComponent; using aidl::android::hardware::graphics::common::PlaneLayoutComponentType; using MapperErrorV2 = android::hardware::graphics::mapper::V2_0::Error; using MapperErrorV2 = android::hardware::graphics::mapper::V2_0::Error; using MapperErrorV3 = android::hardware::graphics::mapper::V3_0::Error; using MapperErrorV3 = android::hardware::graphics::mapper::V3_0::Error; using MapperErrorV4 = android::hardware::graphics::mapper::V4_0::Error; using MapperErrorV4 = android::hardware::graphics::mapper::V4_0::Error; Loading Loading @@ -118,6 +123,79 @@ YCbCrLayout HandleImporter::lockYCbCrInternal(const sp<M> mapper, buffer_handle_ return layout; return layout; } } template <> YCbCrLayout HandleImporter::lockYCbCrInternal<IMapperV4, MapperErrorV4>( const sp<IMapperV4> mapper, buffer_handle_t& buf, uint64_t cpuUsage, const IMapper::Rect& accessRegion) { hidl_handle acquireFenceHandle; auto buffer = const_cast<native_handle_t*>(buf); YCbCrLayout layout = {}; void* mapped = nullptr; typename IMapperV4::Rect accessRegionV4 = {accessRegion.left, accessRegion.top, accessRegion.width, accessRegion.height}; mapper->lock(buffer, cpuUsage, accessRegionV4, acquireFenceHandle, [&](const auto& tmpError, const auto& tmpPtr) { if (tmpError == MapperErrorV4::NONE) { mapped = tmpPtr; } else { ALOGE("%s: failed to lock error %d!", __FUNCTION__, tmpError); } }); if (mapped == nullptr) { return layout; } hidl_vec<uint8_t> encodedPlaneLayouts; mapper->get(buffer, gralloc4::MetadataType_PlaneLayouts, [&](const auto& tmpError, const auto& tmpEncodedPlaneLayouts) { if (tmpError == MapperErrorV4::NONE) { encodedPlaneLayouts = tmpEncodedPlaneLayouts; } else { ALOGE("%s: failed to get plane layouts %d!", __FUNCTION__, tmpError); } }); std::vector<PlaneLayout> planeLayouts; gralloc4::decodePlaneLayouts(encodedPlaneLayouts, &planeLayouts); for (const auto& planeLayout : planeLayouts) { for (const auto& planeLayoutComponent : planeLayout.components) { const auto& type = planeLayoutComponent.type; if (!gralloc4::isStandardPlaneLayoutComponentType(type)) { continue; } uint8_t* data = reinterpret_cast<uint8_t*>(mapped); data += planeLayout.offsetInBytes; data += planeLayoutComponent.offsetInBits / 8; switch (static_cast<PlaneLayoutComponentType>(type.value)) { case PlaneLayoutComponentType::Y: layout.y = data; layout.yStride = planeLayout.strideInBytes; break; case PlaneLayoutComponentType::CB: layout.cb = data; layout.cStride = planeLayout.strideInBytes; layout.chromaStep = planeLayout.sampleIncrementInBits / 8; break; case PlaneLayoutComponentType::CR: layout.cr = data; layout.cStride = planeLayout.strideInBytes; layout.chromaStep = planeLayout.sampleIncrementInBits / 8; break; default: break; } } } return layout; } template<class M, class E> template<class M, class E> int HandleImporter::unlockInternal(const sp<M> mapper, buffer_handle_t& buf) { int HandleImporter::unlockInternal(const sp<M> mapper, buffer_handle_t& buf) { int releaseFence = -1; int releaseFence = -1; Loading Loading @@ -306,13 +384,7 @@ YCbCrLayout HandleImporter::lockYCbCr( } } if (mMapperV4 != nullptr) { if (mMapperV4 != nullptr) { // No device currently supports IMapper 4.0 so it is safe to just return an error code here. return lockYCbCrInternal<IMapperV4, MapperErrorV4>(mMapperV4, buf, cpuUsage, accessRegion); // // This will be supported by a combination of lock and BufferMetadata getters. We are going // to refactor all the IAllocator/IMapper versioning code into a shared library. We will // then add the IMapper 4.0 lockYCbCr support then. ALOGE("%s: MapperV4 doesn't support lockYCbCr directly!", __FUNCTION__); return {}; } } if (mMapperV3 != nullptr) { if (mMapperV3 != nullptr) { Loading
camera/device/1.0/default/Android.bp +3 −3 Original line number Original line Diff line number Diff line Loading @@ -20,15 +20,15 @@ cc_library_shared { "android.hidl.memory@1.0", "android.hidl.memory@1.0", "libcutils", "libcutils", "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", ], ], static_libs: [ static_libs: [ "android.hardware.camera.common@1.0-helper" "android.hardware.camera.common@1.0-helper", ], ], header_libs: [ header_libs: [ "media_plugin_headers", "media_plugin_headers", ], ], export_include_dirs: ["."] export_include_dirs: ["."], } }
camera/device/3.2/default/Android.bp +9 −6 Original line number Original line Diff line number Diff line Loading @@ -2,9 +2,11 @@ cc_library_shared { name: "camera.device@3.2-impl", name: "camera.device@3.2-impl", defaults: ["hidl_defaults"], defaults: ["hidl_defaults"], proprietary: true, proprietary: true, srcs: ["CameraDevice.cpp", srcs: [ "CameraDevice.cpp", "CameraDeviceSession.cpp", "CameraDeviceSession.cpp", "convert.cpp"], "convert.cpp", ], shared_libs: [ shared_libs: [ "libhidlbase", "libhidlbase", "libutils", "libutils", Loading @@ -15,15 +17,16 @@ cc_library_shared { "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", "android.hardware.graphics.mapper@4.0", "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", "libfmq" "libfmq", ], ], static_libs: [ static_libs: [ "android.hardware.camera.common@1.0-helper" "android.hardware.camera.common@1.0-helper", ], ], export_include_dirs: ["."], export_include_dirs: ["."], export_shared_lib_headers: [ export_shared_lib_headers: [ "libfmq", "libfmq", ] ], } }
camera/device/3.3/default/Android.bp +9 −6 Original line number Original line Diff line number Diff line Loading @@ -2,9 +2,11 @@ cc_library_shared { name: "camera.device@3.3-impl", name: "camera.device@3.3-impl", defaults: ["hidl_defaults"], defaults: ["hidl_defaults"], proprietary: true, proprietary: true, srcs: ["CameraDevice.cpp", srcs: [ "CameraDevice.cpp", "CameraDeviceSession.cpp", "CameraDeviceSession.cpp", "convert.cpp"], "convert.cpp", ], shared_libs: [ shared_libs: [ "libhidlbase", "libhidlbase", "libutils", "libutils", Loading @@ -17,15 +19,16 @@ cc_library_shared { "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@3.0", "android.hardware.graphics.mapper@4.0", "android.hardware.graphics.mapper@4.0", "liblog", "liblog", "libgralloctypes", "libhardware", "libhardware", "libcamera_metadata", "libcamera_metadata", "libfmq" "libfmq", ], ], static_libs: [ static_libs: [ "android.hardware.camera.common@1.0-helper" "android.hardware.camera.common@1.0-helper", ], ], export_include_dirs: ["."], export_include_dirs: ["."], export_shared_lib_headers: [ export_shared_lib_headers: [ "libfmq", "libfmq", ] ], } }