With readout timestamp support becomes optional in b/309543399, we
need to adjust the VTS test to handle it.
Test: vendor testing
Bug: 354875531
Change-Id: I552b223f7834df83b8c0bae9f23ab7393a42b64a
The frame number being passed into the
ICameraDeviceSession.repeatingRequestEnd() call is the latest
frame number at which repeating requests will end. It is possible that
a repating request ends before this frame number due to requests being
cancelled, for instance, when the client abandons its bufferQueue.
Bug: 341021865
Test: build
Flag: DOCS_ONLY
Change-Id: Ib7f140f1dc6f449d5170a373ad24b863715c76ee
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
Based on social media app usage, trim required stream combination
queries.
Test: Build
Bug: 314229449
Change-Id: I3c48988c7a8598c1d3a091cf32e00360e6609156
jpeglib expects height and width of Y component to be an integral
multiple of 2*DCTSIZE, and heights and widths of Cb and Cr components
to be an integral multiple of DCTSIZE. If the image size does not
meet this requirement, libjpeg expects its input to be padded to
meet the constraints.
The current implementation of AllocatedFrame::allocate did not consider
this padding when allocating buffers. This could lead to crashes when
attempting to call libjpeg functions on images with dimensions that
are _not_ an exact multiple of 2*DCTSIZE (=16), for example: 424x240.
This CL ensures that the allocated buffer is padded such that libjpeg
never attempts to access unallocated buffer.
Bug: 333961771
Test: Verified that the HAL no longer crashes for certain resolutions.
Change-Id: I05b5f3390385ad005481141312a2e3e281433f7a
This CL is created as a best effort to migrate test targets
to the new android ownership model. If you find incorrect or unnecessary
attribution in this CL, please create a separate CL to fix that.
For more details please refer to the link below,
go/new-android-ownership-model
Bug: 304529413
Test: N/A
Change-Id: Ic8c4bd6ac246e7efa98bbdaf822d12ae8e1230a5
For every request, either requestStreamBuffers fails or
handling of the requested buffer fails, always trigger
the processCaptureResult callback by notifying the request
is ready. This avoids the errors like the service side
receives fewer results than the requests and waits until
timeout.
Bug: 299182874
Test: cts
cts-tradefed run cts \
--include-filter "CtsCameraTestCases android.hardware.camera2.cts.RobustnessTest" \
--include-filter "CtsCameraTestCases android.hardware.camera2.cts.PerformanceTest" \
--include-filter "CtsCameraTestCases android.hardware.camera2.cts.StillCaptureTest" \
--include-filter "CtsCameraTestCases android.hardware.camera2.cts.SurfaceViewPreviewTest" \
--include-filter "CtsCameraTestCases android.hardware.cts.CameraGLTest" \
--include-filter "CtsCameraTestCases android.hardware.cts.LegacyCameraPerformanceTest" \
Change-Id: I86ba422524e79af6b318b50bd6eebe2cb27fa50a
After enabling HALL Buffer Management, it requires more careful
error handling and syncing. Process the buffer request error correctly.
Handle the lock and states correctly.
Bug: 299182874
Test: CTS passed, expecially
./cts-tradefed run cts -m CtsCameraTestCases -t android.hardware.camera2.cts.NativeCameraDeviceTest
./cts-tradefed run cts -m CtsCameraTestCases -t android.hardware.camera2.cts.RobustnessTest
Change-Id: I04d8e19a2ee78580e54340378122c724a3de8edb
ExternalCameraHAL supports HAL buffer management which means
cameraservice will not send it an output buffer along with the
capture request, and the HAL has the freedom to request an
output buffer when an output buffer is needed.
As a remnant of migration from HIDL to AIDL, the
ExternalCameraHAL still attempted to import buffers that
the cameraservice has sent with the CaptureRequest. However,
with HAL buffer manager enabled, this buffer is always null and
results in the HAL failing to process the capture request.
This CL removes the logic for importing output buffers when
processing capture requests from the cameraservice, and lets
the HAL call requestStreamBuffers when it needs an output buffer.
Bug: 299182874
Test: VTS Tests now pass
Change-Id: I00654836b7ae91a91a2afa4b149712977e07dcc5
Don't allow Camera HAL to send keys other than the required ones for
session characteristics.
Test: atest VtsAidlHalCameraProvider_TargetTest
Bug: 314386872
Change-Id: I3808840e0d404b4a82c8bcfc6d51eab9b171b1e9
- In metadata comments, add reference source file where details can be
found
- Fix grammar in ICameraDeviceSession.aidl comments
Bug: 318762864
Test: build
Change-Id: Id0f88aacd60e9ae444a0f6d4a9dfca67f8d75eaa
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
native_handle objects created by makeFromAidl need to be deleted
with native_handle_delete. Not doing so leads to a memory leak
every time makeFromAidl is called.
This CL ensures that native_handle_delete is called on the
return value of makeFromAidl wherever it is used.
Bug: 305638723
Test: n/a. No functional change.
Change-Id: Ia99ba6e3abbdf7dec75383450a60c944b92a9c74
AIDL's NativeHandle do not have a concept of unowned file
descriptors. If a NativeHandle object is created with an
fd, NativeHandle implicitly assumes ownership of the fd.
When passing fds over binder, ExternalCameraHAL used
makeToAidl which which accidentally transferred ownership
to the AIDL objects. Additionally, NativeHandles close
owned fds on destruction, which led to multiple closure
of fences.
This CL changes the logic to use dupToAidl to ensure that
NativeHandle objects are given ownership of a duped fds
and don't interfere with any of the fds used for internal
bookkeeping.
Bug: 313115623
Test: Verified by partner that ExternalCameraHAL no longer
double closes fds.
Change-Id: Ic406634de6f22a290abb414e80a7747927368b68
As ExternalCameraHAL does not support sensor readout timestamp,
it should set ANDROID_SENSOR_READOUT_TIMESTAMP to
ANDROID_SENSOR_READOUT_TIMESTAMP_NOT_SUPPORTED in CameraDevice
characteristics.
This CL adds the CameraMetadata entry to ExternalCameraDevice.
Bug: 309543399
Test: ReadoutTimestampTest#testReadoutTimestamp passes for
ExternalCameraHAL
Change-Id: I12203f0832416b4ca325380e671675ddc1d788d4
`readoutTimestamp` metadata key was previously only visible to
SDK and the framework, and the camera framework force set the values
based on if the HAL implemented the AIDL or the HIDL interface.
This CL makes readoutTimestamp available to HALs and lets AIDL
HALs choose if they can support sensor readout timestamp or not.
Bug: 309543399
Test: External Camera HAL now sets this value and passes VTS
Change-Id: Ifee2b4020b7630383dc32ef7590f8a9ccdaf49d2
Whether the HAL buffer manager is used or not is decided
based on the presence of a static camera characteristics key -
ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION. This behavior cannot
be toggled depending on stream configuration / session parameters.
The HAL buffer manager does reduce memory consumption at the cost of
extra IPC calls, which may not be always desirable.
Therefore, HalStream.aidl - the parcelable returned by the camera HAL
for each stream configured now holds a boolean value, specifying
whether output buffers must be managed by the HAL or the camera
framework for the particular session configured.
Bug: 311263114
Test: builds
Test: Run Camera CTS on HAL supporting
ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION_SESSION_CONFIGURABLE
Test: VTS
Change-Id: Id6bda31eab3d66361991e2f883231a5a55a2ef82
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
Buffer manager is used in the external camera, but the key is not included in the aidl.
Add a buffermanger key according to the key definition.
Test: Test with USB Camera
Change-Id: I8c8c35d933fecb14dcf39996c709b643db3ee3e3
- The new isStreamCombinationSupported takes into consideration
the session parameters.
- In order to create CaptureRequest in ICameraDevice, a
createDefaultRequestSettings function is needed.
Test: Run camera VTS with session_configuration_with_parameters_query flag enabled
Bug: 309627704
Change-Id: Ib344e6991484b834aa8483ed8637ce5cd02ede87
Currently, whether the HAL buffer manager is used or not is decided
based on the presence of a static camera characteristics key -
ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION. This behavior cannot
be toggled depending on stream configuration / session parameters.
The HAL buffer manager does reduce memory consumption at the cost of
extra IPC calls, which may not be always desirable.
Therefore, a new API - 'configureStreamsV2()' is introduced to give the
camera HAL the ability to inform the camera framework whether it must
use the HAL buffer manager for the particular session configured.
Bug: 311263114
Test: VtsAidlHalCameraProvider_TargetTest on cuttlefish
Test: builds
Change-Id: Ibce6d64c3c9cc8e0ebc40522369291d03053cce2
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
Pointer to native_handle_t created using native_handle_create should
be cleaned up using native_handle_delete even if the fds in the
native_handle is no longer managed by it. ExternalCameraDeviceSession
creates native_handle_t as an intermediate to convert to AIDL
NativeHandle but doesn't call native_handle_delete on the
intermediate object which led to memory leaks.
This CL removes the intermediate object and copies the fence fd
directly.
Bug: 305638723
Test: No functional change. Compilation successful.
Change-Id: Ie3c558ee1ae6d2e84053b65eed7db179118395bb
AIDL cannot send nullptr when parceling NativeHandles. Instead, it
sends an empty handle. Logic which previously relied on null
checks should now rely on checking if the native_handle is
empty or not.
This CL updates ExternalCameraUtils to check for empty handles
instead.
Bug: 299170474
Test: CameraAidlTest#processCaptureRequestInvalidBuffer passes
Change-Id: Id4ba928defaa061708a3c1cd68aa510b376f6cb3
Revert submission 24913374-revert-24747509-camera_fail2-OVHUVTAXRP
Reason for revert: 32-bit TV build is fixed with `%zu` instead of `%lu` for size_t argument.
Reverted changes: /q/submissionid:24913374-revert-24747509-camera_fail2-OVHUVTAXRP
Change-Id: I16287ce2dbea034db41450a3a5e9c3f729e76335
Revert submission 24747509-camera_fail2
Reason for revert: DroidMonitor-triggered revert due to breakage
b/302990858.
This may cause CtsAppOpsTestCases b/300115646 to fail again,
unfortunately (b/300115646).
Bug: 302990858
Reverted changes: /q/submissionid:24747509-camera_fail2
Change-Id: I0191b3ee88846f5b2c6e37ebd6be6d1369d9dba9
HIDL mapper HAL is deprecated and instead of adding more support for the
new replacement explicitly, we can move the GraphicBufferMapper which
handles all of the backwards compatbility with the HIDL HALs for us.
Test: atest CtsCameraTestCases CtsAppOpsTestCases
Bug: 285605852
Bug: 300115646
Change-Id: Ib97e429a0f3dd1c66ec008fbf3860c9c5667bddd
External USB camera hal service crashes when disconnecting the camera.
ExternalCameraDeviceSession's desctructor is called and deletes mLock,
but mBufferRequestThread is still running and waiting on the same
mLock, which causes the "pthread_mutex_lock called on a destroyed
mutex" error.
Fix the issue by stopping the thread in destructor. Also refactors the
functions and remove unused conditions.
Bug: 289741662
Test: Test with USB camera
Change-Id: I06b1ff6e192a4bca16822785d65d68a6aae53414