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

📄 pthread_live.c

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 C
📖 第 1 页 / 共 3 页
字号:
							}else {								sprintf(temp, "%s", "         ");								strcpy(mft[LDT_PTZ].str, temp);									mft[LDT_PTZ].color = NORMAL;								mft[LDT_PTZ].attribute = NORMAL;							}							/* display for hdd info */							get_disk_space();							live_create_menu(LIVE_DISP_TIME);										}						break;					default :						break;				}				break;										case PTHREAD_SETUP :				switch (input_value) {					case SIGNAL_0 :							sp_live_object->cur_id = gp_state_thread->state_live.mode_mon;													live_clear_menu(sp_live_object->cur_id);						live_create_menu(sp_live_object->cur_id);											break;					case SIGNAL_1 :						sp_live_object->prev_mode = gp_state_thread->state_live.mode_mon;						live_set_monitoring(signal.m_channel+1);						break;					case SIGNAL_2 :						live_set_monitoring(sp_live_object->prev_mode);						break;											default :						break;				}								break;				case PTHREAD_SEARCH :								if (input_value) {					sp_live_object->cur_id = gp_state_thread->state_live.mode_mon;												live_clear_menu(sp_live_object->cur_id);					live_create_menu(sp_live_object->cur_id);									}							break;				case PTHREAD_ENC :					switch (signal.m_signal) {					case SIGNAL_0 :		/* get motion info from pthread_enc */		                        autoselect_spotout(signal.m_channel);						mft = live_menu_font[LIVE_MAIN];						if ( gp_setup_param->enc_ch[signal.m_channel].motion.flag &&							gp_setup_param->enc_ch[signal.m_channel].frame_rate &&							signal.m_value ) 						{							strcpy(mft[signal.m_channel*3 + LM_MOTION_CH1].str, "M");						} else {							strcpy(mft[signal.m_channel*3 + LM_MOTION_CH1].str, " ");						}												mft = live_menu_font[signal.m_channel + LIVE_SINGLE_CH1];						if ( gp_setup_param->enc_ch[signal.m_channel].motion.flag &&							gp_setup_param->enc_ch[signal.m_channel].frame_rate &&							signal.m_value ) 						{							strcpy(mft[LS_MOTION_CH1].str, "M");												} else {							strcpy(mft[LS_MOTION_CH1].str, " ");												}						mft = live_menu_font[LIVE_MULTI_4CH];						if (signal.m_channel < 3) {							if ( gp_setup_param->enc_ch[signal.m_channel].motion.flag &&								gp_setup_param->enc_ch[signal.m_channel].frame_rate &&								signal.m_value ) 							{								strcpy(mft[signal.m_channel*3 + LM4_MOTION_CH1].str, "M");													} else {								strcpy(mft[signal.m_channel*3 + LM4_MOTION_CH1].str, " ");													}						}						/* display */						sp_live_object->cur_id = gp_state_thread->state_live.mode_mon;						switch (sp_live_object->cur_id) {							case LIVE_MAIN :	 								sp_live_object->osd_loc = signal.m_channel*3 + LM_MOTION_CH1; 								live_update_osd(sp_live_object);								break;							case LIVE_SINGLE_CH1 : 							case LIVE_SINGLE_CH2 : 							case LIVE_SINGLE_CH3 : 							case LIVE_SINGLE_CH4 :								sp_live_object->osd_loc = LS_MOTION_CH1;								live_update_osd(sp_live_object); 								break;							case LIVE_MULTI_4CH :								sp_live_object->osd_loc = signal.m_channel*3 + LM4_MOTION_CH1;								live_update_osd(sp_live_object);															break;							default :								break; 						} 												break;					case SIGNAL_1 :		/* get sensor info from pthread_enc */						mft = live_menu_font[LIVE_MAIN];						if ( gp_setup_param->enc_ch[signal.m_channel].sensor.flag_in &&							gp_setup_param->enc_ch[signal.m_channel].frame_rate &&							signal.m_value ) 						{							strcpy(mft[signal.m_channel*3 + LM_SENSOR_CH1].str, "S");						} else {							strcpy(mft[signal.m_channel*3 + LM_SENSOR_CH1].str, " ");						}												mft = live_menu_font[signal.m_channel + LIVE_SINGLE_CH1];						if ( gp_setup_param->enc_ch[signal.m_channel].sensor.flag_in &&							gp_setup_param->enc_ch[signal.m_channel].frame_rate &&							signal.m_value ) 						{							strcpy(mft[LS_SENSOR_CH1].str, "S");												} else {							strcpy(mft[LS_SENSOR_CH1].str, " ");												}						mft = live_menu_font[LIVE_MULTI_4CH];						if (signal.m_channel < 3) {							if ( gp_setup_param->enc_ch[signal.m_channel].sensor.flag_in &&								gp_setup_param->enc_ch[signal.m_channel].frame_rate &&								signal.m_value ) 							{								strcpy(mft[signal.m_channel*3 + LM4_SENSOR_CH1].str, "S");													} else {								strcpy(mft[signal.m_channel*3 + LM4_SENSOR_CH1].str, " ");													}						}						/* display */						sp_live_object->cur_id = gp_state_thread->state_live.mode_mon;						switch (sp_live_object->cur_id) {							case LIVE_MAIN :	 								sp_live_object->osd_loc = signal.m_channel*3 + LM_SENSOR_CH1; 								live_update_osd(sp_live_object);								break;							case LIVE_SINGLE_CH1 : 							case LIVE_SINGLE_CH2 : 							case LIVE_SINGLE_CH3 : 							case LIVE_SINGLE_CH4 :								sp_live_object->osd_loc = LS_SENSOR_CH1;								live_update_osd(sp_live_object); 								break;							case LIVE_MULTI_4CH :								sp_live_object->osd_loc = signal.m_channel*3 + LM4_SENSOR_CH1;								live_update_osd(sp_live_object);															break;							default :								break; 						} 												break;					default :						break;				}							break;								case PTHREAD_DEC :						if (input_value == 1) {					/* retern to starting index, multi view mode */					playback_cur_ch = input_channel;					/* set for first start value */					last_ch_mode = 100;					sp_live_object->cur_id = L_4CH_PB;						/* restore to default string */					sprintf(temp, "]   1X  ");					mft = live_menu_font[L_1CH_PB];					strcpy(mft[1].str, temp);					mft = live_menu_font[L_4CH_PB];					strcpy(mft[10].str, temp);										live_set_monitoring(L_4CH_PB);					live_clear_menu(L_4CH_PB);					live_create_menu(L_4CH_PB);						last_play_mode = D_PLAY;					cur_play_speed = 1;									} else if (input_value == 2) {					/* string clear to trick mode status */					sprintf(temp, "        ");					mft = live_menu_font[L_1CH_PB];					strcpy(mft[1].str, temp);					mft = live_menu_font[L_4CH_PB];					strcpy(mft[10].str, temp);					live_set_monitoring(L_QUAD);					} else if (input_value == 3) { 					/* when the next file decoding, auto view mode change */					if(gp_state_thread->state_live.mode_mon == L_1CH_PB || gp_state_thread->state_live.mode_mon == L_4CH_PB) {						playback_cur_ch = input_channel;						playback_cur_ch--;						sp_live_object->cur_id = gp_state_thread->state_live.mode_mon;							live_set_monitoring(sp_live_object->cur_id);							live_clear_menu(sp_live_object->cur_id);						live_create_menu(sp_live_object->cur_id);					}				} else if (input_value == 4) { /* indication for playback status */					if(gp_state_thread->state_dec.mode_play != last_play_mode) 						cur_play_speed = 1;					cur_play_speed *= 2;					if(cur_play_speed > 32) /* maximum speed 32x */						cur_play_speed = 2;											if(gp_state_thread->state_dec.mode_play == D_PLAY)						cur_play_speed = 1;					sp_live_object->cur_id = gp_state_thread->state_live.mode_mon;					switch(gp_state_thread->state_dec.mode_play) {						case D_PLAY:							sprintf(temp, "]  %2dX  ", cur_play_speed);							break;						case D_FF:							sprintf(temp, "]] %2dX  ", cur_play_speed);							break;						case D_REW:							sprintf(temp, "[[ %2dX  ", cur_play_speed);							break;						case D_STEP_F:							sprintf(temp, "`  STEP ");							break;						case D_STEP_B:							sprintf(temp, ";  STEP ");							break;						case D_PAUSE:							sprintf(temp, "^  PAUSE");							break;						case D_SLOW:							sprintf(temp, "SLOW    ");							break;					}										if(sp_live_object->cur_id == LIVE_SINGLE_PB) 						sp_live_object->osd_loc = 1;					else 						sp_live_object->osd_loc = 10;					mft = live_menu_font[L_1CH_PB];					strcpy(mft[1].str, temp);					mft = live_menu_font[L_4CH_PB];					strcpy(mft[10].str, temp);										live_update_osd(sp_live_object);					last_play_mode = gp_state_thread->state_dec.mode_play;				}				break;								default :				break;		}		 	} /* end of while (!QUIT_SDVR_MAIN) */	return 0;	}RETURN live_create_menu(LIVE_ID id){	UNS16 ii = 0;	MENU_FONT_t *font;	font = &live_menu_font[id][ii];	while (font->xstart >= 0) {		tw2834_write_string(X_PATH, font->xstart, font->ystart, font->color, font->attribute,  font->str);     /* Warnning */		font = &live_menu_font[id][++ii];	}}void live_clear_menu(LIVE_ID id){	int ii;	tw2834_osd_clear(ALL_PATH);	for(ii=0; ii < MAX_CH_NUM; ii++)		tw2834_write_reg(TW2834_PAGE2, 0x60 + (ii * 8), 0x00); }void live_select_menu(LIVE_OBJECT *pso, S16 up_down){	MENU_FONT_t *font;	if (up_down == 0) {		pso->cur_loc = live_menu_active[pso->cur_id].start;	}		font = &live_menu_font[pso->cur_id][pso->cur_loc];	tw2834_write_string(X_PATH, font->xstart, font->ystart, NORMAL, NORMAL, font->str);     	while (live_menu_font[pso->cur_id][pso->cur_loc].active >= 0) {		pso->cur_loc += up_down;		if (pso->cur_loc == -1) {			pso->cur_loc = live_menu_active[pso->cur_id].end;		}		if (live_menu_font[pso->cur_id][pso->cur_loc].active == -1) {			pso->cur_loc = 0;		} else if (live_menu_font[pso->cur_id][pso->cur_loc].active) {			break;		}	}		font = &live_menu_font[pso->cur_id][pso->cur_loc];	tw2834_write_string(X_PATH, font->xstart, font->ystart, YELLOW, BLINK, font->str);     }void live_update_osd(LIVE_OBJECT *pso){	MENU_FONT_t *font;	font = &live_menu_font[pso->cur_id][pso->osd_loc];	tw2834_write_string(X_PATH, font->xstart, font->ystart, font->color, font->attribute,  font->str);     }RETURN live_set_monitoring(LIVE_MON mode){// 2005.10.21 pentamicro// move 2 pixel to right in case of channel 1, 3	UNS8	tbl_ntsc_page1_x_pic_4ch_live[] = { 0x01,0x5a,0x00,0x3c, 0x5a,0xb4,0x00,0x3c, 0x01,0x5a,0x3c,0x78, 0x5a,0xb4,0x3c,0x78};	UNS8	tbl_pal_page1_x_pic_4ch_live[]   = { 0x01,0x5a,0x00,0x48, 0x5a,0xb4,0x00,0x48, 0x01,0x5a,0x48,0x90,0x5a,0xb4,0x48,0x90};	UNS16   ii, offset;	UNS8    buf, rec_mode;	VIDEO_MODE video_mode;// pentamicro 2006.01.11	UNS8 peak_reg=0x00, anti_alia_reg=0x00, lumi_trap_reg=0x00, pal_delay_reg, reg_val_type;

⌨️ 快捷键说明

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