Help needed with Conference Bridge performances on uclinux-nios2

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

 



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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20090528/25c68457/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