Help needed with Conference Bridge performances on uclinux-nios2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 2, 2009 at 2:12 AM, Fabio Cherchi <fabio.cherchi at yahoo.it>wrote:

>  Hi Benny,
>
> thanks for your feedback.
> I tried to apply what you are suggesting by creating a new pjmedia-audiodev
> API. I tried to do something like pa_dev.c and wmme_dev.c (because of it has
> PJMEDIA_FRAME_TYPE_EXTENDED) but it's no so simple.
>
>
Well, yeah. But it shouldn't be overly complicated either. :)


I'm wondering if the conf_switch and passthrough codec need necessarily a
> pjmedia-audiodev.
> My PCMA device is defined in the system by a char driver and it's talking
> with a variant of the streamutil by using a simple custom pjmedia_port
> connected to a standard conf bridge.
>
>
Hmmm, I'm a bit lost here. Did you implemented a sound device at all for
your device, or did you implement it all using a custom pjmedia_port?

If all you did so far is implementing it with a custom pjmedia_port and you
don't have existing sound device implementation, actually you don't need to
implement a pjmedia-audiodev device for this. You can just modify your
pjmedia_port to work with PJMEDIA_FRAME_TYPE_EXTENDED rather than normal PCM
frames.

Then you can use any existing pjmedia-audiodev device (or a master clock) to
drive the conf_switch clock. But, you won't be able to connect anything to
slot 0 in the conf_switch, since slot 0 has PCM format. I don't think this
is a problem if you've implemented your device as pjmedia_port.


Is it possible to re-use the same code, by simply replacing the conf bridge
> with the conf switch and by removing the pcma2linear conversion?
>

I don't think so. There are other checks in the code, especially to handle
the size conversion between PCM and PCMA.

cheers
 Benny



