VIDEO_TRANSFER APIs
Important
The VIDEO_TRANSFER API v1.0 is the lastest stable VIDEO_TRANSFER APIs. All new applications should use VIDEO_TRANSFER API v1.0.
VIDEO_TRANSFER API Categories
Most of VIDEO_TRANSFER APIs can be categoried as:
VIDEO_TRANSFER APIs
The common APIs are prefixed with bk_video, e.g. bk_video_transfer_init() etc.
- VIDEO_TRANSFER APIs:
bk_video_transfer_init()- init video transferbk_video_transfer_deinit()- deinit video transferbk_video_buffer_open()- open video buffbk_video_buffer_close()- close video buffbk_video_buffer_read_frame()- read fix length video data
API Reference
Header File
Functions
-
bk_err_t bk_video_transfer_init(video_setup_t *setup_cfg)
video transfer init
This API will create video thread, init msg queue, and excute camera init
- Parameters
setup_cfg – configure of the video transfer include packet process, method of transfer, etc.
- Returns
kNoErr: succeed
others: other errors.
-
bk_err_t bk_video_transfer_deinit(void)
video transfer deinit
This API will quit video thread, and free all reasource
- Returns
kNoErr: succeed
others: other errors.
-
bk_err_t bk_video_buffer_open(void)
set video transfer param
This API will open video tranfer data_buffer, and star transfer
- Attention
1. when call this function, the video date will transfer to wifi(UDP/others)
- Returns
kNoErr: succeed
others: other errors.
-
bk_err_t bk_video_buffer_close(void)
set video buffer close
This API will deinit video tranfer, stop transfer video data
- Returns
kNoErr: succeed
others: other errors.
-
uint32_t bk_video_buffer_read_frame(uint8_t *buf, uint32_t buf_len, int *err_code, uint32_t timeout)
read video buffer frame
This API will malloc a data_buffer, and save video data to this buffer
- Parameters
buf – malloc buf pointer
buf_len – buf length
err_code –
0: success
1: param error
2: buffer full
3: frame data err
4: timeout
5: unknow err
timeout – read frame data timeout
- Returns
0: failed
other: frame_length.
API Typedefs
Header File
Structures
-
struct video_config_t
Public Members
-
uint8_t *rxbuf
the buffer save camera data
-
void (*node_full_handler)(void *curptr, uint32_t newlen, uint32_t is_eof, uint32_t frame_len)
node full handler
This is a transfer camera data to uplayer api, when transfer node_len jpeg data finish , this function will be called
- Param curptr
the start address of transfer data.
- Param newlen
the transfer data length
- Param is_eof
0/1: whether this packet data is the last packet of this frame, will called in jpeg_end_frame isr
- Param frame_len
the complete jpeg frame size, if is_eof=1, the frame_len is the true value of jpeg frame size, is_eof=0, the frame_len=0, in other words, only when transfer really frame_len at the last packet in jpeg_end_frame isr
-
void (*data_end_handler)(void)
brief data_end_handler
This api use to inforamte video transfer thread to deal transfer camera data
-
uint16_t rxbuf_len
The length of receiving camera data buff
-
uint16_t rx_read_len
manage the node_full_handler callback function input params
-
uint32_t node_len
video transfer network comunication protocol length a time
-
uint32_t sener_cfg
camera config, ppi[15-8], fps[7-0]
-
uint8_t *rxbuf
-
struct video_packet_t
-
struct video_setup_t
Public Members
-
uint16_t open_type
video transfer network comunication protocol type, video_open_type_t
-
uint16_t send_type
video transfer network comunication protocol type, video_send_type_t
-
video_transfer_send_func send_func
function ptr for send to uplayer
-
video_transfer_start_cb start_cb
function ptr for start to send to uplayer
-
video_transfer_start_cb end_cb
function ptr for end to send to uplayer
-
uint32_t pkt_header_size
packet header size
-
tvideo_add_pkt_header add_pkt_header
function ptr for add packet header
-
uint16_t open_type
-
struct video_header_t
-
struct video_buff_t
Public Members
-
beken_semaphore_t aready_semaphore
the video data receive complete
-
uint8_t *buf_base
the receive video data, malloc by user
-
uint32_t buf_len
video buff length, malloc by user
-
uint32_t frame_id
frame id
-
uint32_t frame_pkt_cnt
the packet count of one frame
-
uint8_t *buf_ptr
recoder the buff ptr of every time receive video packte
-
uint32_t frame_len
the length of receive one frame
-
uint32_t start_buf
video buff receive state
-
beken_semaphore_t aready_semaphore
Macros
-
PPI_POSI
replace ppi bit position, start bit 0
-
PPI_MASK
ppi occupy 8bits, bit[7-0]
-
FPS_POSI
replace fps bit position, start bit 8
-
FPS_MASK
fps occupy 8bits, bit[15-8]
-
CMPARAM_SET_PPI(p, x)
set ppi type to camera sensor
-
CMPARAM_GET_PPI(p)
get ppi type from camera sensor param
-
CMPARAM_SET_FPS(p, x)
set fps type to camera sensor
-
CMPARAM_GET_FPS(p)
get fps type from camera sensor param
Type Definitions
-
typedef void (*tvideo_add_pkt_header)(video_packet_t *param)
-
typedef int (*video_transfer_send_func)(uint8_t *data, uint32_t len)
-
typedef void (*video_transfer_start_cb)(void)
-
typedef void (*video_transfer_end_cb)(void)
Enumerations
-
enum ppi_type_t
camera image resolution type
Values:
-
enumerator QVGA_320_240
320*240
-
enumerator VGA_480_272
480*272
-
enumerator VGA_320_480
640*480
-
enumerator VGA_480_320
480*320
-
enumerator VGA_640_480
640*480
-
enumerator VGA_800_600
800*600
-
enumerator VGA_1280_720
1280*720
-
enumerator VGA_1600_1200
1600*1200
-
enumerator PPI_MAX
-
enumerator QVGA_320_240
-
enum fps_type_t
camera frame rate type
Values:
-
enumerator TYPE_5FPS
5fps
-
enumerator TYPE_10FPS
10fps
-
enumerator TYPE_15FPS
15fps
-
enumerator TYPE_20FPS
20fps
-
enumerator TYPE_25FPS
25fps
-
enumerator TYPE_30FPS
30fps
-
enumerator FPS_MAX
-
enumerator TYPE_5FPS
-
enum video_open_type_t
video sample module protocol type
Values:
-
enumerator TVIDEO_OPEN_NONE
not sample module
-
enumerator TVIDEO_OPEN_SCCB
sample module follow sccb protocol
-
enumerator TVIDEO_OPEN_SPIDMA
sample module follow spidma protocol
-
enumerator TVIDEO_OPEN_NONE
-
enum video_send_type_t
video transfer network comunication protocol type
Values:
-
enumerator TVIDEO_SND_NONE
not transfer
-
enumerator TVIDEO_SND_UDP
follow udp protocol
-
enumerator TVIDEO_SND_TCP
follow tcp protocol
-
enumerator TVIDEO_SND_INTF
transfer to inter frame
-
enumerator TVIDEO_SND_BUFFER
transfer to buffer
-
enumerator TVIDEO_SND_NONE