DVP_CAMERA APIs

[English]

重要

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 config

  • bk_dvp_camera_encode_config() - change encode image upper and lower size or close auto encode

  • dvp_camera_i2c_read_uint8() - master read dvp senor register value by byte

  • dvp_camera_i2c_read_uint16() - master read dvp senor register value by double byte

  • dvp_camera_i2c_read_uint8() - master write dvp senor register value by byte

  • dvp_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)
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.

1. you need make sure upper module exist.

参数

config – process for sensor data

返回

  • 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.

返回

  • 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

返回

  • 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

1. This api config ctrl by marco VIDEO_GPIO_CTRL_LDO_ENABLE

参数

enable – power up/down:1/0

返回

  • 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

1. This api return a pointer for dvp camera sensor config

返回

  • 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

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.

返回

  • BK_OK: succeed

  • others: other errors.

API Typedefs

Header File

Structures

struct dvp_camera_config_t

dvp_camera config

Public Members

int (*fb_jpeg_init)(media_ppi_t max_ppi)

init jpeg psram buffer

int (*fb_jpeg_deinit)(void)

deinit jpeg psram buffer

int (*fb_display_init)(media_ppi_t max_ppi)

init yuv psram buffer

int (*fb_display_deinit)(void)

deinit yuv psram buffer

void (*fb_jpeg_complete)(frame_buffer_t *buffer)

dvp notify upper layer a complete frame ready

frame_buffer_t *(*fb_jpeg_malloc)(void)

malloc jpeg psram buffer

frame_buffer_t *(*fb_display_malloc)(void)

malloc yuv psram buffer

int (*fb_h264_init)(media_ppi_t max_ppi)

init h264 psram buffer

int (*fb_h264_deinit)(void)

deinit h264 psram buffer

void (*fb_h264_complete)(frame_buffer_t *buffer)

dvp notify upper layer a complete frame ready

frame_buffer_t *(*fb_h264_malloc)(void)

malloc h264 psram buffer

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

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