diff options
author | llyzs <llyzs.vic@gmail.com> | 2011-03-15 19:07:45 +0300 |
---|---|---|
committer | Vic Lee (llyzs) <llyzs@b6cfa94a-2857-405c-b0d6-536ef9fc39e1> | 2011-03-15 19:07:45 +0300 |
commit | 28b17bf398fe31a2e20acd4ee5fa3b30f5596b56 (patch) | |
tree | c93ed4ca77b5a9555345535b64d6264c77f0a769 /remmina-plugins | |
parent | 71bfe9b751c67a31c1dedc2f322d0c346653e284 (diff) |
RDP: provide sound quality options
Diffstat (limited to 'remmina-plugins')
-rw-r--r-- | remmina-plugins/rdp/remminapluginrdp.c | 34 | ||||
-rw-r--r-- | remmina-plugins/rdp/remminapluginrdp.h | 2 |
2 files changed, 33 insertions, 3 deletions
diff --git a/remmina-plugins/rdp/remminapluginrdp.c b/remmina-plugins/rdp/remminapluginrdp.c index 80a1ca4f1..b7ec4d3b6 100644 --- a/remmina-plugins/rdp/remminapluginrdp.c +++ b/remmina-plugins/rdp/remminapluginrdp.c @@ -130,6 +130,7 @@ remmina_plugin_rdp_main (RemminaProtocolWidget *gp) gchar *value; gint rdpdr_num; gint drdynvc_num; + gint rdpsnd_num; const gchar *cs; gpdata = GET_DATA (gp); @@ -251,13 +252,37 @@ remmina_plugin_rdp_main (RemminaProtocolWidget *gp) } drdynvc_num = 0; - if (g_strcmp0 (remmina_plugin_service->file_get_string (remminafile, "sound"), "remote") == 0) + rdpsnd_num = 0; + cs = remmina_plugin_service->file_get_string (remminafile, "sound"); + if (g_strcmp0 (cs, "remote") == 0) { gpdata->settings->console_audio = 1; } - else if (g_strcmp0 (remmina_plugin_service->file_get_string (remminafile, "sound"), "local") == 0) + else if (g_str_has_prefix (cs, "local")) { - freerdp_chanman_load_plugin (gpdata->chan_man, gpdata->settings, "rdpsnd", NULL); + cs = strchr (cs, ','); + if (cs) + { + snprintf (gpdata->rdpsnd_options, sizeof (gpdata->rdpsnd_options), "%s", cs + 1); + s = strchr (gpdata->rdpsnd_options, ','); + if (s) *s++ = '\0'; + + gpdata->rdpsnd_data[rdpsnd_num].size = sizeof(RD_PLUGIN_DATA); + gpdata->rdpsnd_data[rdpsnd_num].data[0] = "rate"; + gpdata->rdpsnd_data[rdpsnd_num].data[1] = gpdata->rdpsnd_options; + rdpsnd_num++; + + if (s) + { + gpdata->rdpsnd_data[rdpsnd_num].size = sizeof(RD_PLUGIN_DATA); + gpdata->rdpsnd_data[rdpsnd_num].data[0] = "channel"; + gpdata->rdpsnd_data[rdpsnd_num].data[1] = s; + rdpsnd_num++; + } + } + + freerdp_chanman_load_plugin (gpdata->chan_man, gpdata->settings, "rdpsnd", gpdata->rdpsnd_data); + gpdata->drdynvc_data[drdynvc_num].size = sizeof(RD_PLUGIN_DATA); gpdata->drdynvc_data[drdynvc_num].data[0] = "audin"; drdynvc_num++; @@ -506,6 +531,9 @@ static gpointer sound_list[] = { "off", N_("Off"), "local", N_("Local"), + "local,11025,1", N_("Local - low quality"), + "local,22050,2", N_("Local - medium quality"), + "local,44100,2", N_("Local - high quality"), "remote", N_("Remote"), NULL }; diff --git a/remmina-plugins/rdp/remminapluginrdp.h b/remmina-plugins/rdp/remminapluginrdp.h index 3d749334a..50252425c 100644 --- a/remmina-plugins/rdp/remminapluginrdp.h +++ b/remmina-plugins/rdp/remminapluginrdp.h @@ -53,6 +53,8 @@ typedef struct _RemminaPluginRdpData RD_PLUGIN_DATA rdpdr_data[5]; RD_PLUGIN_DATA drdynvc_data[5]; + RD_PLUGIN_DATA rdpsnd_data[5]; + gchar rdpsnd_options[20]; GtkWidget *drawing_area; gint scale_width; |