Commit Graph

51 Commits

Author SHA1 Message Date
Yin-Chia Yeh
e7c158f114 Add annotations for ImageReader/ImageWriter factory methods
Test: make update-api && make
Bug: 124766727
Change-Id: I7f7c5afd013370ab6e42c28b96b3cfa93e8dc615
2019-02-20 10:48:04 -08:00
Shuzhen Wang
f655b1c876 Camera: Add HEIC format output
- Add HEIC ImageFormat.
- Add HEIC related camera static metatadata.
- Handle BlobID and BlobSize properly for HEIC format.

Test: Camera CTS
Bug: 79465976
Change-Id: I8606711b036e695e23671c4563364c24aad9ed84
2019-02-06 10:11:20 -08:00
TreeHugger Robot
5e55e809a7 Merge "Camera: Add support for dynamic depth image format" 2019-01-28 22:21:46 +00:00
John Reck
4d312b212c Fix ImageReader#newInstace with usage
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
2019-01-25 16:03:58 -08:00
Yin-Chia Yeh
d07e9ec5ae ImageReader/ImageWriter: unhide newInstance methods
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
2019-01-18 14:21:23 -08:00
Emilian Peev
934ffa6d40 Camera: Add support for dynamic depth image format
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
2019-01-11 15:24:21 +00:00
Emilian Peev
750aec6f3b media: Populate Image scaling mode in reader and writer
"ImageReader" and "ImageWriter" must pass information about the
specific buffer scaling mode.

Bug: 76022384
Test: Manual using application,
Camera CTS

Change-Id: I116f00cbf3b1487d8e44661e8fd15e2aa16e6e0d
2018-04-06 13:01:45 +01:00
Clément Julliard
a7d2de4868 Relax constraints on valid ImageReader usage flags
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
2018-03-27 13:48:27 -07:00
Emilian Peev
450a5ffdfd Camera: Populate Image tranformation in reader and writer
"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
2018-03-19 16:19:43 +00:00
Mathias Agopian
3e88ed82e5 NEW API: Add Image.getHardwareBuffer()
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
2018-02-28 22:23:54 +00:00
Chien-Yu Chen
5fb64cdae7 ImageReader: Make discardFreeBuffers public
Test: CTS
Bug: 64847201
Change-Id: I61008111552b5ca4641a509e5bcf5cf821582d5e
2017-11-29 14:13:01 -08:00
Eino-Ville Talvala
07ad459c84 ImageWriter: Attach non-opaque Images as well.
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
2017-05-04 11:04:56 -07:00
Mathias Agopian
910ab13e66 Plumb gralloc producer/consumer bits correctly
Bug: 33350696
Test: compile, boot device, its
Change-Id: I6129cedce0b35acfef1702afdd178ba043dd53cb
2017-04-28 00:13:29 +00:00
Zhijun He
916d8ac650 ImageReader/Writer: add usage flag support
Also add an ImageWriter ctor to take additional arugment (format)

Test: ImageReader and Writer CTS tests
Bug: 32766711
Change-Id: I99e3862dd5b9a85c9df7879c14c84b68a35718ec
2017-04-10 23:38:32 +00:00
Eino-Ville Talvala
c4faf0cb13 Docs: Note that a Surface acts like a weak reference
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
2016-09-16 22:58:11 +00:00
Eino-Ville Talvala
2e2aaf6e04 ImageReader: Add discardFreeBuffers method
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
2016-07-21 17:04:19 -07:00
Chien-Yu Chen
ca979b9d89 ImageReader: Make close thread safe
Bug: 30191606
Change-Id: Ic5b53c416a7fe3ebcaad2ab78f2e9aef3b790c88
2016-07-18 17:14:27 -07:00
Eino-Ville Talvala
04a935162c ImageReader/Writer: Only register 1 buffer for native allocation
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
2016-05-02 15:20:31 -07:00
Zhijun He
0ab416269a ImageReader/Writer: refactor and cleanup
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
2016-03-08 13:21:36 -08:00
Zhijun He
8e694e3b49 ImageReader: skip callback when image reader is being closed
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
2016-02-23 17:54:30 -08:00
Yin-Chia Yeh
44581ff4db Camera: add RAW_PRIVATE format
Also add necessary plumbing for RAW_PRIVATE to work for ImageReader.

