Need to actually respect the given usage or the API doesn't
work. Shift the default to be done Java-side where it's clear
if usage was user-provided or not. Remove the incorrect
validations and assertions around usages.
Add missing HardwareBuffer#isSupported to let users
check if a usage & format combination is supported.
Change-Id: I70bfe6e6c41e78425a38af6b17d421f0e80e818b
Fixes: 123423319
Test: HardwareBuffer CTS tests
ImageReader: unhide the factory method to assign usage flag
ImageWriter: unhide the factory method to assign format
Test: new CTS tests
Bug: 112171574
Change-Id: Ia2579c466cdad378ecedc6398a652bb5f4e6aeec
The Jpeg image format must support additional dynamic
depth metadata according to the new standard. Camera
devices supporting non-exclusive depth map streams
along with appropriate Jpeg output will include this
new format by default.
Bug: 109735087
Test: Camera CTS
Change-Id: Id628466323a1ffbbdc7b44a5d15fe8df1cab8743
"ImageReader" and "ImageWriter" must pass information about the
specific buffer scaling mode.
Bug: 76022384
Test: Manual using application,
Camera CTS
Change-Id: I116f00cbf3b1487d8e44661e8fd15e2aa16e6e0d
The only allowed format - usage pairs are currently:
* PRIVATE with USAGE_GPU_SAMPLED_IMAGE
* PRIVATE with USAGE_VIDEO_ENCODE
* PRIVATE with USAGE_GPU_SAMPLED_IMAGE | USAGE_VIDEO_ENCODE
* Non-PRIVATE with USAGE_CPU_READ_RARELY
* Non-PRIVATE with USAGE_CPU_READ_OFTEN
This commit enable other cases, ie. PRIVATE with
GRALLOC_USAGE_HW_COMPOSER.
Bug: 77148005
Test: Manually tested it.
Change-Id: I414c25bc62d52a3573461df6cec4d88512509ec4
"ImageReader" and "ImageWriter" must pass information about the
specific buffer transformation.
Currently only the "ImageReader" implementation of the
"android.media.Image" abstract classs will populate the
corresponding transformation, the remaining implementations will
use the default identity tranformation.
Bug: 75316204
Test: Manual using test application,
Camera CTS
Change-Id: If5c12134fbbef8cc20c3d369986ba613bc4f2cec
This mirror the corresponding NDK API. For some
reason this was missing from the java version
of Image.
Bug: 73784759
Test: manual
Change-Id: Iafa6dedda809fe38ea4453d9873d1ba886f88481
With all the work under the hood of ImageReader/Writer in the last few
releases, this is much more straightforward to enable.
Only trick is to ensure that the Image detached from the ImageReader
correctly clears out its planes, if present.
Bug: 19962027
Test: Camera CTS still passes on angler, sailfish, ryu
Change-Id: Ic8a1f3e2f45cf15971d76e308a5af25eb2fd66f1
Also add an ImageWriter ctor to take additional arugment (format)
Test: ImageReader and Writer CTS tests
Bug: 32766711
Change-Id: I99e3862dd5b9a85c9df7879c14c84b68a35718ec
This causes frequent programming errors, when developers assume
that holding onto a Surface will keep its associated SurfaceTexture,
ImageReader, etc, also alive.
Bug: 31551063
Test: m offline-sdk-docs, manual viewing of result
Change-Id: I5fb5bb3e3c80c7d5d735417b1697e0fe9a62fc46
This method (currently @hide) discards all cached buffers for
the ImageReader, which can be useful to free up memory at the
cost of reallocationt time if more buffers are needed later.
It has no effect on acquired Images, filled Images waiting to be
acquired, or buffers being actively used by the source rendering to the
Surface.
Bug: 28695173
Change-Id: I427a8ba4ad73a267083f843dbf228bfc53a730d9
Registering with the maximum potential memory made by visible by an
ImageReader/Writer can cause the VM to try to heavily garbage-collect
the rest of the application. This can have significant impact on camera
applications, since they often have large ImageReader/Writer queues.
Bug: 28454727
Change-Id: I2ba43635f93da66655be024165a15631b3b421d3
Below changes are included:
* Defer the buffer lock to Image#getPlanes call. This will save quite a bit
CPU cycles associated with lock buffer if the application doesn't really
want to access the data.
* Refactor the code: move some common code to some utility class, and use
one unified consumer (BufferItemConsumer) in ImageReader native implementation.
The code refactoring will also make it easier to support non-opaque image
attach/detach.
Bug: 22356918
Bug: 19962027
Change-Id: I4fb865b0ea3deb6650afc64c32a5906f30e8ccbd
The application could acquire images in onImageAvailable callback when
the ImageReader is being closed. We need some protection here to avoid
application crash.
Change-Id: Ie5be8450048c0cfd78e5a7e27befe4de425d79f3
* Hook up the native allocation registration with ImageWriter, such that GC
can get some hint when clean up the large memory object.
* Close all pending images when closing ImageReader. This could avoid native
mem leaks for some bad app practice. For example, some apps may hold images
in background service when activity is paused/destroyed, which could cause
huge native memory leaks even ImageReader is closed.
* make Image close thread safe: it is possible the clients close the image
in listener thread and the client main thread.
* Some minor code refactor to reduce the code duplication.
Bug: 25088440
Change-Id: I37d22b52aeb8d2521bf9c702b0f54c05905473e0
Mostly due to no standard stream configurations being defined,
and for the correct overrides for DEPTH_POINT_CLOUD format.
Bug: 20537722
Change-Id: I8a18f5f68697a09dcc4d7555e51728193fe7f333
Estimate the native allocation and register it so it can be
accounted for during GC.
Bug: 20299272
Change-Id: I43af3058b6fe9a41e5e7e119e390ed079402c4b8
Attempting to access an Image after it is closed will result in an ISE.
Also fixed some minor doc issues.
Bug: 19872785
Change-Id: I91f037b2b2f243fcbd905d5a646b505bc9c10638
ImageWriter/Reader API change, including below changes
* Interface for Opaque ImageReader
* ImageWriter Interface and implementation
* Image class minor update to support ImageWriter opaque ImageReader
detach/attach interface are defined but yet to be implemented.
Change-Id: Ic7c0d2df73c80b1a81a7316d8c4556bf7703c309
- Add an explicit mapping between public ImageFormat/
PixelFormat enums and internal HAL format/dataspace.
- Add DEPTH16 and DEPTH_POINT_CLOUD formats
- Wire up mapping layer to ImageReader to support depth
formats
Change-Id: I8197eccef900cc91baddcfcb934ccd4d8c972eff
Bug: 17379185
- WAR for SW Write usage flags being unavailable on
certain devices for JPEG (blob) format buffers.
Change-Id: Ic7299785b743f35dd47264b9d1cea01a88b71d91
This avoids a race where close() can return while there are still
onImageAvailable callbacks pending.
Bug: 10666923
Change-Id: Ic519b68f3132ceb7f95a9a42ebd1032c1638fbf5
- No longer return null when some bad error happens
- Throws OutOfResourcesException when images need to be closed
- Throws IllegalStateException when an unknown internal error happens
Bug: 10333400
Change-Id: Ia53a5dd33f9ce53abd036e080e6fcc4ded9b251d