Skip to content
Snippets Groups Projects
Commit 2d3332ac authored by Emmanuel Milou's avatar Emmanuel Milou
Browse files

Merge branch 'm_savard'

parents 753c8d2e 2656fecc
Branches
Tags
No related merge requests found
Showing
with 3835 additions and 2469 deletions
......@@ -832,7 +832,6 @@ sflphone_set_current_account()
void
sflphone_fill_codec_list()
{
codec_list_clear();
gchar** codecs = (gchar**)dbus_codec_list();
......@@ -845,7 +844,9 @@ sflphone_fill_codec_list()
codec_t * c = g_new0(codec_t, 1);
c->_payload = atoi(*order);
details = (gchar **)dbus_codec_details(c->_payload);
//DEBUG("Codec details: %s / %s / %s / %s",details[0],details[1],details[2],details[3]);
c->name = details[0];
c->is_active = TRUE;
c->sample_rate = atoi(details[1]);
......@@ -857,7 +858,7 @@ sflphone_fill_codec_list()
for(pl=codecs; *codecs; codecs++)
{
details = (gchar **)dbus_codec_details(atoi(*codecs));
if(codec_list_get(details[0])!=NULL){
if(codec_list_get_by_payload(atoi(*codecs))!=NULL){
// does nothing - the codec is already in the list, so is active.
}
else{
......
......@@ -62,14 +62,16 @@ codec_list_clear ()
void
codec_list_add(codec_t * c)
{
g_print ("add %s codec\n", c->name);
g_queue_push_tail (codecQueue, (gpointer *) c);
}
void
codec_set_active(gchar* name)
codec_set_active(codec_t * c)
{
codec_t * c = codec_list_get(name);
if(c)
{
DEBUG("%s set active", c->name);
......@@ -78,9 +80,9 @@ codec_set_active(gchar* name)
}
void
codec_set_inactive(gchar* name)
codec_set_inactive(codec_t * c)
{
codec_t * c = codec_list_get(name);
if(c)
c->is_active = FALSE;
}
......@@ -92,7 +94,7 @@ codec_list_get_size()
}
codec_t*
codec_list_get( const gchar* name)
codec_list_get_by_name( const gchar* name)
{
GList * c = g_queue_find_custom(codecQueue, name, is_name_codecstruct);
if(c)
......@@ -101,6 +103,16 @@ codec_list_get( const gchar* name)
return NULL;
}
codec_t*
codec_list_get_by_payload( const int payload)
{
GList * c = g_queue_find_custom(codecQueue, payload, is_payload_codecstruct);
if(c)
return (codec_t *)c->data;
else
return NULL;
}
codec_t*
codec_list_get_nth(guint index)
{
......@@ -121,6 +133,7 @@ codec_set_prefered_order(guint index)
void
codec_list_move_codec_up(guint index)
{
printf("Codec list Size: %i \n",codec_list_get_size());
if(index != 0)
{
gpointer codec = g_queue_pop_nth(codecQueue, index);
......@@ -140,6 +153,7 @@ codec_list_move_codec_up(guint index)
void
codec_list_move_codec_down(guint index)
{
printf("Codec list Size: %i \n",codec_list_get_size());
if(index != codecQueue->length)
{
gpointer codec = g_queue_pop_nth(codecQueue, index);
......
......@@ -66,13 +66,13 @@ void codec_list_add(codec_t * c);
* Set a codec active. An active codec will be used for codec negociation
* @param name The string description of the codec
*/
void codec_set_active(gchar* name);
void codec_set_active(codec_t * c);
/**
* Set a codec inactive. An active codec won't be used for codec negociation
* @param name The string description of the codec
*/
void codec_set_inactive(gchar* name);
void codec_set_inactive(codec_t * c);
/**
* Return the number of codecs in the list
......@@ -85,7 +85,7 @@ guint codec_list_get_size();
* @param name The string description of the codec
* @return codec_t* A codec or NULL
*/
codec_t * codec_list_get(const gchar * name);
codec_t * codec_list_get_by_name(const gchar * name);
/**
* Return the codec at the nth position in the list
......@@ -117,4 +117,6 @@ void codec_list_move_codec_down(guint index);
*/
void codec_list_update_to_daemon();
codec_t* codec_list_get_by_payload( const int payload);
#endif
......@@ -374,6 +374,8 @@ codec_active_toggled(GtkCellRendererToggle *renderer UNUSED, gchar *path, gpoint
GtkTreeModel *model;
gboolean active;
char* name;
char* srate;
codec_t* codec;
// Get path of clicked codec active toggle box
treePath = gtk_tree_path_new_from_string(path);
......@@ -384,9 +386,18 @@ codec_active_toggled(GtkCellRendererToggle *renderer UNUSED, gchar *path, gpoint
gtk_tree_model_get(model, &iter,
COLUMN_CODEC_ACTIVE, &active,
COLUMN_CODEC_NAME, &name,
COLUMN_CODEC_FREQUENCY, &srate,
-1);
DEBUG("%s", name);
printf("%s, %s\n", name, srate);
// codec_list_get_by_name(name);
if ((strcmp(name,"speex")==0) && (strcmp(srate,"8 kHz")==0))
codec = codec_list_get_by_payload(110);
else if ((strcmp(name,"speex")==0) && (strcmp(srate,"16 kHz")==0))
codec = codec_list_get_by_payload(111);
else
codec = codec_list_get_by_name(name);
// Toggle active value
active = !active;
......@@ -400,9 +411,9 @@ codec_active_toggled(GtkCellRendererToggle *renderer UNUSED, gchar *path, gpoint
// Modify codec queue to represent change
if(active)
codec_set_active(name);
codec_set_active(codec);
else
codec_set_inactive(name);
codec_set_inactive(codec);
// Perpetuate changes to the deamon
codec_list_update_to_daemon();
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -28,6 +28,7 @@ public:
: AudioCodec(payload, "PCMA")
{
_clockRate = 8000;
_frameSize = 160; // 20 ms at 8kHz
_channel = 1;
_bitrate = 64;
_bandwidth = 80;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment