Commit Graph

71 Commits

Author SHA1 Message Date
Emilian Peev
da49a5ed33 ImageReader: Set inverse diplay transform if needed
Image transform sometimes could be missing the inverse
display flag. Any buffers that pass through BQs will
have this bit reset and moved in a separate buffer item
field. To restore and pass the original transform forward
check whether the flag got reset and re-enable it
accordingly.

Bug: 110641448
Test: Manual using application,
Camera CTS

Change-Id: Ia849f62333be40038a02768563b2f93e2ccf61ce
2018-06-26 10:17:34 +01: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
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
Steven Moreland
5c091dc944 Merge "frameworks/base: use proper nativehelper headers"
am: 826eafd958

Change-Id: I36f10ff4d963284a313f1cc5b368f82549a4adb2
2017-07-20 02:50:53 +00:00
Steven Moreland
2279b25342 frameworks/base: use proper nativehelper headers
libnativehelper exports headers under nativehelper. These were
available before incorrectly as global headers in order to give
access to jni.h.

Test: modules using frameworks/base find headers
Bug: 63762847
Change-Id: I0f9f231acdebe460f279135462f43d3e32eff64d
2017-07-19 10:06:40 -07:00
Eino-Ville Talvala
730a1168e6 Merge "ImageReader: Set BufferItem mGraphicBuffer to null when returning it" into oc-dev
am: 20c2116c1f

Change-Id: I82b234f1fa7ea6b231bacdd99543b68fa8be51c6
2017-06-15 21:10:51 +00:00
Eino-Ville Talvala
0af9435572 ImageReader: Set BufferItem mGraphicBuffer to null when returning it
The ImageReader JNI layer needs to maintain a list of BufferItems that
back the Java Image objects. At start, we allocate maxImages of these
in a list, and acquire and release them from this list as the
application acquires and releases Images.

However, on release, the contents of the BufferItem are not adjusted,
so it can retain a reference to a GraphicBuffer until the BufferItem
is reused.

Test: Camera CTS passes, memory usage drops after camera bursts
Bug: 62652080
Change-Id: I9aade5e32cbe0af0c15a3886e16ada1a70392b74
2017-06-15 06:34:31 -07:00
Colin Cross
58d87e8ab7 Convert libmedia_jni to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I1817c75ee45537ca0d5fc40a035f94a3dfeccc11
Merged-In: I1817c75ee45537ca0d5fc40a035f94a3dfeccc11
(cherry picked from commit 76de4f6b4d)
2017-05-16 22:05:39 -07:00
Colin Cross
eb27d2798a Convert libmedia_jni to Android.bp
See build/soong/README.md for more information.

Test: m -j checkbuild
Change-Id: I1817c75ee45537ca0d5fc40a035f94a3dfeccc11
Merged-In: I1817c75ee45537ca0d5fc40a035f94a3dfeccc11
(cherry picked from commit 76de4f6b4d)
2017-05-17 03:02:21 +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
Robert Shih
252f3b20bb JNI ImageReader: propagate exceptions when creating surface planes
Bug: 36082388
Test: Manual
Change-Id: I4a0ad08c9b3c53aa7ca702e1c6e2d486b788f3ff
2017-03-10 18:18:00 +00:00
Mathias Agopian
df7707cb4f fallout of cleaning-up libutils includes
Test: run & compile
Bug: n/a
Change-Id: I0f6a0be03f4b120b1b5876aae0c0618c025d9f2b
2017-03-03 12:37:54 -08: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
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
9cc3f881df ImageReader: override the flexible YUV compatible formats
For gralloc HAL v0.1 devices, if the producer buffer format is NV21 or YV12,
the returned flexFormat will be NV21 or YV12, which causes CTS failure
for ImageReader decoder test. This change overrides the NV21 or YV12 image
formats to HAL_PIXEL_FORMAT_YCbCr_420_888 for such case. With this, the
ImageReader will work for the devices with older gralloc HAL implementations
for HAL_PIXEL_FORMAT_YCbCr_420_888 compatible formats.

