"Fossies" - the Fresh Open Source Software Archive

Member "motion-Release-4.3.0/src/raspicam/RaspiCamControl.h" (14 Jan 2020, 11292 Bytes) of package /linux/misc/motion-Release-4.3.0.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "RaspiCamControl.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2 Copyright (c) 2013, Broadcom Europe Ltd
    3 Copyright (c) 2013, James Hughes
    4 All rights reserved.
    5 
    6 Redistribution and use in source and binary forms, with or without
    7 modification, are permitted provided that the following conditions are met:
    8     * Redistributions of source code must retain the above copyright
    9       notice, this list of conditions and the following disclaimer.
   10     * Redistributions in binary form must reproduce the above copyright
   11       notice, this list of conditions and the following disclaimer in the
   12       documentation and/or other materials provided with the distribution.
   13     * Neither the name of the copyright holder nor the
   14       names of its contributors may be used to endorse or promote products
   15       derived from this software without specific prior written permission.
   16 
   17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
   18 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   20 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
   21 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   24 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   27 */
   28 
   29 #ifndef RASPICAMCONTROL_H_
   30 #define RASPICAMCONTROL_H_
   31 
   32 /* Various parameters
   33  *
   34  * Exposure Mode
   35  *          MMAL_PARAM_EXPOSUREMODE_OFF,
   36             MMAL_PARAM_EXPOSUREMODE_AUTO,
   37             MMAL_PARAM_EXPOSUREMODE_NIGHT,
   38             MMAL_PARAM_EXPOSUREMODE_NIGHTPREVIEW,
   39             MMAL_PARAM_EXPOSUREMODE_BACKLIGHT,
   40             MMAL_PARAM_EXPOSUREMODE_SPOTLIGHT,
   41             MMAL_PARAM_EXPOSUREMODE_SPORTS,
   42             MMAL_PARAM_EXPOSUREMODE_SNOW,
   43             MMAL_PARAM_EXPOSUREMODE_BEACH,
   44             MMAL_PARAM_EXPOSUREMODE_VERYLONG,
   45             MMAL_PARAM_EXPOSUREMODE_FIXEDFPS,
   46             MMAL_PARAM_EXPOSUREMODE_ANTISHAKE,
   47             MMAL_PARAM_EXPOSUREMODE_FIREWORKS,
   48  *
   49  * Flicker Avoid Mode
   50  *          MMAL_PARAM_FLICKERAVOID_OFF,
   51             MMAL_PARAM_FLICKERAVOID_AUTO,
   52             MMAL_PARAM_FLICKERAVOID_50HZ,
   53             MMAL_PARAM_FLICKERAVOID_60HZ,
   54  *
   55  * AWB Mode
   56  *          MMAL_PARAM_AWBMODE_OFF,
   57             MMAL_PARAM_AWBMODE_AUTO,
   58             MMAL_PARAM_AWBMODE_SUNLIGHT,
   59             MMAL_PARAM_AWBMODE_CLOUDY,
   60             MMAL_PARAM_AWBMODE_SHADE,
   61             MMAL_PARAM_AWBMODE_TUNGSTEN,
   62             MMAL_PARAM_AWBMODE_FLUORESCENT,
   63             MMAL_PARAM_AWBMODE_INCANDESCENT,
   64             MMAL_PARAM_AWBMODE_FLASH,
   65             MMAL_PARAM_AWBMODE_HORIZON,
   66             MMAL_PARAM_AWBMODE_GREYWORLD
   67  *
   68  * Image FX
   69             MMAL_PARAM_IMAGEFX_NONE,
   70             MMAL_PARAM_IMAGEFX_NEGATIVE,
   71             MMAL_PARAM_IMAGEFX_SOLARIZE,
   72             MMAL_PARAM_IMAGEFX_POSTERIZE,
   73             MMAL_PARAM_IMAGEFX_WHITEBOARD,
   74             MMAL_PARAM_IMAGEFX_BLACKBOARD,
   75             MMAL_PARAM_IMAGEFX_SKETCH,
   76             MMAL_PARAM_IMAGEFX_DENOISE,
   77             MMAL_PARAM_IMAGEFX_EMBOSS,
   78             MMAL_PARAM_IMAGEFX_OILPAINT,
   79             MMAL_PARAM_IMAGEFX_HATCH,
   80             MMAL_PARAM_IMAGEFX_GPEN,
   81             MMAL_PARAM_IMAGEFX_PASTEL,
   82             MMAL_PARAM_IMAGEFX_WATERCOLOUR,
   83             MMAL_PARAM_IMAGEFX_FILM,
   84             MMAL_PARAM_IMAGEFX_BLUR,
   85             MMAL_PARAM_IMAGEFX_SATURATION,
   86             MMAL_PARAM_IMAGEFX_COLOURSWAP,
   87             MMAL_PARAM_IMAGEFX_WASHEDOUT,
   88             MMAL_PARAM_IMAGEFX_POSTERISE,
   89             MMAL_PARAM_IMAGEFX_COLOURPOINT,
   90             MMAL_PARAM_IMAGEFX_COLOURBALANCE,
   91             MMAL_PARAM_IMAGEFX_CARTOON,
   92 
   93  */
   94 
   95 /// Annotate bitmask options
   96 /// Supplied by user on command line
   97 #define ANNOTATE_USER_TEXT          1
   98 /// Supplied by app using this module
   99 #define ANNOTATE_APP_TEXT           2
  100 /// Insert current date
  101 #define ANNOTATE_DATE_TEXT          4
  102 // Insert current time
  103 #define ANNOTATE_TIME_TEXT          8
  104 
  105 #define ANNOTATE_SHUTTER_SETTINGS   16
  106 #define ANNOTATE_CAF_SETTINGS       32
  107 #define ANNOTATE_GAIN_SETTINGS      64
  108 #define ANNOTATE_LENS_SETTINGS      128
  109 #define ANNOTATE_MOTION_SETTINGS    256
  110 #define ANNOTATE_FRAME_NUMBER       512
  111 #define ANNOTATE_BLACK_BACKGROUND   1024
  112 
  113 
  114 // There isn't actually a MMAL structure for the following, so make one
  115 typedef struct mmal_param_colourfx_s
  116 {
  117    int enable;       /// Turn colourFX on or off
  118    int u,v;          /// U and V to use
  119 } MMAL_PARAM_COLOURFX_T;
  120 
  121 typedef struct mmal_param_thumbnail_config_s
  122 {
  123    int enable;
  124    int width,height;
  125    int quality;
  126 } MMAL_PARAM_THUMBNAIL_CONFIG_T;
  127 
  128 typedef struct param_float_rect_s
  129 {
  130    double x;
  131    double y;
  132    double w;
  133    double h;
  134 } PARAM_FLOAT_RECT_T;
  135 
  136 /// struct contain camera settings
  137 typedef struct raspicam_camera_parameters_s
  138 {
  139    int sharpness;             /// -100 to 100
  140    int contrast;              /// -100 to 100
  141    int brightness;            ///  0 to 100
  142    int saturation;            ///  -100 to 100
  143    int ISO;                   ///  TODO : what range?
  144    int videoStabilisation;    /// 0 or 1 (false or true)
  145    int exposureCompensation;  /// -10 to +10 ?
  146    MMAL_PARAM_EXPOSUREMODE_T exposureMode;
  147    MMAL_PARAM_EXPOSUREMETERINGMODE_T exposureMeterMode;
  148    MMAL_PARAM_AWBMODE_T awbMode;
  149    MMAL_PARAM_IMAGEFX_T imageEffect;
  150    MMAL_PARAMETER_IMAGEFX_PARAMETERS_T imageEffectsParameters;
  151    MMAL_PARAM_COLOURFX_T colourEffects;
  152    MMAL_PARAM_FLICKERAVOID_T flickerAvoidMode;
  153    int rotation;              /// 0-359
  154    int hflip;                 /// 0 or 1
  155    int vflip;                 /// 0 or 1
  156    PARAM_FLOAT_RECT_T  roi;   /// region of interest to use on the sensor. Normalised [0,1] values in the rect
  157    int shutter_speed;         /// 0 = auto, otherwise the shutter speed in ms
  158    float awb_gains_r;         /// AWB red gain
  159    float awb_gains_b;         /// AWB blue gain
  160    MMAL_PARAMETER_DRC_STRENGTH_T drc_level;  // Strength of Dynamic Range compression to apply
  161    MMAL_BOOL_T stats_pass;    /// Stills capture statistics pass on/off
  162    int enable_annotate;       /// Flag to enable the annotate, 0 = disabled, otherwise a bitmask of what needs to be displayed
  163    char annotate_string[MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V2]; /// String to use for annotate - overrides certain bitmask settings
  164    int annotate_text_size;    // Text size for annotation
  165    int annotate_text_colour;  // Text colour for annotation
  166    int annotate_bg_colour;    // Background colour for annotation
  167    unsigned int annotate_justify;
  168    unsigned int annotate_x;
  169    unsigned int annotate_y;
  170 
  171    MMAL_PARAMETER_STEREOSCOPIC_MODE_T stereo_mode;
  172    float analog_gain;         // Analog gain
  173    float digital_gain;        // Digital gain
  174 
  175    int settings;
  176 } RASPICAM_CAMERA_PARAMETERS;
  177 
  178 typedef enum
  179 {
  180    ZOOM_IN, ZOOM_OUT, ZOOM_RESET
  181 } ZOOM_COMMAND_T;
  182 
  183 
  184 void raspicamcontrol_check_configuration(int min_gpu_mem);
  185 
  186 int raspicamcontrol_parse_cmdline(RASPICAM_CAMERA_PARAMETERS *params, const char *arg1, const char *arg2);
  187 void raspicamcontrol_display_help();
  188 int raspicamcontrol_cycle_test(MMAL_COMPONENT_T *camera);
  189 
  190 int raspicamcontrol_set_all_parameters(MMAL_COMPONENT_T *camera, const RASPICAM_CAMERA_PARAMETERS *params);
  191 int raspicamcontrol_get_all_parameters(MMAL_COMPONENT_T *camera, RASPICAM_CAMERA_PARAMETERS *params);
  192 void raspicamcontrol_dump_parameters(const RASPICAM_CAMERA_PARAMETERS *params);
  193 
  194 void raspicamcontrol_set_defaults(RASPICAM_CAMERA_PARAMETERS *params);
  195 
  196 void raspicamcontrol_check_configuration(int min_gpu_mem);
  197 
  198 // Individual setting functions
  199 int raspicamcontrol_set_saturation(MMAL_COMPONENT_T *camera, int saturation);
  200 int raspicamcontrol_set_sharpness(MMAL_COMPONENT_T *camera, int sharpness);
  201 int raspicamcontrol_set_contrast(MMAL_COMPONENT_T *camera, int contrast);
  202 int raspicamcontrol_set_brightness(MMAL_COMPONENT_T *camera, int brightness);
  203 int raspicamcontrol_set_ISO(MMAL_COMPONENT_T *camera, int ISO);
  204 int raspicamcontrol_set_metering_mode(MMAL_COMPONENT_T *camera, MMAL_PARAM_EXPOSUREMETERINGMODE_T mode);
  205 int raspicamcontrol_set_video_stabilisation(MMAL_COMPONENT_T *camera, int vstabilisation);
  206 int raspicamcontrol_set_exposure_compensation(MMAL_COMPONENT_T *camera, int exp_comp);
  207 int raspicamcontrol_set_exposure_mode(MMAL_COMPONENT_T *camera, MMAL_PARAM_EXPOSUREMODE_T mode);
  208 int raspicamcontrol_set_flicker_avoid_mode(MMAL_COMPONENT_T *camera, MMAL_PARAM_FLICKERAVOID_T mode);
  209 int raspicamcontrol_set_awb_mode(MMAL_COMPONENT_T *camera, MMAL_PARAM_AWBMODE_T awb_mode);
  210 int raspicamcontrol_set_awb_gains(MMAL_COMPONENT_T *camera, float r_gain, float b_gain);
  211 int raspicamcontrol_set_imageFX(MMAL_COMPONENT_T *camera, MMAL_PARAM_IMAGEFX_T imageFX);
  212 int raspicamcontrol_set_colourFX(MMAL_COMPONENT_T *camera, const MMAL_PARAM_COLOURFX_T *colourFX);
  213 int raspicamcontrol_set_rotation(MMAL_COMPONENT_T *camera, int rotation);
  214 int raspicamcontrol_set_flips(MMAL_COMPONENT_T *camera, int hflip, int vflip);
  215 int raspicamcontrol_set_ROI(MMAL_COMPONENT_T *camera, PARAM_FLOAT_RECT_T rect);
  216 int raspicamcontrol_zoom_in_zoom_out(MMAL_COMPONENT_T *camera, ZOOM_COMMAND_T zoom_command, PARAM_FLOAT_RECT_T *roi);
  217 int raspicamcontrol_set_shutter_speed(MMAL_COMPONENT_T *camera, int speed_ms);
  218 int raspicamcontrol_set_DRC(MMAL_COMPONENT_T *camera, MMAL_PARAMETER_DRC_STRENGTH_T strength);
  219 int raspicamcontrol_set_stats_pass(MMAL_COMPONENT_T *camera, int stats_pass);
  220 int raspicamcontrol_set_annotate(MMAL_COMPONENT_T *camera, const int bitmask, const char *string,
  221                                  const int text_size, const int text_colour, const int bg_colour,
  222                                  const unsigned int justify, const unsigned int x, const unsigned int y);
  223 int raspicamcontrol_set_stereo_mode(MMAL_PORT_T *port, MMAL_PARAMETER_STEREOSCOPIC_MODE_T *stereo_mode);
  224 int raspicamcontrol_set_gains(MMAL_COMPONENT_T *camera, float analog, float digital);
  225 
  226 //Individual getting functions
  227 int raspicamcontrol_get_saturation(MMAL_COMPONENT_T *camera);
  228 int raspicamcontrol_get_sharpness(MMAL_COMPONENT_T *camera);
  229 int raspicamcontrol_get_contrast(MMAL_COMPONENT_T *camera);
  230 int raspicamcontrol_get_brightness(MMAL_COMPONENT_T *camera);
  231 int raspicamcontrol_get_ISO(MMAL_COMPONENT_T *camera);
  232 MMAL_PARAM_EXPOSUREMETERINGMODE_T raspicamcontrol_get_metering_mode(MMAL_COMPONENT_T *camera);
  233 int raspicamcontrol_get_video_stabilisation(MMAL_COMPONENT_T *camera);
  234 int raspicamcontrol_get_exposure_compensation(MMAL_COMPONENT_T *camera);
  235 MMAL_PARAM_THUMBNAIL_CONFIG_T raspicamcontrol_get_thumbnail_parameters(MMAL_COMPONENT_T *camera);
  236 MMAL_PARAM_EXPOSUREMODE_T raspicamcontrol_get_exposure_mode(MMAL_COMPONENT_T *camera);
  237 MMAL_PARAM_FLICKERAVOID_T raspicamcontrol_get_flicker_avoid_mode(MMAL_COMPONENT_T *camera);
  238 MMAL_PARAM_AWBMODE_T raspicamcontrol_get_awb_mode(MMAL_COMPONENT_T *camera);
  239 MMAL_PARAM_IMAGEFX_T raspicamcontrol_get_imageFX(MMAL_COMPONENT_T *camera);
  240 MMAL_PARAM_COLOURFX_T raspicamcontrol_get_colourFX(MMAL_COMPONENT_T *camera);
  241 
  242 /** Default camera callback function
  243   */
  244 void default_camera_control_callback(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer);
  245 
  246 
  247 
  248 #endif /* RASPICAMCONTROL_H_ */