📄 callbacks.c
字号:
#ifdef HAVE_CONFIG_H# include <config.h>#endif#include <gtk/gtk.h>#include "callbacks.h"#include "interface.h"#include "support.h"#include "playsdkpu.h"#include <gdk/gdkx.h>#include <SDL/SDL.h>#include <time.h> #include <fcntl.h>int pic_index;int replay=0;int use_progress=0;int progress_click=0;int ok_begin=0;GtkWidget* select_index_file;int set_index_file=0;int click2_low=0;int click2_high=0;char *indexfile;int click_index=0;int fileopencount=0;GtkWidget *dialog2,*dialog,*cut_file;int count=0;int audio=0;int play_audio=0;int step=0;int forword=0;int capture_count=0;char SDL_windowhack[32];GtkWidget*w_drawingarea;extern long current_time;long total_time;int port=0;GtkWidget*file_select;PLAYRECT rect;INITINFO info;char *filename;int fileopenok=0;extern GtkWidget*window1;int process_time(gpointer data);extern GtkWidget* range;extern GtkAdjustment*adj;extern int w,h;extern long total_frame;extern int current_frame;gbooleanmy_exit (GtkWidget *widget, GdkEvent *event, gpointer user_data){ gtk_main_quit(); return TRUE;}gbooleanexpose_ev_full (GtkWidget *widget, GdkEventExpose *event, gpointer user_data){ GdkColormap *colormap; GdkColor color; colormap=gdk_colormap_get_system(); gdk_color_parse("black",&color); if(gdk_color_alloc(colormap,&color)<0) g_error("Alloc color failed!"); gdk_window_set_background(widget->window,&color); gdk_window_clear(widget->window);}voidon_open_activate (GtkMenuItem *menuitem, gpointer user_data){ if(fileopencount) { if(Hik_PlayM4_StopSound(port)<0) { if(Hik_PlayM4_GetLastErrorCode()!=0) fprintf(stderr,"\nHik_PlayM4_StopSound failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } } progress_click=0; use_progress=0; file_select=(gpointer)create_fileselection1(); gtk_widget_show(file_select);}voidon_close_activate (GtkMenuItem *menuitem, gpointer user_data){ if(fileopenok) { if(Hik_PlayM4_Stop(port)<0) fprintf(stderr,"\nHik_pLAYM4_Stop failed!"); gdk_window_clear(lookup_widget(window1,"w_full_area")->window); if(fileopencount) { if(Hik_PlayM4_StopSound(port)<0) { if(Hik_PlayM4_GetLastErrorCode()!=0) fprintf(stderr,"\nHik_PlayM4_StopSound failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } } progress_click=0; use_progress=0; } }voidon_quit_activate (GtkMenuItem *menuitem, gpointer user_data){ gtk_main_quit();}voidon_about_activate (GtkMenuItem *menuitem, gpointer user_data){ dialog=(gpointer)create_dialog1(); gtk_widget_show(dialog); }void filerefcallback(int port){ }voidfile_open_ok (GtkButton *button, gpointer user_data){ if(fileopenok) { if(Hik_PlayM4_CloseFile(port)<0) fprintf(stderr,"\nHik_PlayM4_Closeile failed!,Error 0x%x",(unsigned long)Hik_PlayM4_GetLastErrorCode()); fileopenok=0; } long totalframes=-1; long total_frame; char buf[30]; GtkWidget*temp_total_frame; rect.x=0; rect.y=0; w_drawingarea=lookup_widget(window1,"w_full_area"); filename=(char *)(gtk_file_selection_get_filename(GTK_FILE_SELECTION(file_select))); { #if 1 sprintf(SDL_windowhack, "SDL_WINDOWID=%ld", GDK_WINDOW_XWINDOW(w_drawingarea->window)); putenv(SDL_windowhack);#endif } info.uWidth=1280; info.uHeight=1024; rect.uWidth=352; rect.uHeight=288; if(Hik_PlayM4_Init(info,1)<0) fprintf(stderr,"\nHik_PlayM4_Init failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); if(Hik_PlayM4_SetDisplay(info.uWidth,info.uHeight)<0) fprintf(stderr,"\nHik_PlayM4_SetDisplay failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); if(Hik_PlayM4_SetFileRefCallBack(port,filerefcallback)<0) fprintf(stderr,"\nHik_PlayM4_SetFileRefCallBack failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); if(set_index_file) { if(Hik_PlayM4_SetIndexFile(port,indexfile)<0) fprintf(stderr,"\nHIk_PlayM4_SetIndexFile failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode()); set_index_file=0; fprintf(stderr,"\nSet index file OK!\n"); } if(Hik_PlayM4_OpenFile(port,filename)<0) { fprintf(stderr,"\nHik_PlayM4_Openfile failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); return ; } if(Hik_PlayM4_Play(port,rect)<0) fprintf(stderr,"\nHik_PlayM4_Playfailed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); fileopencount++; if(Hik_PlayM4_PlaySound(port)<0) fprintf(stderr,"\nHik_PlayM4_PlaySound failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); gtk_timeout_add(1000/10,(GtkFunction)process_time,NULL); temp_total_frame=lookup_widget(window1,"w_total_frame"); total_frame=Hik_PlayM4_GetFileFrames(port); sprintf(buf,"%3ld",total_frame); gtk_entry_set_text(GTK_ENTRY(temp_total_frame),buf); total_time=Hik_PlayM4_GetFileTime(port); sprintf(buf,"%02d:%02d:%02d",total_time/3600,total_time%3600/60,total_time%3600%60); gtk_entry_set_text(GTK_ENTRY(lookup_widget(window1,"w_end_time")),buf); gtk_widget_hide(file_select); fileopenok++; }voidfile_cancel_ok (GtkButton *button, gpointer user_data){ gtk_widget_hide(file_select); }voidplay_callback (GtkButton *button, gpointer user_data){ if(fileopenok) { if(Hik_PlayM4_Play(port,rect)<0) fprintf(stderr,"\nHik_PlayM4_Play failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); if(audio) { if(Hik_PlayM4_PlaySound(port)<0) { if((unsigned long)Hik_PlayM4_GetLastErrorCode()!=0) fprintf(stderr,"\nHik_PlayM4_PlaySouind failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } } } if((current_time-1==total_time)||(current_time==total_time)) { if(Hik_PlayM4_SetCurrentFrameNum(port,0)<0) fprintf(stderr,"\nHik_PlayM4_SetCurrentFrameNum failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); if (Hik_PlayM4_SetPlayPos(port,0)<0) fprintf(stderr,"\nHik_PlayM4_SetPlayPosfailed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } }voidpause_callback (GtkButton *button, gpointer user_data){ if(fileopenok) { if(GTK_TOGGLE_BUTTON(button)->active) { if(Hik_PlayM4_Pause(port,1)<0) fprintf(stderr,"\nHik_PlayM4_Pause failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } else { if(Hik_PlayM4_Pause(port,0)<0) fprintf(stderr,"\nHik_PlayM4_Pause failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); if(Hik_PlayM4_PlaySound(port)<0) { if((unsigned long)Hik_PlayM4_GetLastErrorCode()!=0) fprintf(stderr,"\nHik_PlayM4_PlaySouind failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } } } }voidstop_callback (GtkButton *button, gpointer user_data){ if(fileopenok) { if(GTK_TOGGLE_BUTTON(button)->active) { if(Hik_PlayM4_Stop(port)<0) fprintf(stderr,"\nHik_PlayM4_Stop failed!.Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } audio++; } }voidgoto_start_callback (GtkButton *button, gpointer user_data){ if(fileopenok) { if(Hik_PlayM4_SetCurrentFrameNum(port,0)<0) fprintf(stderr,"\nHik_PlayM4_SetCurrentFrameNum failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); if (Hik_PlayM4_SetPlayPos(port,0)<0) fprintf(stderr,"\nHik_PlayM4_SetPlayPosfailed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); }}voidforward_callback (GtkButton *button, gpointer user_data){ if(fileopenok) { step++; if(step%3==2) { Hik_PlayM4_ThrowBFrameNum(port, 2); if(Hik_PlayM4_Fast(port)<0) fprintf(stderr,"\nHik_PlayM4_Fast failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } else if(step%3==1) { Hik_PlayM4_ThrowBFrameNum(port, 1); if(Hik_PlayM4_Fast(port)<0) fprintf(stderr,"\nHik_PlayM4_Fast failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } else if(step%3==0) { Hik_PlayM4_ThrowBFrameNum(port, 0); if(Hik_PlayM4_Play(port,rect)<0) fprintf(stderr,"\nHik_PlayM4_Play failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } } }voidback_callback (GtkButton *button, gpointer user_data){ if(fileopenok) { if(GTK_TOGGLE_BUTTON(button)->active) { if(Hik_PlayM4_Slow(port)<0) fprintf(stderr,"\nHik_PlayM4_Slow failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } else { Hik_PlayM4_ThrowBFrameNum(port, 0); if(Hik_PlayM4_Play(port,rect)<0) fprintf(stderr,"\nHik_PlayM4_Play failed!,Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } } }voidgoto_end_callback (GtkButton *button, gpointer user_data){ if(fileopenok) { Hik_PlayM4_SetCurrentFrameNum(port, total_frame - 1); } Hik_PlayM4_SetPlayPos(port, 1);}voidstep_frame_callback (GtkButton *button, gpointer user_data){ int i; i=GPOINTER_TO_INT(user_data); if(i==1) { if(fileopenok) { if(Hik_PlayM4_OneByOne(port)<0) { if((unsigned long)Hik_PlayM4_GetLastErrorCode()!=0) fprintf(stderr,"\nHik_Play_OneByOne failed! Error 0x%lx",(unsigned long)Hik_PlayM4_GetLastErrorCode()); } } } else { if(fileopenok) { if(Hik_PlayM4_OneByOneBack(port)<0) fprintf(stderr,"\nHik_Play_OneByOne failed! Error 0x%x",Hik_PlayM4_GetLastErrorCode()); } } }void DisplayCallBack(int port, char *pBuf, long size, long width, long height, long stamp, long type,long reserved){ static int num = 0; char bmp_filename[100],jpg_filename[100]; struct tm *tm; char time_buf[100]; time_t now; capture_count++; if(capture_count==1) { now=time(NULL); tm=localtime(&now); strftime(time_buf,sizeof(time_buf),"%Y-%m-%d",tm); if(pic_index==0) { sprintf(bmp_filename,"%s_%d.bmp",time_buf, num); num++; if(Hik_PlayM4_ConvertToBmpFile(pBuf,size,width,height,type,bmp_filename)<0) fprintf(stderr,"\nHik_PlayM4_COvertToBmpFile failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode()); } else { sprintf(jpg_filename,"%s_%d.jpg",time_buf,num); num++; Hik_PlayM4_SetJpegQuality(50); if(Hik_PlayM4_ConvertToJpegFile(pBuf,size,width,height,type,jpg_filename)<0) fprintf(stderr,"\nHik_PlayM4_Playm4_CovertToBmpFile failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode()); } } }voidcapture_picture_callback (GtkButton *button, gpointer user_data){ pic_index=GPOINTER_TO_INT(user_data); if(Hik_PlayM4_SetDisplayCallBack(port,DisplayCallBack)<0) fprintf(stderr,"\nHik_PlayM4_DisplayCallBack failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode()); capture_count=0;}voidplay_audio_callback (GtkButton *button, gpointer user_data){ if(GTK_TOGGLE_BUTTON(button)->active) { if(Hik_PlayM4_PlaySound(port)<0) { if(Hik_PlayM4_GetLastErrorCode()!=0) fprintf(stderr,"\nHik_PlaytM4_PlaySound failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode()); } } else { if(Hik_PlayM4_StopSound()<0) { if(Hik_PlayM4_GetLastErrorCode()!=0) fprintf(stderr,"\nHik_PlaytM4_StopSound failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode()); } } }int j=0;voidprocess_range_callback (GtkRange *range, gpointer user_data){ int i; int value; GtkAdjustment *adju; i=GPOINTER_TO_INT(user_data); if(fileopenok) { if(i!=2) { adju=gtk_range_get_adjustment(range); value=(gint)adju->value; if(Hik_PlayM4_SetVolume(port,value)<0) fprintf(stderr,"\nHik_PlayM4_SetVolume failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode()); } else { j++; use_progress++; gtk_window_set_resizable (GTK_WINDOW (window1), FALSE); if(Hik_PlayM4_SetPlayPos(port,(float )(adj->value/100))<0) { if(adj->value>0&&adj->value<100) fprintf(stderr,"\nHik_PlayM4_SetPlayPos failed!.Error 0x%x",Hik_PlayM4_GetLastErrorCode()); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -