Help needed with Conference Bridge performances on uclinux-nios2

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

 



Hi Benny,

thanks for your prompt reply, see comments inline.

Benny Prijono ha scritto:
> On Tue, Jun 2, 2009 at 2:12 AM, Fabio Cherchi <fabio.cherchi at yahoo.it 
> <mailto: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?
I've implemented a custom pjmedia_port solution. Actually I can have 16 
different audio devices (1 each pcma channel) and related streams. I 
tried in the past to use either the conf bridge, or a master port for 
each channel, to connect them.
>
> 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.
Above solution looks the best, I should only add the extended frame 
additional info.
>
>
> 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.
In fact I don't need the slot 0 with the audiodev.
>
>
>     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.
So definitely there is no way to use passthrough codec + conf switch if 
I don't use the audio device solution?
>
> cheers
>  Benny
Thanks your feedback is really appreciated.
fabio

>
>  
>
>     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 <mailto: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 <mailto: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 <mailto:pjsip at lists.pjsip.org>
>>>>             http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>>
>>>>
>>>>         ------------------------------------------------------------------------
>>>>
>>>>         _______________________________________________
>>>>         Visit our blog: http://blog.pjsip.org
>>>>
>>>>         pjsip mailing list
>>>>         pjsip at lists.pjsip.org <mailto:pjsip at lists.pjsip.org>
>>>>         http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>>           
>>>
>>>         ------------------------------------------------------------------------
>>>         _______________________________________________ Visit our
>>>         blog: http://blog.pjsip.org pjsip mailing list
>>>         pjsip at lists.pjsip.org <mailto:pjsip at lists.pjsip.org>
>>>         http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>>
>>         _______________________________________________
>>         Visit our blog: http://blog.pjsip.org
>>
>>         pjsip mailing list
>>         pjsip at lists.pjsip.org <mailto:pjsip at lists.pjsip.org>
>>         http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>>
>>     ------------------------------------------------------------------------
>>     _______________________________________________ Visit our blog:
>>     http://blog.pjsip.org pjsip mailing list pjsip at lists.pjsip.org
>>     <mailto:pjsip at lists.pjsip.org>
>>     http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
>     _______________________________________________
>     Visit our blog: http://blog.pjsip.org
>
>     pjsip mailing list
>     pjsip at lists.pjsip.org <mailto:pjsip at lists.pjsip.org>
>     http://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/a71505fb/attachment-0001.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