IL ISP: Add option for adjusting the input CCM
authorDave Stevenson <dave.stevenson@raspberrypi.org>
Fri, 21 Jul 2017 23:34:34 +0000 (00:34 +0100)
committerpopcornmix <popcornmix@gmail.com>
Fri, 21 Jul 2017 23:36:02 +0000 (00:36 +0100)
Two new parameters:
CcmShift shifts the CCM N bits left or right
CustomCcm overrides the defined CCM totally. It is divided by 8
so that the magnitude of samples remains as expected.

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

index 6843a6263f1d2c272e801bb9d9b0ae1aa321c848..9d8b7aec7959905b495d1d841e8fdc9bd9622df2 100644 (file)
@@ -145,6 +145,8 @@ enum {
    MMAL_PARAMETER_RESIZE_PARAMS,             /**< Takes a @ref MMAL_PARAMETER_RESIZE_T */
    MMAL_PARAMETER_CROP,                      /**< Takes a @ref MMAL_PARAMETER_CROP_T */
    MMAL_PARAMETER_OUTPUT_SHIFT,              /**< Takes a @ref MMAL_PARAMETER_INT32_T */
+   MMAL_PARAMETER_CCM_SHIFT,                 /**< Takes a @ref MMAL_PARAMETER_INT32_T */
+   MMAL_PARAMETER_CUSTOM_CCM,                /**< Takes a @ref MMAL_PARAMETER_CUSTOM_CCM_T */
 };
 
 /** Thumbnail configuration parameter type */
@@ -947,4 +949,17 @@ typedef struct MMAL_PARAMETER_CROP_T {
 
    MMAL_RECT_T rect;
 } MMAL_PARAMETER_CROP_T;
+
+typedef struct MMAL_PARAMETER_CCM_T {
+   MMAL_RATIONAL_T ccm[3][3];
+   int32_t offsets[3];
+} MMAL_PARAMETER_CCM_T;
+
+typedef struct MMAL_PARAMETER_CUSTOM_CCM_T {
+   MMAL_PARAMETER_HEADER_T hdr;
+
+   MMAL_BOOL_T enable;           /**< Enable the custom CCM. */
+   MMAL_PARAMETER_CCM_T ccm;     /**< CCM to be used. */
+} MMAL_PARAMETER_CUSTOM_CCM_T;
+
 #endif  /* MMAL_PARAMETERS_CAMERA_H */
index a6b200a3fe3ba4cd16870b0b4006c997706ebb05..970d2a4e7b4b00a17390f0298d71c572d81f6be4 100644 (file)
@@ -2636,5 +2636,20 @@ some components accepting any value >= nFrameHeight. Those ports/components will
 respond to OMX_GetParameter on this index with no error and bEnabled set to OMX_TRUE.
 */
 
+typedef struct OMX_CCMTYPE {
+   OMX_S32 sCcm[3][3];
+   OMX_S32 soffsets[3];
+} OMX_PARAM_CCMTYPE;
+
+typedef struct OMX_PARAM_CUSTOMCCMTYPE {
+   OMX_U32 nSize;
+   OMX_VERSIONTYPE nVersion;
+   OMX_U32 nPortIndex;
+
+   OMX_BOOL bEnabled;          /**< Enable the custom CCM. */
+   OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
+   OMX_S32 nColorOffset[3];    /**<  */
+} OMX_PARAM_CUSTOMCCMTYPE;
+
 #endif
 /* File EOF */
index a6692d2777f4b9ea5a7bff97b528a85707b1d70f..0127887bac3bccc5078bd77b5e6028deec1a629b 100644 (file)
@@ -533,6 +533,8 @@ typedef enum OMX_INDEXTYPE {
     OMX_IndexParamBrcmLensShadingOverride,                    /**< reference: OMX_PARAM_LENSSHADINGOVERRIDETYPE */
     OMX_IndexParamBrcmBlackLevel,                             /**< reference: OMX_PARAM_U32TYPE */
     OMX_IndexParamOutputShift,                                /**< reference: OMX_PARAM_S32TYPE */
+    OMX_IndexParamCcmShift,                                   /**< reference: OMX_PARAM_S32TYPE */
+    OMX_IndexParamCustomCcm,                                  /**< reference: OMX_PARAM_CUSTOMCCMTYPE */
     OMX_IndexMax = 0x7FFFFFFF
 } OMX_INDEXTYPE;