multiple audio device for multiple call at the same time

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

 



Yeah for my purpse i had done this...creating multiple conference bridges
for multiple devices...i think the process of removing from the default conf
and adding it to new one is reliable....you can go ahead using that or add
new ports to the existng conf bridge....

On 5/24/10, Peter Lukac <p.lukac at emtest.sk> wrote:
>
> Hi
> Thanks for reply. I check code but i suppose this is not all.
> Each call is add to default conference bridge in method:
> pjsua_media_channel_update()
> and then when i want add call to my conference bridge i have to create
> port add it to my conference bridge and remove call from default conference
> bridge...for this i need internal structure pjsua (pjsua_internal.h) ..IMHO
> this is not clean ...next thing what i have to do is open sound device like
> methods:
> pjsua_conf_connect() or pjsua_set_snd_dev()
>
>
> It would be nice have all sounds devices in one conference bridge...it's
> possible? or i have to create more conference bridges for each sound device.
>
>
> thanks
>
>
> > check out this code
> >
> >
> > int clock_rate = CLOCK_RATE;
> >
> > int channel_count = CHANNEL_COUNT;
> >
> > int samples_per_frame = SAMPLES_PER_FRAME;
> >
> > int bits_per_sample = BITS_PER_SAMPLE;
> >
> > pj_caching_pool cp;
> >
> > pjmedia_snd_port *snd_port;
> >
> > const pjmedia_snd_dev_info *devinfo;
> >
> > int dev_id;
> >
> > int status;
> >
> > pj_pool_t *snd_pool;
> >
> > pjmedia_snd_port *snd_port;
> >
> > pjmedia_conf *Bridge;
> >
> > devinfo = getSoundPlayerDeviceID(sounddevice,&dev_id);
> >
> > /* Must create a pool factory before we can allocate any memory. */
> >
> > pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, 0);
> >
> > /*
> >
> > * Initialize media endpoint.
> >
> > * This will implicitly initialize PJMEDIA too.
> >
> > */
> >
> > pjsua_data* pjsua_dat = pjsua_get_var();
> >
> >
> >
> > /* Create memory pool for application purpose */
> >
> > snd_pool = pj_pool_create( &cp.factory, /* pool factory */
> >
> > "NEW", /* pool name. */
> >
> > 4000, /* init size */
> >
> > 4000, /* increment size */
> >
> > NULL /* callback on error */
> >
> > );
> >
> > //Create the sound port with the specified Output Device
> >
> > status = pjmedia_snd_port_create_player(snd_pool, /* pool */
> >
> > dev_id, /* use default dev. */
> >
> > clock_rate,
> >
> > channel_count,
> >
> > samples_per_frame,
> >
> > bits_per_sample,
> >
> > 0, /* options */
> >
> > &snd_port /* returned port */
> >
> > );
> >
> > if (status != PJ_SUCCESS)
> >
> > {
> >
> > PJ_LOG(1,(THIS_FILE,"Unable to create sound port", status));
> >
> > return -1;
> >
> > }
> >
> > /* Create the conference bridge.
> >
> > * With default options (zero), the bridge will create an instance of
> >
> > * sound capture and playback device and connect them to slot zero.
> >
> > */
> >
> > status = pjmedia_conf_create(snd_pool, /* pool to use */
> >
> > PJSUA_MAX_CONF_PORTS,/* number of ports */
> >
> > clock_rate,
> >
> > channel_count,
> >
> > samples_per_frame,
> >
> > bits_per_sample,
> >
> > PJMEDIA_CONF_NO_DEVICE, /* options */
> >
> > &Bridge /* result */
> >
> > );
> >
> > if (status != PJ_SUCCESS)
> >
> > {
> >
> > PJ_LOG(1,(THIS_FILE,"Unable to create conf port", status));
> >
> > return -1;
> >
> > }
> >
> > pjmedia_port *newSoundPort = pjmedia_conf_get_master_port(Bridge);
> >
> > status = pjmedia_snd_port_connect(snd_port, newSoundPort);
> >
> > if (status != PJ_SUCCESS)
> >
> > {
> >
> > PJ_LOG(1,(THIS_FILE,"Unable to connect sound port", status));
> >
> > return -1;
> >
> > }
> >
> > pjmedia_conf_port_info info;
> >
> > unsigned confSlot;
> >
> > status = pjmedia_conf_get_port_info(Bridge,0,&info);
> >
> > confSlot = info.slot;
> >
> > pjmedia_conf_connect_port(Bridge, confSlot, current_call->conf_slot, 0);
> >
> > pjmedia_conf_connect_port(Bridge, current_call->conf_slot, confSlot, 0);
> >
> > On Mon, May 17, 2010 at 3:35 PM, Peter Lukac <p.lukac at emtest.sk> wrote:
> > > Hello all,
> > >
> > >
> > > I have 2 audio devices and i want these devices use for calling at the
> > > same
> > > time. I want create call and connect it to first device (mic/speaker)
> and
> > > then i want create second call and connect it to second audio
> > > device (mic/speaker)... I know this is not possible in standart pjsua
> API
> > > because only one audio device at the same time is supported...
> > >
> > >
> > > I need add new device to conf port..but how? exist some order?
> > > and i think use "pjsua_conf_connect" is not possible because this
> method
> > > work with default audio only so i need reimplement this function...
> > >
> > >
> > > Is this scenario possible? If yes can me somebody give some advice?
> > >
> > >
> > >
> > > thanks
> > >
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20100525/93d70f18/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