DVP_CAMERA APIs
Important
The DVP_CAMERA API v1.0 is the lastest stable DVP_CAMERA APIs. All new applications should use DVP_CAMERA API v1.0.
DVP_CAMERA Interface
Current software version support two types dvp sensor: gc0328c and hm1055. they are comunicate by i2c with chip. gc0328c have 20pins interface, hm1055 have 24pins interface.
gc0328c support different image resolution and frame rate: 1. WQVGA(480*272) 2. QVGA(320*240) 3. VGA(640*480) frame rate: 5fps/10fps/20fps/25fps
hm1055 only support 720p(1280*720) image resolution, and different frame rates: 5fps/15fps/20fps
DVP_CAMERA API Categories
Most of DVP_CAMERA APIs can be categoried as:
DVP_CAMERA APIs
The common APIs are prefixed with bk_camera, e.g. bk_camera_driver_init() etc.
- DVP_CAMERA APIs:
bk_dvp_camera_driver_init()
- init dvp camera(power on sensor, begin to sample image)bk_dvp_camera_driver_deinit()
- deinit dvp camera(power off sensor)bk_dvp_camera_get_device()
- get current dvp dendor configbk_dvp_camera_encode_config()
- change encode image upper and lower size or close auto encodedvp_camera_i2c_read_uint8()
- master read dvp senor register value by bytedvp_camera_i2c_read_uint16()
- master read dvp senor register value by double bytedvp_camera_i2c_read_uint8()
- master write dvp senor register value by bytedvp_camera_i2c_write_uint16()
- master write dvp senor register value by double byte
API Reference
Header File
Functions
-
const dvp_sensor_config_t **get_sensor_config_devices_list(void)
-
int get_sensor_config_devices_num(void)
-
const dvp_sensor_config_t *get_sensor_config_interface_by_id(sensor_id_t id)
-
void bk_dvp_camera_set_devices_list(const dvp_sensor_config_t **list, uint16_t size)
This API set dvp camera device list.
- Returns
void
-
const dvp_sensor_config_t *bk_dvp_camera_enumerate(void)
enumerate dvp camera
This API will auto detect dvp sensor, and init sensor, i2c module, psram, dma, ect.
@attation 1. bk_dvp_camera_driver_init api include bk_dvp_camera_enumerate function
- Parameters
config – process for sensor data
- Returns
dvp_sensor_config: sensor ptr
NULL: not found
-
bk_err_t bk_dvp_camera_driver_init(dvp_camera_config_t *config)
Init the camera.
This API will auto detect dvp sensor, and init sensor, jpeg module, i2c module, psram, dma, ect.
@attation 1. you need make sure upper module exist.
- Parameters
config – process for sensor data
- Returns
kNoErr: succeed
others: other errors.
-
bk_err_t bk_dvp_camera_driver_deinit(void)
Deinit the camera.
This API will deinit sensor, jpeg module, i2c module, psram, dma, ect.
- Returns
kNoErr: succeed
others: other errors.
-
media_camera_device_t *bk_dvp_camera_get_device(void)
Get current use camera.
This API will called after bk_dvp_camera_driver_init
- Returns
dvp_camera_device_t *: succeed
NULL: current no sensor work.
-
bk_err_t bk_dvp_camera_power_enable(uint8_t enable)
dvp power on
This API called by user, before calling bk_dvp_driver_init, you should power on dvp
@attation 1. This api config ctrl by marco VIDEO_GPIO_CTRL_LDO_ENABLE
- Parameters
enable – power up/down:1/0
- Returns
BK_OK: succeed
others: other errors.
-
const dvp_sensor_config_t *bk_dvp_get_sensor_auto_detect(void)
auto detect dvp camera
This API called by user, before use dvp camera
@attation 1. This api return a pointer for dvp camera sensor config
- Returns
get current dvp config(type)
return NULL
-
bk_err_t bk_dvp_camera_free_encode_mem(void)
free encode mem
This API called by user, once call this api, will free malloc sram for jpeg enc or h264 encode
@attation 1. This api only effect in camera is not working, and call this api when you do not use dvp again, if you want use again, you maybe malloc encode mem success.
- Returns
BK_OK: succeed
others: other errors.
-
bk_err_t bk_dvp_camera_h264_regenerate_idr_frame(void)
regenerate idr frame
This API called by user, once call this api, will regenerate idr frame
@attation 1. This api only effect in camera is working, and work in h264 mode or h264&yuv mode,
- Returns
BK_OK: succeed
others: other errors.
API Typedefs
Header File
Structures
-
struct dvp_camera_config_t
dvp_camera config
Public Members
-
int (*fb_init)(fb_type_t type)
init frame buffer
-
int (*fb_deinit)(fb_type_t type)
deinit frame buffer
-
void (*fb_clear)(fb_type_t type)
clear frame buffer
-
void (*fb_complete)(frame_buffer_t *buffer)
dvp notify upper layer a complete frame ready
-
frame_buffer_t *(*fb_malloc)(fb_type_t type, uint32_t size)
malloc jpeg psram buffer
-
int (*fb_init)(fb_type_t type)
-
struct dvp_sensor_config_t
dvp sensor configure
Public Members
-
char *name
sensor name
-
media_ppi_t def_ppi
sensor default resolution
-
frame_fps_t def_fps
sensor default fps
-
mclk_freq_t clk
sensor work clk in config fps and ppi
-
pixel_format_t fmt
sensor input data format
-
sync_level_t vsync
sensor vsync active level
-
sync_level_t hsync
sensor hsync active level
-
uint16_t id
sensor type, sensor_id_t
-
uint16_t address
sensor write register address by i2c
-
uint16_t fps_cap
sensor support fps
-
uint16_t ppi_cap
sensor support resoultions
-
bool (*detect)(void)
auto detect used dvp sensor
-
int (*init)(void)
init dvp sensor
-
int (*set_ppi)(media_ppi_t ppi)
set resolution of sensor
-
int (*set_fps)(frame_fps_t fps)
set fps of sensor
-
int (*power_down)(void)
power down or reset of sensor
-
int (*dump_register)(media_ppi_t ppi)
dump sensor register
-
void (*read_register)(bool enable)
read sensor register when write
-
char *name
Macros
-
GC_QVGA_USE_SUBSAMPLE
Enumerations
-
enum sensor_id_t
dvp sensor id type
Values:
-
enumerator ID_UNKNOW
-
enumerator ID_PAS6329
-
enumerator ID_OV7670
-
enumerator ID_PAS6375
-
enumerator ID_GC0328C
-
enumerator ID_BF2013
-
enumerator ID_GC0308C
-
enumerator ID_HM1055
-
enumerator ID_GC2145
-
enumerator ID_OV2640
-
enumerator ID_GC0308
-
enumerator ID_TVP5150
-
enumerator ID_SC101
-
enumerator ID_UNKNOW