/* SPDX-License-Identifier: GPL-2.0 */ /* * Broadcom BM2835 V4L2 driver * * Copyright © 2013 Raspberry Pi (Trading) Ltd. * * Authors: Vincent Sanders @ Collabora * Dave Stevenson @ Broadcom * (now dave.stevenson@raspberrypi.org) * Simon Mellor @ Broadcom * Luke Diamand @ Broadcom */ /* common parameters */ /** @name Parameter groups * Parameters are divided into groups, and then allocated sequentially within * a group using an enum. * @{ */ #ifndef MMAL_PARAMETERS_H #define MMAL_PARAMETERS_H /** Common parameter ID group, used with many types of component. */ #define MMAL_PARAMETER_GROUP_COMMON (0 << 16) /** Camera-specific parameter ID group. */ #define MMAL_PARAMETER_GROUP_CAMERA (1 << 16) /** Video-specific parameter ID group. */ #define MMAL_PARAMETER_GROUP_VIDEO (2 << 16) /** Audio-specific parameter ID group. */ #define MMAL_PARAMETER_GROUP_AUDIO (3 << 16) /** Clock-specific parameter ID group. */ #define MMAL_PARAMETER_GROUP_CLOCK (4 << 16) /** Miracast-specific parameter ID group. */ #define MMAL_PARAMETER_GROUP_MIRACAST (5 << 16) /* Common parameters */ enum mmal_parameter_common_type { /**< Never a valid parameter ID */ MMAL_PARAMETER_UNUSED = MMAL_PARAMETER_GROUP_COMMON, /**< MMAL_PARAMETER_ENCODING_T */ MMAL_PARAMETER_SUPPORTED_ENCODINGS, /**< MMAL_PARAMETER_URI_T */ MMAL_PARAMETER_URI, /** MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T */ MMAL_PARAMETER_CHANGE_EVENT_REQUEST, /** MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_ZERO_COPY, /**< MMAL_PARAMETER_BUFFER_REQUIREMENTS_T */ MMAL_PARAMETER_BUFFER_REQUIREMENTS, /**< MMAL_PARAMETER_STATISTICS_T */ MMAL_PARAMETER_STATISTICS, /**< MMAL_PARAMETER_CORE_STATISTICS_T */ MMAL_PARAMETER_CORE_STATISTICS, /**< MMAL_PARAMETER_MEM_USAGE_T */ MMAL_PARAMETER_MEM_USAGE, /**< MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_BUFFER_FLAG_FILTER, /**< MMAL_PARAMETER_SEEK_T */ MMAL_PARAMETER_SEEK, /**< MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_POWERMON_ENABLE, /**< MMAL_PARAMETER_LOGGING_T */ MMAL_PARAMETER_LOGGING, /**< MMAL_PARAMETER_UINT64_T */ MMAL_PARAMETER_SYSTEM_TIME, /**< MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_NO_IMAGE_PADDING, }; /* camera parameters */ enum mmal_parameter_camera_type { /* 0 */ /** @ref MMAL_PARAMETER_THUMBNAIL_CONFIG_T */ MMAL_PARAMETER_THUMBNAIL_CONFIGURATION = MMAL_PARAMETER_GROUP_CAMERA, /**< Unused? */ MMAL_PARAMETER_CAPTURE_QUALITY, /**< @ref MMAL_PARAMETER_INT32_T */ MMAL_PARAMETER_ROTATION, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_EXIF_DISABLE, /**< @ref MMAL_PARAMETER_EXIF_T */ MMAL_PARAMETER_EXIF, /**< @ref MMAL_PARAM_AWBMODE_T */ MMAL_PARAMETER_AWB_MODE, /**< @ref MMAL_PARAMETER_IMAGEFX_T */ MMAL_PARAMETER_IMAGE_EFFECT, /**< @ref MMAL_PARAMETER_COLOURFX_T */ MMAL_PARAMETER_COLOUR_EFFECT, /**< @ref MMAL_PARAMETER_FLICKERAVOID_T */ MMAL_PARAMETER_FLICKER_AVOID, /**< @ref MMAL_PARAMETER_FLASH_T */ MMAL_PARAMETER_FLASH, /**< @ref MMAL_PARAMETER_REDEYE_T */ MMAL_PARAMETER_REDEYE, /**< @ref MMAL_PARAMETER_FOCUS_T */ MMAL_PARAMETER_FOCUS, /**< Unused? */ MMAL_PARAMETER_FOCAL_LENGTHS, /**< @ref MMAL_PARAMETER_INT32_T */ MMAL_PARAMETER_EXPOSURE_COMP, /**< @ref MMAL_PARAMETER_SCALEFACTOR_T */ MMAL_PARAMETER_ZOOM, /**< @ref MMAL_PARAMETER_MIRROR_T */ MMAL_PARAMETER_MIRROR, /* 0x10 */ /**< @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_CAMERA_NUM, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_CAPTURE, /**< @ref MMAL_PARAMETER_EXPOSUREMODE_T */ MMAL_PARAMETER_EXPOSURE_MODE, /**< @ref MMAL_PARAMETER_EXPOSUREMETERINGMODE_T */ MMAL_PARAMETER_EXP_METERING_MODE, /**< @ref MMAL_PARAMETER_FOCUS_STATUS_T */ MMAL_PARAMETER_FOCUS_STATUS, /**< @ref MMAL_PARAMETER_CAMERA_CONFIG_T */ MMAL_PARAMETER_CAMERA_CONFIG, /**< @ref MMAL_PARAMETER_CAPTURE_STATUS_T */ MMAL_PARAMETER_CAPTURE_STATUS, /**< @ref MMAL_PARAMETER_FACE_TRACK_T */ MMAL_PARAMETER_FACE_TRACK, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_DRAW_BOX_FACES_AND_FOCUS, /**< @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_JPEG_Q_FACTOR, /**< @ref MMAL_PARAMETER_FRAME_RATE_T */ MMAL_PARAMETER_FRAME_RATE, /**< @ref MMAL_PARAMETER_CAMERA_STC_MODE_T */ MMAL_PARAMETER_USE_STC, /**< @ref MMAL_PARAMETER_CAMERA_INFO_T */ MMAL_PARAMETER_CAMERA_INFO, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_STABILISATION, /**< @ref MMAL_PARAMETER_FACE_TRACK_RESULTS_T */ MMAL_PARAMETER_FACE_TRACK_RESULTS, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_ENABLE_RAW_CAPTURE, /* 0x20 */ /**< @ref MMAL_PARAMETER_URI_T */ MMAL_PARAMETER_DPF_FILE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_ENABLE_DPF_FILE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_DPF_FAIL_IS_FATAL, /**< @ref MMAL_PARAMETER_CAPTUREMODE_T */ MMAL_PARAMETER_CAPTURE_MODE, /**< @ref MMAL_PARAMETER_FOCUS_REGIONS_T */ MMAL_PARAMETER_FOCUS_REGIONS, /**< @ref MMAL_PARAMETER_INPUT_CROP_T */ MMAL_PARAMETER_INPUT_CROP, /**< @ref MMAL_PARAMETER_SENSOR_INFORMATION_T */ MMAL_PARAMETER_SENSOR_INFORMATION, /**< @ref MMAL_PARAMETER_FLASH_SELECT_T */ MMAL_PARAMETER_FLASH_SELECT, /**< @ref MMAL_PARAMETER_FIELD_OF_VIEW_T */ MMAL_PARAMETER_FIELD_OF_VIEW, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_HIGH_DYNAMIC_RANGE, /**< @ref MMAL_PARAMETER_DRC_T */ MMAL_PARAMETER_DYNAMIC_RANGE_COMPRESSION, /**< @ref MMAL_PARAMETER_ALGORITHM_CONTROL_T */ MMAL_PARAMETER_ALGORITHM_CONTROL, /**< @ref MMAL_PARAMETER_RATIONAL_T */ MMAL_PARAMETER_SHARPNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */ MMAL_PARAMETER_CONTRAST, /**< @ref MMAL_PARAMETER_RATIONAL_T */ MMAL_PARAMETER_BRIGHTNESS, /**< @ref MMAL_PARAMETER_RATIONAL_T */ MMAL_PARAMETER_SATURATION, /* 0x30 */ /**< @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_ISO, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_ANTISHAKE, /** @ref MMAL_PARAMETER_IMAGEFX_PARAMETERS_T */ MMAL_PARAMETER_IMAGE_EFFECT_PARAMETERS, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_CAMERA_BURST_CAPTURE, /** @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_CAMERA_MIN_ISO, /** @ref MMAL_PARAMETER_CAMERA_USE_CASE_T */ MMAL_PARAMETER_CAMERA_USE_CASE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_CAPTURE_STATS_PASS, /** @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_CAMERA_CUSTOM_SENSOR_CONFIG, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_ENABLE_REGISTER_FILE, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_REGISTER_FAIL_IS_FATAL, /** @ref MMAL_PARAMETER_CONFIGFILE_T */ MMAL_PARAMETER_CONFIGFILE_REGISTERS, /** @ref MMAL_PARAMETER_CONFIGFILE_CHUNK_T */ MMAL_PARAMETER_CONFIGFILE_CHUNK_REGISTERS, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_JPEG_ATTACH_LOG, /**< @ref MMAL_PARAMETER_ZEROSHUTTERLAG_T */ MMAL_PARAMETER_ZERO_SHUTTER_LAG, /**< @ref MMAL_PARAMETER_FPS_RANGE_T */ MMAL_PARAMETER_FPS_RANGE, /**< @ref MMAL_PARAMETER_INT32_T */ MMAL_PARAMETER_CAPTURE_EXPOSURE_COMP, /* 0x40 */ /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_SW_SHARPEN_DISABLE, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_FLASH_REQUIRED, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_SW_SATURATION_DISABLE, /**< Takes a @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_SHUTTER_SPEED, /**< Takes a @ref MMAL_PARAMETER_AWB_GAINS_T */ MMAL_PARAMETER_CUSTOM_AWB_GAINS, }; struct mmal_parameter_rational { s32 num; /**< Numerator */ s32 den; /**< Denominator */ }; enum mmal_parameter_camera_config_timestamp_mode { MMAL_PARAM_TIMESTAMP_MODE_ZERO = 0, /* Always timestamp frames as 0 */ MMAL_PARAM_TIMESTAMP_MODE_RAW_STC, /* Use the raw STC value * for the frame timestamp */ MMAL_PARAM_TIMESTAMP_MODE_RESET_STC, /* Use the STC timestamp * but subtract the * timestamp of the first * frame sent to give a * zero based timestamp. */ }; struct mmal_parameter_fps_range { /**< Low end of the permitted framerate range */ struct mmal_parameter_rational fps_low; /**< High end of the permitted framerate range */ struct mmal_parameter_rational fps_high; }; /* camera configuration parameter */ struct mmal_parameter_camera_config { /* Parameters for setting up the image pools */ u32 max_stills_w; /* Max size of stills capture */ u32 max_stills_h; u32 stills_yuv422; /* Allow YUV422 stills capture */ u32 one_shot_stills; /* Continuous or one shot stills captures. */ u32 max_preview_video_w; /* Max size of the preview or video * capture frames */ u32 max_preview_video_h; u32 num_preview_video_frames; /** Sets the height of the circular buffer for stills capture. */ u32 stills_capture_circular_buffer_height; /** Allows preview/encode to resume as fast as possible after the stills * input frame has been received, and then processes the still frame in * the background whilst preview/encode has resumed. * Actual mode is controlled by MMAL_PARAMETER_CAPTURE_MODE. */ u32 fast_preview_resume; /** Selects algorithm for timestamping frames if * there is no clock component connected. * enum mmal_parameter_camera_config_timestamp_mode */ s32 use_stc_timestamp; }; enum mmal_parameter_exposuremode { MMAL_PARAM_EXPOSUREMODE_OFF, MMAL_PARAM_EXPOSUREMODE_AUTO, MMAL_PARAM_EXPOSUREMODE_NIGHT, MMAL_PARAM_EXPOSUREMODE_NIGHTPREVIEW, MMAL_PARAM_EXPOSUREMODE_BACKLIGHT, MMAL_PARAM_EXPOSUREMODE_SPOTLIGHT, MMAL_PARAM_EXPOSUREMODE_SPORTS, MMAL_PARAM_EXPOSUREMODE_SNOW, MMAL_PARAM_EXPOSUREMODE_BEACH, MMAL_PARAM_EXPOSUREMODE_VERYLONG, MMAL_PARAM_EXPOSUREMODE_FIXEDFPS, MMAL_PARAM_EXPOSUREMODE_ANTISHAKE, MMAL_PARAM_EXPOSUREMODE_FIREWORKS, }; enum mmal_parameter_exposuremeteringmode { MMAL_PARAM_EXPOSUREMETERINGMODE_AVERAGE, MMAL_PARAM_EXPOSUREMETERINGMODE_SPOT, MMAL_PARAM_EXPOSUREMETERINGMODE_BACKLIT, MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX, }; enum mmal_parameter_awbmode { MMAL_PARAM_AWBMODE_OFF, MMAL_PARAM_AWBMODE_AUTO, MMAL_PARAM_AWBMODE_SUNLIGHT, MMAL_PARAM_AWBMODE_CLOUDY, MMAL_PARAM_AWBMODE_SHADE, MMAL_PARAM_AWBMODE_TUNGSTEN, MMAL_PARAM_AWBMODE_FLUORESCENT, MMAL_PARAM_AWBMODE_INCANDESCENT, MMAL_PARAM_AWBMODE_FLASH, MMAL_PARAM_AWBMODE_HORIZON, }; enum mmal_parameter_imagefx { MMAL_PARAM_IMAGEFX_NONE, MMAL_PARAM_IMAGEFX_NEGATIVE, MMAL_PARAM_IMAGEFX_SOLARIZE, MMAL_PARAM_IMAGEFX_POSTERIZE, MMAL_PARAM_IMAGEFX_WHITEBOARD, MMAL_PARAM_IMAGEFX_BLACKBOARD, MMAL_PARAM_IMAGEFX_SKETCH, MMAL_PARAM_IMAGEFX_DENOISE, MMAL_PARAM_IMAGEFX_EMBOSS, MMAL_PARAM_IMAGEFX_OILPAINT, MMAL_PARAM_IMAGEFX_HATCH, MMAL_PARAM_IMAGEFX_GPEN, MMAL_PARAM_IMAGEFX_PASTEL, MMAL_PARAM_IMAGEFX_WATERCOLOUR, MMAL_PARAM_IMAGEFX_FILM, MMAL_PARAM_IMAGEFX_BLUR, MMAL_PARAM_IMAGEFX_SATURATION, MMAL_PARAM_IMAGEFX_COLOURSWAP, MMAL_PARAM_IMAGEFX_WASHEDOUT, MMAL_PARAM_IMAGEFX_POSTERISE, MMAL_PARAM_IMAGEFX_COLOURPOINT, MMAL_PARAM_IMAGEFX_COLOURBALANCE, MMAL_PARAM_IMAGEFX_CARTOON, }; enum MMAL_PARAM_FLICKERAVOID_T { MMAL_PARAM_FLICKERAVOID_OFF, MMAL_PARAM_FLICKERAVOID_AUTO, MMAL_PARAM_FLICKERAVOID_50HZ, MMAL_PARAM_FLICKERAVOID_60HZ, MMAL_PARAM_FLICKERAVOID_MAX = 0x7FFFFFFF }; struct mmal_parameter_awbgains { struct mmal_parameter_rational r_gain; /**< Red gain */ struct mmal_parameter_rational b_gain; /**< Blue gain */ }; /** Manner of video rate control */ enum mmal_parameter_rate_control_mode { MMAL_VIDEO_RATECONTROL_DEFAULT, MMAL_VIDEO_RATECONTROL_VARIABLE, MMAL_VIDEO_RATECONTROL_CONSTANT, MMAL_VIDEO_RATECONTROL_VARIABLE_SKIP_FRAMES, MMAL_VIDEO_RATECONTROL_CONSTANT_SKIP_FRAMES }; enum mmal_video_profile { MMAL_VIDEO_PROFILE_H263_BASELINE, MMAL_VIDEO_PROFILE_H263_H320CODING, MMAL_VIDEO_PROFILE_H263_BACKWARDCOMPATIBLE, MMAL_VIDEO_PROFILE_H263_ISWV2, MMAL_VIDEO_PROFILE_H263_ISWV3, MMAL_VIDEO_PROFILE_H263_HIGHCOMPRESSION, MMAL_VIDEO_PROFILE_H263_INTERNET, MMAL_VIDEO_PROFILE_H263_INTERLACE, MMAL_VIDEO_PROFILE_H263_HIGHLATENCY, MMAL_VIDEO_PROFILE_MP4V_SIMPLE, MMAL_VIDEO_PROFILE_MP4V_SIMPLESCALABLE, MMAL_VIDEO_PROFILE_MP4V_CORE, MMAL_VIDEO_PROFILE_MP4V_MAIN, MMAL_VIDEO_PROFILE_MP4V_NBIT, MMAL_VIDEO_PROFILE_MP4V_SCALABLETEXTURE, MMAL_VIDEO_PROFILE_MP4V_SIMPLEFACE, MMAL_VIDEO_PROFILE_MP4V_SIMPLEFBA, MMAL_VIDEO_PROFILE_MP4V_BASICANIMATED, MMAL_VIDEO_PROFILE_MP4V_HYBRID, MMAL_VIDEO_PROFILE_MP4V_ADVANCEDREALTIME, MMAL_VIDEO_PROFILE_MP4V_CORESCALABLE, MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCODING, MMAL_VIDEO_PROFILE_MP4V_ADVANCEDCORE, MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSCALABLE, MMAL_VIDEO_PROFILE_MP4V_ADVANCEDSIMPLE, MMAL_VIDEO_PROFILE_H264_BASELINE, MMAL_VIDEO_PROFILE_H264_MAIN, MMAL_VIDEO_PROFILE_H264_EXTENDED, MMAL_VIDEO_PROFILE_H264_HIGH, MMAL_VIDEO_PROFILE_H264_HIGH10, MMAL_VIDEO_PROFILE_H264_HIGH422, MMAL_VIDEO_PROFILE_H264_HIGH444, MMAL_VIDEO_PROFILE_H264_CONSTRAINED_BASELINE, MMAL_VIDEO_PROFILE_DUMMY = 0x7FFFFFFF }; enum mmal_video_level { MMAL_VIDEO_LEVEL_H263_10, MMAL_VIDEO_LEVEL_H263_20, MMAL_VIDEO_LEVEL_H263_30, MMAL_VIDEO_LEVEL_H263_40, MMAL_VIDEO_LEVEL_H263_45, MMAL_VIDEO_LEVEL_H263_50, MMAL_VIDEO_LEVEL_H263_60, MMAL_VIDEO_LEVEL_H263_70, MMAL_VIDEO_LEVEL_MP4V_0, MMAL_VIDEO_LEVEL_MP4V_0b, MMAL_VIDEO_LEVEL_MP4V_1, MMAL_VIDEO_LEVEL_MP4V_2, MMAL_VIDEO_LEVEL_MP4V_3, MMAL_VIDEO_LEVEL_MP4V_4, MMAL_VIDEO_LEVEL_MP4V_4a, MMAL_VIDEO_LEVEL_MP4V_5, MMAL_VIDEO_LEVEL_MP4V_6, MMAL_VIDEO_LEVEL_H264_1, MMAL_VIDEO_LEVEL_H264_1b, MMAL_VIDEO_LEVEL_H264_11, MMAL_VIDEO_LEVEL_H264_12, MMAL_VIDEO_LEVEL_H264_13, MMAL_VIDEO_LEVEL_H264_2, MMAL_VIDEO_LEVEL_H264_21, MMAL_VIDEO_LEVEL_H264_22, MMAL_VIDEO_LEVEL_H264_3, MMAL_VIDEO_LEVEL_H264_31, MMAL_VIDEO_LEVEL_H264_32, MMAL_VIDEO_LEVEL_H264_4, MMAL_VIDEO_LEVEL_H264_41, MMAL_VIDEO_LEVEL_H264_42, MMAL_VIDEO_LEVEL_H264_5, MMAL_VIDEO_LEVEL_H264_51, MMAL_VIDEO_LEVEL_DUMMY = 0x7FFFFFFF }; struct mmal_parameter_video_profile { enum mmal_video_profile profile; enum mmal_video_level level; }; /* video parameters */ enum mmal_parameter_video_type { /** @ref MMAL_DISPLAYREGION_T */ MMAL_PARAMETER_DISPLAYREGION = MMAL_PARAMETER_GROUP_VIDEO, /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */ MMAL_PARAMETER_SUPPORTED_PROFILES, /** @ref MMAL_PARAMETER_VIDEO_PROFILE_T */ MMAL_PARAMETER_PROFILE, /** @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_INTRAPERIOD, /** @ref MMAL_PARAMETER_VIDEO_RATECONTROL_T */ MMAL_PARAMETER_RATECONTROL, /** @ref MMAL_PARAMETER_VIDEO_NALUNITFORMAT_T */ MMAL_PARAMETER_NALUNITFORMAT, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_MINIMISE_FRAGMENTATION, /** @ref MMAL_PARAMETER_UINT32_T. * Setting the value to zero resets to the default (one slice per * frame). */ MMAL_PARAMETER_MB_ROWS_PER_SLICE, /** @ref MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION_T */ MMAL_PARAMETER_VIDEO_LEVEL_EXTENSION, /** @ref MMAL_PARAMETER_VIDEO_EEDE_ENABLE_T */ MMAL_PARAMETER_VIDEO_EEDE_ENABLE, /** @ref MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE_T */ MMAL_PARAMETER_VIDEO_EEDE_LOSSRATE, /** @ref MMAL_PARAMETER_BOOLEAN_T. Request an I-frame. */ MMAL_PARAMETER_VIDEO_REQUEST_I_FRAME, /** @ref MMAL_PARAMETER_VIDEO_INTRA_REFRESH_T */ MMAL_PARAMETER_VIDEO_INTRA_REFRESH, /** @ref MMAL_PARAMETER_BOOLEAN_T. */ MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT, /** @ref MMAL_PARAMETER_UINT32_T. Run-time bit rate control */ MMAL_PARAMETER_VIDEO_BIT_RATE, /** @ref MMAL_PARAMETER_FRAME_RATE_T */ MMAL_PARAMETER_VIDEO_FRAME_RATE, /** @ref MMAL_PARAMETER_UINT32_T. */ MMAL_PARAMETER_VIDEO_ENCODE_MIN_QUANT, /** @ref MMAL_PARAMETER_UINT32_T. */ MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT, /** @ref MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL_T. */ MMAL_PARAMETER_VIDEO_ENCODE_RC_MODEL, MMAL_PARAMETER_EXTRA_BUFFERS, /**< @ref MMAL_PARAMETER_UINT32_T. */ /** @ref MMAL_PARAMETER_UINT32_T. * Changing this parameter from the default can reduce frame rate * because image buffers need to be re-pitched. */ MMAL_PARAMETER_VIDEO_ALIGN_HORIZ, /** @ref MMAL_PARAMETER_UINT32_T. * Changing this parameter from the default can reduce frame rate * because image buffers need to be re-pitched. */ MMAL_PARAMETER_VIDEO_ALIGN_VERT, /** @ref MMAL_PARAMETER_BOOLEAN_T. */ MMAL_PARAMETER_VIDEO_DROPPABLE_PFRAMES, /** @ref MMAL_PARAMETER_UINT32_T. */ MMAL_PARAMETER_VIDEO_ENCODE_INITIAL_QUANT, /**< @ref MMAL_PARAMETER_UINT32_T. */ MMAL_PARAMETER_VIDEO_ENCODE_QP_P, /**< @ref MMAL_PARAMETER_UINT32_T. */ MMAL_PARAMETER_VIDEO_ENCODE_RC_SLICE_DQUANT, /** @ref MMAL_PARAMETER_UINT32_T */ MMAL_PARAMETER_VIDEO_ENCODE_FRAME_LIMIT_BITS, /** @ref MMAL_PARAMETER_UINT32_T. */ MMAL_PARAMETER_VIDEO_ENCODE_PEAK_RATE, /* H264 specific parameters */ /** @ref MMAL_PARAMETER_BOOLEAN_T. */ MMAL_PARAMETER_VIDEO_ENCODE_H264_DISABLE_CABAC, /** @ref MMAL_PARAMETER_BOOLEAN_T. */ MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_LATENCY, /** @ref MMAL_PARAMETER_BOOLEAN_T. */ MMAL_PARAMETER_VIDEO_ENCODE_H264_AU_DELIMITERS, /** @ref MMAL_PARAMETER_UINT32_T. */ MMAL_PARAMETER_VIDEO_ENCODE_H264_DEBLOCK_IDC, /** @ref MMAL_PARAMETER_VIDEO_ENCODER_H264_MB_INTRA_MODES_T. */ MMAL_PARAMETER_VIDEO_ENCODE_H264_MB_INTRA_MODE, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_ENCODE_HEADER_ON_OPEN, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_ENCODE_PRECODE_FOR_QP, /** @ref MMAL_PARAMETER_VIDEO_DRM_INIT_INFO_T. */ MMAL_PARAMETER_VIDEO_DRM_INIT_INFO, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_TIMESTAMP_FIFO, /** @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_DECODE_ERROR_CONCEALMENT, /** @ref MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER_T. */ MMAL_PARAMETER_VIDEO_DRM_PROTECT_BUFFER, /** @ref MMAL_PARAMETER_BYTES_T */ MMAL_PARAMETER_VIDEO_DECODE_CONFIG_VD3, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_ENCODE_H264_VCL_HRD_PARAMETERS, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_ENCODE_H264_LOW_DELAY_HRD_FLAG, /**< @ref MMAL_PARAMETER_BOOLEAN_T */ MMAL_PARAMETER_VIDEO_ENCODE_INLINE_HEADER }; /** Valid mirror modes */ enum mmal_parameter_mirror { MMAL_PARAM_MIRROR_NONE, MMAL_PARAM_MIRROR_VERTICAL, MMAL_PARAM_MIRROR_HORIZONTAL, MMAL_PARAM_MIRROR_BOTH, }; enum mmal_parameter_displaytransform { MMAL_DISPLAY_ROT0 = 0, MMAL_DISPLAY_MIRROR_ROT0 = 1, MMAL_DISPLAY_MIRROR_ROT180 = 2, MMAL_DISPLAY_ROT180 = 3, MMAL_DISPLAY_MIRROR_ROT90 = 4, MMAL_DISPLAY_ROT270 = 5, MMAL_DISPLAY_ROT90 = 6, MMAL_DISPLAY_MIRROR_ROT270 = 7, }; enum mmal_parameter_displaymode { MMAL_DISPLAY_MODE_FILL = 0, MMAL_DISPLAY_MODE_LETTERBOX = 1, }; enum mmal_parameter_displayset { MMAL_DISPLAY_SET_NONE = 0, MMAL_DISPLAY_SET_NUM = 1, MMAL_DISPLAY_SET_FULLSCREEN = 2, MMAL_DISPLAY_SET_TRANSFORM = 4, MMAL_DISPLAY_SET_DEST_RECT = 8, MMAL_DISPLAY_SET_SRC_RECT = 0x10, MMAL_DISPLAY_SET_MODE = 0x20, MMAL_DISPLAY_SET_PIXEL = 0x40, MMAL_DISPLAY_SET_NOASPECT = 0x80, MMAL_DISPLAY_SET_LAYER = 0x100, MMAL_DISPLAY_SET_COPYPROTECT = 0x200, MMAL_DISPLAY_SET_ALPHA = 0x400, }; /* rectangle, used lots so it gets its own struct */ struct vchiq_mmal_rect { s32 x; s32 y; s32 width; s32 height; }; struct mmal_parameter_displayregion { /** Bitfield that indicates which fields are set and should be * used. All other fields will maintain their current value. * \ref MMAL_DISPLAYSET_T defines the bits that can be * combined. */ u32 set; /** Describes the display output device, with 0 typically * being a directly connected LCD display. The actual values * will depend on the hardware. Code using hard-wired numbers * (e.g. 2) is certain to fail. */ u32 display_num; /** Indicates that we are using the full device screen area, * rather than a window of the display. If zero, then * dest_rect is used to specify a region of the display to * use. */ s32 fullscreen; /** Indicates any rotation or flipping used to map frames onto * the natural display orientation. */ u32 transform; /* enum mmal_parameter_displaytransform */ /** Where to display the frame within the screen, if * fullscreen is zero. */ struct vchiq_mmal_rect dest_rect; /** Indicates which area of the frame to display. If all * values are zero, the whole frame will be used. */ struct vchiq_mmal_rect src_rect; /** If set to non-zero, indicates that any display scaling * should disregard the aspect ratio of the frame region being * displayed. */ s32 noaspect; /** Indicates how the image should be scaled to fit the * display. \code MMAL_DISPLAY_MODE_FILL \endcode indicates * that the image should fill the screen by potentially * cropping the frames. Setting \code mode \endcode to \code * MMAL_DISPLAY_MODE_LETTERBOX \endcode indicates that all the * source region should be displayed and black bars added if * necessary. */ u32 mode; /* enum mmal_parameter_displaymode */ /** If non-zero, defines the width of a source pixel relative * to \code pixel_y \endcode. If zero, then pixels default to * being square. */ u32 pixel_x; /** If non-zero, defines the height of a source pixel relative * to \code pixel_x \endcode. If zero, then pixels default to * being square. */ u32 pixel_y; /** Sets the relative depth of the images, with greater values * being in front of smaller values. */ u32 layer; /** Set to non-zero to ensure copy protection is used on * output. */ s32 copyprotect_required; /** Level of opacity of the layer, where zero is fully * transparent and 255 is fully opaque. */ u32 alpha; }; #define MMAL_MAX_IMAGEFX_PARAMETERS 5 struct mmal_parameter_imagefx_parameters { enum mmal_parameter_imagefx effect; u32 num_effect_params; u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS]; }; #define MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS 4 #define MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES 2 #define MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN 16 struct mmal_parameter_camera_info_camera_t { u32 port_id; u32 max_width; u32 max_height; u32 lens_present; u8 camera_name[MMAL_PARAMETER_CAMERA_INFO_MAX_STR_LEN]; }; enum mmal_parameter_camera_info_flash_type_t { /* Make values explicit to ensure they match values in config ini */ MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_XENON = 0, MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_LED = 1, MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_OTHER = 2, MMAL_PARAMETER_CAMERA_INFO_FLASH_TYPE_MAX = 0x7FFFFFFF }; struct mmal_parameter_camera_info_flash_t { enum mmal_parameter_camera_info_flash_type_t flash_type; }; struct mmal_parameter_camera_info_t { u32 num_cameras; u32 num_flashes; struct mmal_parameter_camera_info_camera_t cameras[MMAL_PARAMETER_CAMERA_INFO_MAX_CAMERAS]; struct mmal_parameter_camera_info_flash_t flashes[MMAL_PARAMETER_CAMERA_INFO_MAX_FLASHES]; }; #endif