GK7205,Linux单系统。类似Hi3516芯片。
网络相机项目,通过TCP实现通信。
sensor 分辨率设置:
gk7205/demo/~PC030_Porting/source/gmp/modules/isp/user/sensor/gk7205v200/yx2m4u/yx2m4u_sensor_ctl.c
yx2m4u_init() // 配置sensor输入帧率等信息。
主gpio初始化:hi_gpio.c
gpio_init();
rtspd.c 接收TCP指令,控制设备。
[gk7205/demo/***PC030_Porting/sample/rtspser_v1.0.0.0_n7/rtspd.c]
main() 执行程序初始化;
__TCPSERVER_CALLBACK() 接收TCP指令,做相关相应。
cmd_respond_string() 通过socket,发送相应指令给对方。
rtspd_init() 流媒体模块初始化。
GetExpTime() 获取曝光时间,是开启的子线程。
rtp/rtp_h264.c
视频帧处理,找到关键帧,rtp发送出去。rtsp.h 网络视频流
config.ini 配置文件
[sample/rtspser_v1.0.0.0_n7/config/config.ini] 配置各种参数。
hi_gpio.c 初始化,给 GPIO1_5 设置输出,默认拉低(补光灯默认关闭)
mkapp 修改版本号。
rtspd.c 接手到TCP命令,做修改。
__TCPSERVER_CALLBACK UART-TXD
保存到config文件中,
ReadConfig_str(pstGlobalParam->confPath, "udp_addr", config_buff);
GLOBAL_PARAM_S* get_param_ctx(HI_VOID);
int init_default_param(GLOBAL_PARAM_S* pstGlobalParam);
int load_default_param(GLOBAL_PARAM_S* pstGlobalParam);
int change_default_param(GLOBAL_PARAM_S* pstGlobalParam);
项目主配置文件:
GKIPCLinuxV100R001C00SPC030_Porting/sample/appfs_priv/komod/config.ini
GKIPCLinuxV100R001C00SPC030_Porting/sample/rtspser_v1.0.0.0_n7/config/config.ini
// 后台线程调用。
pthread_t phd;
pthread_create(&phd, NULL, GetExpTime, NULL);
void* GetExpTime(void* arg)
{
ISP_EXP_INFO_S stIspExpInfo;
ISP_EXPOSURE_ATTR_S stExposureAttr;
while (1) {
HI_MPI_ISP_QueryExposureInfo(0, &stIspExpInfo);
HI_MPI_ISP_GetExposureAttr(0, &stExposureAttr);
#if 1
// if ((stIspExpInfo.u32ExpTime == 18) || (stIspExpInfo.u32ExpTime == 36)) {
if (stIspExpInfo.u32ExpTime < 40) {
// stExposureAttr.stAuto.u8Tolerance = 0; //曝光容忍度
// stExposureAttr.stAuto.u8Compensation = 0; // 目标亮度
stExposureAttr.stAuto.stExpTimeRange.u32Max = 18;
stExposureAttr.stAuto.stExpTimeRange.u32Min = 18;
if (stIspExpInfo.u32AGain > 8192) {
stExposureAttr.stAuto.stExpTimeRange.u32Max = 1940053;
stExposureAttr.stAuto.stExpTimeRange.u32Min = 18;
}
HI_MPI_ISP_SetExposureAttr(0, &stExposureAttr);
} else {
stExposureAttr.stAuto.stExpTimeRange.u32Max = 1940053;
stExposureAttr.stAuto.stExpTimeRange.u32Min = 18;
HI_MPI_ISP_SetExposureAttr(0, &stExposureAttr);
}
#endif
usleep(100 * 1000);
}
}
更改ip,netmask,gateway,tcp_port,黑白彩色切换; 新增特殊16进制指令:黑白彩色切换; 新增指令:分辨率帧率切换
yx2m4u_cmos.c
给sensor 配置fps,
yx2m4u_sensor_ctl.c
yx2m4u_init()--yx2m4u_i2c_init()
根据enWDRMode,u8ImgMode 做2m4u寄存器 初始化。
sample_comm_isp.c 配置ISP各个分辨率,帧率、宽动态
sample_comm_vi.c
sample_comm_vo.c
sample_comm_vpss.c
param_module.c 封装Config 配置参数读取/修改/写入/删除...
ch_param.c config中配置的参数读取,然后设置给pstGlobalParam->stCamCfg
config.ini
venc0_DstFrmRate=50
venc0_SrcFrmRate=50
venc0_Bitrate 比特率。