public static MMAL_PARAM_AWBMODE_T GetAwbMode(this MMALCameraComponent camera)
        {
            MMAL_PARAMETER_AWBMODE_T awbMode = new MMAL_PARAMETER_AWBMODE_T(new MMAL_PARAMETER_HEADER_T(MMAL_PARAMETER_AWB_MODE, Marshal.SizeOf <MMAL_PARAMETER_AWBMODE_T>()),
                                                                            new MMAL_PARAM_AWBMODE_T());

            MMALCheck(MMALPort.mmal_port_parameter_get(camera.Control.Ptr, &awbMode.hdr), "Unable to get awb mode");

            return(awbMode.Value);
        }
        public static MMAL_PARAM_EXPOSUREMETERINGMODE_T GetExposureMeteringMode(this MMALCameraComponent camera)
        {
            MMAL_PARAMETER_EXPOSUREMETERINGMODE_T expMode = new MMAL_PARAMETER_EXPOSUREMETERINGMODE_T(new MMAL_PARAMETER_HEADER_T(MMAL_PARAMETER_EXP_METERING_MODE, Marshal.SizeOf <MMAL_PARAMETER_EXPOSUREMETERINGMODE_T>()),
                                                                                                      new MMAL_PARAM_EXPOSUREMETERINGMODE_T());

            MMALCheck(MMALPort.mmal_port_parameter_get(camera.Control.Ptr, &expMode.hdr), "Unable to get exposure metering mode");

            return(expMode.Value);
        }
        public static int GetFocusPosition(this MMALCameraComponent camera)
        {
            MMAL_PARAMETER_CAMERA_SETTINGS_T settings = new MMAL_PARAMETER_CAMERA_SETTINGS_T(new MMAL_PARAMETER_HEADER_T(MMAL_PARAMETER_CAMERA_SETTINGS, Marshal.SizeOf <MMAL_PARAMETER_CAMERA_SETTINGS_T>()),
                                                                                             0, new MMAL_RATIONAL_T(0, 0), new MMAL_RATIONAL_T(0, 0),
                                                                                             new MMAL_RATIONAL_T(0, 0), new MMAL_RATIONAL_T(0, 0), 0);

            MMALCheck(MMALPort.mmal_port_parameter_get(camera.Control.Ptr, &settings.hdr), "Unable to get camera settings");

            return(settings.FocusPosition);
        }