Bug: 25596619
Change-Id: Ic90f3f44264ac46fae1fafbc27ac64b5319f0970
2015-12-09 11:20:32 -08:00
Zhijun He
dc6bb24a3c media: improve ImageReader/Writer native memory management
* 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
2015-12-07 14:38:37 -08:00
Eino-Ville Talvala
72064af7e7 Camera: Fix framework bugs with DEPTH-only camera devices
Mostly due to no standard stream configurations being defined,
and for the correct overrides for DEPTH_POINT_CLOUD format.

Bug: 20537722
Change-Id: I8a18f5f68697a09dcc4d7555e51728193fe7f333
2015-08-11 15:04:56 -07:00
Chien-Yu Chen
11c5d0dd01 ImageReader: Register estimated native allocation
Estimate the native allocation and register it so it can be
accounted for during GC.

Bug: 20299272
Change-Id: I43af3058b6fe9a41e5e7e119e390ed079402c4b8
2015-05-22 11:41:02 -07:00
Zhijun He
758e6a8f70 Merge "ImageReader: Image getFormat should return the Image buffer format" into mnc-dev 2015-05-14 21:46:38 +00:00
Zhijun He
d99dc329b9 Image/Reader/Writer: address API review comments
* Remove isOpaque methods
* Removew ImageReader#newOpaqueInstance
* Rename Writer listener and callback
* Clarify the timestamp spec
* Fix a bug in ImageUtils

Bug: 21044520
Change-Id: Ifb85ef25e4d152c2a445b3369c1e16dc1bc5220c
2015-05-14 14:35:57 -07:00
Zhijun He
7c3997d96a ImageReader: Image getFormat should return the Image buffer format
Also return buffer size correctly.

Bug: 19527410
Change-Id: I9a912afc61d577571c1b2a7f6df21da40838e925
2015-05-06 12:14:36 -07:00
Zhijun He
18191b4a52 Merge "ImageWriter: fix and cleanup the closed Image Handling" 2015-04-24 21:59:21 +00:00
Zhijun He
a58271419e ImageWriter: fix and cleanup the closed Image Handling
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
2015-04-24 13:35:07 -07:00
Lajos Molnar
d1d27c1543 media: add flexible YUV422, 444, and RGB/RGBA formats
These are used by Media.Image on getOutputImage.

Change-Id: I171c5b90423800eeab4e36625dcf727a2a2affcd
2015-04-23 19:14:32 -07:00
Zhijun He
ce9d6f9c75 ImageReader/Writer: implement opaque format operations
Implement attach/detach for image reader and writer.

Bug: 19872821
Change-Id: Ib45a054c6be0b56b370fa8d709b47b0298ba5ea7
2015-04-08 10:39:29 -07:00
Zhijun He
f6a09e5106 ImageReader/Writer: Add ImageWriter and Opaque ImageReader
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
2015-03-20 18:19:58 -07:00
Ruben Brunk
db2b5f4472 Merge "camera2: Release surface in ImageReader#close and fix legacy cleanup" 2015-03-17 19:11:33 +00:00
Ruben Brunk
443ab2c7db camera2: Release surface in ImageReader#close and fix legacy cleanup
Bug: 19694090
Change-Id: I344ad707dbd414db023e4770769b5237bd3bbb4e
2015-03-17 17:49:29 +00:00
Eino-Ville Talvala
805f3c9428 Add DEPTH image formats, support in ImageReader
- 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
2015-03-09 16:42:25 -07:00
Ruben Brunk
3ef5033cda Merge "Camera2: Allow rendering to arbitrary surface sizes in LEGACY mode." into lmp-mr1-dev 2014-12-09 23:09:52 +00:00
Ruben Brunk
f4a637d0be Camera2: Allow rendering to arbitrary surface sizes in LEGACY mode.
Bug: 16030677
Change-Id: Ida04e04f41983b9126609522dd12064a7bf9645f
2014-12-09 11:56:22 -08:00
Zhijun He
e09dcdba71 ImageReader: free direct byte buffers once Image is returned
This can prevent apps from accessing an image byte buffer when it is closed.

