From 7f8dd0ad2d3d40b57c8359971a351fd194668613 Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Tue, 4 Sep 2012 14:21:07 -0700 Subject: Revert "Revert "Add reprocess method, redefine gralloc ZSL usage flag"" Missing project ready to go. This reverts commit 536148699beffcc4e6a2ced7c41fbbc3bcfa9886 Change-Id: I101343b443be6febe160685de6d72ddbf7e6aea5 --- include/hardware/camera2.h | 42 ++++++++++++++++++++++++++++++++++++++++++ include/hardware/gralloc.h | 4 +++- 2 files changed, 45 insertions(+), 1 deletion(-) 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, -- cgit v1.1