[farsight2/master] Use fs_codec_add_optional_parameter everywhere

Olivier Crête olivier.crete at collabora.co.uk
Tue Dec 23 15:22:30 PST 2008


---
 gst/fsrtpconference/fs-rtp-codec-cache.c       |   11 ++++----
 gst/fsrtpconference/fs-rtp-codec-negotiation.c |   10 ++-----
 gst/fsrtpconference/fs-rtp-discover-codecs.c   |   10 +------
 gst/fsrtpconference/fs-rtp-dtmf-event-source.c |    6 +----
 gst/fsrtpconference/fs-rtp-specific-nego.c     |   26 +++++--------------
 python/pyfarsight.override                     |   23 ++++++++---------
 tests/check/base/fscodec.c                     |   31 ++++-------------------
 tests/check/main/rtpcodecs.c                   |    5 +---
 8 files changed, 37 insertions(+), 85 deletions(-)

diff --git a/gst/fsrtpconference/fs-rtp-codec-cache.c b/gst/fsrtpconference/fs-rtp-codec-cache.c
index fe091df..066d4bb 100644
--- a/gst/fsrtpconference/fs-rtp-codec-cache.c
+++ b/gst/fsrtpconference/fs-rtp-codec-cache.c
@@ -183,11 +183,12 @@ load_codec_blueprint (FsMediaType media_type, gchar **in, gsize *size) {
 
   READ_CHECK (read_codec_blueprint_int (in, size, &tmp_size));
   for (i = 0; i < tmp_size; i++) {
-    FsCodecParameter *param = g_new0 (FsCodecParameter, 1);
-    READ_CHECK (read_codec_blueprint_string (in, size, &(param->name)));
-    READ_CHECK (read_codec_blueprint_string (in, size, &(param->value)));
-    codec_blueprint->codec->optional_params =
-        g_list_append (codec_blueprint->codec->optional_params, param);
+    gchar *name, *value;
+    READ_CHECK (read_codec_blueprint_string (in, size, &(name)));
+    READ_CHECK (read_codec_blueprint_string (in, size, &(value)));
+    fs_codec_add_optional_parameter (codec_blueprint->codec, name, value);
+    g_free (name);
+    g_free (value);
   }
 
   READ_CHECK (read_codec_blueprint_string (in, size, &tmp));
diff --git a/gst/fsrtpconference/fs-rtp-codec-negotiation.c b/gst/fsrtpconference/fs-rtp-codec-negotiation.c
index a58ad81..73653ea 100644
--- a/gst/fsrtpconference/fs-rtp-codec-negotiation.c
+++ b/gst/fsrtpconference/fs-rtp-codec-negotiation.c
@@ -344,13 +344,9 @@ create_local_codec_associations (FsMediaType media_type,
         if (!g_ascii_strcasecmp (bp_param->name, pref_param->name))
           break;
       }
-      if (!pref_param_e) {
-        FsCodecParameter *newparam = g_new0 (FsCodecParameter, 1);
-        newparam->name = g_strdup (bp_param->name);
-        newparam->value = g_strdup (bp_param->value);
-        ca->codec->optional_params = g_list_append (ca->codec->optional_params,
-            newparam);
-      }
+      if (!pref_param_e)
+        fs_codec_add_optional_parameter (ca->codec, bp_param->name,
+            bp_param->value);
     }
 
     {
diff --git a/gst/fsrtpconference/fs-rtp-discover-codecs.c b/gst/fsrtpconference/fs-rtp-discover-codecs.c
index ce60e97..6a34c77 100644
--- a/gst/fsrtpconference/fs-rtp-discover-codecs.c
+++ b/gst/fsrtpconference/fs-rtp-discover-codecs.c
@@ -1398,14 +1398,8 @@ extract_field_data (GQuark field_id,
   else
   {
     if (type == G_TYPE_STRING)
-    {
-      FsCodecParameter *optional_param = g_new0 (FsCodecParameter, 1);
-
-      optional_param->name = g_strdup (field_name);
-      optional_param->value = g_strdup (g_value_get_string (value));
-      codec->optional_params = g_list_append (codec->optional_params,
-          optional_param);
-    }
+      fs_codec_add_optional_parameter (codec, field_name,
+          g_value_get_string (value));
   }
 
   return TRUE;
diff --git a/gst/fsrtpconference/fs-rtp-dtmf-event-source.c b/gst/fsrtpconference/fs-rtp-dtmf-event-source.c
index 1db191c..343b6b1 100644
--- a/gst/fsrtpconference/fs-rtp-dtmf-event-source.c
+++ b/gst/fsrtpconference/fs-rtp-dtmf-event-source.c
@@ -139,7 +139,6 @@ fs_rtp_dtmf_event_source_class_add_blueprint (FsRtpSpecialSourceClass *klass,
     GList *done_item = NULL;
     gboolean skip = FALSE;
     CodecBlueprint *new_bp = NULL;
-    FsCodecParameter *param = NULL;
 
     if (bp->codec->media_type != FS_MEDIA_TYPE_AUDIO)
       continue;
@@ -167,10 +166,7 @@ fs_rtp_dtmf_event_source_class_add_blueprint (FsRtpSpecialSourceClass *klass,
 
     new_bp->codec = fs_codec_new (FS_CODEC_ID_ANY, "telephone-event",
         FS_MEDIA_TYPE_AUDIO, bp->codec->clock_rate);
-    param = g_new0 (FsCodecParameter, 1);
-    param->name = g_strdup ("events");
-    param->value = g_strdup ("0-15");
-    new_bp->codec->optional_params = g_list_prepend (NULL, param);
+    fs_codec_add_optional_parameter (new_bp->codec, "events", "0-15");
     new_bp->rtp_caps = fs_codec_to_gst_caps (new_bp->codec);
     new_bp->media_caps = gst_caps_new_any ();
 
diff --git a/gst/fsrtpconference/fs-rtp-specific-nego.c b/gst/fsrtpconference/fs-rtp-specific-nego.c
index 8f0fc8f..ca30695 100644
--- a/gst/fsrtpconference/fs-rtp-specific-nego.c
+++ b/gst/fsrtpconference/fs-rtp-specific-nego.c
@@ -153,13 +153,9 @@ sdp_is_compat_default (GstCaps *rtp_caps, FsCodec *local_codec,
 
     /* Let's add the local param to the negotiated codec if it does not exist in
      * the remote codec */
-    if (!negotiated_param_list) {
-      FsCodecParameter *newparam = g_new (FsCodecParameter, 1);
-      newparam->name = g_strdup (local_param->name);
-      newparam->value = g_strdup (local_param->value);
-      negotiated_codec->optional_params = g_list_append (
-          negotiated_codec->optional_params, newparam);
-    }
+    if (!negotiated_param_list)
+      fs_codec_add_optional_parameter (negotiated_codec, local_param->name,
+          local_param->value);
   }
 
   return negotiated_codec;
@@ -239,11 +235,8 @@ sdp_is_compat_ilbc (GstCaps *rtp_caps, FsCodec *local_codec,
     /* Let's add the local param to the negotiated codec if it does not exist in
      * the remote codec */
     if (!negotiated_param_list) {
-      FsCodecParameter *newparam = g_new (FsCodecParameter, 1);
-      newparam->name = g_strdup (local_param->name);
-      newparam->value = g_strdup (local_param->value);
-      negotiated_codec->optional_params = g_list_append (
-          negotiated_codec->optional_params, newparam);
+      fs_codec_add_optional_parameter (negotiated_codec, local_param->name,
+          local_param->value);
 
       if (!g_ascii_strcasecmp (local_param->name, "mode")) {
         has_mode = TRUE;
@@ -267,13 +260,8 @@ sdp_is_compat_ilbc (GstCaps *rtp_caps, FsCodec *local_codec,
 
   /* If we still can't find the mode anywhere, let's add it since it's
    *  mandatory and use default value of 30 ms */
-  if (!has_mode) {
-    FsCodecParameter *newparam = g_new0 (FsCodecParameter, 1);
-    newparam->name = g_strdup ("mode");
-    newparam->value = g_strdup ("30");
-    negotiated_codec->optional_params = g_list_append (
-        negotiated_codec->optional_params, newparam);
-  }
+  if (!has_mode)
+    fs_codec_add_optional_parameter (negotiated_codec, "mode", "30");
 
   return negotiated_codec;
 
diff --git a/python/pyfarsight.override b/python/pyfarsight.override
index 6034e82..a476ed6 100644
--- a/python/pyfarsight.override
+++ b/python/pyfarsight.override
@@ -343,7 +343,6 @@ _wrap_fs_codec_tp_setattr(PyObject *self, char *attr, PyObject *value)
   else if (!strcmp (attr, "optional_params"))
   {
     GList *p;
-    GList *newlist = NULL;
     int i = 0;
 
     if (value == NULL)
@@ -372,16 +371,6 @@ _wrap_fs_codec_tp_setattr(PyObject *self, char *attr, PyObject *value)
       }
     }
 
-    for (i = 0; i < PySequence_Size (value); i++)
-    {
-      PyObject *item = PySequence_GetItem (value, i);
-      FsCodecParameter *param = g_new0 (FsCodecParameter, 1);
-
-      param->name = g_strdup (PyString_AsString (PyTuple_GetItem (item, 0)));
-      param->value = g_strdup (PyString_AsString (PyTuple_GetItem (item, 1)));
-      newlist = g_list_append (newlist, param);
-    }
-
   none:
 
     for (p = g_list_first (codec->optional_params); p; p = g_list_next (p))
@@ -392,7 +381,17 @@ _wrap_fs_codec_tp_setattr(PyObject *self, char *attr, PyObject *value)
       g_free (p->data);
     }
     g_list_free (codec->optional_params);
-    codec->optional_params = newlist;
+
+    if (value == NULL)
+      return 0;
+
+    for (i = 0; i < PySequence_Size (value); i++)
+    {
+      PyObject *item = PySequence_GetItem (value, i);
+      fs_codec_add_optional_parameter(codec,
+          PyString_AsString (PyTuple_GetItem (item, 0)),
+          PyString_AsString (PyTuple_GetItem (item, 1)));
+    }
   }
   else
   {
diff --git a/tests/check/base/fscodec.c b/tests/check/base/fscodec.c
index fc8c8c5..ca66659 100644
--- a/tests/check/base/fscodec.c
+++ b/tests/check/base/fscodec.c
@@ -89,22 +89,10 @@ static FsCodec *
 init_codec_with_three_params (void)
 {
   FsCodec *codec = fs_codec_new (1, "aa", FS_MEDIA_TYPE_APPLICATION, 650);
-  FsCodecParameter *p1 = NULL;
 
-  p1 = g_new0 (FsCodecParameter, 1);
-  p1->name = g_strdup ("aa1");
-  p1->value = g_strdup ("bb1");
-  codec->optional_params = g_list_append (codec->optional_params, p1);
-
-  p1 = g_new0 (FsCodecParameter, 1);
-  p1->name = g_strdup ("aa2");
-  p1->value = g_strdup ("bb2");
-  codec->optional_params = g_list_append (codec->optional_params, p1);
-
-  p1 = g_new0 (FsCodecParameter, 1);
-  p1->name = g_strdup ("aa3");
-  p1->value = g_strdup ("bb3");
-  codec->optional_params = g_list_append (codec->optional_params, p1);
+  fs_codec_add_optional_parameter (codec, "aa1", "bb1");
+  fs_codec_add_optional_parameter (codec, "aa2", "bb2");
+  fs_codec_add_optional_parameter (codec, "aa3", "bb3");
 
   return codec;
 }
@@ -115,14 +103,13 @@ _free_codec_param (gpointer param)
   FsCodecParameter *p = param;
   g_free (p->name);
   g_free (p->value);
-  g_free (p);
+  g_slice_free (FsCodecParameter, p);
 }
 
 GST_START_TEST (test_fscodec_are_equal_opt_params)
 {
   FsCodec *codec1;
   FsCodec *codec2;
-  FsCodecParameter *p1 = NULL;
 
   codec1 = init_codec_with_three_params ();
   codec2 = init_codec_with_three_params ();
@@ -134,10 +121,7 @@ GST_START_TEST (test_fscodec_are_equal_opt_params)
   codec1->optional_params = g_list_remove (codec1->optional_params,
       g_list_first (codec1->optional_params)->data);
 
-  p1 = g_new0 (FsCodecParameter, 1);
-  p1->name = g_strdup ("aa1");
-  p1->value = g_strdup ("bb1");
-  codec1->optional_params = g_list_append (codec1->optional_params, p1);
+  fs_codec_add_optional_parameter (codec1, "aa1", "bb1");
 
   fail_unless (fs_codec_are_equal (codec1, codec2) == TRUE,
       "Identical codecs (with params in different order 1) not recognized");
@@ -146,10 +130,7 @@ GST_START_TEST (test_fscodec_are_equal_opt_params)
   codec1->optional_params = g_list_remove (codec1->optional_params,
       g_list_first (codec1->optional_params)->data);
 
-  p1 = g_new0 (FsCodecParameter, 1);
-  p1->name = g_strdup ("aa2");
-  p1->value = g_strdup ("bb2");
-  codec1->optional_params = g_list_append (codec1->optional_params, p1);
+  fs_codec_add_optional_parameter (codec1, "aa2", "bb2");
 
   fail_unless (fs_codec_are_equal (codec1, codec2) == TRUE,
       "Identical codecs (with params in different order 2) not recognized");
diff --git a/tests/check/main/rtpcodecs.c b/tests/check/main/rtpcodecs.c
index 8ac8e25..c35dfc5 100644
--- a/tests/check/main/rtpcodecs.c
+++ b/tests/check/main/rtpcodecs.c
@@ -71,10 +71,7 @@ GST_START_TEST (test_rtpcodecs_local_codecs_config)
         "PCMA",
         FS_MEDIA_TYPE_AUDIO,
         8000);
-    FsCodecParameter *param = g_new0 (FsCodecParameter, 1);
-    param->name = g_strdup ("p1");
-    param->value = g_strdup ("v1");
-    codec->optional_params = g_list_append (NULL, param);
+    fs_codec_add_optional_parameter (codec, "p1", "v1");
     codecs = g_list_append (codecs, codec);
   }
 
-- 
1.5.6.5




More information about the farsight-commits mailing list