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>