Loading camera/device/aidl/aidl_api/android.hardware.camera.device/current/android/hardware/camera/device/ConfigureStreamsRet.aidl +0 −1 Original line number Diff line number Diff line Loading @@ -35,5 +35,4 @@ package android.hardware.camera.device; @VintfStability parcelable ConfigureStreamsRet { android.hardware.camera.device.HalStream[] halStreams; boolean enableHalBufferManager = false; } camera/device/aidl/aidl_api/android.hardware.camera.device/current/android/hardware/camera/device/HalStream.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -42,4 +42,5 @@ parcelable HalStream { android.hardware.graphics.common.Dataspace overrideDataSpace; String physicalCameraId; boolean supportOffline; boolean enableHalBufferManager; } camera/device/aidl/android/hardware/camera/device/ConfigureStreamsRet.aidl +0 −5 Original line number Diff line number Diff line Loading @@ -34,9 +34,4 @@ parcelable ConfigureStreamsRet { * overridden format, maximum buffers etc. */ HalStream[] halStreams; /** * A boolean informing the camera framework whether the HAL buffer manager * must be used for the session configured. */ boolean enableHalBufferManager = false; } camera/device/aidl/android/hardware/camera/device/HalStream.aidl +20 −0 Original line number Diff line number Diff line Loading @@ -127,4 +127,24 @@ parcelable HalStream { * */ boolean supportOffline; /** * Whether the buffers for this stream are HAL buffer managed. * * If ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION is * ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_SESSION_CONFIGURABLE, this field * must be set by the HAL to inform the camera framework, whether output buffers for this * stream will be HAL buffer managed - i.e. requested through the * ICameraDeviceCallback.requestStreamsBuffers() API. Only the output buffers for the streams * that have this field set to 'true' will be HAL buffer managed. The output buffers for other * streams will be managed by the camera framework. * * If the value of ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION is * ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_AIDL_DEVICE, the camera framework * will ignore this field and assume that all output streams are hal buffer managed. * * If ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION is not set at all, the camera framework * will ignore this field and assume output buffers are managed by the camera framework. */ boolean enableHalBufferManager; } camera/provider/aidl/vts/VtsAidlHalCameraProvider_TargetTest.cpp +36 −27 Original line number Diff line number Diff line Loading @@ -698,7 +698,6 @@ TEST_P(CameraAidlTest, configureConcurrentStreamsAvailableOutputs) { for (const auto& cameraDeviceIds : concurrentDeviceCombinations) { std::vector<CameraIdAndStreamCombination> cameraIdsAndStreamCombinations; std::vector<CameraTestInfo> cameraTestInfos; size_t i = 0; for (const auto& id : cameraDeviceIds.combination) { CameraTestInfo cti; auto it = idToNameMap.find(id); Loading Loading @@ -749,7 +748,6 @@ TEST_P(CameraAidlTest, configureConcurrentStreamsAvailableOutputs) { cameraIdAndStreamCombination.cameraId = id; cameraIdAndStreamCombination.streamConfiguration = cti.config; cameraIdsAndStreamCombinations.push_back(cameraIdAndStreamCombination); i++; cameraTestInfos.push_back(cti); } // Now verify that concurrent streams are supported Loading Loading @@ -1614,7 +1612,7 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { std::vector<HalStream> halStreams; bool supportsPartialResults = false; bool useHalBufManager = false; std::set<int32_t> halBufManagedStreamIds; int32_t partialResultCount = 0; Stream previewStream; std::shared_ptr<DeviceCb> cb; Loading @@ -1622,7 +1620,7 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { configurePreviewStreams( name, mProvider, &previewThreshold, physicalIds, &mSession, &previewStream, &halStreams /*out*/, &supportsPartialResults /*out*/, &partialResultCount /*out*/, &useHalBufManager /*out*/, &cb /*out*/, 0 /*streamConfigCounter*/, true); &halBufManagedStreamIds /*out*/, &cb /*out*/, 0 /*streamConfigCounter*/, true); if (mSession == nullptr) { // stream combination not supported by HAL, skip test for device continue; Loading Loading @@ -1659,7 +1657,9 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { size_t k = 0; for (const auto& halStream : halStreams) { buffer_handle_t buffer_handle; if (useHalBufManager) { bool useHalBufManagerForStream = halBufManagedStreamIds.find(halStream.id) != halBufManagedStreamIds.end(); if (useHalBufManagerForStream) { outputBuffers[k] = {halStream.id, /*bufferId*/ 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; } else { Loading Loading @@ -1763,10 +1763,13 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { defaultPreviewSettings.unlock(settingsBuffer); filteredSettings.unlock(filteredSettingsBuffer); if (useHalBufManager) { std::vector<int32_t> streamIds(halStreams.size()); for (size_t i = 0; i < streamIds.size(); i++) { streamIds[i] = halStreams[i].id; if (halBufManagedStreamIds.size() != 0) { std::vector<int32_t> streamIds; for (size_t i = 0; i < halStreams.size(); i++) { int32_t streamId = halStreams[i].id; if (halBufManagedStreamIds.find(streamId) != halBufManagedStreamIds.end()) { streamIds.emplace_back(streamId); } } verifyBuffersReturned(mSession, streamIds, cb); } Loading Loading @@ -1830,7 +1833,7 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { std::vector<HalStream> halStreams; bool supportsPartialResults = false; bool useHalBufManager = false; std::set<int32_t> halBufManagedStreamIds; int32_t partialResultCount = 0; Stream previewStream; std::shared_ptr<DeviceCb> cb; Loading @@ -1842,8 +1845,8 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { GRALLOC1_CONSUMER_USAGE_CPU_READ); previewStream.dataSpace = Dataspace::UNKNOWN; configureStreams(name, mProvider, format, &mSession, &previewStream, &halStreams, &supportsPartialResults, &partialResultCount, &useHalBufManager, &cb, 0, /*maxResolution*/ true); &supportsPartialResults, &partialResultCount, &halBufManagedStreamIds, &cb, 0, /*maxResolution*/ true); ASSERT_NE(mSession, nullptr); ::aidl::android::hardware::common::fmq::MQDescriptor< Loading Loading @@ -1874,7 +1877,9 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { size_t k = 0; for (const auto& halStream : halStreams) { buffer_handle_t buffer_handle; if (useHalBufManager) { bool halBufManagerUsed = halBufManagedStreamIds.find(halStream.id) != halBufManagedStreamIds.end(); if (halBufManagerUsed) { outputBuffers[k] = {halStream.id, 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; Loading Loading @@ -1926,10 +1931,12 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { ASSERT_FALSE(inflightReq->errorCodeValid); ASSERT_NE(inflightReq->resultOutputBuffers.size(), 0u); } if (useHalBufManager) { std::vector<int32_t> streamIds(halStreams.size()); for (size_t i = 0; i < streamIds.size(); i++) { streamIds[i] = halStreams[i].id; if (halBufManagedStreamIds.size()) { std::vector<int32_t> streamIds; for (size_t i = 0; i < halStreams.size(); i++) { if (contains(halBufManagedStreamIds, halStreams[i].id)) { streamIds.emplace_back(halStreams[i].id); } } verifyBuffersReturned(mSession, streamIds, cb); } Loading Loading @@ -1991,7 +1998,7 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { std::vector<HalStream> halStreams; bool supportsPartialResults = false; bool useHalBufManager = false; std::set<int32_t> halBufManagedStreamIds; int32_t partialResultCount = 0; Stream previewStream; std::shared_ptr<DeviceCb> cb; Loading @@ -2002,7 +2009,7 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { previewStream.dataSpace = getDataspace(PixelFormat::IMPLEMENTATION_DEFINED); configureStreams(name, mProvider, PixelFormat::IMPLEMENTATION_DEFINED, &mSession, &previewStream, &halStreams, &supportsPartialResults, &partialResultCount, &useHalBufManager, &cb, 0, &partialResultCount, &halBufManagedStreamIds, &cb, 0, /*maxResolution*/ false, profile); ASSERT_NE(mSession, nullptr); Loading Loading @@ -2041,7 +2048,7 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { auto bufferId = requestId + 1; // Buffer id value 0 is not valid for (const auto& halStream : halStreams) { buffer_handle_t buffer_handle; if (useHalBufManager) { if (contains(halBufManagedStreamIds, halStream.id)) { outputBuffers[k] = {halStream.id, 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; Loading Loading @@ -2107,10 +2114,12 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { verify10BitMetadata(mHandleImporter, *inflightReq, profile); } if (useHalBufManager) { std::vector<int32_t> streamIds(halStreams.size()); for (size_t i = 0; i < streamIds.size(); i++) { streamIds[i] = halStreams[i].id; if (halBufManagedStreamIds.size() != 0) { std::vector<int32_t> streamIds; for (size_t i = 0; i < halStreams.size(); i++) { if (contains(halBufManagedStreamIds, halStreams[i].id)) { streamIds.emplace_back(halStreams[i].id); } } mSession->signalStreamFlush(streamIds, /*streamConfigCounter*/ 0); cb->waitForBuffersReturned(); Loading Loading @@ -2442,11 +2451,11 @@ TEST_P(CameraAidlTest, switchToOffline) { std::vector<HalStream> halStreams; std::shared_ptr<DeviceCb> cb; int32_t jpegBufferSize; bool useHalBufManager; std::set<int32_t> halBufManagedStreamIds; configureOfflineStillStream(name, mProvider, &threshold, &mSession /*out*/, &stream /*out*/, &halStreams /*out*/, &supportsPartialResults /*out*/, &partialResultCount /*out*/, &cb /*out*/, &jpegBufferSize /*out*/, &useHalBufManager /*out*/); &jpegBufferSize /*out*/, &halBufManagedStreamIds /*out*/); auto ret = mSession->constructDefaultRequestSettings(RequestTemplate::STILL_CAPTURE, &settings); Loading Loading @@ -2482,7 +2491,7 @@ TEST_P(CameraAidlTest, switchToOffline) { StreamBuffer& outputBuffer = outputBuffers[0]; std::unique_lock<std::mutex> l(mLock); if (useHalBufManager) { if (contains(halBufManagedStreamIds, halStream.id)) { outputBuffer = {halStream.id, 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; } else { Loading Loading
camera/device/aidl/aidl_api/android.hardware.camera.device/current/android/hardware/camera/device/ConfigureStreamsRet.aidl +0 −1 Original line number Diff line number Diff line Loading @@ -35,5 +35,4 @@ package android.hardware.camera.device; @VintfStability parcelable ConfigureStreamsRet { android.hardware.camera.device.HalStream[] halStreams; boolean enableHalBufferManager = false; }
camera/device/aidl/aidl_api/android.hardware.camera.device/current/android/hardware/camera/device/HalStream.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -42,4 +42,5 @@ parcelable HalStream { android.hardware.graphics.common.Dataspace overrideDataSpace; String physicalCameraId; boolean supportOffline; boolean enableHalBufferManager; }
camera/device/aidl/android/hardware/camera/device/ConfigureStreamsRet.aidl +0 −5 Original line number Diff line number Diff line Loading @@ -34,9 +34,4 @@ parcelable ConfigureStreamsRet { * overridden format, maximum buffers etc. */ HalStream[] halStreams; /** * A boolean informing the camera framework whether the HAL buffer manager * must be used for the session configured. */ boolean enableHalBufferManager = false; }
camera/device/aidl/android/hardware/camera/device/HalStream.aidl +20 −0 Original line number Diff line number Diff line Loading @@ -127,4 +127,24 @@ parcelable HalStream { * */ boolean supportOffline; /** * Whether the buffers for this stream are HAL buffer managed. * * If ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION is * ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_SESSION_CONFIGURABLE, this field * must be set by the HAL to inform the camera framework, whether output buffers for this * stream will be HAL buffer managed - i.e. requested through the * ICameraDeviceCallback.requestStreamsBuffers() API. Only the output buffers for the streams * that have this field set to 'true' will be HAL buffer managed. The output buffers for other * streams will be managed by the camera framework. * * If the value of ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION is * ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_AIDL_DEVICE, the camera framework * will ignore this field and assume that all output streams are hal buffer managed. * * If ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION is not set at all, the camera framework * will ignore this field and assume output buffers are managed by the camera framework. */ boolean enableHalBufferManager; }
camera/provider/aidl/vts/VtsAidlHalCameraProvider_TargetTest.cpp +36 −27 Original line number Diff line number Diff line Loading @@ -698,7 +698,6 @@ TEST_P(CameraAidlTest, configureConcurrentStreamsAvailableOutputs) { for (const auto& cameraDeviceIds : concurrentDeviceCombinations) { std::vector<CameraIdAndStreamCombination> cameraIdsAndStreamCombinations; std::vector<CameraTestInfo> cameraTestInfos; size_t i = 0; for (const auto& id : cameraDeviceIds.combination) { CameraTestInfo cti; auto it = idToNameMap.find(id); Loading Loading @@ -749,7 +748,6 @@ TEST_P(CameraAidlTest, configureConcurrentStreamsAvailableOutputs) { cameraIdAndStreamCombination.cameraId = id; cameraIdAndStreamCombination.streamConfiguration = cti.config; cameraIdsAndStreamCombinations.push_back(cameraIdAndStreamCombination); i++; cameraTestInfos.push_back(cti); } // Now verify that concurrent streams are supported Loading Loading @@ -1614,7 +1612,7 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { std::vector<HalStream> halStreams; bool supportsPartialResults = false; bool useHalBufManager = false; std::set<int32_t> halBufManagedStreamIds; int32_t partialResultCount = 0; Stream previewStream; std::shared_ptr<DeviceCb> cb; Loading @@ -1622,7 +1620,7 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { configurePreviewStreams( name, mProvider, &previewThreshold, physicalIds, &mSession, &previewStream, &halStreams /*out*/, &supportsPartialResults /*out*/, &partialResultCount /*out*/, &useHalBufManager /*out*/, &cb /*out*/, 0 /*streamConfigCounter*/, true); &halBufManagedStreamIds /*out*/, &cb /*out*/, 0 /*streamConfigCounter*/, true); if (mSession == nullptr) { // stream combination not supported by HAL, skip test for device continue; Loading Loading @@ -1659,7 +1657,9 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { size_t k = 0; for (const auto& halStream : halStreams) { buffer_handle_t buffer_handle; if (useHalBufManager) { bool useHalBufManagerForStream = halBufManagedStreamIds.find(halStream.id) != halBufManagedStreamIds.end(); if (useHalBufManagerForStream) { outputBuffers[k] = {halStream.id, /*bufferId*/ 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; } else { Loading Loading @@ -1763,10 +1763,13 @@ TEST_P(CameraAidlTest, processMultiCaptureRequestPreview) { defaultPreviewSettings.unlock(settingsBuffer); filteredSettings.unlock(filteredSettingsBuffer); if (useHalBufManager) { std::vector<int32_t> streamIds(halStreams.size()); for (size_t i = 0; i < streamIds.size(); i++) { streamIds[i] = halStreams[i].id; if (halBufManagedStreamIds.size() != 0) { std::vector<int32_t> streamIds; for (size_t i = 0; i < halStreams.size(); i++) { int32_t streamId = halStreams[i].id; if (halBufManagedStreamIds.find(streamId) != halBufManagedStreamIds.end()) { streamIds.emplace_back(streamId); } } verifyBuffersReturned(mSession, streamIds, cb); } Loading Loading @@ -1830,7 +1833,7 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { std::vector<HalStream> halStreams; bool supportsPartialResults = false; bool useHalBufManager = false; std::set<int32_t> halBufManagedStreamIds; int32_t partialResultCount = 0; Stream previewStream; std::shared_ptr<DeviceCb> cb; Loading @@ -1842,8 +1845,8 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { GRALLOC1_CONSUMER_USAGE_CPU_READ); previewStream.dataSpace = Dataspace::UNKNOWN; configureStreams(name, mProvider, format, &mSession, &previewStream, &halStreams, &supportsPartialResults, &partialResultCount, &useHalBufManager, &cb, 0, /*maxResolution*/ true); &supportsPartialResults, &partialResultCount, &halBufManagedStreamIds, &cb, 0, /*maxResolution*/ true); ASSERT_NE(mSession, nullptr); ::aidl::android::hardware::common::fmq::MQDescriptor< Loading Loading @@ -1874,7 +1877,9 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { size_t k = 0; for (const auto& halStream : halStreams) { buffer_handle_t buffer_handle; if (useHalBufManager) { bool halBufManagerUsed = halBufManagedStreamIds.find(halStream.id) != halBufManagedStreamIds.end(); if (halBufManagerUsed) { outputBuffers[k] = {halStream.id, 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; Loading Loading @@ -1926,10 +1931,12 @@ TEST_P(CameraAidlTest, processUltraHighResolutionRequest) { ASSERT_FALSE(inflightReq->errorCodeValid); ASSERT_NE(inflightReq->resultOutputBuffers.size(), 0u); } if (useHalBufManager) { std::vector<int32_t> streamIds(halStreams.size()); for (size_t i = 0; i < streamIds.size(); i++) { streamIds[i] = halStreams[i].id; if (halBufManagedStreamIds.size()) { std::vector<int32_t> streamIds; for (size_t i = 0; i < halStreams.size(); i++) { if (contains(halBufManagedStreamIds, halStreams[i].id)) { streamIds.emplace_back(halStreams[i].id); } } verifyBuffersReturned(mSession, streamIds, cb); } Loading Loading @@ -1991,7 +1998,7 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { std::vector<HalStream> halStreams; bool supportsPartialResults = false; bool useHalBufManager = false; std::set<int32_t> halBufManagedStreamIds; int32_t partialResultCount = 0; Stream previewStream; std::shared_ptr<DeviceCb> cb; Loading @@ -2002,7 +2009,7 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { previewStream.dataSpace = getDataspace(PixelFormat::IMPLEMENTATION_DEFINED); configureStreams(name, mProvider, PixelFormat::IMPLEMENTATION_DEFINED, &mSession, &previewStream, &halStreams, &supportsPartialResults, &partialResultCount, &useHalBufManager, &cb, 0, &partialResultCount, &halBufManagedStreamIds, &cb, 0, /*maxResolution*/ false, profile); ASSERT_NE(mSession, nullptr); Loading Loading @@ -2041,7 +2048,7 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { auto bufferId = requestId + 1; // Buffer id value 0 is not valid for (const auto& halStream : halStreams) { buffer_handle_t buffer_handle; if (useHalBufManager) { if (contains(halBufManagedStreamIds, halStream.id)) { outputBuffers[k] = {halStream.id, 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; Loading Loading @@ -2107,10 +2114,12 @@ TEST_P(CameraAidlTest, process10BitDynamicRangeRequest) { verify10BitMetadata(mHandleImporter, *inflightReq, profile); } if (useHalBufManager) { std::vector<int32_t> streamIds(halStreams.size()); for (size_t i = 0; i < streamIds.size(); i++) { streamIds[i] = halStreams[i].id; if (halBufManagedStreamIds.size() != 0) { std::vector<int32_t> streamIds; for (size_t i = 0; i < halStreams.size(); i++) { if (contains(halBufManagedStreamIds, halStreams[i].id)) { streamIds.emplace_back(halStreams[i].id); } } mSession->signalStreamFlush(streamIds, /*streamConfigCounter*/ 0); cb->waitForBuffersReturned(); Loading Loading @@ -2442,11 +2451,11 @@ TEST_P(CameraAidlTest, switchToOffline) { std::vector<HalStream> halStreams; std::shared_ptr<DeviceCb> cb; int32_t jpegBufferSize; bool useHalBufManager; std::set<int32_t> halBufManagedStreamIds; configureOfflineStillStream(name, mProvider, &threshold, &mSession /*out*/, &stream /*out*/, &halStreams /*out*/, &supportsPartialResults /*out*/, &partialResultCount /*out*/, &cb /*out*/, &jpegBufferSize /*out*/, &useHalBufManager /*out*/); &jpegBufferSize /*out*/, &halBufManagedStreamIds /*out*/); auto ret = mSession->constructDefaultRequestSettings(RequestTemplate::STILL_CAPTURE, &settings); Loading Loading @@ -2482,7 +2491,7 @@ TEST_P(CameraAidlTest, switchToOffline) { StreamBuffer& outputBuffer = outputBuffers[0]; std::unique_lock<std::mutex> l(mLock); if (useHalBufManager) { if (contains(halBufManagedStreamIds, halStream.id)) { outputBuffer = {halStream.id, 0, NativeHandle(), BufferStatus::OK, NativeHandle(), NativeHandle()}; } else { Loading