⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pthread_setup.c

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 C
📖 第 1 页 / 共 5 页
字号:
}RETURN setup_password(SETUP_OBJECT *pso){	UNS16	ii, jj;		S8		temp[8];		PTHREAD_BUF		signal;		MENU_FONT_t 	*mft;		/* numeric table list for key input */	UNS16 			key_table_list[] = { NUMBER0,NUMBER1,NUMBER2,NUMBER3,NUMBER4,NUMBER5,NUMBER6,NUMBER7,NUMBER8,NUMBER9};	S32          		num_end;	static S32 		num_start;	static UNS16		in_passwd;	BOOL             	pass = FALSE;		mft = setup_menu_font[pso->cur_id];		/* maximum password digit */	num_end = 4;		switch (pso->sig_value) {		case NUMBER0:		case NUMBER1:		case NUMBER2:		case NUMBER3:		case NUMBER4:		case NUMBER5:		case NUMBER6:		case NUMBER7:		case NUMBER8:		case NUMBER9:			for(ii=0; ii < 10; ii++) 				if(key_table_list[ii] == pso->sig_value) 					break;						/* store password */			in_passwd |= (ii << (12 - 4 * num_start));			mft[pso->cur_loc].str[0] = '*';			num_start++;						if(num_start >= num_end) {				num_start = 0;				if (pso->cur_loc == 5) { /* system password compare */					pso->cur_loc = setup_menu_active[pso->cur_id].start;					if(pso->param->sys.password[0].value == in_passwd) {  /* valid password ( only user 1 password ) */						pso->cur_id = SETUP_MAIN; 	 					pso->next_id = SETUP_GLOBAL_PARAM; 	 					pso->create_menu = 1;									pass = TRUE;					} 										for(jj=0; jj < num_end; jj++) {						mft[pso->cur_loc + jj].str[0] = '-';						pso->osd_loc = pso->cur_loc+ jj;						mft[pso->osd_loc].color = WHITE;						mft[pso->osd_loc].attribute = NORMAL;										setup_update_osd(pso);					}					in_passwd = 0;					if(pass)						return SUCCESS;				}			}			pso->osd_loc = pso->cur_loc;			mft[pso->osd_loc].color = YELLOW;			mft[pso->osd_loc].attribute = BLINK;							setup_update_osd(pso);			if(num_start)				pso->cur_loc++;						break;		case SUB_MINUS : 			in_passwd = 0;			num_start = 0;			/* restore menu table value */			for(ii=0; ii < num_end; ii++) {				mft[2 + ii].str[0] = '-';				mft[2 + ii].color = WHITE;				mft[2 + ii].attribute = NORMAL;							} 			/* display on live monitoring */			signal.start_id = PTHREAD_SETUP;			signal.m_value = SIGNAL_0;						if (pthread_send_signal(&signal, PTHREAD_LIVE) == FALSE) {				m_ERROR("pthread_setup.c:error: In function 'pthread_send_signal'\n");			}						return ENDING;		default :			break;	}	return SUCCESS;}RETURN setup_main(SETUP_OBJECT *pso){	UNS16	ii;	PTHREAD_BUF		signal;		MENU_FONT_t 	*mft;		MENU_ACTIVE_ITEM_t	*location_cur; 		switch (pso->sig_value) {		case UP :			if (pso->cur_loc >= 2) {				setup_select_menu(pso, -1);						}			break;		case DOWN :			if (pso->cur_loc <= 2) {				setup_select_menu(pso, 1);						}			break;		case SEL :			if (pso->cur_loc == 1) {				pso->next_id = SETUP_GLOBAL_PARAM;			} else if (pso->cur_loc == 2) {				pso->next_id = SETUP_ENCODER_PARAM;			} else if (pso->cur_loc == 3) {				pso->next_id = SETUP_SYSTEM_PARAM;			}					location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = pso->cur_loc;						pso->cur_id = pso->next_id; 			pso->prev_id = pso->cur_id;			pso->create_menu = 1;					break;		case SUB_MINUS : 			/* return to start position */			location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = 1;									/* display on live monitoring */			signal.start_id = PTHREAD_SETUP;			signal.m_value = SIGNAL_0;						if (pthread_send_signal(&signal, PTHREAD_LIVE) == FALSE) {				m_ERROR("pthread_setup.c:error: In function 'pthread_send_signal'\n");			}						return ENDING;		default :			break;	}	return SUCCESS;}RETURN setup_global_param(SETUP_OBJECT *pso){	UNS16	                        ii;	UNS16	                        start, end;	S8		                        temp[8];		MENU_FONT_t		      *mft;		MENU_ACTIVE_ITEM_t	*location_cur;			switch (pso->sig_value) {		case UP :			if (pso->cur_loc >= 4) {				setup_select_menu(pso, -1);						}			break;		case DOWN :			if (pso->cur_loc <= 2) { 				setup_select_menu(pso, 1);						}			break;		case SEL :			/* 			 * video format value			 * 0 : NTSC			 * 1 : PAL			 * resolution			 * 0 : 720 x 480(576)			 * 1 : 360 x 240(288)			 */			mft = setup_menu_font[pso->cur_id];				 			if (pso->cur_loc == 2) {                		bitmap_block_realign(pso, pso->param->gp.resolution, D1);               	 	pso->param->gp.resolution = D1;                		start = 3;        			end = 5;			} else if (pso->cur_loc == 4) {                		bitmap_block_realign(pso, pso->param->gp.resolution, CIF);				pso->param->gp.resolution = CIF;                		start = 3;        			end = 5;			}						for (ii = start; ii <= end; ii = ii + 2) {				pso->osd_loc = ii;				strcpy(mft[ii].str, "$");				mft[ii].color = WHITE;				mft[ii].attribute = NORMAL;								setup_update_osd(pso);							}			pso->osd_loc = pso->cur_loc + 1;			strcpy(mft[pso->osd_loc].str, "#");			mft[pso->osd_loc].color = WHITE;			mft[pso->osd_loc].attribute = NORMAL;						setup_update_osd(pso);				break;		case SUB_MINUS :				/* return to start position */			save_global_param(pso->param);			save_enc_param(pso->param);			location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = 2;									pso->cur_id = SETUP_MAIN;			pso->next_id = SETUP_GLOBAL_PARAM;			pso->create_menu = 1;						break;		default :			break;	}	return SUCCESS;}RETURN setup_encoder_param(SETUP_OBJECT *pso){	UNS16	ii, kk;	UNS16	start, end;	S32		total_frame;	S32		max_frame;	S8		temp[8];	MENU_FONT_t		*mft;		PTHREAD_BUF		signal;	MENU_ACTIVE_ITEM_t	*location_cur;				mft = setup_menu_font[pso->cur_id];				switch (pso->sig_value) {		case UP :			if (pso->cur_loc >= VALUE_FR_CH1 && pso->cur_loc <= VALUE_FR_CH4) {				setup_select_menu(pso, -5);					} else if (pso->cur_loc >= VALUE_BRQ_CH1 && pso->cur_loc <= VALUE_BRQ_CH4) {				setup_select_menu(pso, -5);			// pentamicro 2006.01.11			} else if (pso->cur_loc == VALUE_WM_SET) {				setup_select_menu(pso, -5);				} else if (pso->cur_loc == VALUE_MD_SET) {				setup_select_menu(pso, -2);				} else if (pso->cur_loc == VALUE_SIOS_SET) {				setup_select_menu(pso, -2);				} else if (pso->cur_loc >= VALUE_SF_CH1 && pso->cur_loc <= VALUE_SF_CH4) {				setup_select_menu(pso, -3+(-(pso->cur_loc-VALUE_SF_CH1)));				} else if (pso->cur_loc >= VALUE_SS_CH1 && pso->cur_loc <= VALUE_SS_CH4) {				setup_select_menu(pso, -5);									}				break;		case DOWN :						if (pso->cur_loc >= VALUE_CRF_CH1 && pso->cur_loc <= VALUE_CRF_CH4) {				setup_select_menu(pso, 5);						} else if (pso->cur_loc >= VALUE_FR_CH1 && pso->cur_loc <= VALUE_FR_CH4) {				setup_select_menu(pso, 5);						} else if (pso->cur_loc >= VALUE_BRQ_CH1 && pso->cur_loc <= VALUE_BRQ_CH4) {// pentamicro 2006.01.11				setup_select_menu(pso, 5 - (pso->cur_loc-VALUE_BRQ_CH1));						} else if (pso->cur_loc == VALUE_WM_SET) {				setup_select_menu(pso, 2);				} else if (pso->cur_loc == VALUE_MD_SET) {				setup_select_menu(pso, 2);				} else if (pso->cur_loc == VALUE_SIOS_SET) {				setup_select_menu(pso, 3);							} else if (pso->cur_loc >= VALUE_SF_CH1 && pso->cur_loc <= VALUE_SF_CH4) {				setup_select_menu(pso, 5);					}				break;		case LEFT :			if (pso->cur_loc >= VALUE_CRF_CH1+1 && pso->cur_loc <= VALUE_CRF_CH4) {				setup_select_menu(pso, -1);							} else if (pso->cur_loc >= VALUE_FR_CH1+1 && pso->cur_loc <= VALUE_FR_CH4) {				setup_select_menu(pso, -1);								} else if (pso->cur_loc >= VALUE_BRQ_CH1+1 && pso->cur_loc <= VALUE_BRQ_CH4) {				setup_select_menu(pso, -1);								} else if (pso->cur_loc >= VALUE_SF_CH1+1 && pso->cur_loc <= VALUE_SF_CH4) {				setup_select_menu(pso, -1);					} else if (pso->cur_loc >= VALUE_SS_CH1+1 && pso->cur_loc <= VALUE_SS_CH4) {				setup_select_menu(pso, -1);									}						break;		case RIGHT :			if (pso->cur_loc >= VALUE_CRF_CH1 && pso->cur_loc <= VALUE_CRF_CH4-1) {				setup_select_menu(pso, 1);							} else if (pso->cur_loc >= VALUE_FR_CH1 && pso->cur_loc <= VALUE_FR_CH4-1) {				setup_select_menu(pso, 1);								} else if (pso->cur_loc >= VALUE_BRQ_CH1 && pso->cur_loc <= VALUE_BRQ_CH4-1) {				setup_select_menu(pso, 1);								} else if (pso->cur_loc >= VALUE_SF_CH1 && pso->cur_loc <= VALUE_SF_CH4-1) {				setup_select_menu(pso, 1);					} else if (pso->cur_loc >= VALUE_SS_CH1 && pso->cur_loc <= VALUE_SS_CH4-1) {				setup_select_menu(pso, 1);									}			break;		case NUM_PLUS :			if (pso->cur_loc >= VALUE_FR_CH1 && pso->cur_loc <= VALUE_FR_CH4) {				pso->cur_ch = pso->cur_loc - VALUE_FR_CH1;								total_frame = 0;				for (ii = 0; ii < MAX_CH_NUM; ii++) {					if(pso->param->enc_ch[ii].flag_conti_rec)						total_frame += fps_list[pso->param->enc_ch[ii].frame_rate];				}								if (pso->param->gp.resolution == D1) {					if(pso->param->gp.video_form == NTSC)						max_frame = 30;					else						max_frame = 25;				} else {					if(pso->param->gp.video_form == NTSC)						max_frame = 120;					else						max_frame = 100;				}				if (total_frame < max_frame) {					if(pso->param->gp.video_form == NTSC) {						if (fps_list[pso->param->enc_ch[pso->cur_ch].frame_rate] < 30) {							pso->param->enc_ch[pso->cur_ch].frame_rate++;						}						} else {						if (fps_list[pso->param->enc_ch[pso->cur_ch].frame_rate] < 25) {							pso->param->enc_ch[pso->cur_ch].frame_rate++;						}					}					sprintf(temp, "%2d", fps_list[pso->param->enc_ch[pso->cur_ch].frame_rate]);					strcpy(mft[pso->cur_loc].str, temp);								pso->osd_loc = pso->cur_loc;										mft[pso->osd_loc].color = YELLOW;					mft[pso->osd_loc].attribute = BLINK;									setup_update_osd(pso);								}			}			break;		case NUM_MINUS :			if (pso->cur_loc >= VALUE_FR_CH1 && pso->cur_loc <= VALUE_FR_CH4) {				pso->cur_ch = pso->cur_loc - VALUE_FR_CH1;								if (fps_list[pso->param->enc_ch[pso->cur_ch].frame_rate] > 0) {					pso->param->enc_ch[pso->cur_ch].frame_rate--;				}				sprintf(temp, "%2d", fps_list[pso->param->enc_ch[pso->cur_ch].frame_rate]);				strcpy(mft[pso->cur_loc].str, temp);								pso->osd_loc = pso->cur_loc;					mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);				}			break;		case SEL :			/* 			 * frame rate			 * 0 ~ 30			 * bit rate value			 * 0 : CBR			 * 1 : VBR			 			 * Quality			 * CBR : 0 ~ 1000 KByte/Frame			 * VBR : 1 ~ 32			 * GOP Structure			 * N/M : 1 ~			 * M : 1 ~			 */				if (pso->cur_loc >= VALUE_CRF_CH1 && pso->cur_loc <= VALUE_CRF_CH4) {				pso->cur_ch = pso->cur_loc - VALUE_CRF_CH1;						if (pso->param->enc_ch[pso->cur_ch].flag_conti_rec) {					pso->param->enc_ch[pso->cur_ch].flag_conti_rec = 0;					strcpy(mft[pso->cur_loc].str, "Off");				} else {					pso->param->enc_ch[pso->cur_ch].flag_conti_rec = 1;					strcpy(mft[pso->cur_loc].str, " On");									}				pso->osd_loc = pso->cur_loc;				mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);				} else if (pso->cur_loc >= VALUE_BRQ_CH1 && pso->cur_loc <= VALUE_BRQ_CH4) {				pso->cur_ch = pso->cur_loc - VALUE_BRQ_CH1; 						if (pso->param->enc_ch[pso->cur_ch].cbr_q >= 4) {					pso->param->enc_ch[pso->cur_ch].cbr_q = 0;									} else {					pso->param->enc_ch[pso->cur_ch].cbr_q++;				}					sprintf(temp, "%s", bitrate_quality[pso->param->enc_ch[pso->cur_ch].cbr_q]);				strcpy(mft[pso->cur_loc].str, temp);							pso->osd_loc = pso->cur_loc;									mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);	// pentamicro 2006.01.11			} else if (pso->cur_loc == VALUE_WM_SET) {				mft = setup_menu_font[SETUP_WATERMARK_SETUP];									sprintf(temp, "%s", (pso->param->enc_attr.wm.flag_wm&0x01)? " On": "Off");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -