Joel Dodson wrote: > Hi Robert, > > you can still use the jitter buffer and support multiple codecs at > that layer (I did in my project). I don't know about mixing the > streams, I suspect it can be used at the lower layers as well. Most > of the APIs seem to be well encapsulated and can be used independently > of the rest of the packages. > > Joel > > > On Tue, Nov 15, 2011 at 4:38 AM, Robert Reif<reif at earthlink.net> wrote: > >> Joel Dodson wrote: >> >>> Hi Robert, >>> >>> I used PJSIP/PJMEDIA to do what sounds like almost exactly what you're >>> wanting to do. I used the lower layer APIs, not pjsua. >>> >>> I also used the rtp module in PJMEDIA to directly access the rtp and >>> rtcp packets. I didn't use the higher level audio port concept. >>> >>> Check out siprtp.c and simpleua.c in pjsip-apps/src/samples. Those >>> are good examples of how to use the lower level APIs and especially >>> the pjsip_inv_session and pjmedia_rtp_session (disclaimer, I'm looking >>> at pjsip 1.6 release, I haven't used pjsip in a while so I hope those >>> examples and abstractions are still there). Assuming those >>> abstractions still exist, they're a great place to start. >>> >>> I was able to support several hundred simultaneous g711 based audio >>> streams through my signaling and media gateway with very low latency. >>> That was on windows XP running on VMs. You should be able to get much >>> more than that on a better hardware configuration. >>> >>> good luck, >>> >>> Joel >>> >>> >>> On Mon, Nov 14, 2011 at 5:40 PM, Robert Reif<reif at earthlink.net> wrote: >>> >>> >>>> I need to develop a SIP gateway on Windows to another networked protocol >>>> for >>>> a dynamic number of channels and I am looking at pjsip for the SIP side. >>>> >>>> Can I have multiple active users in independent calls and add and >>>> subtract >>>> users at runtime? >>>> >>>> Can I get access to the PCM audio streams for each user? >>>> >>>> Are there any gateway examples available? >>>> >>>> I just found this project today and have been reading the documentation >>>> and >>>> source code. I built the code and am using it for interoperability >>>> testing >>>> and it looks like it will do what I need but I would like some >>>> conformation >>>> or advice before I invest a lot of effort. >>>> >>>> _______________________________________________ >>>> 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 list >>> pjsip at lists.pjsip.org >>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >>> >>> >>> >> Thanks Joel, >> >> It's good to know that pjsip can do what I need. However I would like to >> work at a higher level because I don't want to restrict what codecs are >> supported on the SIP side. I would also like to take advantage of the >> jitter buffer so I don't want to work with the RTP packets. I may also have >> the need in the future to support multiple users calling into a single >> channel so I might need access to the combiner. The audio format on the >> other side of the gateway can be any format, packet size and sample rate and >> will probably be different than the SIP side. The library for the other >> side dynamically handles the buffering, jitter, SRC, format conversions and >> combining for it's protocols so all it needs is the raw PCM audio stream per >> channel. >> >> _______________________________________________ >> 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 list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > > I'm playing with simpleua.c now just to get a feel for the APIs and how they fit together. It looks like I can replace the sound devices with mem_player and mem_capture to get at the streams. Once that is working, I can start looking at multiple calls, registration and finally adding and removing users dynamically. Thanks for the advice. Bob.