diff --git a/gtk/linphone.h b/gtk/linphone.h index 281a47a87..d07b3000c 100644 --- a/gtk/linphone.h +++ b/gtk/linphone.h @@ -297,7 +297,6 @@ LINPHONE_PUBLIC void linphone_gtk_add_proxy(GtkButton *button); LINPHONE_PUBLIC void linphone_gtk_edit_proxy(GtkButton *button); LINPHONE_PUBLIC void linphone_gtk_remove_proxy(GtkButton *button); LINPHONE_PUBLIC void linphone_gtk_clear_passwords(GtkWidget *button); -LINPHONE_PUBLIC void linphone_gtk_codec_view_changed(GtkWidget *w); LINPHONE_PUBLIC void linphone_gtk_codec_up(GtkWidget *button); LINPHONE_PUBLIC void linphone_gtk_codec_down(GtkWidget *button); LINPHONE_PUBLIC void linphone_gtk_codec_enable(GtkWidget *button); diff --git a/gtk/parameters.ui b/gtk/parameters.ui index c40537c8f..93380c0ad 100644 --- a/gtk/parameters.ui +++ b/gtk/parameters.ui @@ -47,6 +47,11 @@ 1 10 + + 30 + 1 + 10 + 60000 2000 @@ -174,6 +179,23 @@ 1 9.9999999995529656 + + + + + + + + default + + + high-fps + + + custom + + + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -1268,7 +1290,7 @@ True False - 4 + 6 2 @@ -1304,11 +1326,11 @@ True False - Prefered video resolution: + Preferred video resolution: - 1 - 2 + 3 + 4 @@ -1328,8 +1350,8 @@ 1 2 - 1 - 2 + 3 + 4 @@ -1340,8 +1362,8 @@ right - 2 - 3 + 1 + 2 GTK_EXPAND @@ -1360,8 +1382,8 @@ 1 2 - 2 - 3 + 1 + 2 GTK_EXPAND @@ -1375,11 +1397,77 @@ 2 - 3 - 4 + 5 + 6 GTK_EXPAND + + + True + False + Video preset: + + + 2 + 3 + + + + + True + False + video_preset_model + 0 + + + + + 0 + + + + + 1 + 2 + 2 + 3 + + + + + True + False + Preferred video framerate: + + + 4 + 5 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 stands for "unlimited" + + False + False + True + True + adjustment_video_framerate + + + + 1 + 2 + 4 + 5 + GTK_FILL + GTK_EXPAND + + @@ -1399,6 +1487,146 @@ 1 + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + none + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 12 + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 3 + 2 + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 stands for "unlimited" + + False + False + True + True + adjustment_upload_bw + + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 stands for "unlimited" + + False + False + True + True + adjustment_download_bw + + + + 1 + 2 + GTK_FILL + GTK_EXPAND + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Upload speed limit in Kbit/sec: + right + + + 1 + 2 + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Download speed limit in Kbit/sec: + right + + + + + Enable adaptive rate control + True + True + False + 0 + True + + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + + True + False + <i>Adaptive rate control is a technique to dynamically guess the available bandwidth during a call.</i> + True + True + + + 2 + 3 + GTK_FILL + + + + + + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + <b>Bandwidth control</b> + True + + + + + True + True + 2 + + 1 @@ -2040,6 +2268,7 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 10 True @@ -2054,198 +2283,167 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True - False + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - model6 - 0 - + out - - - 0 - + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + - False + True True 0 - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 10 + center - + + gtk-go-up True True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - out - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - + True + - True - True + False + False 0 - + + gtk-go-down True - False + True + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + + False + False + 1 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + - - gtk-go-up + True - True - True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - - False - False - 0 - - - - - gtk-go-down - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - - - False - False - 1 - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-yes - - - True - True - 0 - - - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Enable - - - True - True - 1 - - + gtk-yes + + True + True + 0 + - - - False - False - 2 - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - gtk-no - - - True - True - 0 - - - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Disable - - - True - True - 1 - - + Enable + + True + True + 1 + - - False - False - 3 - False - True - 1 + False + 2 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-no + + + True + True + 0 + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Disable + + + True + True + 1 + + + + + + + False + False + 3 - True + False True 1 @@ -2259,7 +2457,7 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - <b>Codecs</b> + <b>Audio codecs</b> True @@ -2271,121 +2469,182 @@ - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 none - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 12 - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 3 - 2 - + True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 stands for "unlimited" - False - False - True - True - adjustment_upload_bw - + out + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + - 1 - 2 - 1 - 2 - GTK_FILL - + True + True + 0 - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 stands for "unlimited" - False - False - True - True - adjustment_download_bw - - - - 1 - 2 - GTK_FILL - GTK_EXPAND - - - - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Upload speed limit in Kbit/sec: - right + 10 + center + + + gtk-go-up + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + + False + False + 0 + + + + + gtk-go-down + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + + False + False + 1 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-yes + + + True + True + 0 + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Enable + + + True + True + 1 + + + + + + + False + False + 2 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + gtk-no + + + True + True + 0 + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Disable + + + True + True + 1 + + + + + + + False + False + 3 + + - 1 - 2 - - - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Download speed limit in Kbit/sec: - right - - - - - Enable adaptive rate control - True - True - False - 0 - True - - - - 1 - 2 - 2 - 3 - GTK_FILL - - - - - - True - False - <i>Adaptive rate control is a technique to dynamically guess the available bandwidth during a call.</i> - True - True - - - 2 - 3 - GTK_FILL - + False + True + 1 @@ -2393,17 +2652,17 @@ - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - <b>Bandwidth control</b> + <b>Video codecs</b> True - True + False True 1 diff --git a/gtk/propertybox.c b/gtk/propertybox.c index f235bf3e8..d2a6b0783 100644 --- a/gtk/propertybox.c +++ b/gtk/propertybox.c @@ -485,6 +485,26 @@ void linphone_gtk_video_renderer_changed(GtkWidget *w){ } } +void linphone_gtk_video_preset_changed(GtkWidget *w) { + gchar *sel = gtk_combo_box_get_active_text(GTK_COMBO_BOX(w)); + GtkSpinButton *framerate = GTK_SPIN_BUTTON(linphone_gtk_get_widget(gtk_widget_get_toplevel(w), "video_framerate")); + LinphoneCore *lc = linphone_gtk_get_core(); + if (g_strcmp0(sel, "default") == 0) { + linphone_core_set_video_preset(lc, NULL); + gtk_spin_button_set_value(framerate, 0); + gtk_widget_set_sensitive(GTK_WIDGET(framerate), FALSE); + } else if (g_strcmp0(sel, "high-fps") == 0) { + linphone_core_set_video_preset(lc, "high-fps"); + gtk_spin_button_set_value(framerate, 0); + gtk_widget_set_sensitive(GTK_WIDGET(framerate), FALSE); + } else if (g_strcmp0(sel, "custom") == 0) { + linphone_core_set_video_preset(lc, "custom"); + gtk_spin_button_set_value(framerate, 30); + gtk_widget_set_sensitive(GTK_WIDGET(framerate), TRUE); + } + g_free(sel); +} + void linphone_gtk_ring_file_set(GtkWidget *w){ gchar *file=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(w)); linphone_core_set_ring(linphone_gtk_get_core(),file); @@ -711,24 +731,27 @@ static void linphone_gtk_draw_codec_list(GtkTreeView *v, int type){ /* 0=audio, linphone_gtk_show_codecs(v,list); } -void linphone_gtk_codec_view_changed(GtkWidget *w){ - GtkWidget *listview=linphone_gtk_get_widget(gtk_widget_get_toplevel(w),"codec_list"); - int active=gtk_combo_box_get_active(GTK_COMBO_BOX(w)); - linphone_gtk_draw_codec_list(GTK_TREE_VIEW(listview),active); -} - void linphone_gtk_download_bw_changed(GtkWidget *w){ - GtkTreeView *v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(w),"codec_list")); + GtkTreeView *audiov=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(w),"audio_codec_list")); + GtkTreeView *videov=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(w),"video_codec_list")); linphone_core_set_download_bandwidth(linphone_gtk_get_core(), (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(w))); - linphone_gtk_check_codec_bandwidth(v); + linphone_gtk_check_codec_bandwidth(audiov); + linphone_gtk_check_codec_bandwidth(videov); } void linphone_gtk_upload_bw_changed(GtkWidget *w){ - GtkTreeView *v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(w),"codec_list")); + GtkTreeView *audiov=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(w),"audio_codec_list")); + GtkTreeView *videov=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(w),"video_codec_list")); linphone_core_set_upload_bandwidth(linphone_gtk_get_core(), (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(w))); - linphone_gtk_check_codec_bandwidth(v); + linphone_gtk_check_codec_bandwidth(audiov); + linphone_gtk_check_codec_bandwidth(videov); +} + +void linphone_gtk_video_framerate_changed(GtkWidget *w) { + linphone_core_set_preferred_framerate(linphone_gtk_get_core(), + (int)gtk_spin_button_get_value(GTK_SPIN_BUTTON(w))); } void linphone_gtk_adaptive_rate_control_toggled(GtkToggleButton *button){ @@ -741,14 +764,17 @@ static void _g_list_func_destroy_tree_path(gpointer data, gpointer user_data) { gtk_tree_path_free(tree_path); } -static void linphone_gtk_codec_move(GtkWidget *button, int dir){ - GtkTreeView *v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"codec_list")); - GtkTreeSelection *sel=gtk_tree_view_get_selection(v); +static void linphone_gtk_codec_move(GtkWidget *button, int dir, int type){ /* 0=audio, 1=video*/ + GtkTreeView *v; + GtkTreeSelection *sel; GtkTreeModel *mod; GtkTreeIter iter; PayloadType *pt=NULL; LinphoneCore *lc=linphone_gtk_get_core(); - + + if (type == 0) v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"audio_codec_list")); + else v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"video_codec_list")); + sel=gtk_tree_view_get_selection(v); if (gtk_tree_selection_count_selected_rows(sel) == 1){ MSList *sel_elem,*before; MSList *codec_list; @@ -791,26 +817,45 @@ static void linphone_gtk_codec_set_enable(GtkTreeModel *model, GtkTreePath *path CODEC_COLOR,(gpointer)get_codec_color(linphone_gtk_get_core(),pt), -1); } -static void linphone_gtk_codec_set_enable_all_selected(GtkWidget *button, gboolean enabled){ - GtkTreeView *v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"codec_list")); - GtkTreeSelection *sel=gtk_tree_view_get_selection(v); +static void linphone_gtk_codec_set_enable_all_selected(GtkWidget *button, gboolean enabled, int type){ /* 0=audio, 1=video*/ + GtkTreeView *v; + GtkTreeSelection *sel; + if (type == 0) v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"audio_codec_list")); + else v=GTK_TREE_VIEW(linphone_gtk_get_widget(gtk_widget_get_toplevel(button),"video_codec_list")); + sel=gtk_tree_view_get_selection(v); gtk_tree_selection_selected_foreach(sel, linphone_gtk_codec_set_enable, &enabled); } -void linphone_gtk_codec_up(GtkWidget *button){ - linphone_gtk_codec_move(button,+1); +void linphone_gtk_audio_codec_up(GtkWidget *button){ + linphone_gtk_codec_move(button,+1,0); } -void linphone_gtk_codec_down(GtkWidget *button){ - linphone_gtk_codec_move(button,-1); +void linphone_gtk_audio_codec_down(GtkWidget *button){ + linphone_gtk_codec_move(button,-1,0); } -void linphone_gtk_codec_enable(GtkWidget *button){ - linphone_gtk_codec_set_enable_all_selected(button,TRUE); +void linphone_gtk_audio_codec_enable(GtkWidget *button){ + linphone_gtk_codec_set_enable_all_selected(button,TRUE,0); } -void linphone_gtk_codec_disable(GtkWidget *button){ - linphone_gtk_codec_set_enable_all_selected(button,FALSE); +void linphone_gtk_audio_codec_disable(GtkWidget *button){ + linphone_gtk_codec_set_enable_all_selected(button,FALSE,0); +} + +void linphone_gtk_video_codec_up(GtkWidget *button){ + linphone_gtk_codec_move(button,+1,1); +} + +void linphone_gtk_video_codec_down(GtkWidget *button){ + linphone_gtk_codec_move(button,-1,1); +} + +void linphone_gtk_video_codec_enable(GtkWidget *button){ + linphone_gtk_codec_set_enable_all_selected(button,TRUE,1); +} + +void linphone_gtk_video_codec_disable(GtkWidget *button){ + linphone_gtk_codec_set_enable_all_selected(button,FALSE,1); } void linphone_gtk_clear_passwords(GtkWidget *button){ @@ -1394,6 +1439,29 @@ void linphone_gtk_fill_video_renderers(GtkWidget *pb){ #endif } +void linphone_gtk_fill_video_presets(GtkWidget *pb) { + GtkComboBox *combo = GTK_COMBO_BOX(linphone_gtk_get_widget(pb, "video_preset")); + const char *preset = linphone_core_get_video_preset(linphone_gtk_get_core()); + if (preset == NULL) { + gtk_combo_box_set_active(combo, -1); + gtk_combo_box_set_active(combo, 0); + } else { + gboolean valid; + GtkTreeIter iter; + gchar *str_data; + GtkTreeModel *model = gtk_combo_box_get_model(combo); + valid = gtk_tree_model_get_iter_first(model, &iter); + while (valid) { + gtk_tree_model_get(model, &iter, 0, &str_data, -1); + if (g_strcmp0(preset, str_data) == 0) { + gtk_combo_box_set_active_iter(combo, &iter); + break; + } + valid = gtk_tree_model_iter_next(model, &iter); + } + } +} + typedef struct { guint timeout_id; LCSipTransports tp; @@ -1494,7 +1562,8 @@ void linphone_gtk_show_parameters(void){ const char *tmp; LinphoneAddress *contact; LinphoneFirewallPolicy pol; - GtkWidget *codec_list; + GtkWidget *audio_codec_list; + GtkWidget *video_codec_list; int mtu; int ui_advanced; LCSipTransports tr; @@ -1507,7 +1576,8 @@ void linphone_gtk_show_parameters(void){ gtk_widget_show(pb); return; } - codec_list=linphone_gtk_get_widget(pb,"codec_list"); + audio_codec_list=linphone_gtk_get_widget(pb,"audio_codec_list"); + video_codec_list=linphone_gtk_get_widget(pb,"video_codec_list"); /* NETWORK CONFIG */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(pb,"ipv6_enabled")), @@ -1580,12 +1650,21 @@ void linphone_gtk_show_parameters(void){ linphone_gtk_fill_soundcards(pb); linphone_gtk_fill_webcams(pb); linphone_gtk_fill_video_renderers(pb); + linphone_gtk_fill_video_presets(pb); linphone_gtk_fill_video_sizes(linphone_gtk_get_widget(pb,"video_size")); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(pb,"video_framerate")), + linphone_core_get_preferred_framerate(lc)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(pb,"echo_cancelation")), linphone_core_echo_cancellation_enabled(lc)); gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(linphone_gtk_get_widget(pb,"ring_chooser")), linphone_core_get_ring(lc)); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(pb,"download_bw")), + linphone_core_get_download_bandwidth(lc)); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(pb,"upload_bw")), + linphone_core_get_upload_bandwidth(lc)); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(pb,"adaptive_rate_control")), + linphone_core_adaptive_rate_control_enabled(lc)); /* SIP CONFIG */ contact=linphone_core_get_primary_contact_parsed(lc); if (contact){ @@ -1604,15 +1683,10 @@ void linphone_gtk_show_parameters(void){ #endif linphone_gtk_show_sip_accounts(pb); /* CODECS CONFIG */ - linphone_gtk_init_codec_list(GTK_TREE_VIEW(codec_list)); - linphone_gtk_draw_codec_list(GTK_TREE_VIEW(codec_list),0); - gtk_combo_box_set_active(GTK_COMBO_BOX(linphone_gtk_get_widget(pb,"codec_view")),0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(pb,"download_bw")), - linphone_core_get_download_bandwidth(lc)); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(linphone_gtk_get_widget(pb,"upload_bw")), - linphone_core_get_upload_bandwidth(lc)); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(pb,"adaptive_rate_control")), - linphone_core_adaptive_rate_control_enabled(lc)); + linphone_gtk_init_codec_list(GTK_TREE_VIEW(audio_codec_list)); + linphone_gtk_init_codec_list(GTK_TREE_VIEW(video_codec_list)); + linphone_gtk_draw_codec_list(GTK_TREE_VIEW(audio_codec_list), 0); + linphone_gtk_draw_codec_list(GTK_TREE_VIEW(video_codec_list), 1); /* CALL PARAMS CONFIG */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(pb, "auto_answer_checkbox")), linphone_gtk_get_ui_config_int("auto_answer", 0));