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