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