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

📄 gui_main.cpp

📁 网络MPEG4IP流媒体开发源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
  seek_dialog = gtk_dialog_new();  gtk_signal_connect(GTK_OBJECT(seek_dialog),		     "destroy",		     GTK_SIGNAL_FUNC(on_seek_destroy),		     seek_dialog);  gtk_window_set_title(GTK_WINDOW(seek_dialog), "Seek to");  gtk_container_border_width(GTK_CONTAINER(seek_dialog), 5);  GtkWidget *vbox;  vbox = gtk_vbox_new(FALSE, 1);  gtk_box_pack_start(GTK_BOX(GTK_DIALOG(seek_dialog)->action_area),		     vbox, 		     TRUE, 		     TRUE,		     0);  gtk_widget_show(vbox);  GtkWidget *hbox;  hbox = gtk_hbox_new(FALSE, 1);  gtk_widget_show(hbox);  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);  GtkWidget *seek_entry;  seek_entry = gtk_entry_new();  gtk_signal_connect(GTK_OBJECT(seek_entry),		     "activate",		     GTK_SIGNAL_FUNC(on_seek_activate),		     seek_entry);  gtk_box_pack_start(GTK_BOX(hbox), seek_entry, TRUE, TRUE, 0);  gtk_widget_show(seek_entry);  hbox = gtk_hbox_new(FALSE, 1);  gtk_widget_show(hbox);  gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);  GtkWidget *button;  button = gtk_button_new_with_label("Ok");  gtk_signal_connect(GTK_OBJECT(button), "clicked",		     GTK_SIGNAL_FUNC(on_seek_activate),		     seek_entry);  gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);  gtk_widget_show(button);  button = gtk_button_new_with_label("Cancel");  gtk_signal_connect(GTK_OBJECT(button), "clicked",		     GTK_SIGNAL_FUNC(on_seek_cancel),		     NULL);  gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);  gtk_widget_show(button);   gtk_widget_show(seek_dialog);  doing_seek = 1;}static void on_main_menu_help (GtkWidget *window, gpointer data){}static void on_main_menu_about (GtkWidget *window, gpointer data){  char buffer[1024];  sprintf(buffer,	  "gmp4player Version %s.\n"	  "An open source file/streaming MPEG4 player\n"	  "Developed by cisco Systems using the\n"	  "following open source packages:\n"	  "\n"	  "SDL, SMPEG audio (MP3) from lokigames\n"	  "RTP from UCL\n"	  "ISO reference decoder for MPEG4\n"	  "FAAC decoder\n"	  "Xvid decoder\n"	  "Libmpeg3 file and video decoder\n"	  "Developed by Bill May, 10/00 to present", VERSION	  );  ShowMessage("About gmp4player",buffer);}/* * on_drag_data_received - copied from gtv, who copied from someone else */static void on_drag_data_received (GtkWidget *widget,				   GdkDragContext *context,				   gint x,				   gint y,				   GtkSelectionData *selection_data,				   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 GtkWidget *filesel;static void on_filename_selected (GtkFileSelection *selector, 				  gpointer user_data) {  const gchar *name;  name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(filesel));  start_session_from_name(name);}/* * This is right out of the book... */static void on_browse_button_clicked (GtkWidget *window, gpointer data){  filesel = gtk_file_selection_new("Open Media file");  if (last_file != NULL) {    gtk_file_selection_set_filename(GTK_FILE_SELECTION(filesel), last_file);  }  gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(filesel));  gtk_signal_connect (GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button),		      "clicked", 		      GTK_SIGNAL_FUNC(on_filename_selected), 		      filesel);                               /* Ensure that the dialog box is destroyed when the user clicks a button. */       gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->ok_button),			    "clicked", 			    GTK_SIGNAL_FUNC(gtk_widget_destroy),			    GTK_OBJECT(filesel));  gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(filesel)->cancel_button),			    "clicked", 			    GTK_SIGNAL_FUNC(gtk_widget_destroy),			    GTK_OBJECT(filesel));    /* Display that dialog */       gtk_widget_show (filesel);  }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;  char errmsg[512];  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, errmsg, sizeof(errmsg));    break;  case STOPPED:    ret = psptr->play_all_media(TRUE, 0.0, errmsg, sizeof(errmsg));    break;  default:    break;  }  if (ret == 0)    adjust_gui_for_play();  SDL_mutexV(command_mutex);  if (ret != 0) {    char buffer[1024];    close_session();    snprintf(buffer, sizeof(buffer), "Error re-starting session: %s", 	     errmsg);    ShowMessage("Play error", buffer);  }}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 == 0) {    // mute the puppy    set_speaker_button(xpm_speaker_muted);    master_muted = 1;    vol = 0;  } else {    set_speaker_button(xpm_speaker);    master_muted = 0;    vol  = master_volume;  }  config.set_config_value(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 == 0 && 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_mpeg4isoonly (GtkWidget *window, gpointer data){  GtkCheckMenuItem *checkmenu;  checkmenu = GTK_CHECK_MENU_ITEM(window);  config.set_config_value(CONFIG_USE_MPEG4_ISO_ONLY,			  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_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_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){

⌨️ 快捷键说明

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