📄 pthread_live.c
字号:
}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 + -