Camera2: Change JPEG transport header
The way buffers are passed to JPEG encoders makes it difficult to
account for a header offset. This explains moving the header to
the end, and clarifies the required header packing.
Bug: 7108816
Change-Id: I569cd0cde37bd6fd7110fbc95d7fced9a55cff9c
diff --git a/include/hardware/camera2.h b/include/hardware/camera2.h
index 8587fc5..5d45325 100644
--- a/include/hardware/camera2.h
+++ b/include/hardware/camera2.h
@@ -122,11 +122,16 @@
* the HAL needs to include the final size of the compressed image using this
* structure inside the output stream buffer. The JPEG blob ID field must be set
* to CAMERA2_JPEG_BLOB_ID.
+ *
+ * Transport header should be at the end of the JPEG output stream buffer. That
+ * means the jpeg_blob_id must start at byte[android.jpeg.maxSize -
+ * sizeof(camera2_jpeg_blob)]. Any HAL using this transport header must
+ * account for it in android.jpeg.maxSize. The JPEG data itself starts at
+ * byte[0] and should be jpeg_size bytes long.
*/
typedef struct camera2_jpeg_blob {
uint16_t jpeg_blob_id;
uint32_t jpeg_size;
- uint8_t jpeg_data[0];
};
enum {