forked from feihengli/util
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsal_av.h
202 lines (174 loc) · 4.29 KB
/
sal_av.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#ifndef __SAL_AV_H__
#define __SAL_AV_H__
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif
#include "sal_standard.h"
typedef enum SAL_BITRATE_CONTROL_E
{
SAL_BITRATE_CONTROL_CBR = 0,
SAL_BITRATE_CONTROL_VBR = 1,
SAL_BITRATE_CONTROL_BUTT,
}SAL_BITRATE_CONTROL_E;
typedef struct sal_stream_s
{
int enable;
int height;
int width;
int framerate;
int bitrate; //kbps
int gop;
SAL_BITRATE_CONTROL_E bitrate_ctl;
}sal_stream_s;
typedef struct sal_video_qp_s
{
int min_qp;
int max_qp;
int min_i_qp;
}sal_video_qp_s;
/*
函 数 名: sal_video_frame_cb
功能描述: 视频帧回调函数
输入参数: 无
输出参数: stream 流id
pts 时间戳(us) 绝对时间
frame 视频帧
len 帧大小
key 关键帧标志
返 回 值: 成功返回0,失败返回小于0
*/
typedef int (*sal_video_frame_cb)(int stream, char *frame, unsigned long len, int key, double pts);
typedef struct sal_video_s
{
sal_stream_s stream[2];
sal_video_frame_cb cb;
int rotate; // 0-->none, 1-->90 degree rotation
}sal_video_s;
/*
函 数 名: sal_sys_init
功能描述: 初始化dsp系统资源
输入参数: video 视频配置
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_sys_init(sal_video_s* video);
/*
函 数 名: sal_sys_exit
功能描述: dsp系统退出,释放资源
输入参数: 无
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_sys_exit(void);
/*
函 数 名: sal_sys_version
功能描述: 获取MPP版本信息,以及libipc.so的版本信息
输入参数: buffer 传入buffer
len 传入buffer的长度,若buffer小于所需大小,返回失败
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_sys_version(char* buffer, int len);
/*
函 数 名: sal_video_force_idr
功能描述: 强制I帧
输入参数: stream 码流id
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_force_idr(int stream);
/*
函 数 名: sal_video_mirror_set
功能描述: 设置水平翻转
输入参数: enable 使能标志
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_mirror_set(int enable);
/*
函 数 名: sal_video_flip_set
功能描述: 设置垂直翻转
输入参数: enable 使能标志
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_flip_set(int enable);
/*
函 数 名: sal_video_vi_framerate_set
功能描述: 设置VI帧率
输入参数: framerate 帧率
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_vi_framerate_set(int framerate);
/*
函 数 名 : sal_video_framerate_set
功能描述: 设置编码帧率
输入参数: stream 码流id
framerate VENC帧率
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_framerate_set(int stream, int framerate);
/*
函 数 名: sal_video_bitrate_set
功能描述: 设置码率
输入参数: stream 码流id
bitrate_ctl 定码率或变码率
bitrate 码率 kbps
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_bitrate_set(int stream, SAL_BITRATE_CONTROL_E bitrate_ctl, int bitrate);
/*
函 数 名: sal_video_gop_set
功能描述: 设置GOP
输入参数: stream 码流id
gop I帧间隔 一般设为帧率的整数倍
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_gop_set(int stream, int gop);
/*
函 数 名: sal_video_args_get
功能描述: 获取视频流信息
输入参数: stream 码流id
输出参数: video 视频流信息
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_args_get(int stream, sal_stream_s* video);
/*
函 数 名: sal_video_cbr_qp_set
功能描述: 设置CBR模式下的QP
输入参数: stream 码流id
qp_args QP相关参数
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_cbr_qp_set(int stream, sal_video_qp_s* qp_args);
/*
函 数 名: sal_video_cbr_qp_get
功能描述: 获取CBR模式下的QP
输入参数: stream 码流id
输出参数: qp_args QP相关参数
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_cbr_qp_get(int stream, sal_video_qp_s* qp_args);
/*
函 数 名: sal_video_lbr_set
功能描述: 设置码率 供内部lbr模块使用,以辨别用户的CBR和LBR使用的CBR
输入参数: stream 码流id
bitrate_ctl 定码率或变码率
bitrate 码率 kbps
输出参数: 无
返 回 值: 成功返回0,失败返回小于0
*/
int sal_video_lbr_set(int stream, SAL_BITRATE_CONTROL_E bitrate_ctl, int bitrate);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif