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>