From e1fb3d59addbc768e0c736512acb5fb81bcafd48 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 20 Apr 2010 22:21:13 +0200 Subject: [PATCH] implement modifying of codecs fmtp within property box --- coreapi/linphonecore.c | 12 ++++++++++-- gtk-glade/parameters.glade | 19 +++++++++++++++---- gtk-glade/propertybox.c | 14 ++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 2ada417af..3ada9e8c9 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -716,13 +716,21 @@ static PayloadType * find_payload(RtpProfile *prof, const char *mime_type, int c it=rtp_profile_get_payload(prof,i); if (it!=NULL && strcasecmp(mime_type,it->mime_type)==0 && (clock_rate==it->clock_rate || clock_rate<=0) ){ - if ( (recv_fmtp && it->recv_fmtp && strcasecmp(recv_fmtp,it->recv_fmtp)==0) || + if ( (recv_fmtp && it->recv_fmtp && strstr(recv_fmtp,it->recv_fmtp)!=NULL) || (recv_fmtp==NULL && it->recv_fmtp==NULL) ){ /*exact match*/ + if (recv_fmtp) payload_type_set_recv_fmtp(it,recv_fmtp); return it; - }else candidate=it; + }else { + if (candidate){ + if (it->recv_fmtp==NULL) candidate=it; + }else candidate=it; + } } } + if (candidate && recv_fmtp){ + payload_type_set_recv_fmtp(candidate,recv_fmtp); + } return candidate; } diff --git a/gtk-glade/parameters.glade b/gtk-glade/parameters.glade index 14e07514f..3f3671330 100644 --- a/gtk-glade/parameters.glade +++ b/gtk-glade/parameters.glade @@ -10,6 +10,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -19,6 +20,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -32,6 +34,7 @@ True + vertical True @@ -232,6 +235,7 @@ True + vertical Direct connection to the Internet @@ -251,6 +255,7 @@ True + vertical Behind NAT / Firewall (specify gateway IP below) @@ -307,6 +312,7 @@ True + vertical Behind NAT / Firewall (use STUN to resolve) @@ -415,6 +421,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -447,7 +454,7 @@ - gtk-media-play + gtk-media-play True True True @@ -749,6 +756,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -892,6 +900,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -1189,6 +1198,7 @@ virtual network ! True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -1203,6 +1213,7 @@ virtual network ! True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -1246,9 +1257,10 @@ Video codecs True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical - gtk-go-up + gtk-go-up True True True @@ -1264,7 +1276,7 @@ Video codecs - gtk-go-down + gtk-go-down True True True @@ -1642,7 +1654,6 @@ Video codecs True gtk-apply - 4 0 diff --git a/gtk-glade/propertybox.c b/gtk-glade/propertybox.c index 4ed3f2f0e..85ebdbb8d 100644 --- a/gtk-glade/propertybox.c +++ b/gtk-glade/propertybox.c @@ -227,6 +227,17 @@ enum { CODEC_NCOLUMNS }; +static void fmtp_edited(GtkCellRendererText *renderer, gchar *path, gchar *new_text, gpointer userdata){ + GtkListStore *store=(GtkListStore*)userdata; + GtkTreeIter iter; + if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(store),&iter,path)){ + PayloadType *pt; + gtk_list_store_set(store,&iter,CODEC_PARAMS,new_text,-1); + gtk_tree_model_get(GTK_TREE_MODEL(store),&iter,CODEC_PRIVDATA,&pt,-1); + payload_type_set_recv_fmtp(pt,new_text); + } +} + static void linphone_gtk_init_codec_list(GtkTreeView *listview){ GtkCellRenderer *renderer; GtkTreeViewColumn *column; @@ -268,11 +279,14 @@ static void linphone_gtk_init_codec_list(GtkTreeView *listview){ "foreground",CODEC_COLOR, NULL); gtk_tree_view_append_column (listview, column); + renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes (_("Parameters"), renderer, "text", CODEC_PARAMS, "foreground",CODEC_COLOR, + "editable",TRUE, NULL); + g_signal_connect(G_OBJECT(renderer),"edited",G_CALLBACK(fmtp_edited),store); gtk_tree_view_append_column (listview, column); /* Setup the selection handler */ select = gtk_tree_view_get_selection (listview);