Bug: 27136665
Change-Id: Ib4722f1f8dc20ad6561088755e4ab9d2e68f1b47
2016-02-17 17:24:04 -08:00
Yin-Chia Yeh
b99a7f1359 ImageReader: fix missing pixel stride
Change-Id: Ie34cb51fee90e2d5624663fa23da4093fec435e2
2016-01-22 18:02:58 -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
Elliott Hughes
b57dd722f1 resolved conflicts for a884d81e to stage-aosp-master
Change-Id: Ice485967fa96f13786024b6939b826638e906ff0
2015-09-24 10:01:32 -07:00
Daniel Micay
76f6a86de2 constify JNINativeMethod function pointer tables
Change-Id: I4036c924958221cbc644724f8eb01c5de3cd7954
2015-09-22 17:10:35 -04:00
Chien-Yu Chen
be2e38e01c Merge "ImageReader: Fix format workarounds for legacy devices" into mnc-dev 2015-06-19 19:51:42 +00:00
Chien-Yu Chen
0782aab077 ImageReader: Fix format workarounds for legacy devices
Legacy shim overrides HAL_PIXEL_FORMAT_BLOB to
HAL_PIXEL_FORMAT_RGBA_8888. Make ImageReader aware of the
workaround when returning the format.

Remove the workaround in legacy shim that overrides YUV_420_888
to YV12 because allocating YUV_420_888 buffers with SW access
is supported on Flo.

Bug: 21707937
Change-Id: I84a8610c82ae986a0064873f611e4f257baf1774
2015-06-17 11:03:04 -07:00
Eino-Ville Talvala
ef9db7d81b Add more specific consumer names for common buffer queue endpoints.
Change-Id: I744bdcba6e60e5efd8865f725b09a9f791d76160
2015-06-09 14:15:15 -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
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
Yin-Chia Yeh
37ec99b19c Merge "Add RAW12 image format" 2015-03-31 18:27:23 +00: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
Yin-Chia Yeh
11d444f0b7 Add RAW12 image format
Change-Id: I1c528ecf62746aa96d6e132eaa874015d9d7c446
2015-03-20 17:40:01 -07: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
Eino-Ville Talvala
64cc1d0359 ImageReader: Switch to RAW16 from RAW_SENSOR
Change-Id: I6362a997b0895686f988896de0463d834354f238
2015-02-19 17:02:48 -08:00
Lajos Molnar
df876a110c Merge "ImageReader: add support for compatible flexYUV buffers" into lmp-mr1-dev automerge: 8514766
automerge: 2a8dc00

* commit '2a8dc00eedeb2b8a9fa3560d8afa4cfd7c17d395':
  ImageReader: add support for compatible flexYUV buffers
2015-01-29 08:02:53 +00:00
Lajos Molnar
4fb442617c ImageReader: add support for compatible flexYUV buffers
Bug: 17906609
Change-Id: Ia21aff632b9a92f4e391b3917a7774af46fd81a0
2015-01-28 17:34:23 -08:00
Ruben Brunk
28089cc39b Merge "Camera2: Allow rendering to arbitrary surface sizes in LEGACY mode." into lmp-mr1-dev automerge: 3ef5033
automerge: 6d98265

* commit '6d9826546d89e03cea170ebb5b3f292d5f4a027b':
  Camera2: Allow rendering to arbitrary surface sizes in LEGACY mode.
2014-12-09 23:20:39 +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
Andreas Gampe
cba06c2272 resolved conflicts for merge of 6957369d to lmp-mr1-dev-plus-aosp
Change-Id: Ie3bd0e24c69c0c7ae500b8eb4a1198650e993a19
2014-11-10 19:41:52 -08:00
Andreas Gampe
5a15d0d31b Frameworks/base: Wall Werror in media/jni
Turn on -Wall -Werror in media/jni. Fix warnings.