Bug: 12528089
Change-Id: I04dccf1832204be2ae3aeb3bbe04f616886447e6
2014-12-01 23:57:11 +00:00
Ruben Brunk
0fd198ad89 camera2: Hide JPEGs in RGBA gralloc buffers.
Bug: 17379185

- WAR for SW Write usage flags being unavailable on
  certain devices for JPEG (blob) format buffers.

Change-Id: Ic7299785b743f35dd47264b9d1cea01a88b71d91
2014-09-24 10:43:12 -07:00
Lajos Molnar
8d563a2077 ImageReader: fix documentation, relax some guarantees
MediaCodec does not guarantee any of this.

Change-Id: Id73c917baad9ca72de87b98c16374505c8028e86
2014-08-06 20:00:10 -07:00
Zhijun He
d1988a98ed Add RAW10 image format
- Add RAW10 format in ImageFormat
- Add ImageReader support for this format

Bug: 15989722
Change-Id: Ic38ae596d5a472e990389d1fa221a82bea97b715
2014-07-07 08:01:06 -07:00
Zhijun He
4eda9f5359 ImageReader: disable NV21 support
Bug: 10787131
Change-Id: I5ff0a67144b5ec49eabde6129423a41c9597c2b8
2013-09-18 10:30:50 -07:00
Jesse Hall
c395fffd90 Fix ImageReader onImageAvailable synchronization
This avoids a race where close() can return while there are still
onImageAvailable callbacks pending.

Bug: 10666923
Change-Id: Ic519b68f3132ceb7f95a9a42ebd1032c1638fbf5
2013-09-17 18:21:30 -07:00
Igor Murashkin
e3351f1942 media: Update ImageReader to remove MaxImagesAcquiredException
* acquiring images now throws IllegalStateException instead of
    MaxImagesAcquiredException

Bug: 10691447
Change-Id: I7ce68f990fb96703705b9181012a28633fea0b7a
2013-09-13 23:27:44 -07:00
Igor Murashkin
5e712064df media: Update ImageReader APIs
Bug: 10461757
Change-Id: Ic04e4c41965e3d417b29004f3f08e0cd56b8f4cb
2013-09-12 16:57:57 -07:00
Zhijun He
e2a11bb74d ImageReader: Fix null listener case
Only do the handler check when listener is not null.

Bug: 10360518
Change-Id: I9940942ae95a492c92e028e5f862beea16e1da80
2013-08-27 16:02:21 -07:00
Igor Murashkin
dd0643202d media: Fix ImageReader only using maxImages=1 no matter what
- 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
2013-08-16 12:20:09 -07:00
Zhijun He
708e359503 ImageReader: Add RGB format support.
Bug: 10155122
Change-Id: Id53d6ec815488e73bde6ca62b42c92d16bc813c9
2013-08-06 09:44:29 -07:00
Eino-Ville Talvala
2f1a2e423e Camera2 API: Rename package to android.hardware.camera2
Change-Id: I77b7939e199f9fe8e12a59393c24cff08097448c
2013-07-30 11:37:31 -07:00
Zhijun He
212e78df9e ImageReader: Implementation of ImageReader and Image APIs
Used for direct image data access from producer like camera or video decoder.

Bug: 9254294
Change-Id: I1853af03f4487ac3585d86202f6140854471fa89
2013-06-26 15:56:27 -07:00