TuyaOS
tkl_video_enc.h
浏览该文件的文档.
1
12#ifndef __TKL_VIDEO_ENC_H__
13#define __TKL_VIDEO_ENC_H__
14
15#include "tuya_cloud_types.h"
16#include "tkl_video_in.h"
17
18#ifdef __cplusplus
19 extern "C" {
20#endif
21
22typedef enum
23{
24 TKL_VENC_0 = 0,
25 TKL_VENC_1,
26 TKL_VENC_2,
27 TKL_VENC_3,
28 TKL_VENC_4,
29 TKL_VENC_5,
30 TKL_VENC_6,
31 TKL_VENC_7,
32 TKL_VENC_MAX,
33}TKL_VENC_CHN_E;
34
35typedef enum
36{
37 TKL_VENC_MAIN = 0, // main stream
38 TKL_VENC_SUB, // sub stream
39 TKL_VENC_3RD, // 3rd stream
40 TKL_VENC_4TH, // 4th stream
41 TKL_VENC_SNAP, // snap
42 TKL_VENC_MD, // move detect
43 TKL_VENC_HD, // human detect
44 TKL_VENC_QR, // qrcode
45 TKL_VENC_TYPE_MAX,
46}TKL_VENC_TYPE_E; // stream work type
47
48typedef struct
49{
50 TKL_MEDIA_FRAME_TYPE_E frametype; // bitrate,kbps
51 TKL_MEDIA_CODEC_TYPE_E codectype; // codec type
52 CHAR_T *pbuf; // frame buffer
53 UINT_T buf_size; // buffer size
54 UINT_T used_size; // used buffer size
55 UINT_T width; // frame width
56 UINT_T height; // frame height
57 UINT64_T pts; // sdk pts
58 UINT64_T timestamp; // system utc time,unit: ms
59 UINT_T seq; // frame sequence number
60 UINT_T fragment; // frame sequence's fragment 第几个分包
61 BYTE_T seq_error; // frame sequence is error 这张图片是否错误
62 BYTE_T fragment_is_last; // frame sequence's fragment is last fragment
63}TKL_VENC_FRAME_T; // video frame
64
65typedef INT_T (*TKL_VENC_PUT_CB)(TKL_VENC_FRAME_T *pframe);
66
67typedef enum
68{
69 TKL_VENC_UPPER_REQUEST_FRAME = 0, // app get frame by using get frame function
70 TKL_VENC_PUSH_FRAME_BY_CALLBACK, // tkl push frame to app by callback when frame arrive
71}TKL_VENC_DATA_TRANS_MODE_E;
72
73typedef struct
74{
75 UINT_T enable; // 1,enable,0,disable
76 TKL_VENC_CHN_E chn; // video encode channel
77 TKL_VENC_TYPE_E type; // stream work type
78 TKL_MEDIA_CODEC_TYPE_E codectype; // codec type
79 UINT_T fps; // fps
80 UINT_T gop; // I Frame interval
81 UINT_T bitrate; // bitrate,kbps
82 UINT_T width;
83 UINT_T height;
84 UINT_T min_qp;
85 UINT_T max_qp;
86 TKL_VENC_DATA_TRANS_MODE_E trans_mode;
87 TKL_VENC_PUT_CB put_cb;
89
90typedef struct
91{
92 INT32_T enable;
93 INT32_T is_dls;
95
96typedef struct
97{
98 UINT32_T pool_buff_num;
99 UINT32_T pool_buff_size;
101
111OPERATE_RET tkl_venc_init(INT32_T vi_chn, TKL_VENC_CONFIG_T *pconfig, INT32_T count);
112
122OPERATE_RET tkl_venc_get_frame(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn, TKL_VENC_FRAME_T *pframe);
123
132OPERATE_RET tkl_venc_get_first_snap(TKL_VI_CHN_E vi_chn, TKL_VENC_FRAME_T *pframe);
133
143OPERATE_RET tkl_venc_set_osd(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn, TKL_VENC_OSD_T *posd);
144
154OPERATE_RET tkl_venc_set_video_stream_buffer(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn, TKL_VENC_STREAM_BUFF_T *parg);
155
164OPERATE_RET tkl_venc_start(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn);
165
174OPERATE_RET tkl_venc_stop( TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn);
175
183OPERATE_RET tkl_venc_uninit(TKL_VI_CHN_E vi_chn);
184
185#ifdef __cplusplus
186}
187#endif
188
189#endif
Definition: tkl_video_enc.h:74
Definition: tkl_video_enc.h:49
Definition: tkl_video_enc.h:91
Definition: tkl_video_enc.h:97
Definition: pbuf.h:186
OPERATE_RET tkl_venc_set_osd(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn, TKL_VENC_OSD_T *posd)
video encode set osd
OPERATE_RET tkl_venc_start(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn)
video encode start
OPERATE_RET tkl_venc_init(INT32_T vi_chn, TKL_VENC_CONFIG_T *pconfig, INT32_T count)
video encode init
OPERATE_RET tkl_venc_set_video_stream_buffer(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn, TKL_VENC_STREAM_BUFF_T *parg)
video encode stream buff pool set
OPERATE_RET tkl_venc_uninit(TKL_VI_CHN_E vi_chn)
video encode uninit
OPERATE_RET tkl_venc_get_first_snap(TKL_VI_CHN_E vi_chn, TKL_VENC_FRAME_T *pframe)
video first snap
OPERATE_RET tkl_venc_stop(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn)
video encode stop
OPERATE_RET tkl_venc_get_frame(TKL_VI_CHN_E vi_chn, TKL_VENC_CHN_E venc_chn, TKL_VENC_FRAME_T *pframe)
video encode get frame
video input