Change-Id: I9da54ad379d8172ee535b52ee2b0637a2533f4e3
2014-11-10 18:19:40 -08:00
Dan Stoza
2c34b5e813 Add a BufferItem parameter to onFrameAvailable
Passes the BufferItem for the queued buffer to the onFrameAvailable
callback so the consumer can track the BufferQueue's contents.

Bug: 18111837
Change-Id: If9d07229c9b586c668e5f99074e9b63b0468feb0
2014-11-04 11:36:33 -08:00
Ruben Brunk
0c79884076 camera2: Use valid dimensions for RGBA8888 gralloc buffers.
Bug: 17675571

- All of the mistakes were made.  Unmake them.

Change-Id: I23ff7a553347d4d9588c728219f4bf0604ba2e38
2014-09-30 13:54:20 -07:00
Ruben Brunk
31798f3318 camera2: Fix native ImageReader test segfaults.
Bug: 17675571

- Check for JPEG footer in correct location from ImageReader
  when using the RGBA override.
- Add additional error checks in produceFrame method.
- Avoid allocating extra space for jpeg buffers due to
  incorrect width calculations.

Change-Id: I926f37e8b3e5c4bad24c16dcee48d52adb1706dd
2014-09-26 18:00:21 -07: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
Zhijun He
4c4064fa66 ImageFormat: update raw10 spec to allow row padding
Change-Id: Id191b92037487f16538d111fc6171d3be9a02acf
2014-07-28 18:42:10 +00: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
Igor Murashkin
5096defdaa camera2: (legacy) Write the JPEG size as part of the blob transport
This fixes StillCaptureTest#testStillPreviewCombination

Change-Id: Ifbaae7828b2efcc1a768c77ce50718abd7f691d0
2014-06-24 18:29:18 +00:00
Ruben Brunk
91b9aabc9f camera2: Switch to using YV12 for ImageReader.
Bug: 15116722

- Also fixes incorrect frame number for single captures.

Change-Id: I8552124d18ad176e6724f089a1e3a3f49a5eeec4
2014-06-20 15:59:00 -07:00
Ruben Brunk
feb50af361 camera2: Add HAL1 compatibility shim skeleton.
This adds basic support for running the Camera2 API on a device running
a camera HAL version lower than CAMERA_MODULE_API_VERSION_2_0.

This CL includes support for:
- N-way preview output streams
- N-way jpeg output streams
- CameraDevice emulation at the binder interface
- Basic camera metadata querying in the CameraManager

Bug: 15117269
Bug: 15116722

Change-Id: I8322955034c91f34bb348d4b28c2b774dbef38f6
2014-05-21 16:37:59 -07:00
Zhijun He
a5e1528f80 ImageReader: remove RAW_SENSOR format translation
Really not needed to have this, as both native and managed values are matched.

Change-Id: I175cbafbf88a80781a478c7aa87471fb977625b6
2014-04-24 14:08:51 -07:00
Zhijun He
977ad8d26e ImageReader: Fix raw buffer size calculation issue
Stride should be used to calculate the size rather than width.

Change-Id: I01051fdf4dd2978d56b9998d8bcd542c50458f56
2014-04-08 16:59:29 -07:00
Dan Stoza
5b3c7c1e57 Remove deprecated BufferQueue constructor
Bug: 13415624
Change-Id: Ic661d515a94fd5fad39f2d07f0cdf25337fae67c
2014-03-12 16:44:45 -07:00
lina.x.pi
334778981d Release locked buffer when it fails to acquire graphics buffer
The JNI buffer in ImageReader_imageSetup is not released when
it fails to acquire graphics buffer. After all JNI buffers are
exhausted, ACQUIRE_MAX_IMAGES will be returned and leads to
error. The JNI buffer should be released when it fails to acquire
graphics buffer.

Change-Id: I3319a58ac44e36c8593b404672a685c4b589a735
2014-01-28 06:08:52 +00:00