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

📄 gui_main.cpp

📁 完整的RTP RTSP代码库
💻 CPP
📖 第 1 页 / 共 4 页
字号:
				   guint info,				   guint time){    gchar *temp, *string;    string = (gchar *)selection_data->data;    /* remove newline at end of line, and the file:// url header       at the begining, copied this code from the xmms source */    temp = strchr(string, '\n');    if (temp)    {        if (*(temp - 1) == '\r')            *(temp - 1) = '\0';        *temp = '\0';    }    if (!strncasecmp(string, "file:", 5))        string = string + 5;    start_session_from_name(string);}static void on_filename_selected (GtkFileSelection *selector, 				  gpointer user_data) {  const gchar *name;  name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(user_data));  start_session_from_name(name);}/* * This is right out of the book... */static void enable_file_select (GtkSignalFunc func,				const char *header, 				const char *file){  GtkWidget *ret;  ret = gtk_file_selection_new(header);  if (file != NULL) {    gtk_file_selection_set_filename(GTK_FILE_SELECTION(ret), file);  }  gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(ret));  gtk_signal_connect (GTK_OBJECT(GTK_FILE_SELECTION(ret)->ok_button),		      "clicked", 		      GTK_SIGNAL_FUNC(func), 		      ret);                               /* Ensure that the dialog box is destroyed when the user clicks a button. */       gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(ret)->ok_button),			    "clicked", 			    GTK_SIGNAL_FUNC(gtk_widget_destroy),			    GTK_OBJECT(ret));  gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(ret)->cancel_button),			    "clicked", 			    GTK_SIGNAL_FUNC(gtk_widget_destroy),			    GTK_OBJECT(ret));    /* Display that dialog */       gtk_widget_show (ret);  }static void on_browse_button_clicked (GtkWidget *window, gpointer data){  enable_file_select(GTK_SIGNAL_FUNC(on_filename_selected),		     "Open Media File", 		     last_file);}static void on_logfile_selected (GtkFileSelection *selected,				 gpointer user_data){  const gchar *name;  name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(user_data));  config.set_config_string(CONFIG_LOG_FILE, name);  open_log_file(name);}static void on_main_menu_set_log_file (GtkWidget *window, gpointer data){   enable_file_select(GTK_SIGNAL_FUNC(on_logfile_selected),		     "Select Log File", 		     config.get_config_string(CONFIG_LOG_FILE));}static void on_main_menu_clear_log_file (GtkWidget *window, gpointer data){  if (config.get_config_string(CONFIG_LOG_FILE) != NULL) {    clear_log_file();  }}static void on_playlist_child_selected (GtkWidget *window, gpointer data){  const gchar *entry =     gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry));  if (strcmp(entry, "") == 0)     return;  if (last_entry && strcmp(entry, last_entry) == 0)     return;  start_session_from_name(entry);}static void on_play_list_selected (GtkWidget *window, gpointer data){  const gchar *entry = gtk_entry_get_text(GTK_ENTRY(window));  start_session_from_name(entry);}static void on_play_clicked (GtkWidget *window, gpointer data){  int ret;  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(play_button)) == FALSE) {    if (play_state == PLAYING) {      toggle_button_adjust(play_button, TRUE);    }    return;  }  if (psptr == NULL)    return;  ret = 0;  SDL_mutexP(command_mutex);  switch (play_state) {  case PAUSED:    ret = psptr->play_all_media(FALSE, 0.0);    break;  case STOPPED:    ret = psptr->play_all_media(TRUE, 0.0);    break;  default:    break;  }  if (ret == 0)    adjust_gui_for_play();  SDL_mutexV(command_mutex);  if (ret != 0) {    char buffer[1024];    snprintf(buffer, sizeof(buffer), "Error re-starting session: %s", 	     psptr->get_message());    ShowMessage("Play error", buffer);    close_session();  }}static void do_pause (void){  SDL_mutexP(command_mutex);  if (psptr != NULL && play_state == PLAYING) {    play_state = PAUSED;    toggle_button_adjust(play_button, FALSE);    toggle_button_adjust(pause_button, TRUE);    psptr->pause_all_media();  } else {    toggle_button_adjust(pause_button, play_state == PAUSED);  }  SDL_mutexV(command_mutex);}static void on_pause_clicked (GtkWidget *window, gpointer data){  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pause_button)) == FALSE) {    if (play_state == PAUSED) {      toggle_button_adjust(pause_button, TRUE);    }    return;  }  do_pause();}static void on_stop_clicked (GtkWidget *window, gpointer data){  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(stop_button)) == FALSE) {    if (play_state == STOPPED) {      toggle_button_adjust(stop_button, TRUE);    }    return;  }  SDL_mutexP(command_mutex);  if (psptr != NULL && play_state == PLAYING) {    play_state = STOPPED;    toggle_button_adjust(play_button, FALSE);    toggle_button_adjust(stop_button, TRUE);    psptr->pause_all_media();  } else {    toggle_button_adjust(stop_button, play_state == STOPPED);  }  SDL_mutexV(command_mutex);}/* * Set the speaker button to either mute or playing */static void set_speaker_button (gchar **xpm_data){  GtkWidget *wid;  wid = CreateWidgetFromXpm(speaker_button, xpm_data);  FreeChild(speaker_button);  gtk_container_add(GTK_CONTAINER(speaker_button), wid);}static void on_speaker_clicked (GtkWidget *window, gpointer data){  int vol;  if (master_muted == false) {    // mute the puppy    set_speaker_button(xpm_speaker_muted);    master_muted = true;    vol = 0;  } else {    set_speaker_button(xpm_speaker);    master_muted = false;    vol  = master_volume;  }  config.SetBoolValue(CONFIG_MUTED, master_muted);  if (psptr && psptr->session_has_audio()) {    psptr->set_audio_volume(vol);  }}static void volume_adjusted (int volume){  GtkAdjustment *val = gtk_range_get_adjustment(GTK_RANGE(volume_slider));  gtk_adjustment_set_value(val, (gfloat)volume);  master_volume = volume;  config.set_config_value(CONFIG_VOLUME, master_volume);  gtk_range_set_adjustment(GTK_RANGE(volume_slider), val);#ifndef HAVE_GTK_2_0  gtk_range_slider_update(GTK_RANGE(volume_slider));  gtk_range_clear_background(GTK_RANGE(volume_slider));#endif   if (master_muted == false && psptr && psptr->session_has_audio()) {     psptr->set_audio_volume(master_volume);   }}static void on_volume_adjusted (GtkWidget *window, gpointer data){  GtkAdjustment *val = gtk_range_get_adjustment(GTK_RANGE(volume_slider));  volume_adjusted((int)val->value);}static void on_debug_display_status (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  checkmenu = GTK_CHECK_MENU_ITEM(window);  config.SetBoolValue(CONFIG_DISPLAY_DEBUG,		      checkmenu->active == FALSE ? false : true);}static void on_debug_mpeg4isoonly (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  config_index_t iso_only = config.FindIndexByName("Mpeg4IsoOnly");  checkmenu = GTK_CHECK_MENU_ITEM(window);  if (iso_only != UINT32_MAX) {    config.SetBoolValue(iso_only,			checkmenu->active == FALSE ? 0 : 1);  } else {    ShowMessage("Error", "Mpeg4IsoOnly config variable not loaded");  }}static void on_debug_oldxvid (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  config_index_t old_xvid = config.FindIndexByName("UseOldXvid");  if (old_xvid == UINT32_MAX) {    ShowMessage("Error", "UseOldXvid config variable not loaded");  } else {    checkmenu = GTK_CHECK_MENU_ITEM(window);    config.SetBoolValue(old_xvid, 			checkmenu->active == FALSE ? 0 : 1);  }}static void on_debug_usempeg3 (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  config_index_t mpeg3 = config.FindIndexByName("UseMpeg3");  if (mpeg3 == UINT32_MAX) {    ShowMessage("Error", "UseMpeg3 config variable not loaded");  } else {    checkmenu = GTK_CHECK_MENU_ITEM(window);    config.SetBoolValue(mpeg3, 			checkmenu->active == FALSE ? 0 : 1);  }}static void on_debug_use_old_mp4_lib (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  checkmenu = GTK_CHECK_MENU_ITEM(window);  config.set_config_value(CONFIG_USE_OLD_MP4_LIB,			  checkmenu->active == FALSE ? 0 : 1);}static void on_debug_http (GtkWidget *window, gpointer data){  int loglevel = GPOINTER_TO_INT(data);  http_set_loglevel(LOG_PRI(loglevel));  config.set_config_value(CONFIG_HTTP_DEBUG, LOG_PRI(loglevel));}static void on_debug_rtsp (GtkWidget *window, gpointer data){  int loglevel = GPOINTER_TO_INT(data);  rtsp_set_loglevel(LOG_PRI(loglevel));  config.set_config_value(CONFIG_RTSP_DEBUG, LOG_PRI(loglevel));}  static void on_debug_rtp (GtkWidget *window, gpointer data){  int loglevel = GPOINTER_TO_INT(data);  rtp_set_loglevel(LOG_PRI(loglevel));  config.set_config_value(CONFIG_RTP_DEBUG, LOG_PRI(loglevel));}static void on_debug_sdp (GtkWidget *window, gpointer data){  int loglevel = GPOINTER_TO_INT(data);  sdp_set_loglevel(LOG_PRI(loglevel));  config.set_config_value(CONFIG_SDP_DEBUG, LOG_PRI(loglevel));}static void on_debug_mpeg2t (GtkWidget *window, gpointer data){  int loglevel = GPOINTER_TO_INT(data);  mpeg2t_set_loglevel(LOG_PRI(loglevel));  config.set_config_value(CONFIG_MPEG2T_DEBUG, LOG_PRI(loglevel));}static void on_debug_mpeg2ps (GtkWidget *window, gpointer data){  int loglevel = GPOINTER_TO_INT(data);  mpeg2ps_set_loglevel(LOG_PRI(loglevel));  config.set_config_value(CONFIG_MPEG2PS_DEBUG, LOG_PRI(loglevel));}static void on_media_play_audio (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  checkmenu = GTK_CHECK_MENU_ITEM(window);  config.set_config_value(CONFIG_PLAY_AUDIO, checkmenu->active);  if (psptr != NULL) {    ShowMessage("Warning", "Play audio will not take effect until next session");  }}static void on_media_play_text (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  checkmenu = GTK_CHECK_MENU_ITEM(window);  config.set_config_value(CONFIG_PLAY_TEXT, checkmenu->active);  if (psptr != NULL) {    ShowMessage("Warning", "Play text will not take effect until next session");  }}static void on_media_play_video (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  checkmenu = GTK_CHECK_MENU_ITEM(window);  config.set_config_value(CONFIG_PLAY_VIDEO, checkmenu->active);  if (psptr != NULL) {    ShowMessage("Warning", "Play video will not take effect until next session");  }}static void on_network_rtp_over_rtsp (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  checkmenu = GTK_CHECK_MENU_ITEM(window);  config.set_config_value(CONFIG_USE_RTP_OVER_RTSP,			  checkmenu->active);}  static void change_video_size (int newsize){  if (master_screen_size == newsize) return;  master_screen_size = newsize;  if (psptr != NULL) {    psptr->set_screen_size(newsize / 50);  }  int index;  if (newsize == 50) index = 0;  else if (newsize == 100) index = 1;  else index = 2;#ifdef HAVE_GTK_2_0  if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(videoradio[index])))#else    if (!(GTK_CHECK_MENU_ITEM(videoradio[index])->active)) #endif    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(videoradio[index]), TRUE);}static void on_video_radio (GtkWidget *window, gpointer data){#ifdef HAVE_GTK_2_0  if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(window)))#else    if (!(GTK_CHECK_MENU_ITEM(window)->active)) #endif    return;  int newsize = GPOINTER_TO_INT(data);  if (newsize != master_screen_size) {    change_video_size(newsize);  }}static void on_aspect_ratio (GtkWidget *window, gpointer data){#ifdef HAVE_GTK_2_0  if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(window)))#else    if (!(GTK_CHECK_MENU_ITEM(window)->active)) #endif    return;  int newaspect = GPOINTER_TO_INT(data);  if (psptr != NULL) set_aspect_ratio(newaspect);}static void on_video_fullscreen (GtkWidget *window, gpointer data){  if (psptr != NULL) {    master_fullscreen = 1;    psptr->set_screen_size(master_screen_size / 50, 1);  }}static int on_time_slider_pressed (GtkWidget *window, gpointer data){  time_slider_pressed = 1;  return (FALSE);}static int on_time_slider_adjusted (GtkWidget *window, gpointer data){  double maxtime, newtime;  time_slider_pressed = 0;  if (psptr == NULL)     return FALSE;  maxtime = psptr->get_max_time();  if (maxtime == 0.0)    return FALSE;  gdouble val;#ifdef HAVE_GTK_2_0  val = gtk_range_get_value(GTK_RANGE(time_slider));#else  GtkAdjustment *adj_val = gtk_range_get_adjustment(GTK_RANGE(time_slider));  val = adj_val->value;#endif  newtime = (maxtime * val) / 100.0;  SDL_mutexP(command_mutex);  if (play_state == PLAYING) {    psptr->pause_all_media();  }  // If we're going all the way back to the beginning, indicate that  int ret = psptr->play_all_media(newtime == 0.0 ? TRUE : FALSE, newtime);  if (ret == 0)     adjust_gui_for_play();  SDL_mutexV(command_mutex);  if (ret != 0) {    char buffer[1024];    snprintf(buffer, sizeof(buffer), "Error re-starting session: %s", 	     psptr->get_message());    ShowMessage("Play error", buffer);    close_session();  }   return FALSE;}static void on_loop_enabled_button (GtkWidget *widget, gpointer *data){  master_looped = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));  config.SetBoolValue(CONFIG_LOOPED, master_looped);}/* * Main timer routine - runs ~every 500 msec * Might be able to adjust this to handle just when playing. */static bool one_sec = false;static gint main_timer (gpointer raw){  uint64_t play_time;  char buffer[1024];  if (play_state == PLAYING) {    flush_log_file();    if (one_sec == false) {      one_sec = true;    } else {      if (config.GetBoolValue(CONFIG_DISPLAY_DEBUG))	psptr->display_status();      one_sec = false;    }    double max_time = psptr->get_max_time();    uint64_t pt = psptr->get_playing_time();    double playtime = ((double)pt) / 1000.0;

⌨️ 快捷键说明

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