最終更新:2017-04-05 (水) 06:32:29 (2577d)  

cam_capability_t
Top / cam_capability_t

capability struct definition for HAL 1

http://tools.oesf.biz/android-7.0.0_r1.0/xref/device/lge/bullhead/camera/QCamera2/stack/common/cam_intf.h#411

gCamCapability?

メモ

  • cam_capability_t.fps_ranges_tbl?

構造体

  • /* capability struct definition for HAL 1*/
    typedef struct{
        cam_hal_version_t version;
    
        cam_position_t position;                                /* sensor position: front, back */
    
        uint8_t auto_hdr_supported;
    
        uint16_t isWnrSupported;
        /* supported iso modes */
        size_t supported_iso_modes_cnt;
        cam_iso_mode_type supported_iso_modes[CAM_ISO_MODE_MAX];
    
        /* supported flash modes */
        size_t supported_flash_modes_cnt;
        cam_flash_mode_t supported_flash_modes[CAM_FLASH_MODE_MAX];
    
        size_t zoom_ratio_tbl_cnt;                              /* table size for zoom ratios */
        uint32_t zoom_ratio_tbl[MAX_ZOOMS_CNT];                 /* zoom ratios table */
    
        /* supported effect modes */
        size_t supported_effects_cnt;
        cam_effect_mode_type supported_effects[CAM_EFFECT_MODE_MAX];
    
        /* supported scene modes */
        size_t supported_scene_modes_cnt;
        cam_scene_mode_type supported_scene_modes[CAM_SCENE_MODE_MAX];
    
        /* supported auto exposure modes */
        size_t supported_aec_modes_cnt;
        cam_auto_exposure_mode_type supported_aec_modes[CAM_AEC_MODE_MAX];
    
        size_t fps_ranges_tbl_cnt;                              /* fps ranges table size */
        cam_fps_range_t fps_ranges_tbl[MAX_SIZES_CNT];          /* fps ranges table */
    
        /* supported antibanding modes */
        size_t supported_antibandings_cnt;
        cam_antibanding_mode_type supported_antibandings[CAM_ANTIBANDING_MODE_MAX];
    
        /* supported white balance modes */
        size_t supported_white_balances_cnt;
        cam_wb_mode_type supported_white_balances[CAM_WB_MODE_MAX];
    
        /* supported manual wb cct */
        int32_t min_wb_cct;
        int32_t max_wb_cct;
    
        /* supported manual wb rgb gains */
        float min_wb_gain;
        float max_wb_gain;
    
        /* supported focus modes */
        size_t supported_focus_modes_cnt;
        cam_focus_mode_type supported_focus_modes[CAM_FOCUS_MODE_MAX];
    
        /* supported manual focus position */
        float min_focus_pos[CAM_MANUAL_FOCUS_MODE_MAX];
        float max_focus_pos[CAM_MANUAL_FOCUS_MODE_MAX];
    
        int32_t exposure_compensation_min;       /* min value of exposure compensation index */
        int32_t exposure_compensation_max;       /* max value of exposure compensation index */
        int32_t exposure_compensation_default;   /* default value of exposure compensation index */
        float exposure_compensation_step;
        cam_rational_type_t exp_compensation_step;    /* exposure compensation step value */
    
        uint8_t video_stablization_supported; /* flag id video stablization is supported */
    
        size_t picture_sizes_tbl_cnt;                           /* picture sizes table size */
        cam_dimension_t picture_sizes_tbl[MAX_SIZES_CNT];       /* picture sizes table */
        /* The minimum frame duration that is supported for each
         * resolution in availableProcessedSizes. Should correspond
         * to the frame duration when only that processed stream
         * is active, with all processing set to FAST */
        int64_t picture_min_duration[MAX_SIZES_CNT];
    
        /* capabilities specific to HAL 1 */
    
        int32_t modes_supported;                                /* mask of modes supported: 2D, 3D */
        uint32_t sensor_mount_angle;                            /* sensor mount angle */
    
        float focal_length;                                     /* focal length */
        float hor_view_angle;                                   /* horizontal view angle */
        float ver_view_angle;                                   /* vertical view angle */
    
        size_t preview_sizes_tbl_cnt;                           /* preview sizes table size */
        cam_dimension_t preview_sizes_tbl[MAX_SIZES_CNT];       /* preiew sizes table */
    
        size_t video_sizes_tbl_cnt;                             /* video sizes table size */
        cam_dimension_t video_sizes_tbl[MAX_SIZES_CNT];         /* video sizes table */
    
    
        size_t livesnapshot_sizes_tbl_cnt;                      /* livesnapshot sizes table size */
        cam_dimension_t livesnapshot_sizes_tbl[MAX_SIZES_CNT];  /* livesnapshot sizes table */
    
        size_t hfr_tbl_cnt;                                     /* table size for HFR */
        cam_hfr_info_t hfr_tbl[CAM_HFR_MODE_MAX];               /* HFR table */
    
        /* supported preview formats */
        size_t supported_preview_fmt_cnt;
        cam_format_t supported_preview_fmts[CAM_FORMAT_MAX];
    
        /* supported picture formats */
        size_t supported_picture_fmt_cnt;
        cam_format_t supported_picture_fmts[CAM_FORMAT_MAX];
    
        uint8_t max_downscale_factor;
    
        /* dimension and supported output format of raw dump from camif */
        size_t supported_raw_dim_cnt;
        cam_dimension_t raw_dim[MAX_SIZES_CNT];
        size_t supported_raw_fmt_cnt;
        cam_format_t supported_raw_fmts[CAM_FORMAT_MAX];
        /* The minimum frame duration that is supported for above
           raw resolution */
        int64_t raw_min_duration[MAX_SIZES_CNT];
    
        /* 3A version*/
        cam_q3a_version_t q3a_version;
        /* supported focus algorithms */
        size_t supported_focus_algos_cnt;
        cam_focus_algorithm_type supported_focus_algos[CAM_FOCUS_ALGO_MAX];
    
    
        uint8_t auto_wb_lock_supported;       /* flag if auto white balance lock is supported */
        uint8_t zoom_supported;               /* flag if zoom is supported */
        uint8_t smooth_zoom_supported;        /* flag if smooth zoom is supported */
        uint8_t auto_exposure_lock_supported; /* flag if auto exposure lock is supported */
        uint8_t video_snapshot_supported;     /* flag if video snapshot is supported */
    
        uint8_t max_num_roi;                  /* max number of roi can be detected */
        uint8_t max_num_focus_areas;          /* max num of focus areas */
        uint8_t max_num_metering_areas;       /* max num opf metering areas */
        uint8_t max_zoom_step;                /* max zoom step value */
    
        /* QCOM specific control */
        cam_control_range_t brightness_ctrl;  /* brightness */
        cam_control_range_t sharpness_ctrl;   /* sharpness */
        cam_control_range_t contrast_ctrl;    /* contrast */
        cam_control_range_t saturation_ctrl;  /* saturation */
        cam_control_range_t sce_ctrl;         /* skintone enhancement factor */
    
        /* QCOM HDR specific control. Indicates number of frames and exposure needs for the frames */
        cam_hdr_bracketing_info_t hdr_bracketing_setting;
    
        uint32_t qcom_supported_feature_mask; /* mask of qcom specific features supported:
                                               * such as CAM_QCOM_FEATURE_SUPPORTED_FACE_DETECTION*/
        cam_padding_info_t padding_info;      /* padding information from PP */
        uint32_t min_num_pp_bufs;             /* minimum number of buffers needed by postproc module */
        uint32_t min_required_pp_mask;        /* min required pp feature masks for ZSL.
                                               * depends on hardware limitation, i.e. for 8974,
                                               * sharpness is required for all ZSL snapshot frames */
        cam_format_t rdi_mode_stream_fmt;  /* stream format supported in rdi mode */
    
        /* capabilities specific to HAL 3 */
    
        float min_focus_distance;
        float hyper_focal_distance;
    
        float focal_lengths[CAM_FOCAL_LENGTHS_MAX];
        uint8_t focal_lengths_count;
    
        /* Needs to be regular f number instead of APEX */
        float apertures[CAM_APERTURES_MAX];
        uint8_t apertures_count;
    
        float filter_densities[CAM_FILTER_DENSITIES_MAX];
        uint8_t filter_densities_count;
    
        uint8_t optical_stab_modes[CAM_OPT_STAB_MAX];
        uint8_t optical_stab_modes_count;
    
        cam_dimension_t lens_shading_map_size;
        float lens_shading_map[3 * CAM_MAX_MAP_WIDTH *
                  CAM_MAX_MAP_HEIGHT];
    
        cam_dimension_t geo_correction_map_size;
        float geo_correction_map[2 * 3 * CAM_MAX_MAP_WIDTH *
                  CAM_MAX_MAP_HEIGHT];
    
        float lens_position[3];
    
        /* nano seconds */
        int64_t exposure_time_range[EXPOSURE_TIME_RANGE_CNT];
    
        /* nano seconds */
        int64_t max_frame_duration;
    
        cam_color_filter_arrangement_t color_arrangement;
        uint8_t num_color_channels;
    
        /* parameters required to calculate S and O co-efficients */
        double gradient_S;
        double offset_S;
        double gradient_O;
        double offset_O;
    
        float sensor_physical_size[SENSOR_PHYSICAL_SIZE_CNT];
    
        /* Dimensions of full pixel array, possibly including
           black calibration pixels */
        cam_dimension_t pixel_array_size;
        /* Area of raw data which corresponds to only active
           pixels; smaller or equal to pixelArraySize. */
        cam_rect_t active_array_size;
    
        /* Maximum raw value output by sensor */
        int32_t white_level;
    
        /* A fixed black level offset for each of the Bayer
           mosaic channels */
        int32_t black_level_pattern[BLACK_LEVEL_PATTERN_CNT];
    
        /* Time taken before flash can fire again in nano secs */
        int64_t flash_charge_duration;
    
        /* flash firing power */
        size_t supported_flash_firing_level_cnt;
        cam_format_t supported_firing_levels[CAM_FLASH_FIRING_LEVEL_MAX];
    
        /* Flash Firing Time */
        int64_t flash_firing_time;
    
        /* Flash Ciolor Temperature */
        uint8_t flash_color_temp;
    
        /* Flash max Energy */
        uint8_t flash_max_energy;
    
        /* Maximum number of supported points in the tonemap
           curve */
        int32_t max_tone_map_curve_points;
    
        /* supported formats */
        size_t supported_scalar_format_cnt;
        cam_format_t supported_scalar_fmts[CAM_FORMAT_MAX];
    
        uint32_t max_face_detection_count;
        uint8_t hw_analysis_supported;
    
        uint8_t histogram_supported;
        /* Number of histogram buckets supported */
        int32_t histogram_size;
        /* Maximum value possible for a histogram bucket */
        int32_t max_histogram_count;
    
        cam_dimension_t sharpness_map_size;
    
        /* Maximum value possible for a sharpness map region */
        int32_t max_sharpness_map_value;
    
        /*Autoexposure modes for camera 3 api*/
        size_t supported_ae_modes_cnt;
        cam_ae_mode_type supported_ae_modes[CAM_AE_MODE_MAX];
    
    
        cam_sensitivity_range_t sensitivity_range;
        int32_t max_analog_sensitivity;
    
        /* picture sizes need scale*/
        cam_scene_mode_overrides_t scene_mode_overrides[CAM_SCENE_MODE_MAX];
        size_t scale_picture_sizes_cnt;
        cam_dimension_t scale_picture_sizes[MAX_SCALE_SIZES_CNT];
    
        uint8_t flash_available;
    
        cam_rational_type_t base_gain_factor;    /* sensor base gain factor */
        /* AF Bracketing info */
        cam_af_bracketing_t  ubifocus_af_bracketing_need;
        cam_af_bracketing_t  refocus_af_bracketing_need;
        /* opti Zoom info */
        cam_opti_zoom_t      opti_zoom_settings_need;
        /* still more info */
        cam_still_more_t  stillmore_settings_need;
        /* chroma flash info */
        cam_chroma_flash_t chroma_flash_settings_need;
    
        cam_rational_type_t forward_matrix[3][3];
        cam_rational_type_t color_transform[3][3];
    
        uint8_t focus_dist_calibrated;
        uint8_t supported_test_pattern_modes_cnt;
        cam_test_pattern_mode_t supported_test_pattern_modes[MAX_TEST_PATTERN_CNT];
    
        int64_t stall_durations[MAX_SIZES_CNT];
    
        cam_illuminat_t reference_illuminant1;
        cam_illuminat_t reference_illuminant2;
    
        int64_t jpeg_stall_durations[MAX_SIZES_CNT];
        int64_t raw16_stall_durations[MAX_SIZES_CNT];
        cam_rational_type_t forward_matrix1[FORWARD_MATRIX_ROWS][FORWARD_MATRIX_COLS];
        cam_rational_type_t forward_matrix2[FORWARD_MATRIX_ROWS][FORWARD_MATRIX_COLS];
        cam_rational_type_t color_transform1[COLOR_TRANSFORM_ROWS][COLOR_TRANSFORM_COLS];
        cam_rational_type_t color_transform2[COLOR_TRANSFORM_ROWS][COLOR_TRANSFORM_COLS];
        cam_rational_type_t calibration_transform1[CAL_TRANSFORM_ROWS][CAL_TRANSFORM_COLS];
        cam_rational_type_t calibration_transform2[CAL_TRANSFORM_ROWS][CAL_TRANSFORM_COLS];
        uint16_t isCacSupported;
    
        cam_opaque_raw_format_t opaque_raw_fmt;
    
        /* true Portrait info */
        cam_true_portrait_t  true_portrait_settings_need;
    
        /* Sensor type information */
        cam_sensor_type_t sensor_type;
    
        cam_aberration_mode_t aberration_modes[CAM_COLOR_CORRECTION_ABERRATION_MAX];
        uint32_t aberration_modes_count;
    
        /* Can the sensor timestamp be compared to
         * timestamps from other sub-systems (gyro, accelerometer etc.) */
        uint8_t isTimestampCalibrated;
    
        /* Analysis stream max supported size */
        cam_dimension_t analysis_max_res;
        /* Analysis stream padding info */
        cam_padding_info_t analysis_padding_info;
        /* Max size supported by ISP viewfinder path */
        cam_dimension_t max_viewfinder_size;
    
        /* Analysis recommended size */
        cam_dimension_t analysis_recommended_res;
    
        /* Analysis recommended format */
        cam_format_t analysis_recommended_format;
    
        /* This is set to 'true' if sensor cannot guarantee per frame control */
        /* Default value of this capability is 'false' indicating per-frame */
        /* control is supported */
        uint8_t no_per_frame_control_support;
    
        /* EIS information */
        uint8_t supported_is_types_cnt;
        uint32_t supported_is_types[IS_TYPE_MAX];
        /*for each type, specify the margin needed. Margin will be
          the decimal representation of a percentage
          ex: 10% margin = 0.1 */
        float supported_is_type_margins[IS_TYPE_MAX];
    
        /* Max cpp batch size */
        uint8_t max_batch_bufs_supported;
        uint8_t flash_dev_name[QCAMERA_MAX_FILEPATH_LENGTH];
        uint8_t eeprom_version_info[MAX_EEPROM_VERSION_INFO_LEN];
    
        /* maximum pixel bandwidth shared between cameras */
        uint64_t max_pixel_bandwidth;
    
        /* Array of K integers, where K%4==0,
          as a list of rectangles in the pixelArray co-ord system
          left, top, right, bottom */
        int32_t optical_black_regions[MAX_OPTICAL_BLACK_REGIONS * 4];
        /* Count is K/4 */
        uint8_t optical_black_region_count;
    
    } cam_capability_t;