Hallo all,

i try to reduce cpu usage of empathy-av. With perf tool i see that
gstaudioresample use more cpu than speexenc(!). 

i attached names on all resample elements found in farsight and empathy
but i still cand find the correct one.
With this command:
/usr/lib/empathy/empathy-av --gst-debug=audioresample:5

i get fallowing result:
0:00:38.189954044  8171      0x22556e0 DEBUG          audioresample
gstaudioresample.c:1258:gst_audio_resample_transform:<audioresample1>
input = samples [886600, 887040) = [20104308390, 20114285714) ns;
output = samples [160803, 160883) = [20100360544, 20110360544) ns
0:00:38.198865163  8171      0x22556e0 LOG            audioresample
gstaudioresample.c:542:gst_audio_resample_transform_size:<audioresample1> asked 
to transform size 3520 in direction SINK
0:00:38.198887093  8171      0x22556e0 DEBUG          audioresample
gstaudioresample.c:472:gst_audio_resample_parse_caps: incaps
audio/x-raw-float, endianness=(int)1234, width=(int)32, rate=(int)44100,
channels=(int)2, outcaps audio/x-raw-float, width=(int)32,
rate=(int)8000, channels=(int)2, endianness=(int)1234


This element has default name "audioresample1", i changed all name to
test_1,2 ... - "audioresample name=test_1". So it is probably not in
farsight or empathy.

It resample "rate=(int)44100, channels=(int)2" to "rate=(int)8000,
channels=(int)2". Interesting thing is: target 8000 mean it should be
before speexenc. But pulseaudio say, we grub 8000 from PA.
So it looks like:
PA(8000kHz)->empathy(resample(44100)->speexenc(8000))-Network->(speexdec(8000)->resample(44100))->PA(44100)
One more bad thing is, it do resample for 2(!)channels, it mean double
cpu usage. Even if we use only 1 channels.


May be some one see what i do not see.

Thank you for any tips.

Here are my changes:
--- farsight2-0.0.26/gst/fsrtpconference/fs-rtp-discover-codecs.c
2010-11-22 22:09:25.000000000 +0100
+++ old-farsight2-0.0.26/gst/fsrtpconference/fs-rtp-discover-codecs.c
2011-04-12 21:15:26.909645195 +0200
@@ -640,6 +640,7 @@
       tmpfact = gst_element_factory_find ("audioresample");
       if (tmpfact)
       {
+        g_object_set(G_OBJECT(tmpfact), "name", "test_1", NULL);
         codec_blueprint->send_pipeline_factory = g_list_append (
             codec_blueprint->send_pipeline_factory,
             g_list_append (NULL, tmpfact));

--- farsight2-0.0.26/gst/fsrawconference/fs-raw-session.c       2011-02-23
21:42:03.000000000 +0100
+++ old-farsight2-0.0.26/gst/fsrawconference/fs-raw-session.c   2011-04-12
21:15:03.347939757 +0200
@@ -764,7 +764,7 @@
 
   if (mtype == FS_MEDIA_TYPE_AUDIO)
     return gst_parse_bin_from_description_full (
-      "audioconvert ! audioresample ! audioconvert", TRUE, NULL,
+      "audioconvert ! audioresample name=test_2 ! audioconvert", TRUE,
NULL,
       GST_PARSE_FLAG_NONE, error);
   else if (mtype == FS_MEDIA_TYPE_VIDEO)
     return gst_parse_bin_from_description_full ("ffmpegcolorspace !
videoscale",

-- 
Regards,
        Alexey

_______________________________________________
telepathy mailing list
telepathy@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/telepathy

Reply via email to