> Otherwise I'll continue to create the pjmedia-audiodev.
>
>
> Thanks a lot,
> Fabio
>
> Benny Prijono ha scritto:
>
> Sorry for the delay, just back from traveling. And sorry again if I'm not
> clear with the instructions. So for your system, you will need to create an
> audio device abstraction based on the new pjmedia-audiodev API. In this
> sound device abstraction, you'll need to support PCMA.
>
> Then add a config macro to add support for your sound device (e.g
> PJMEDIA_AUDIO_DEV_HAS_MY_DEV), and add your sound device factory
> initialization in audiodev.c.
>
> Then activate the settings in config_site.h, e.g.
>  #define PJMEDIA_AUDIO_DEV_HAS_MY_DEV      1
>  #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0
>  #define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS  0
>
> Something like that.
>
> cheers
>  Benny
>
>
> On Mon, May 25, 2009 at 9:16 PM, Fabio Cherchi <fabio.cherchi at yahoo.it>wrote:
>
>> Hi Benny and all,
>>
>> I'm still stucked to the project make problems above mentioned.
>> My understanding is that to build the project I should follow building
>> step explained here (http://trac.pjsip.org/repos/wiki/APS).
>> Given that I'm not developing on Symbian I would like to know if there is
>> a workaround to enable the Conference Switch and Passthrough Codecs features
>> without using Symbian related libraries and software.
>>
>> Thanks a lot,
>> Fabio
>>
>> Fabio Cherchi ha scritto:
>>
>>  Hi Benny,
>>
>> thanks a lot for the suggestion. You are right, the APS-Direct feature
>> seems fitting the purposes of my application.
>>
>> At the moment I've some issue with building the pjproject.
>> Basically, following instructions I prepared a config_site.h with the
>> following flags:
>>
>>     #define PJMEDIA_CONF_USE_SWITCH_BOARD     1
>>
>>     #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO   0
>>     #define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS    1
>>
>>     #define PJMEDIA_HAS_PASSTHROUGH_CODECS    1
>>
>>     /* Only PCMA will be supported */
>>     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU    0
>>     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA    1
>>     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_AMR     0
>>     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_G729    0
>>     #define PJMEDIA_HAS_PASSTHROUGH_CODEC_ILBC    0
>>
>>     #   define PJMEDIA_HAS_G711_CODEC       0
>>     #   define PJMEDIA_HAS_L16_CODEC        0
>>     #   define PJMEDIA_HAS_ILBC_CODEC       0
>>     #   define PJMEDIA_HAS_G722_CODEC       0
>>     #   define PJMEDIA_HAS_GSM_CODEC        0
>>     #   define PJMEDIA_HAS_SPEEX_CODEC      0
>>
>> But during "make" I got the following errors:
>>
>> gcc -o ../bin/pjmedia-test-i686-pc-linux-gnu \
>>          output/pjmedia-test-i686-pc-linux-gnu/codec_vectors.o
>> output/pjmedia-test-i686-pc-linux-gnu/jbuf_test.o
>> output/pjmedia-test-i686-pc-linux-gnu/main.o
>> output/pjmedia-test-i686-pc-linux-gnu/mips_test.o
>> output/pjmedia-test-i686-pc-linux-gnu/rtp_test.o
>> output/pjmedia-test-i686-pc-linux-gnu/test.o
>> output/pjmedia-test-i686-pc-linux-gnu/sdp_neg_test.o
>> .../lib/libpjmedia-i686-pc-linux-gnu.a
>> .../lib/libpjmedia-audiodev-i686-pc-linux-gnu.a
>> .../lib/libpjmedia-codec-i686-pc-linux-gnu.a
>> /home/fabioc/SIP/pjproject-1.2/pjproject-1.2/pjlib/lib/libpj-i686-pc-linux-gnu.a
>> /home/fabioc/SIP/pjproject-1.2/pjproject-1.2/pjlib-util/lib/libpjlib-util-i686-pc-linux-gnu.a
>> /home/fabioc/SIP/pjproject-1.2/pjproject-1.2/pjnath/lib/libpjnath-i686-pc-linux-gnu.a
>> -L/home/fabioc/SIP/pjproject-1.2/pjproject-1.2/third_party/lib
>> -lresample-i686-pc-linux-gnu -lmilenage-i686-pc-linux-gnu
>> -lsrtp-i686-pc-linux-gnu -lgsmcodec-i686-pc-linux-gnu
>> -lspeex-i686-pc-linux-gnu -lilbccodec-i686-pc-linux-gnu
>> -lg7221codec-i686-pc-linux-gnu -lportaudio-i686-pc-linux-gnu  -lm -lnsl -lrt
>> -lpthread
>> .../lib/libpjmedia-audiodev-i686-pc-linux-gnu.a(audiodev.o): In function
>> `pjmedia_aud_subsys_init':
>> audiodev.c:(.text+0x2c3): undefined reference to `pjmedia_aps_factory'
>> collect2: ld returned 1 exit status
>> make[2]: *** [../bin/pjmedia-test-i686-pc-linux-gnu] Error 1
>> make[2]: Leaving directory
>> `/home/fabioc/SIP/pjproject-1.2/pjproject-1.2/pjmedia/build'
>> make[1]: *** [pjmedia-test] Error 2
>> make[1]: Leaving directory
>> `/home/fabioc/SIP/pjproject-1.2/pjproject-1.2/pjmedia/build'
>> make: *** [all] Error 1
>>
>> Do you have idea what's wrong in my setup?
>>
>> Thanks a lot,
>> Fabio
>>
>> Benny Prijono ha scritto:
>>
>> Hi Fabio,
>>
>> We probably have a solution for you. So your sound devices already provide
>> encoded (PCMA) frames, this is actually similar to how APS-Direct work!
>> Basically APS-Direct is a feature (by means of config tweaks) to utilize APS
>> sound device in Nokia handsets, which already provides encoded
>> G.729/iLBC/AMR/G.711 codecs.
>>
>> Please see http://trac.pjsip.org/repos/wiki/Nokia_APS_VAS_Direct for more
>> info, and get back here if there's anything unclear. As a bit of hint, pjsua
>> should work more or less as usual when APS-Direct is enabled, though
>> obviously we will loose the conferencing feature.
>>
>> Though the drawback of using APS-Direct approach is you won't be able to
>> use many (if not most) PJMEDIA features, since PJMEDIA mostly works on PCM
>> frames. But this may be your objective in the first place, as you wanted as
>> less processing as possible. So depending on how you code your application
>> (especially the part to handle multiple sound devices), there may be some
>> design changes required.
>>
>> cheers
>>  Benny
>>
>>
>> On Sat, May 23, 2009 at 4:17 PM, Fabio Cherchi <fabio.cherchi at yahoo.it>wrote:
>>
>>> Hi Benny and all,
>>>
>>> I'm developing an application running on uclinux-nios2 (85MHz) which
>>> simply starts and stops multiple RTP streams from 16 different custom audio
>>> devices (not defined as sounds ports) which provide PCMA already coded
>>> samples.
>>>
>>> In my first approach I used the conf bridge to connect each stream to a
>>> custom pjmedia_port, but after the 5th-6th connection the cpu performance
>>> becomes poor and the timing gap between each put_frame (same for get_frame)
>>> becomes larger than 20ms (my frame length).
>>>
>>> I'm doing some check where I can improve the performance (I've already
>>> applied Benny's suggestions about that on:
>>> http://trac.pjsip.org/repos/wiki/FAQ#Performance).
>>> First of all, I've already coded pcma samples, but the conf bridge works
>>> only with L16 samples, so I need to do a double conversion before the
>>> streaming.
>>> Second, the CPU usage shows very high values when I'm adding a new call
>>> to the conf bridge.
>>>
>>> I'm evaluating a different approach based on creating a different master
>>> port for each call to directly connect the custom ports to the streams and
>>> also I would like to use the pcma passthrough codec.
>>> Do you think this would help to improve performances?
>>> Is it possible that multiple master ports could have some timing
>>> conflicts if running in the same application?
>>>
>>> Any suggestion will be very appreciated.
>>>
>>> Thanks,
>>> Fabio
>>>
>>> _______________________________________________
>>> Visit our blog: http://blog.pjsip.org
>>>
>>> pjsip mailing list
>>> pjsip at lists.pjsip.org
>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>
>>
>> ------------------------------
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing listpjsip at lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>>
>>  ------------------------------
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing listpjsip at lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>>
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>>
> ------------------------------
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing listpjsip at lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20090602/b7a23028/attachment.html>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux