📄 codec_getdevparam.h
字号:
// read the file content line by line
// fgets() return when encounter enter
while (fgets(lineTemp, sizeof(lineTemp), file)!=NULL) {
if (lineTemp[strlen(lineTemp)-1]=='\n') lineTemp[strlen(lineTemp)-1] = '\0';
// string class: add "using namespace std" and include <string>
// member func: swap(),erase(),insert(),clear(),replace()...
line.erase(); // clear character string
line.insert(0, lineTemp); // insert character string on position index 0
// find function returns the index. If nothing's found, string::npos returned
if (line.find_first_not_of(" \t\n\r")==string::npos) continue; // skip ahead if line is empty
if (line[0]=='#') continue; // skip ahead if the line is a comment
API_ParseEntry(line,name,val); // use line informaton to splits up name and value
if (bPsFile || bEsFile) {
if (name=="vid_horizontal_size_value") {
sscanf(val.c_str(), "%d", &appparam->HResolu);
} else if (name=="vid_vertical_size_value") {
sscanf(val.c_str(), "%d", &appparam->VResolu);
} else if (name=="vid_bit_rate") {
sscanf(val.c_str(), "%d", &appparam->VidBitRate);
} else if (name=="vid_vbv_buffer_size") {
sscanf(val.c_str(), "%d", &appparam->VBVSize);
} else if (name=="vid_video_format") {
sscanf(val.c_str(), "%d", &appparam->VidFmt);
} else if (name=="vid_stream_type") {
sscanf(val.c_str(), "%d", &appparam->VidMpeg);
} else if (name=="aud_sampling_rate") {
sscanf(val.c_str(), "%d", &appparam->AudSamRate);
} else if (name=="aud_bit_rate") {
sscanf(val.c_str(), "%d", &appparam->AudBitRate);
} else if (name=="aud_mode") {
sscanf(val.c_str(), "%d", &appparam->AudChnMode);
} else {
continue;
}
} else {
if (name=="video_horizontal_size") {
sscanf(val.c_str(), "%d", &appparam->HResolu);
} else if (name=="video_vertical_size") {
sscanf(val.c_str(), "%d", &appparam->VResolu);
} else if (name=="video_bit_rate") {
sscanf(val.c_str(), "%d", &appparam->VidBitRate);
} else if (name=="video_vbv_buffer_size") {
sscanf(val.c_str(), "%d", &appparam->VBVSize);
} else if (name=="vid_video_format") {
sscanf(val.c_str(), "%d", &appparam->VidFmt);
} else if (name=="mux_mpeg_coding_standard") {
sscanf(val.c_str(), "%d", &appparam->VidMpeg);
} else if (name=="audio_sampling_rate") {
sscanf(val.c_str(), "%d", &appparam->AudSamRate);
} else if (name=="audio_bit_rate") {
sscanf(val.c_str(), "%d", &appparam->AudBitRate);
} else if (name=="audio_channel") {
sscanf(val.c_str(), "%d", &appparam->AudChnMode);
} else {
continue;
}
}
}
if (fclose(file)!=0) printf("Cannot close file\n");
return SUCCESS;
}
/** parse a given com config file */
int API_ParseComConfigFile(const char* filename, ComConfigStruct *pParam) {
printf("++API_ParseComConfigFile()\n");
FILE *file = fopen(filename, "r"); // open the config file
if (file==NULL) {
printf("Cannot find com config file: %s\n",filename);
return FAILURE;
}
ComConfigStruct *appparam = NULL;
appparam = pParam;
string line, name,val,valTemp1,valTemp2;
char lineTemp[8*1024];
// read the file content line by line
// fgets() return when encounter enter
while (fgets(lineTemp, sizeof(lineTemp), file)!=NULL) {
if (lineTemp[strlen(lineTemp)-1]=='\n') lineTemp[strlen(lineTemp)-1] = '\0';
// string class: add "using namespace std" and include <string>
// member func: swap(),erase(),insert(),clear(),replace()...
line.erase(); // clear character string
line.insert(0, lineTemp); // insert character string on position index 0
// find function returns the index. If nothing's found, string::npos returned
if (line.find_first_not_of(" \t\n\r")==string::npos) continue; // skip ahead if line is empty
if (line[0]=='#') continue; // skip ahead if the line is a comment
API_ParseEntry(line,name,val); // use line informaton to splits up name and value
if (name=="com1_baud_rate") {
sscanf(val.c_str(), "%d", &appparam->COM1.BaudRate);
} else if (name=="com1_parity_type") {
sscanf(val.c_str(), "%c", &appparam->COM1.ParityType);
} else if (name=="com1_data_bit") {
sscanf(val.c_str(), "%d", &appparam->COM1.DataBitLen);
} else if (name=="com1_stop_bit") {
sscanf(val.c_str(), "%d", &appparam->COM1.StopBitLen);
} else if (name=="com1_hard_flow_ctrl") {
appparam->COM1.bHardFlowCtrl=(val=="TRUE") || (val=="true");
} else if (name=="com1_soft_flow_ctrl") {
appparam->COM1.bSoftFlowCtrl=(val=="TRUE") || (val=="true");
} else if (name=="com2_baud_rate") {
sscanf(val.c_str(), "%d", &appparam->COM2.BaudRate);
} else if (name=="com2_parity_type") {
sscanf(val.c_str(), "%c", &appparam->COM2.ParityType);
} else if (name=="com2_data_bit") {
sscanf(val.c_str(), "%d", &appparam->COM2.DataBitLen);
} else if (name=="com2_stop_bit") {
sscanf(val.c_str(), "%d", &appparam->COM2.StopBitLen);
} else if (name=="com2_hard_flow_ctrl") {
appparam->COM2.bHardFlowCtrl=(val=="TRUE") || (val=="true");
} else if (name=="com2_soft_flow_ctrl") {
appparam->COM2.bSoftFlowCtrl=(val=="TRUE") || (val=="true");
} else if (name=="local_alarm_com") {
sscanf(val.c_str(), "%d", &appparam->LocalAlarmCom);
} else if (name=="com_remote_address") {
API_ParseColon (val,appparam->ComRemoteAddr.sIP,appparam->ComRemoteAddr.nPort);
} else {
continue;
}
}
if (fclose(file)!=0) printf("Cannot close com config file\n");
return SUCCESS;
}
/** get config info from config.ini
@pParam = pointer to Struct
@returen SUCCESS or FAILURE
*/
int CODEC_GetDevParam (LPVOID pParam) {
printf("++CODEC_GetDevParam()\n");
DevParamStruct *dev_param = (DevParamStruct *)pParam;
ConfigParamStruct cfg_param;
CodecParamStruct codec_param;
ComConfigStruct com_cfg;
int reval;
// initialization
API_InitDevParamStruct(dev_param);
API_InitConfigParamStruct(&cfg_param);
API_InitCodecParamStruct(&codec_param);
API_InitComConfigStruct(&com_cfg);
// get config param
reval = API_ParseConfigFile("./conf/config.ini", &cfg_param);
if(reval == FAILURE) {
printf("parse config file error, quiting...\n");
return FAILURE;
}
// get codec param
_MEDIA_TYPE_ media_type;
char filename[MAX_FILE_NAME_LEN];
media_type = cfg_param.MediaType;
if (MEDIA_VES == media_type) {
strcpy(filename,"./conf/codec_es.ini");
} else if (MEDIA_PS == media_type) {
strcpy(filename,"./conf/codec_ps.ini");
} else if (MEDIA_TS == media_type) {
strcpy(filename,"./conf/codec_ts.ini");
} else {
printf("CODEC_GetDevParam(): check media type unmatch\n");
return FAILURE;
}
reval = API_ParseCodecFile(filename, &codec_param);
if(reval == FAILURE) {
printf("parse codec file error, quiting...\n");
return FAILURE;
}
// get com config param
reval = API_ParseComConfigFile("./conf/config.ini", &com_cfg);
if(reval == FAILURE) {
printf("parse com config file error, quiting...\n");
return FAILURE;
}
// get device param
// config param
dev_param->DevType = cfg_param.DevType;
dev_param->DevID = cfg_param.DevID;
dev_param->MediaType = cfg_param.MediaType;
dev_param->TransProto = cfg_param.TransProto;
strcpy(dev_param->local_network_ipaddr ,cfg_param.local_network_ipaddr);
strcpy(dev_param->local_network_mask ,cfg_param.local_network_mask);
strcpy(dev_param->local_network_gateway,cfg_param.local_network_gateway);
dev_param->my_port = cfg_param.my_port;
memcpy(&(dev_param->server_address), (char *)&(cfg_param.server_address),sizeof(Net_Addr));
strcpy(dev_param->control_ipaddr, cfg_param.control_ipaddr);
dev_param->doMulticast = cfg_param.doMulticast;
memcpy(&(dev_param->multicast_address), (char *)&(cfg_param.multicast_address),sizeof(Net_Addr));
dev_param->doNetSend = cfg_param.doNetSend;
dev_param->iSendNum = cfg_param.iSendNum;
memcpy(&(dev_param->send_target_list), (char *)&(cfg_param.send_target_list), sizeof(cfg_param.send_target_list));
dev_param->doFileWrite = cfg_param.doFileWrite;
// video/audio param
dev_param->HResolu = codec_param.HResolu;
dev_param->VResolu = codec_param.VResolu;
dev_param->VidBitRate = codec_param.VidBitRate;
dev_param->VBVSize = codec_param.VBVSize;
dev_param->VidFmt = codec_param.VidFmt;
dev_param->VidMpeg = codec_param.VidMpeg;
dev_param->AudSamRate = codec_param.AudSamRate;
dev_param->AudBitRate = codec_param.AudBitRate;
dev_param->AudChnMode = codec_param.AudChnMode;
// com config param
dev_param->com1_baud_rate = com_cfg.COM1.BaudRate;
dev_param->com1_parity_type = com_cfg.COM1.ParityType;
dev_param->com1_data_bit = com_cfg.COM1.DataBitLen;
dev_param->com1_stop_bit = com_cfg.COM1.StopBitLen;
dev_param->com2_baud_rate = com_cfg.COM2.BaudRate;
dev_param->com2_parity_type = com_cfg.COM2.ParityType;
dev_param->com2_data_bit = com_cfg.COM2.DataBitLen;
dev_param->com2_stop_bit = com_cfg.COM2.StopBitLen;
dev_param->local_alarm_com = com_cfg.LocalAlarmCom;
memcpy(&(dev_param->com_remote_address), (char *)&(com_cfg.ComRemoteAddr), sizeof(Net_Addr));
return SUCCESS;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -