Camera/tuner: Allow client to override lens shading table.
authorDave Stevenson <dave.stevenson@raspberrypi.org>
Tue, 16 May 2017 12:54:22 +0000 (13:54 +0100)
committerpopcornmix <popcornmix@gmail.com>
Tue, 16 May 2017 12:54:22 +0000 (13:54 +0100)
Provide a mechanism to push an amended lens shading table
for when the user has changed the optics significantly.
It disables all ALCS and other manipulation of the table.

Provided table copies part of the OMAP3 style, taking a 64x64
grid of values. Each value is 3p5 fixed point representation,
same OMAP mode 6
0x6: Coded as 3-bit integer, 5-bit fraction Range from 0
to 7+31/32

interface/mmal/mmal_parameters_camera.h
interface/vmcs_host/khronos/IL/OMX_Broadcom.h
interface/vmcs_host/khronos/IL/OMX_Index.h

index f9b44e30d281a7d39457e34bd50efd9d72c0429d..ddd494cebbeb3d3bc223265304432b8e73c90576 100644 (file)
@@ -140,6 +140,7 @@ enum {
    /* 0x50 */
    MMAL_PARAMETER_JPEG_RESTART_INTERVAL,     /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
    MMAL_PARAMETER_CAMERA_ISP_BLOCK_OVERRIDE, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
+   MMAL_PARAMETER_LENS_SHADING_OVERRIDE,     /**< Takes a @ref MMAL_PARAMETER_LENS_SHADING_T */
 };
 
 /** Thumbnail configuration parameter type */
@@ -893,4 +894,17 @@ typedef struct MMAL_PARAMETER_CAMERA_RX_TIMING_T
    uint32_t cpi_timing2;
 } MMAL_PARAMETER_CAMERA_RX_TIMING_T;
 
+typedef struct MMAL_PARAMETER_LENS_SHADING_T
+{
+   MMAL_PARAMETER_HEADER_T hdr;
+
+   MMAL_BOOL_T enabled;
+   uint32_t grid_cell_size;
+   uint32_t grid_width;
+   uint32_t grid_stride;
+   uint32_t grid_height;
+   uint32_t mem_handle_table;
+   uint32_t ref_transform;
+} MMAL_PARAMETER_LENS_SHADING_T;
+
 #endif  /* MMAL_PARAMETERS_CAMERA_H */
index 5860ad7f1782f199a2ed14d2ece221fbee918e1d..a6b200a3fe3ba4cd16870b0b4006c997706ebb05 100644 (file)
@@ -2596,6 +2596,19 @@ The IL standard does not support a way to specify the Bayer order of Bayer image
 This control adds that missing functionality.
 */
 
+typedef struct OMX_PARAM_LENSSHADINGOVERRIDETYPE {
+   OMX_U32 nSize;
+   OMX_VERSIONTYPE nVersion;
+
+   OMX_BOOL bEnabled;                     /**< Enable the override grid */
+   OMX_U32 nGridCellSize;                 /**< size of each grid element. Assumes square grid */
+   OMX_U32 nWidth;                        /**< grid width */
+   OMX_U32 nStride;                       /**< grid stride (allows for padding) */
+   OMX_U32 nHeight;                       /**< grid height */
+   OMX_U32 nMemHandleTable;               /**< Handle for grid */
+   OMX_U32 nRefTransform;                 /**< Reference transform taken from raw header */
+} OMX_PARAM_LENSSHADINGOVERRIDETYPE;
+
 /* OMX_IndexConfigBrcmPowerMonitor: Deprecated.*/
 /*
 Deprecated. Do not use.
index 88918b34a8844d57d3ac04505c9197946a756f36..371f90309e7ddc19286110602a90f746e5f3524b 100644 (file)
@@ -530,6 +530,7 @@ typedef enum OMX_INDEXTYPE {
     OMX_IndexParamBrcmSupportsSlices,                         /**< reference: OMX_CONFIG_PORTBOOLEANTYPE */
     OMX_IndexParamBrcmIspBlockOverride,                       /**< reference: OMX_PARAM_U32TYPE */
     OMX_IndexParamBrcmSupportsUnalignedSliceheight,           /**< reference: OMX_CONFIG_PORTBOOLEANTYPE */
+    OMX_IndexParamBrcmLensShadingOverride,                    /**< reference: OMX_PARAM_LENSSHADINGOVERRIDETYPE */
     OMX_IndexMax = 0x7FFFFFFF
 } OMX_INDEXTYPE;