summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2012-08-30 23:55:53 -0700
committerEino-Ville Talvala <etalvala@google.com>2012-09-01 18:28:38 -0700
commit70d87bf07ecd686a2860980fb8e7d18fb2312dbd (patch)
tree5150ae0946cac97a9a2f2d63481a4b03afa047f0
parent673a810469947edb32fde9326c44eb326b5d2b1a (diff)
downloadhardware_libhardware-70d87bf07ecd686a2860980fb8e7d18fb2312dbd.zip
hardware_libhardware-70d87bf07ecd686a2860980fb8e7d18fb2312dbd.tar.gz
hardware_libhardware-70d87bf07ecd686a2860980fb8e7d18fb2312dbd.tar.bz2
Add reprocess method, redefine gralloc ZSL usage flag
- Camera2: Add allocate_reprocess_stream_from_stream for ZSL usecases - Gralloc: Make GRALLOC_USAGE_HW_CAMERA_ZSL be simply GRALLOC_USAGE_HW_CAMERA_READ | GRALLOC_USAGE_HW_CAMERA_WRITE - Gralloc: Add GRALLOC_USAGE_HW_CAMERA_MASK Change-Id: Icd8ac1f786e3adb6a422f27f03a5a4cb04a815cc
-rw-r--r--include/hardware/camera2.h42
-rw-r--r--include/hardware/gralloc.h4
2 files changed, 45 insertions, 1 deletions
diff --git a/include/hardware/camera2.h b/include/hardware/camera2.h
index 8209985..8b789ec 100644
--- a/include/hardware/camera2.h
+++ b/include/hardware/camera2.h
@@ -667,6 +667,48 @@ typedef struct camera2_device_ops {
uint32_t *max_buffers);
/**
+ * allocate_reprocess_stream_from_stream:
+ *
+ * Allocate a new input stream for use, which will use the buffers allocated
+ * for an existing output stream. That is, after the HAL enqueues a buffer
+ * onto the output stream, it may see that same buffer handed to it from
+ * this input reprocessing stream. After the HAL releases the buffer back to
+ * the reprocessing stream, it will be returned to the output queue for
+ * reuse.
+ *
+ * Error conditions:
+ *
+ * - Using an output stream of unsuitable size/format for the basis of the
+ * reprocessing stream.
+ *
+ * - Attempting to allocatee too many reprocessing streams at once.
+ *
+ * Input parameters:
+ *
+ * - output_stream_id: The ID of an existing output stream which has
+ * a size and format suitable for reprocessing.
+ *
+ * - reprocess_stream_ops: A structure of function pointers for acquiring
+ * and releasing buffers for this stream. The underlying stream will use
+ * the same graphics buffer handles as the output stream uses.
+ *
+ * Output parameters:
+ *
+ * - stream_id: An unsigned integer identifying this stream. This value is
+ * used in incoming requests to identify the stream, and in releasing the
+ * stream. These ids are numbered separately from the input stream ids.
+ *
+ * The HAL client must always release the reprocessing stream before it
+ * releases the output stream it is based on.
+ *
+ */
+ int (*allocate_reprocess_stream_from_stream)(const struct camera2_device *,
+ uint32_t output_stream_id,
+ const camera2_stream_in_ops_t *reprocess_stream_ops,
+ // outputs
+ uint32_t *stream_id);
+
+ /**
* Release a reprocessing stream. Returns an error if called when
* get_in_progress_count is non-zero, or if the stream id is not
* valid.
diff --git a/include/hardware/gralloc.h b/include/hardware/gralloc.h
index 4fdd2e6..7c819f0 100644
--- a/include/hardware/gralloc.h
+++ b/include/hardware/gralloc.h
@@ -81,7 +81,9 @@ enum {
/* buffer will be read by the HW camera pipeline */
GRALLOC_USAGE_HW_CAMERA_READ = 0x00040000,
/* buffer will be used as part of zero-shutter-lag queue */
- GRALLOC_USAGE_HW_CAMERA_ZSL = 0x00080000,
+ GRALLOC_USAGE_HW_CAMERA_ZSL = 0x00060000,
+ /* mask for the camera access values */
+ GRALLOC_USAGE_HW_CAMERA_MASK = 0x00060000,
/* mask for the software usage bit-mask */
GRALLOC_USAGE_HW_MASK = 0x00071F00,