linux/drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Broadcom BM2835 V4L2 driver
   4 *
   5 * Copyright © 2013 Raspberry Pi (Trading) Ltd.
   6 *
   7 * Authors: Vincent Sanders <vincent.sanders@collabora.co.uk>
   8 *          Dave Stevenson <dsteve@broadcom.com>
   9 *          Simon Mellor <simellor@broadcom.com>
  10 *          Luke Diamand <luked@broadcom.com>
  11 */
  12
  13/* common parameters */
  14
  15/** @name Parameter groups
  16 * Parameters are divided into groups, and then allocated sequentially within
  17 * a group using an enum.
  18 * @{
  19 */
  20
  21#ifndef __MMAL_PARAMETERS_H
  22#define __MMAL_PARAMETERS_H
  23
  24/** Common parameter ID group, used with many types of component. */
  25#define MMAL_PARAMETER_GROUP_COMMON            (0<<16)
  26/** Camera-specific parameter ID group. */
  27#define MMAL_PARAMETER_GROUP_CAMERA            (1<<16)
  28/** Video-specific parameter ID group. */
  29#define MMAL_PARAMETER_GROUP_VIDEO             (2<<16)
  30/** Audio-specific parameter ID group. */
  31#define MMAL_PARAMETER_GROUP_AUDIO             (3<<16)
  32/** Clock-specific parameter ID group. */
  33#define MMAL_PARAMETER_GROUP_CLOCK             (4<<16)
  34/** Miracast-specific parameter ID group. */
  35#define MMAL_PARAMETER_GROUP_MIRACAST       (5<<16)
  36
  37/* Common parameters */
  38enum mmal_parameter_common_type {
  39        MMAL_PARAMETER_UNUSED  /**< Never a valid parameter ID */
  40                = MMAL_PARAMETER_GROUP_COMMON,
  41        MMAL_PARAMETER_SUPPORTED_ENCODINGS, /**< MMAL_PARAMETER_ENCODING_T */
  42        MMAL_PARAMETER_URI, /**< MMAL_PARAMETER_URI_T */
  43
  44        /** MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T */
  45        MMAL_PARAMETER_CHANGE_EVENT_REQUEST,
  46
  47        /** MMAL_PARAMETER_BOOLEAN_T */
  48        MMAL_PARAMETER_ZERO_COPY,
  49
  50        /**< MMAL_PARAMETER_BUFFER_REQUIREMENTS_T */
  51        MMAL_PARAMETER_BUFFER_REQUIREMENTS,
  52
  53        MMAL_PARAMETER_STATISTICS, /**< MMAL_PARAMETER_STATISTICS_T */
  54        MMAL_PARAMETER_CORE_STATISTICS, /**< MMAL_PARAMETER_CORE_STATISTICS_T */
  55        MMAL_PARAMETER_MEM_USAGE, /**< MMAL_PARAMETER_MEM_USAGE_T */
  56        MMAL_PARAMETER_BUFFER_FLAG_FILTER, /**< MMAL_PARAMETER_UINT32_T */
  57        MMAL_PARAMETER_SEEK, /**< MMAL_PARAMETER_SEEK_T */
  58        MMAL_PARAMETER_POWERMON_ENABLE, /**< MMAL_PARAMETER_BOOLEAN_T */
  59        MMAL_PARAMETER_LOGGING, /**< MMAL_PARAMETER_LOGGING_T */
  60        MMAL_PARAMETER_SYSTEM_TIME, /**< MMAL_PARAMETER_UINT64_T */
  61        MMAL_PARAMETER_NO_IMAGE_PADDING  /**< MMAL_PARAMETER_BOOLEAN_T */
  62};
  63
  64/* camera parameters */
  65
  66enum mmal_parameter_camera_type {
  67        /* 0 */
  68        /** @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */
  69        MMAL_PARAMETER_THUMBNAIL_CONFIGURATION
  70                = MMAL_PARAMETER_GROUP_CAMERA,
  71        MMAL_PARAMETER_CAPTURE_QUALITY, /**< Unused? */
  72        MMAL_PARAMETER_ROTATION, /**< @ref MMAL_PARAMETER_INT32_T */
  73        MMAL_PARAMETER_EXIF_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
  74        MMAL_PARAMETER_EXIF, /**< @ref MMAL_PARAMETER_EXIF_T */
  75        MMAL_PARAMETER_AWB_MODE, /**< @ref MMAL_PARAM_AWBMODE_T */
  76        MMAL_PARAMETER_IMAGE_EFFECT, /**< @ref MMAL_PARAMETER_IMAGEFX_T */
  77        MMAL_PARAMETER_COLOUR_EFFECT, /**< @ref MMAL_PARAMETER_COLOURFX_T */
  78        MMAL_PARAMETER_FLICKER_AVOID, /**< @ref MMAL_PARAMETER_FLICKERAVOID_T */
  79        MMAL_PARAMETER_FLASH, /**< @ref MMAL_PARAMETER_FLASH_T */
  80        MMAL_PARAMETER_REDEYE, /**< @ref MMAL_PARAMETER_REDEYE_T */
  81        MMAL_PARAMETER_FOCUS, /**< @ref MMAL_PARAMETER_FOCUS_T */
  82        MMAL_PARAMETER_FOCAL_LENGTHS, /**< Unused? */
  83        MMAL_PARAMETER_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_INT32_T */
  84        MMAL_PARAMETER_ZOOM, /**< @ref MMAL_PARAMETER_SCALEFACTOR_T */
  85        MMAL_PARAMETER_MIRROR, /**< @ref MMAL_PARAMETER_MIRROR_T */
  86
  87        /* 0x10 */
  88        MMAL_PARAMETER_CAMERA_NUM, /**< @ref MMAL_PARAMETER_UINT32_T */
  89        MMAL_PARAMETER_CAPTURE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
  90        MMAL_PARAMETER_EXPOSURE_MODE, /**< @ref MMAL_PARAMETER_EXPOSUREMODE_T */
  91        MMAL_PARAMETER_EXP_METERING_MODE, /**< @ref MMAL_PARAMETER_EXPOSUREMETERINGMODE_T */
  92        MMAL_PARAMETER_FOCUS_STATUS, /**< @ref MMAL_PARAMETER_FOCUS_STATUS_T */
  93        MMAL_PARAMETER_CAMERA_CONFIG, /**< @ref MMAL_PARAMETER_CAMERA_CONFIG_T */
  94        MMAL_PARAMETER_CAPTURE_STATUS, /**< @ref MMAL_PARAMETER_CAPTURE_STATUS_T */
  95        MMAL_PARAMETER_FACE_TRACK, /**< @ref MMAL_PARAMETER_FACE_TRACK_T */
  96        MMAL_PARAMETER_DRAW_BOX_FACES_AND_FOCUS, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
  97        MMAL_PARAMETER_JPEG_Q_FACTOR, /**< @ref MMAL_PARAMETER_UINT32_T */
  98        MMAL_PARAMETER_FRAME_RATE, /**< @ref MMAL_PARAMETER_FRAME_RATE_T */
  99        MMAL_PARAMETER_USE_STC, /**< @ref MMAL_PARAMETER_CAMERA_STC_MODE_T */
 100        MMAL_PARAMETER_CAMERA_INFO, /**< @ref MMAL_PARAMETER_CAMERA_INFO_T */
 101        MMAL_PARAMETER_VIDEO_STABILISATION, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 102        MMAL_PARAMETER_FACE_TRACK_RESULTS, /**< @ref MMAL_PARAMETER_FACE_TRACK_RESULTS_T */
 103        MMAL_PARAMETER_ENABLE_RAW_CAPTURE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 104
 105        /* 0x20 */
 106        MMAL_PARAMETER_DPF_FILE, /**< @ref MMAL_PARAMETER_URI_T */
 107        MMAL_PARAMETER_ENABLE_DPF_FILE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 108        MMAL_PARAMETER_DPF_FAIL_IS_FATAL, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 109        MMAL_PARAMETER_CAPTURE_MODE, /**< @ref MMAL_PARAMETER_CAPTUREMODE_T */
 110        MMAL_PARAMETER_FOCUS_REGIONS, /**< @ref MMAL_PARAMETER_FOCUS_REGIONS_T */
 111        MMAL_PARAMETER_INPUT_CROP, /**< @ref MMAL_PARAMETER_INPUT_CROP_T */
 112        MMAL_PARAMETER_SENSOR_INFORMATION, /**< @ref MMAL_PARAMETER_SENSOR_INFORMATION_T */
 113        MMAL_PARAMETER_FLASH_SELECT, /**< @ref MMAL_PARAMETER_FLASH_SELECT_T */
 114        MMAL_PARAMETER_FIELD_OF_VIEW, /**< @ref MMAL_PARAMETER_FIELD_OF_VIEW_T */
 115        MMAL_PARAMETER_HIGH_DYNAMIC_RANGE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 116        MMAL_PARAMETER_DYNAMIC_RANGE_COMPRESSION, /**< @ref MMAL_PARAMETER_DRC_T */
 117        MMAL_PARAMETER_ALGORITHM_CONTROL, /**< @ref MMAL_PARAMETER_ALGORITHM_CONTROL_T */
 118        MMAL_PARAMETER_SHARPNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */
 119        MMAL_PARAMETER_CONTRAST, /**< @ref MMAL_PARAMETER_RATIONAL_T */
 120        MMAL_PARAMETER_BRIGHTNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */
 121        MMAL_PARAMETER_SATURATION, /**< @ref MMAL_PARAMETER_RATIONAL_T */
 122
 123        /* 0x30 */
 124        MMAL_PARAMETER_ISO, /**< @ref MMAL_PARAMETER_UINT32_T */
 125        MMAL_PARAMETER_ANTISHAKE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 126
 127        /** @ref MMAL_PARAMETER_IMAGEFX_PARAMETERS_T */
 128        MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS,
 129
 130        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 131        MMAL_PARAMETER_CAMERA_BURST_CAPTURE,
 132
 133        /** @ref MMAL_PARAMETER_UINT32_T */
 134        MMAL_PARAMETER_CAMERA_MIN_ISO,
 135
 136        /** @ref MMAL_PARAMETER_CAMERA_USE_CASE_T */
 137        MMAL_PARAMETER_CAMERA_USE_CASE,
 138
 139        /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 140        MMAL_PARAMETER_CAPTURE_STATS_PASS,
 141
 142        /** @ref MMAL_PARAMETER_UINT32_T */
 143        MMAL_PARAMETER_CAMERA_CUSTOM_SENSOR_CONFIG,
 144
 145        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 146        MMAL_PARAMETER_ENABLE_REGISTER_FILE,
 147
 148        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 149        MMAL_PARAMETER_REGISTER_FAIL_IS_FATAL,
 150
 151        /** @ref MMAL_PARAMETER_CONFIGFILE_T */
 152        MMAL_PARAMETER_CONFIGFILE_REGISTERS,
 153
 154        /** @ref MMAL_PARAMETER_CONFIGFILE_CHUNK_T */
 155        MMAL_PARAMETER_CONFIGFILE_CHUNK_REGISTERS,
 156        MMAL_PARAMETER_JPEG_ATTACH_LOG, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 157        MMAL_PARAMETER_ZERO_SHUTTER_LAG, /**< @ref MMAL_PARAMETER_ZEROSHUTTERLAG_T */
 158        MMAL_PARAMETER_FPS_RANGE, /**< @ref MMAL_PARAMETER_FPS_RANGE_T */
 159        MMAL_PARAMETER_CAPTURE_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_INT32_T */
 160
 161        /* 0x40 */
 162        MMAL_PARAMETER_SW_SHARPEN_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 163        MMAL_PARAMETER_FLASH_REQUIRED, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 164        MMAL_PARAMETER_SW_SATURATION_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 165        MMAL_PARAMETER_SHUTTER_SPEED,             /**< Takes a @ref MMAL_PARAMETER_UINT32_T */
 166        MMAL_PARAMETER_CUSTOM_AWB_GAINS,          /**< Takes a @ref MMAL_PARAMETER_AWB_GAINS_T */
 167};
 168
 169struct mmal_parameter_rational {
 170        s32 num;    /**< Numerator */
 171        s32 den;    /**< Denominator */
 172};
 173
 174enum mmal_parameter_camera_config_timestamp_mode {
 175        MMAL_PARAM_TIMESTAMP_MODE_ZERO = 0, /* Always timestamp frames as 0 */
 176        MMAL_PARAM_TIMESTAMP_MODE_RAW_STC,  /* Use the raw STC value
 177                                             * for the frame timestamp
 178                                             */
 179        MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /* Use the STC timestamp
 180                                              * but subtract the
 181                                              * timestamp of the first
 182                                              * frame sent to give a
 183                                              * zero based timestamp.
 184                                              */
 185};
 186
 187struct mmal_parameter_fps_range {
 188        /**< Low end of the permitted framerate range */
 189        struct mmal_parameter_rational  fps_low;
 190        /**< High end of the permitted framerate range */
 191        struct mmal_parameter_rational  fps_high;
 192};
 193
 194/* camera configuration parameter */
 195struct mmal_parameter_camera_config {
 196        /* Parameters for setting up the image pools */
 197        u32 max_stills_w; /* Max size of stills capture */
 198        u32 max_stills_h;
 199        u32 stills_yuv422; /* Allow YUV422 stills capture */
 200        u32 one_shot_stills; /* Continuous or one shot stills captures. */
 201
 202        u32 max_preview_video_w; /* Max size of the preview or video
 203                                  * capture frames
 204                                  */
 205        u32 max_preview_video_h;
 206        u32 num_preview_video_frames;
 207
 208        /** Sets the height of the circular buffer for stills capture. */
 209        u32 stills_capture_circular_buffer_height;
 210
 211        /** Allows preview/encode to resume as fast as possible after the stills
 212         * input frame has been received, and then processes the still frame in
 213         * the background whilst preview/encode has resumed.
 214         * Actual mode is controlled by MMAL_PARAMETER_CAPTURE_MODE.
 215         */
 216        u32 fast_preview_resume;
 217
 218        /** Selects algorithm for timestamping frames if
 219         * there is no clock component connected.
 220         * enum mmal_parameter_camera_config_timestamp_mode
 221         */
 222        s32 use_stc_timestamp;
 223};
 224
 225enum mmal_parameter_exposuremode {
 226        MMAL_PARAM_EXPOSUREMODE_OFF,
 227        MMAL_PARAM_EXPOSUREMODE_AUTO,
 228        MMAL_PARAM_EXPOSUREMODE_NIGHT,
 229        MMAL_PARAM_EXPOSUREMODE_NIGHTPREVIEW,
 230        MMAL_PARAM_EXPOSUREMODE_BACKLIGHT,
 231        MMAL_PARAM_EXPOSUREMODE_SPOTLIGHT,
 232        MMAL_PARAM_EXPOSUREMODE_SPORTS,
 233        MMAL_PARAM_EXPOSUREMODE_SNOW,
 234        MMAL_PARAM_EXPOSUREMODE_BEACH,
 235        MMAL_PARAM_EXPOSUREMODE_VERYLONG,
 236        MMAL_PARAM_EXPOSUREMODE_FIXEDFPS,
 237        MMAL_PARAM_EXPOSUREMODE_ANTISHAKE,
 238        MMAL_PARAM_EXPOSUREMODE_FIREWORKS,
 239};
 240
 241enum mmal_parameter_exposuremeteringmode {
 242        MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE,
 243        MMAL_PARAM_EXPOSUREMETERINGMODE_SPOT,
 244        MMAL_PARAM_EXPOSUREMETERINGMODE_BACKLIT,
 245        MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX,
 246};
 247
 248enum mmal_parameter_awbmode {
 249        MMAL_PARAM_AWBMODE_OFF,
 250        MMAL_PARAM_AWBMODE_AUTO,
 251        MMAL_PARAM_AWBMODE_SUNLIGHT,
 252        MMAL_PARAM_AWBMODE_CLOUDY,
 253        MMAL_PARAM_AWBMODE_SHADE,
 254        MMAL_PARAM_AWBMODE_TUNGSTEN,
 255        MMAL_PARAM_AWBMODE_FLUORESCENT,
 256        MMAL_PARAM_AWBMODE_INCANDESCENT,
 257        MMAL_PARAM_AWBMODE_FLASH,
 258        MMAL_PARAM_AWBMODE_HORIZON,
 259};
 260
 261enum mmal_parameter_imagefx {
 262        MMAL_PARAM_IMAGEFX_NONE,
 263        MMAL_PARAM_IMAGEFX_NEGATIVE,
 264        MMAL_PARAM_IMAGEFX_SOLARIZE,
 265        MMAL_PARAM_IMAGEFX_POSTERIZE,
 266        MMAL_PARAM_IMAGEFX_WHITEBOARD,
 267        MMAL_PARAM_IMAGEFX_BLACKBOARD,
 268        MMAL_PARAM_IMAGEFX_SKETCH,
 269        MMAL_PARAM_IMAGEFX_DENOISE,
 270        MMAL_PARAM_IMAGEFX_EMBOSS,
 271        MMAL_PARAM_IMAGEFX_OILPAINT,
 272        MMAL_PARAM_IMAGEFX_HATCH,
 273        MMAL_PARAM_IMAGEFX_GPEN,
 274        MMAL_PARAM_IMAGEFX_PASTEL,
 275        MMAL_PARAM_IMAGEFX_WATERCOLOUR,
 276        MMAL_PARAM_IMAGEFX_FILM,
 277        MMAL_PARAM_IMAGEFX_BLUR,
 278        MMAL_PARAM_IMAGEFX_SATURATION,
 279        MMAL_PARAM_IMAGEFX_COLOURSWAP,
 280        MMAL_PARAM_IMAGEFX_WASHEDOUT,
 281        MMAL_PARAM_IMAGEFX_POSTERISE,
 282        MMAL_PARAM_IMAGEFX_COLOURPOINT,
 283        MMAL_PARAM_IMAGEFX_COLOURBALANCE,
 284        MMAL_PARAM_IMAGEFX_CARTOON,
 285};
 286
 287enum MMAL_PARAM_FLICKERAVOID_T {
 288        MMAL_PARAM_FLICKERAVOID_OFF,
 289        MMAL_PARAM_FLICKERAVOID_AUTO,
 290        MMAL_PARAM_FLICKERAVOID_50HZ,
 291        MMAL_PARAM_FLICKERAVOID_60HZ,
 292        MMAL_PARAM_FLICKERAVOID_MAX = 0x7FFFFFFF
 293};
 294
 295struct mmal_parameter_awbgains {
 296        struct mmal_parameter_rational r_gain;  /**< Red gain */
 297        struct mmal_parameter_rational b_gain;  /**< Blue gain */
 298};
 299
 300/** Manner of video rate control */
 301enum mmal_parameter_rate_control_mode {
 302        MMAL_VIDEO_RATECONTROL_DEFAULT,
 303        MMAL_VIDEO_RATECONTROL_VARIABLE,
 304        MMAL_VIDEO_RATECONTROL_CONSTANT,
 305        MMAL_VIDEO_RATECONTROL_VARIABLE_SKIP_FRAMES,
 306        MMAL_VIDEO_RATECONTROL_CONSTANT_SKIP_FRAMES
 307};
 308
 309enum mmal_video_profile {
 310        MMAL_VIDEO_PROFILE_H263_BASELINE,
 311        MMAL_VIDEO_PROFILE_H263_H320CODING,
 312        MMAL_VIDEO_PROFILE_H263_BACKWARDCOMPATIBLE,
 313        MMAL_VIDEO_PROFILE_H263_ISWV2,
 314        MMAL_VIDEO_PROFILE_H263_ISWV3,
 315        MMAL_VIDEO_PROFILE_H263_HIGHCOMPRESSION,
 316        MMAL_VIDEO_PROFILE_H263_INTERNET,
 317        MMAL_VIDEO_PROFILE_H263_INTERLACE,
 318        MMAL_VIDEO_PROFILE_H263_HIGHLATENCY,
 319        MMAL_VIDEO_PROFILE_MP4V_SIMPLE,
 320        MMAL_VIDEO_PROFILE_MP4V_SIMPLESCALABLE,
 321        MMAL_VIDEO_PROFILE_MP4V_CORE,
 322        MMAL_VIDEO_PROFILE_MP4V_MAIN,
 323        MMAL_VIDEO_PROFILE_MP4V_NBIT,
 324        MMAL_VIDEO_PROFILE_MP4V_SCALABLETEXTURE,
 325        MMAL_VIDEO_PROFILE_MP4V_SIMPLEFACE,
 326        MMAL_VIDEO_PROFILE_MP4V_SIMPLEFBA,
 327        MMAL_VIDEO_PROFILE_MP4V_BASICANIMATED,
 328        MMAL_VIDEO_PROFILE_MP4V_HYBRID,
 329        MMAL_VIDEO_PROFILE_MP4V_ADVANCEDREALTIME,
 330        MMAL_VIDEO_PROFILE_MP4V_CORESCALABLE,
 331        MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCODING,
 332        MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCORE,
 333        MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSCALABLE,
 334        MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSIMPLE,
 335        MMAL_VIDEO_PROFILE_H264_BASELINE,
 336        MMAL_VIDEO_PROFILE_H264_MAIN,
 337        MMAL_VIDEO_PROFILE_H264_EXTENDED,
 338        MMAL_VIDEO_PROFILE_H264_HIGH,
 339        MMAL_VIDEO_PROFILE_H264_HIGH10,
 340        MMAL_VIDEO_PROFILE_H264_HIGH422,
 341        MMAL_VIDEO_PROFILE_H264_HIGH444,
 342        MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE,
 343        MMAL_VIDEO_PROFILE_DUMMY = 0x7FFFFFFF
 344};
 345
 346enum mmal_video_level {
 347        MMAL_VIDEO_LEVEL_H263_10,
 348        MMAL_VIDEO_LEVEL_H263_20,
 349        MMAL_VIDEO_LEVEL_H263_30,
 350        MMAL_VIDEO_LEVEL_H263_40,
 351        MMAL_VIDEO_LEVEL_H263_45,
 352        MMAL_VIDEO_LEVEL_H263_50,
 353        MMAL_VIDEO_LEVEL_H263_60,
 354        MMAL_VIDEO_LEVEL_H263_70,
 355        MMAL_VIDEO_LEVEL_MP4V_0,
 356        MMAL_VIDEO_LEVEL_MP4V_0b,
 357        MMAL_VIDEO_LEVEL_MP4V_1,
 358        MMAL_VIDEO_LEVEL_MP4V_2,
 359        MMAL_VIDEO_LEVEL_MP4V_3,
 360        MMAL_VIDEO_LEVEL_MP4V_4,
 361        MMAL_VIDEO_LEVEL_MP4V_4a,
 362        MMAL_VIDEO_LEVEL_MP4V_5,
 363        MMAL_VIDEO_LEVEL_MP4V_6,
 364        MMAL_VIDEO_LEVEL_H264_1,
 365        MMAL_VIDEO_LEVEL_H264_1b,
 366        MMAL_VIDEO_LEVEL_H264_11,
 367        MMAL_VIDEO_LEVEL_H264_12,
 368        MMAL_VIDEO_LEVEL_H264_13,
 369        MMAL_VIDEO_LEVEL_H264_2,
 370        MMAL_VIDEO_LEVEL_H264_21,
 371        MMAL_VIDEO_LEVEL_H264_22,
 372        MMAL_VIDEO_LEVEL_H264_3,
 373        MMAL_VIDEO_LEVEL_H264_31,
 374        MMAL_VIDEO_LEVEL_H264_32,
 375        MMAL_VIDEO_LEVEL_H264_4,
 376        MMAL_VIDEO_LEVEL_H264_41,
 377        MMAL_VIDEO_LEVEL_H264_42,
 378        MMAL_VIDEO_LEVEL_H264_5,
 379        MMAL_VIDEO_LEVEL_H264_51,
 380        MMAL_VIDEO_LEVEL_DUMMY = 0x7FFFFFFF
 381};
 382
 383struct mmal_parameter_video_profile {
 384        enum mmal_video_profile profile;
 385        enum mmal_video_level level;
 386};
 387
 388/* video parameters */
 389
 390enum mmal_parameter_video_type {
 391        /** @ref MMAL_DISPLAYREGION_T */
 392        MMAL_PARAMETER_DISPLAYREGION = MMAL_PARAMETER_GROUP_VIDEO,
 393
 394        /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
 395        MMAL_PARAMETER_SUPPORTED_PROFILES,
 396
 397        /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */
 398        MMAL_PARAMETER_PROFILE,
 399
 400        /** @ref MMAL_PARAMETER_UINT32_T */
 401        MMAL_PARAMETER_INTRAPERIOD,
 402
 403        /** @ref MMAL_PARAMETER_VIDEO_RATECONTROL_T */
 404        MMAL_PARAMETER_RATECONTROL,
 405
 406        /** @ref MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T */
 407        MMAL_PARAMETER_NALUNITFORMAT,
 408
 409        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 410        MMAL_PARAMETER_MINIMISE_FRAGMENTATION,
 411
 412        /** @ref MMAL_PARAMETER_UINT32_T.
 413         * Setting the value to zero resets to the default (one slice per frame).
 414         */
 415        MMAL_PARAMETER_MB_ROWS_PER_SLICE,
 416
 417        /** @ref MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T */
 418        MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION,
 419
 420        /** @ref MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T */
 421        MMAL_PARAMETER_VIDEO_EEDE_ENABLE,
 422
 423        /** @ref MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T */
 424        MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE,
 425
 426        /** @ref MMAL_PARAMETER_BOOLEAN_T. Request an I-frame. */
 427        MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME,
 428        /** @ref MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T */
 429        MMAL_PARAMETER_VIDEO_INTRA_REFRESH,
 430
 431        /** @ref MMAL_PARAMETER_BOOLEAN_T. */
 432        MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT,
 433
 434        /** @ref MMAL_PARAMETER_UINT32_T. Run-time bit rate control */
 435        MMAL_PARAMETER_VIDEO_BIT_RATE,
 436
 437        /** @ref MMAL_PARAMETER_FRAME_RATE_T */
 438        MMAL_PARAMETER_VIDEO_FRAME_RATE,
 439
 440        /** @ref MMAL_PARAMETER_UINT32_T. */
 441        MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT,
 442
 443        /** @ref MMAL_PARAMETER_UINT32_T. */
 444        MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT,
 445
 446        /** @ref MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T. */
 447        MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL,
 448
 449        MMAL_PARAMETER_EXTRA_BUFFERS, /**< @ref MMAL_PARAMETER_UINT32_T. */
 450        /** @ref MMAL_PARAMETER_UINT32_T.
 451         * Changing this parameter from the default can reduce frame rate
 452         * because image buffers need to be re-pitched.
 453         */
 454        MMAL_PARAMETER_VIDEO_ALIGN_HORIZ,
 455
 456        /** @ref MMAL_PARAMETER_UINT32_T.
 457         * Changing this parameter from the default can reduce frame rate
 458         * because image buffers need to be re-pitched.
 459         */
 460        MMAL_PARAMETER_VIDEO_ALIGN_VERT,
 461
 462        /** @ref MMAL_PARAMETER_BOOLEAN_T. */
 463        MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES,
 464
 465        /** @ref MMAL_PARAMETER_UINT32_T. */
 466        MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT,
 467
 468        /**< @ref MMAL_PARAMETER_UINT32_T. */
 469        MMAL_PARAMETER_VIDEO_ENCODE_QP_P,
 470
 471        /**< @ref MMAL_PARAMETER_UINT32_T. */
 472        MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT,
 473
 474        /** @ref MMAL_PARAMETER_UINT32_T */
 475        MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS,
 476
 477        /** @ref MMAL_PARAMETER_UINT32_T. */
 478        MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE,
 479
 480        /* H264 specific parameters */
 481
 482        /** @ref MMAL_PARAMETER_BOOLEAN_T. */
 483        MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC,
 484
 485        /** @ref MMAL_PARAMETER_BOOLEAN_T. */
 486        MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY,
 487
 488        /** @ref MMAL_PARAMETER_BOOLEAN_T. */
 489        MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS,
 490
 491        /** @ref MMAL_PARAMETER_UINT32_T. */
 492        MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC,
 493
 494        /** @ref MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T. */
 495        MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE,
 496
 497        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 498        MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN,
 499
 500        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 501        MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP,
 502
 503        /** @ref MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T. */
 504        MMAL_PARAMETER_VIDEO_DRM_INIT_INFO,
 505
 506        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 507        MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO,
 508
 509        /** @ref MMAL_PARAMETER_BOOLEAN_T */
 510        MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT,
 511
 512        /** @ref MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T. */
 513        MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER,
 514
 515        /** @ref MMAL_PARAMETER_BYTES_T */
 516        MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3,
 517
 518        /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 519        MMAL_PARAMETER_VIDEO_ENCODE_H264_VCL_HRD_PARAMETERS,
 520
 521        /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 522        MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_DELAY_HRD_FLAG,
 523
 524        /**< @ref MMAL_PARAMETER_BOOLEAN_T */
 525        MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER
 526};
 527
 528/** Valid mirror modes */
 529enum mmal_parameter_mirror {
 530        MMAL_PARAM_MIRROR_NONE,
 531        MMAL_PARAM_MIRROR_VERTICAL,
 532        MMAL_PARAM_MIRROR_HORIZONTAL,
 533        MMAL_PARAM_MIRROR_BOTH,
 534};
 535
 536enum mmal_parameter_displaytransform {
 537        MMAL_DISPLAY_ROT0 = 0,
 538        MMAL_DISPLAY_MIRROR_ROT0 = 1,
 539        MMAL_DISPLAY_MIRROR_ROT180 = 2,
 540        MMAL_DISPLAY_ROT180 = 3,
 541        MMAL_DISPLAY_MIRROR_ROT90 = 4,
 542        MMAL_DISPLAY_ROT270 = 5,
 543        MMAL_DISPLAY_ROT90 = 6,
 544        MMAL_DISPLAY_MIRROR_ROT270 = 7,
 545};
 546
 547enum mmal_parameter_displaymode {
 548        MMAL_DISPLAY_MODE_FILL = 0,
 549        MMAL_DISPLAY_MODE_LETTERBOX = 1,
 550};
 551
 552enum mmal_parameter_displayset {
 553        MMAL_DISPLAY_SET_NONE = 0,
 554        MMAL_DISPLAY_SET_NUM = 1,
 555        MMAL_DISPLAY_SET_FULLSCREEN = 2,
 556        MMAL_DISPLAY_SET_TRANSFORM = 4,
 557        MMAL_DISPLAY_SET_DEST_RECT = 8,
 558        MMAL_DISPLAY_SET_SRC_RECT = 0x10,
 559        MMAL_DISPLAY_SET_MODE = 0x20,
 560        MMAL_DISPLAY_SET_PIXEL = 0x40,
 561        MMAL_DISPLAY_SET_NOASPECT = 0x80,
 562        MMAL_DISPLAY_SET_LAYER = 0x100,
 563        MMAL_DISPLAY_SET_COPYPROTECT = 0x200,
 564        MMAL_DISPLAY_SET_ALPHA = 0x400,
 565};
 566
 567/* rectangle, used lots so it gets its own struct */
 568struct vchiq_mmal_rect {
 569        s32 x;
 570        s32 y;
 571        s32 width;
 572        s32 height;
 573};
 574
 575struct mmal_parameter_displayregion {
 576        /** Bitfield that indicates which fields are set and should be
 577         * used. All other fields will maintain their current value.
 578         * \ref MMAL_DISPLAYSET_T defines the bits that can be
 579         * combined.
 580         */
 581        u32 set;
 582
 583        /** Describes the display output device, with 0 typically
 584         * being a directly connected LCD display.  The actual values
 585         * will depend on the hardware.  Code using hard-wired numbers
 586         * (e.g. 2) is certain to fail.
 587         */
 588
 589        u32 display_num;
 590        /** Indicates that we are using the full device screen area,
 591         * rather than a window of the display.  If zero, then
 592         * dest_rect is used to specify a region of the display to
 593         * use.
 594         */
 595
 596        s32 fullscreen;
 597        /** Indicates any rotation or flipping used to map frames onto
 598         * the natural display orientation.
 599         */
 600        u32 transform; /* enum mmal_parameter_displaytransform */
 601
 602        /** Where to display the frame within the screen, if
 603         * fullscreen is zero.
 604         */
 605        struct vchiq_mmal_rect dest_rect;
 606
 607        /** Indicates which area of the frame to display. If all
 608         * values are zero, the whole frame will be used.
 609         */
 610        struct vchiq_mmal_rect src_rect;
 611
 612        /** If set to non-zero, indicates that any display scaling
 613         * should disregard the aspect ratio of the frame region being
 614         * displayed.
 615         */
 616        s32 noaspect;
 617
 618        /** Indicates how the image should be scaled to fit the
 619         * display. \code MMAL_DISPLAY_MODE_FILL \endcode indicates
 620         * that the image should fill the screen by potentially
 621         * cropping the frames.  Setting \code mode \endcode to \code
 622         * MMAL_DISPLAY_MODE_LETTERBOX \endcode indicates that all the
 623         * source region should be displayed and black bars added if
 624         * necessary.
 625         */
 626        u32 mode; /* enum mmal_parameter_displaymode */
 627
 628        /** If non-zero, defines the width of a source pixel relative
 629         * to \code pixel_y \endcode.  If zero, then pixels default to
 630         * being square.
 631         */
 632        u32 pixel_x;
 633
 634        /** If non-zero, defines the height of a source pixel relative
 635         * to \code pixel_x \endcode.  If zero, then pixels default to
 636         * being square.
 637         */
 638        u32 pixel_y;
 639
 640        /** Sets the relative depth of the images, with greater values
 641         * being in front of smaller values.
 642         */
 643        u32 layer;
 644
 645        /** Set to non-zero to ensure copy protection is used on
 646         * output.
 647         */
 648        s32 copyprotect_required;
 649
 650        /** Level of opacity of the layer, where zero is fully
 651         * transparent and 255 is fully opaque.
 652         */
 653        u32 alpha;
 654};
 655
 656#define MMAL_MAX_IMAGEFX_PARAMETERS 5
 657
 658struct mmal_parameter_imagefx_parameters {
 659        enum mmal_parameter_imagefx effect;
 660        u32 num_effect_params;
 661        u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS];
 662};
 663
 664#define MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS 4
 665#define MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES 2
 666#define MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN 16
 667
 668struct mmal_parameter_camera_info_camera_t {
 669        u32    port_id;
 670        u32    max_width;
 671        u32    max_height;
 672        u32    lens_present;
 673        u8     camera_name[MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN];
 674};
 675
 676enum mmal_parameter_camera_info_flash_type_t {
 677        /* Make values explicit to ensure they match values in config ini */
 678        MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_XENON = 0,
 679        MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_LED   = 1,
 680        MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_OTHER = 2,
 681        MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_MAX = 0x7FFFFFFF
 682};
 683
 684struct mmal_parameter_camera_info_flash_t {
 685        enum mmal_parameter_camera_info_flash_type_t flash_type;
 686};
 687
 688struct mmal_parameter_camera_info_t {
 689        u32                            num_cameras;
 690        u32                            num_flashes;
 691        struct mmal_parameter_camera_info_camera_t
 692                                cameras[MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS];
 693        struct mmal_parameter_camera_info_flash_t
 694                                flashes[MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES];
 695};
 696
 697#endif
 698