public static MMAL_RECT_T GetZoom(this MMALCameraComponent camera)
        {
            MMAL_PARAMETER_INPUT_CROP_T crop = new MMAL_PARAMETER_INPUT_CROP_T(new MMAL_PARAMETER_HEADER_T(MMAL_PARAMETER_INPUT_CROP, Marshal.SizeOf <MMAL_PARAMETER_INPUT_CROP_T>()), new MMAL_RECT_T());

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

            return(crop.Rect);
        }
        internal static void SetZoom(this MMALCameraComponent camera, Zoom rect)
        {
            if (rect.X > 1.0 || rect.Y > 1.0 || rect.Height > 1.0 || rect.Width > 1.0)
            {
                throw new PiCameraError("Invalid zoom settings. Value mustn't be greater than 1.0");
            }

            MMAL_PARAMETER_INPUT_CROP_T crop = new MMAL_PARAMETER_INPUT_CROP_T(new MMAL_PARAMETER_HEADER_T(MMAL_PARAMETER_INPUT_CROP, Marshal.SizeOf <MMAL_PARAMETER_INPUT_CROP_T>()),
                                                                               new MMAL_RECT_T(Convert.ToInt32(65536 * rect.X), Convert.ToInt32(65536 * rect.Y), Convert.ToInt32(65536 * rect.Width), Convert.ToInt32(65536 * rect.Height)));

            MMALCheck(MMALPort.mmal_port_parameter_set(camera.Control.Ptr, &crop.hdr), "Unable to set zoom");
        }