Commit Graph

8 Commits

Author SHA1 Message Date
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
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
Chien-Yu Chen
e0ee63046a ImageWriter: Exception when Surface is abandoned
Throw IllegalStateException when queueing or dequeueing an
image if the input surface is already abandoned by the consumer.

Also fix a crash when planes are not initialized when closing
ImageWriter.

Bug: 22279111
Change-Id: I8301920d64a53c45b29e947e52ff323733abbf16
2015-07-06 18:26:28 -07: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
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
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