PJSUA jitter values

BP
Benny Prijono
Sun, Nov 4, 2007 11:46 AM

Hi everyone,

I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet
devices each one with a IP address. I want to create 2 accounts for
Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is
it possible?

Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN
version). In 0.7.x, there is an API to "lock" account to specific
transport, with pjsua_acc_set_transport(). And since you can bind
transport to a specific interface, effectively you can control which
interface should be used by an account.

cheers,
-benny

Thanks everyone,

Jorge Amador

jorge.amador@withus.pt wrote: > Hi everyone, > > I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet > devices each one with a IP address. I want to create 2 accounts for > Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is > it possible? Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN version). In 0.7.x, there is an API to "lock" account to specific transport, with pjsua_acc_set_transport(). And since you can bind transport to a specific interface, effectively you can control which interface should be used by an account. cheers, -benny > Thanks everyone, > > Jorge Amador
JA
jorge.amador@withus.pt
Mon, Nov 5, 2007 8:40 PM

Hi Benny,

I changed to the 0.7.0 version and succeded adding udp transport on
both eth devices. However when I try to lock one account to one
transport and another account to another transport (each transport
with different IP addresses and ports) it doesn't work. Both accounts
get locked to the same transport and it is always the last transport
that I configure. I'm using pjsua_acc_set_transport() with the account
id that I want to lock to a transport id. Any idea of what is going
wrong? Thanks a lot for your help.

Best regards,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Hi everyone,

I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet
devices each one with a IP address. I want to create 2 accounts for
Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is
it possible?

Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN
version). In 0.7.x, there is an API to "lock" account to specific
transport, with pjsua_acc_set_transport(). And since you can bind
transport to a specific interface, effectively you can control which
interface should be used by an account.

cheers,
-benny

Thanks everyone,

Jorge Amador

Hi Benny, I changed to the 0.7.0 version and succeded adding udp transport on both eth devices. However when I try to lock one account to one transport and another account to another transport (each transport with different IP addresses and ports) it doesn't work. Both accounts get locked to the same transport and it is always the last transport that I configure. I'm using pjsua_acc_set_transport() with the account id that I want to lock to a transport id. Any idea of what is going wrong? Thanks a lot for your help. Best regards, Jorge Amador Quoting Benny Prijono <bennylp@pjsip.org>: > jorge.amador@withus.pt wrote: >> Hi everyone, >> >> I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet >> devices each one with a IP address. I want to create 2 accounts for >> Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is >> it possible? > > Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN > version). In 0.7.x, there is an API to "lock" account to specific > transport, with pjsua_acc_set_transport(). And since you can bind > transport to a specific interface, effectively you can control which > interface should be used by an account. > > cheers, > -benny > >> Thanks everyone, >> >> Jorge Amador > > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >
BP
Benny Prijono
Thu, Nov 8, 2007 1:36 PM

Sorry for the late reply. I just tried this with pjsip SVN version
and couldn't reproduce the problem. Could you post a snippet
perhaps? Also may be better to try the SVN version instead.

cheers,
-benny

jorge.amador@withus.pt wrote:

Hi Benny,

I changed to the 0.7.0 version and succeded adding udp transport on
both eth devices. However when I try to lock one account to one
transport and another account to another transport (each transport
with different IP addresses and ports) it doesn't work. Both accounts
get locked to the same transport and it is always the last transport
that I configure. I'm using pjsua_acc_set_transport() with the account
id that I want to lock to a transport id. Any idea of what is going
wrong? Thanks a lot for your help.

Best regards,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Hi everyone,

I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet
devices each one with a IP address. I want to create 2 accounts for
Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is
it possible?

Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN
version). In 0.7.x, there is an API to "lock" account to specific
transport, with pjsua_acc_set_transport(). And since you can bind
transport to a specific interface, effectively you can control which
interface should be used by an account.

cheers,
-benny

Thanks everyone,

Jorge Amador

Sorry for the late reply. I just tried this with pjsip SVN version and couldn't reproduce the problem. Could you post a snippet perhaps? Also may be better to try the SVN version instead. cheers, -benny jorge.amador@withus.pt wrote: > Hi Benny, > > I changed to the 0.7.0 version and succeded adding udp transport on > both eth devices. However when I try to lock one account to one > transport and another account to another transport (each transport > with different IP addresses and ports) it doesn't work. Both accounts > get locked to the same transport and it is always the last transport > that I configure. I'm using pjsua_acc_set_transport() with the account > id that I want to lock to a transport id. Any idea of what is going > wrong? Thanks a lot for your help. > > Best regards, > > Jorge Amador > > Quoting Benny Prijono <bennylp@pjsip.org>: > >> jorge.amador@withus.pt wrote: >>> Hi everyone, >>> >>> I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet >>> devices each one with a IP address. I want to create 2 accounts for >>> Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is >>> it possible? >> Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN >> version). In 0.7.x, there is an API to "lock" account to specific >> transport, with pjsua_acc_set_transport(). And since you can bind >> transport to a specific interface, effectively you can control which >> interface should be used by an account. >> >> cheers, >> -benny >> >>> Thanks everyone, >>> >>> Jorge Amador
JA
jorge.amador@withus.pt
Mon, Nov 12, 2007 8:12 PM

Hi Benny,

I've changed to 0.8.0 version. Now I can bind an account to a specific
transport (in this case 2 different ethernet devices) but after
checking with ethereal I noticed that rtp transport is binded to only
one off the ethernet devices. I tried to create 2 rtp transports, one
for each ethernet device but failed with this error:

20:11:07.341  pjsua_media.c Unable to create RTP/RTCP socket: Cannot
assign requested address [status=120099]

Is it possible to create 2 rtp transports with the same application?
Thanks and best regards

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Sorry for the late reply. I just tried this with pjsip SVN version
and couldn't reproduce the problem. Could you post a snippet
perhaps? Also may be better to try the SVN version instead.

cheers,
-benny

jorge.amador@withus.pt wrote:

Hi Benny,

I changed to the 0.7.0 version and succeded adding udp transport on
both eth devices. However when I try to lock one account to one
transport and another account to another transport (each transport
with different IP addresses and ports) it doesn't work. Both accounts
get locked to the same transport and it is always the last transport
that I configure. I'm using pjsua_acc_set_transport() with the account
id that I want to lock to a transport id. Any idea of what is going
wrong? Thanks a lot for your help.

Best regards,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Hi everyone,

I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet
devices each one with a IP address. I want to create 2 accounts for
Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is
it possible?

Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN
version). In 0.7.x, there is an API to "lock" account to specific
transport, with pjsua_acc_set_transport(). And since you can bind
transport to a specific interface, effectively you can control which
interface should be used by an account.

cheers,
-benny

Thanks everyone,

Jorge Amador

Hi Benny, I've changed to 0.8.0 version. Now I can bind an account to a specific transport (in this case 2 different ethernet devices) but after checking with ethereal I noticed that rtp transport is binded to only one off the ethernet devices. I tried to create 2 rtp transports, one for each ethernet device but failed with this error: 20:11:07.341 pjsua_media.c Unable to create RTP/RTCP socket: Cannot assign requested address [status=120099] Is it possible to create 2 rtp transports with the same application? Thanks and best regards Jorge Amador Quoting Benny Prijono <bennylp@pjsip.org>: > > Sorry for the late reply. I just tried this with pjsip SVN version > and couldn't reproduce the problem. Could you post a snippet > perhaps? Also may be better to try the SVN version instead. > > cheers, > -benny > > > jorge.amador@withus.pt wrote: >> Hi Benny, >> >> I changed to the 0.7.0 version and succeded adding udp transport on >> both eth devices. However when I try to lock one account to one >> transport and another account to another transport (each transport >> with different IP addresses and ports) it doesn't work. Both accounts >> get locked to the same transport and it is always the last transport >> that I configure. I'm using pjsua_acc_set_transport() with the account >> id that I want to lock to a transport id. Any idea of what is going >> wrong? Thanks a lot for your help. >> >> Best regards, >> >> Jorge Amador >> >> Quoting Benny Prijono <bennylp@pjsip.org>: >> >>> jorge.amador@withus.pt wrote: >>>> Hi everyone, >>>> >>>> I'm using pjsip 0.5.10.4 in an equipment that as three Ethernet >>>> devices each one with a IP address. I want to create 2 accounts for >>>> Eth1, 2 accounts for Eth2 and none for Eth0, using the same PJSUA. Is >>>> it possible? >>> Not with 0.5.10.x, and maybe with 0.7 version (or probably the SVN >>> version). In 0.7.x, there is an API to "lock" account to specific >>> transport, with pjsua_acc_set_transport(). And since you can bind >>> transport to a specific interface, effectively you can control which >>> interface should be used by an account. >>> >>> cheers, >>> -benny >>> >>>> Thanks everyone, >>>> >>>> Jorge Amador > > > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >
BP
Benny Prijono
Tue, Nov 13, 2007 12:01 AM

Hi Benny,

I've changed to 0.8.0 version. Now I can bind an account to a specific
transport (in this case 2 different ethernet devices) but after checking
with ethereal I noticed that rtp transport is binded to only one off the
ethernet devices. I tried to create 2 rtp transports, one for each
ethernet device but failed with this error:

20:11:07.341  pjsua_media.c Unable to create RTP/RTCP socket: Cannot
assign requested address [status=120099]

Is it possible to create 2 rtp transports with the same application?
Thanks and best regards

It is possible to use multiple RTP transports of course, since
pjsua-lib supports multiple calls. Binding RTP transports to one
specific interface is also supported.

Binding different RTP transports to different IP interface can also
be done, but this requires application to pre-create the RTP
transports itself, and give it to pjsua-lib by calling
pjsua_media_transports_attach()

But what is not supported is, assigning specific RTP transport to
specific accounts. Currently each RTP transport will be assigned to
each call instance in the call array during pjsua-lib
initialization, and there's no association between RTP transport and
the account (since RTP transport can be used by any accounts).

So it's not possible to create specific RTP transport for specific
account.

-benny

jorge.amador@withus.pt wrote: > Hi Benny, > > I've changed to 0.8.0 version. Now I can bind an account to a specific > transport (in this case 2 different ethernet devices) but after checking > with ethereal I noticed that rtp transport is binded to only one off the > ethernet devices. I tried to create 2 rtp transports, one for each > ethernet device but failed with this error: > > 20:11:07.341 pjsua_media.c Unable to create RTP/RTCP socket: Cannot > assign requested address [status=120099] > > Is it possible to create 2 rtp transports with the same application? > Thanks and best regards It is possible to use multiple RTP transports of course, since pjsua-lib supports multiple calls. Binding RTP transports to one specific interface is also supported. Binding different RTP transports to different IP interface can also be done, but this requires application to pre-create the RTP transports itself, and give it to pjsua-lib by calling pjsua_media_transports_attach() But what is not supported is, assigning specific RTP transport to specific accounts. Currently each RTP transport will be assigned to each call instance in the call array during pjsua-lib initialization, and there's no association between RTP transport and the account (since RTP transport can be used by any accounts). So it's not possible to create specific RTP transport for specific account. -benny
JA
jorge.amador@withus.pt
Tue, Nov 13, 2007 11:25 AM

Hi Benny,

I've followed your suggestion but after trying to compile the project
I get this error message:

output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function app_init': output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined reference to pjsua_media_transports_attach'

I've checked the code and I only found the declaration of the function
pjsua_media_transports_attach() in the file pjsua.h. It seems to me
that this function is declared but not implemented in the code. Am I
missing something? Thanks,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Hi Benny,

I've changed to 0.8.0 version. Now I can bind an account to a specific
transport (in this case 2 different ethernet devices) but after checking
with ethereal I noticed that rtp transport is binded to only one off the
ethernet devices. I tried to create 2 rtp transports, one for each
ethernet device but failed with this error:

20:11:07.341  pjsua_media.c Unable to create RTP/RTCP socket: Cannot
assign requested address [status=120099]

Is it possible to create 2 rtp transports with the same application?
Thanks and best regards

It is possible to use multiple RTP transports of course, since
pjsua-lib supports multiple calls. Binding RTP transports to one
specific interface is also supported.

Binding different RTP transports to different IP interface can also
be done, but this requires application to pre-create the RTP
transports itself, and give it to pjsua-lib by calling
pjsua_media_transports_attach()

But what is not supported is, assigning specific RTP transport to
specific accounts. Currently each RTP transport will be assigned to
each call instance in the call array during pjsua-lib
initialization, and there's no association between RTP transport and
the account (since RTP transport can be used by any accounts).

So it's not possible to create specific RTP transport for specific
account.

-benny


Visit our blog: http://blog.pjsip.org

pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org

Hi Benny, I've followed your suggestion but after trying to compile the project I get this error message: output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function `app_init': output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined reference to `pjsua_media_transports_attach' I've checked the code and I only found the declaration of the function pjsua_media_transports_attach() in the file pjsua.h. It seems to me that this function is declared but not implemented in the code. Am I missing something? Thanks, Jorge Amador Quoting Benny Prijono <bennylp@pjsip.org>: > jorge.amador@withus.pt wrote: >> Hi Benny, >> >> I've changed to 0.8.0 version. Now I can bind an account to a specific >> transport (in this case 2 different ethernet devices) but after checking >> with ethereal I noticed that rtp transport is binded to only one off the >> ethernet devices. I tried to create 2 rtp transports, one for each >> ethernet device but failed with this error: >> >> 20:11:07.341 pjsua_media.c Unable to create RTP/RTCP socket: Cannot >> assign requested address [status=120099] >> >> Is it possible to create 2 rtp transports with the same application? >> Thanks and best regards > > It is possible to use multiple RTP transports of course, since > pjsua-lib supports multiple calls. Binding RTP transports to one > specific interface is also supported. > > Binding different RTP transports to different IP interface can also > be done, but this requires application to pre-create the RTP > transports itself, and give it to pjsua-lib by calling > pjsua_media_transports_attach() > > But what is not supported is, assigning specific RTP transport to > specific accounts. Currently each RTP transport will be assigned to > each call instance in the call array during pjsua-lib > initialization, and there's no association between RTP transport and > the account (since RTP transport can be used by any accounts). > > So it's not possible to create specific RTP transport for specific > account. > > -benny > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >
BP
Benny Prijono
Tue, Nov 13, 2007 1:30 PM

Ouch, you're right, it's not implemented yet. Sorry! But anyway this
function does not solve your requirement, so I don't think it
matters too much.

In summary, currently we can't assign specific RTP transports to a
specific account with pjsua-lib. Supporting this will require quite
major modifications in the API, for example to move media transport
config (and perhaps STUN settings) to account config. Maybe I will
consider doing this in the next major release, but for sure this
will break existing applications, so I'd rather not do this unless
there are really important reasons to do it.

So for now, my only suggestion is to use the lower level API (pjsip
and pjmedia).

cheers,
-benny

jorge.amador@withus.pt wrote:

Hi Benny,

I've followed your suggestion but after trying to compile the project I
get this error message:

output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function app_init': output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined reference to pjsua_media_transports_attach'

I've checked the code and I only found the declaration of the function
pjsua_media_transports_attach() in the file pjsua.h. It seems to me that
this function is declared but not implemented in the code. Am I missing
something? Thanks,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Hi Benny,

I've changed to 0.8.0 version. Now I can bind an account to a specific
transport (in this case 2 different ethernet devices) but after checking
with ethereal I noticed that rtp transport is binded to only one off the
ethernet devices. I tried to create 2 rtp transports, one for each
ethernet device but failed with this error:

20:11:07.341  pjsua_media.c Unable to create RTP/RTCP socket: Cannot
assign requested address [status=120099]

Is it possible to create 2 rtp transports with the same application?
Thanks and best regards

It is possible to use multiple RTP transports of course, since
pjsua-lib supports multiple calls. Binding RTP transports to one
specific interface is also supported.

Binding different RTP transports to different IP interface can also
be done, but this requires application to pre-create the RTP
transports itself, and give it to pjsua-lib by calling
pjsua_media_transports_attach()

But what is not supported is, assigning specific RTP transport to
specific accounts. Currently each RTP transport will be assigned to
each call instance in the call array during pjsua-lib
initialization, and there's no association between RTP transport and
the account (since RTP transport can be used by any accounts).

So it's not possible to create specific RTP transport for specific
account.

-benny

Ouch, you're right, it's not implemented yet. Sorry! But anyway this function does not solve your requirement, so I don't think it matters too much. In summary, currently we can't assign specific RTP transports to a specific account with pjsua-lib. Supporting this will require quite major modifications in the API, for example to move media transport config (and perhaps STUN settings) to account config. Maybe I will consider doing this in the next major release, but for sure this will break existing applications, so I'd rather not do this unless there are really important reasons to do it. So for now, my only suggestion is to use the lower level API (pjsip and pjmedia). cheers, -benny jorge.amador@withus.pt wrote: > Hi Benny, > > I've followed your suggestion but after trying to compile the project I > get this error message: > > output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function `app_init': > output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined > reference to `pjsua_media_transports_attach' > > I've checked the code and I only found the declaration of the function > pjsua_media_transports_attach() in the file pjsua.h. It seems to me that > this function is declared but not implemented in the code. Am I missing > something? Thanks, > > Jorge Amador > > > Quoting Benny Prijono <bennylp@pjsip.org>: > >> jorge.amador@withus.pt wrote: >>> Hi Benny, >>> >>> I've changed to 0.8.0 version. Now I can bind an account to a specific >>> transport (in this case 2 different ethernet devices) but after checking >>> with ethereal I noticed that rtp transport is binded to only one off the >>> ethernet devices. I tried to create 2 rtp transports, one for each >>> ethernet device but failed with this error: >>> >>> 20:11:07.341 pjsua_media.c Unable to create RTP/RTCP socket: Cannot >>> assign requested address [status=120099] >>> >>> Is it possible to create 2 rtp transports with the same application? >>> Thanks and best regards >> >> It is possible to use multiple RTP transports of course, since >> pjsua-lib supports multiple calls. Binding RTP transports to one >> specific interface is also supported. >> >> Binding different RTP transports to different IP interface can also >> be done, but this requires application to pre-create the RTP >> transports itself, and give it to pjsua-lib by calling >> pjsua_media_transports_attach() >> >> But what is not supported is, assigning specific RTP transport to >> specific accounts. Currently each RTP transport will be assigned to >> each call instance in the call array during pjsua-lib >> initialization, and there's no association between RTP transport and >> the account (since RTP transport can be used by any accounts). >> >> So it's not possible to create specific RTP transport for specific >> account. >> >> -benny
BP
Benny Prijono
Tue, Nov 13, 2007 1:31 PM

Ouch, you're right, it's not implemented yet. Sorry! But anyway this
function does not solve your requirement, so I don't think it
matters too much.

In summary, currently we can't assign specific RTP transports to a
specific account with pjsua-lib. Supporting this will require quite
major modifications in the API, for example to move media transport
config (and perhaps STUN settings) to account config. Maybe I will
consider doing this in the next major release, but for sure this
will break existing applications, so I'd rather not do this unless
there are really important reasons to do it.

So if you can't accept this limitation, my only suggestion for now
is to go with using the lower level APIs (pjsip and pjmedia).

cheers,
-benny

jorge.amador@withus.pt wrote:

Hi Benny,

I've followed your suggestion but after trying to compile the project I
get this error message:

output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function app_init': output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined reference to pjsua_media_transports_attach'

I've checked the code and I only found the declaration of the function
pjsua_media_transports_attach() in the file pjsua.h. It seems to me that
this function is declared but not implemented in the code. Am I missing
something? Thanks,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Hi Benny,

I've changed to 0.8.0 version. Now I can bind an account to a specific
transport (in this case 2 different ethernet devices) but after checking
with ethereal I noticed that rtp transport is binded to only one off the
ethernet devices. I tried to create 2 rtp transports, one for each
ethernet device but failed with this error:

20:11:07.341  pjsua_media.c Unable to create RTP/RTCP socket: Cannot
assign requested address [status=120099]

Is it possible to create 2 rtp transports with the same application?
Thanks and best regards

It is possible to use multiple RTP transports of course, since
pjsua-lib supports multiple calls. Binding RTP transports to one
specific interface is also supported.

Binding different RTP transports to different IP interface can also
be done, but this requires application to pre-create the RTP
transports itself, and give it to pjsua-lib by calling
pjsua_media_transports_attach()

But what is not supported is, assigning specific RTP transport to
specific accounts. Currently each RTP transport will be assigned to
each call instance in the call array during pjsua-lib
initialization, and there's no association between RTP transport and
the account (since RTP transport can be used by any accounts).

So it's not possible to create specific RTP transport for specific
account.

-benny

Ouch, you're right, it's not implemented yet. Sorry! But anyway this function does not solve your requirement, so I don't think it matters too much. In summary, currently we can't assign specific RTP transports to a specific account with pjsua-lib. Supporting this will require quite major modifications in the API, for example to move media transport config (and perhaps STUN settings) to account config. Maybe I will consider doing this in the next major release, but for sure this will break existing applications, so I'd rather not do this unless there are really important reasons to do it. So if you can't accept this limitation, my only suggestion for now is to go with using the lower level APIs (pjsip and pjmedia). cheers, -benny jorge.amador@withus.pt wrote: > Hi Benny, > > I've followed your suggestion but after trying to compile the project I > get this error message: > > output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function `app_init': > output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined > reference to `pjsua_media_transports_attach' > > I've checked the code and I only found the declaration of the function > pjsua_media_transports_attach() in the file pjsua.h. It seems to me that > this function is declared but not implemented in the code. Am I missing > something? Thanks, > > Jorge Amador > > > Quoting Benny Prijono <bennylp@pjsip.org>: > >> jorge.amador@withus.pt wrote: >>> Hi Benny, >>> >>> I've changed to 0.8.0 version. Now I can bind an account to a specific >>> transport (in this case 2 different ethernet devices) but after checking >>> with ethereal I noticed that rtp transport is binded to only one off the >>> ethernet devices. I tried to create 2 rtp transports, one for each >>> ethernet device but failed with this error: >>> >>> 20:11:07.341 pjsua_media.c Unable to create RTP/RTCP socket: Cannot >>> assign requested address [status=120099] >>> >>> Is it possible to create 2 rtp transports with the same application? >>> Thanks and best regards >> >> It is possible to use multiple RTP transports of course, since >> pjsua-lib supports multiple calls. Binding RTP transports to one >> specific interface is also supported. >> >> Binding different RTP transports to different IP interface can also >> be done, but this requires application to pre-create the RTP >> transports itself, and give it to pjsua-lib by calling >> pjsua_media_transports_attach() >> >> But what is not supported is, assigning specific RTP transport to >> specific accounts. Currently each RTP transport will be assigned to >> each call instance in the call array during pjsua-lib >> initialization, and there's no association between RTP transport and >> the account (since RTP transport can be used by any accounts). >> >> So it's not possible to create specific RTP transport for specific >> account. >> >> -benny
TV
Tomás Valenta
Tue, Nov 13, 2007 1:51 PM

Hi Benny,

I am reporting some problems with building pjsua as DLL in Visual Studio 8.
In VS8 solution I declare macros PJ_DLL and PJ_EXPORTING in projects whose
functions I want to use (e.g. pjlib, pjmedia and pjsua-lib). In project
pjsua-lib I set output as DLL. Macros PJ_EXPORT_DECL_SPECIFIER etc. are
automaticaly defined in cc_msvc.h.

First problem:
In the solution there are no depencies on other projects so the projects
won't be built and linked. I had to set the depencies manually to the same
ones as in pjsua app.

Second problem:
See following compiler error:

c:\pjproject-0.8.0\pjlib\src\pj\except.c(41) : error C2375:
'pj_throw_exception_' : redefinition; different linkage
c:\pjproject-0.8.0\pjlib\include\pj\except.h(302) : see declaration of
'pj_throw_exception_'

I don't know exactly what it means but commenting out the line
//#define PJ_EXPORT_DEF_SPECIFIER    __declspec(dllexport)
in cc_msvc.h solves the problem.

Have a nice day.
Vali

Hi Benny, I am reporting some problems with building pjsua as DLL in Visual Studio 8. In VS8 solution I declare macros PJ_DLL and PJ_EXPORTING in projects whose functions I want to use (e.g. pjlib, pjmedia and pjsua-lib). In project pjsua-lib I set output as DLL. Macros PJ_EXPORT_DECL_SPECIFIER etc. are automaticaly defined in cc_msvc.h. First problem: In the solution there are no depencies on other projects so the projects won't be built and linked. I had to set the depencies manually to the same ones as in pjsua app. Second problem: See following compiler error: c:\pjproject-0.8.0\pjlib\src\pj\except.c(41) : error C2375: 'pj_throw_exception_' : redefinition; different linkage c:\pjproject-0.8.0\pjlib\include\pj\except.h(302) : see declaration of 'pj_throw_exception_' I don't know exactly what it means but commenting out the line //#define PJ_EXPORT_DEF_SPECIFIER __declspec(dllexport) in cc_msvc.h solves the problem. Have a nice day. Vali
JA
jorge.amador@withus.pt
Tue, Nov 13, 2007 2:22 PM

Hi Benny,

Thanks for the hint. I'll will try to use the lower level APIs. Best regards,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Ouch, you're right, it's not implemented yet. Sorry! But anyway this
function does not solve your requirement, so I don't think it
matters too much.

In summary, currently we can't assign specific RTP transports to a
specific account with pjsua-lib. Supporting this will require quite
major modifications in the API, for example to move media transport
config (and perhaps STUN settings) to account config. Maybe I will
consider doing this in the next major release, but for sure this
will break existing applications, so I'd rather not do this unless
there are really important reasons to do it.

So if you can't accept this limitation, my only suggestion for now
is to go with using the lower level APIs (pjsip and pjmedia).

cheers,
-benny

jorge.amador@withus.pt wrote:

Hi Benny,

I've followed your suggestion but after trying to compile the project I
get this error message:

output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function app_init': output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined reference to pjsua_media_transports_attach'

I've checked the code and I only found the declaration of the function
pjsua_media_transports_attach() in the file pjsua.h. It seems to me that
this function is declared but not implemented in the code. Am I missing
something? Thanks,

Jorge Amador

Quoting Benny Prijono bennylp@pjsip.org:

Hi Benny,

I've changed to 0.8.0 version. Now I can bind an account to a specific
transport (in this case 2 different ethernet devices) but after checking
with ethereal I noticed that rtp transport is binded to only one off the
ethernet devices. I tried to create 2 rtp transports, one for each
ethernet device but failed with this error:

20:11:07.341  pjsua_media.c Unable to create RTP/RTCP socket: Cannot
assign requested address [status=120099]

Is it possible to create 2 rtp transports with the same application?
Thanks and best regards

It is possible to use multiple RTP transports of course, since
pjsua-lib supports multiple calls. Binding RTP transports to one
specific interface is also supported.

Binding different RTP transports to different IP interface can also
be done, but this requires application to pre-create the RTP
transports itself, and give it to pjsua-lib by calling
pjsua_media_transports_attach()

But what is not supported is, assigning specific RTP transport to
specific accounts. Currently each RTP transport will be assigned to
each call instance in the call array during pjsua-lib
initialization, and there's no association between RTP transport and
the account (since RTP transport can be used by any accounts).

So it's not possible to create specific RTP transport for specific
account.

-benny

Hi Benny, Thanks for the hint. I'll will try to use the lower level APIs. Best regards, Jorge Amador Quoting Benny Prijono <bennylp@pjsip.org>: > Ouch, you're right, it's not implemented yet. Sorry! But anyway this > function does not solve your requirement, so I don't think it > matters too much. > > In summary, currently we can't assign specific RTP transports to a > specific account with pjsua-lib. Supporting this will require quite > major modifications in the API, for example to move media transport > config (and perhaps STUN settings) to account config. Maybe I will > consider doing this in the next major release, but for sure this > will break existing applications, so I'd rather not do this unless > there are really important reasons to do it. > > So if you can't accept this limitation, my only suggestion for now > is to go with using the lower level APIs (pjsip and pjmedia). > > cheers, > -benny > > jorge.amador@withus.pt wrote: >> Hi Benny, >> >> I've followed your suggestion but after trying to compile the project I >> get this error message: >> >> output/pjsua-i686-pc-linux-gnu/pjsua_app.o: In function `app_init': >> output/pjsua-i686-pc-linux-gnu/pjsua_app.o(.text+0x6303): undefined >> reference to `pjsua_media_transports_attach' >> >> I've checked the code and I only found the declaration of the function >> pjsua_media_transports_attach() in the file pjsua.h. It seems to me that >> this function is declared but not implemented in the code. Am I missing >> something? Thanks, >> >> Jorge Amador >> >> >> Quoting Benny Prijono <bennylp@pjsip.org>: >> >>> jorge.amador@withus.pt wrote: >>>> Hi Benny, >>>> >>>> I've changed to 0.8.0 version. Now I can bind an account to a specific >>>> transport (in this case 2 different ethernet devices) but after checking >>>> with ethereal I noticed that rtp transport is binded to only one off the >>>> ethernet devices. I tried to create 2 rtp transports, one for each >>>> ethernet device but failed with this error: >>>> >>>> 20:11:07.341 pjsua_media.c Unable to create RTP/RTCP socket: Cannot >>>> assign requested address [status=120099] >>>> >>>> Is it possible to create 2 rtp transports with the same application? >>>> Thanks and best regards >>> >>> It is possible to use multiple RTP transports of course, since >>> pjsua-lib supports multiple calls. Binding RTP transports to one >>> specific interface is also supported. >>> >>> Binding different RTP transports to different IP interface can also >>> be done, but this requires application to pre-create the RTP >>> transports itself, and give it to pjsua-lib by calling >>> pjsua_media_transports_attach() >>> >>> But what is not supported is, assigning specific RTP transport to >>> specific accounts. Currently each RTP transport will be assigned to >>> each call instance in the call array during pjsua-lib >>> initialization, and there's no association between RTP transport and >>> the account (since RTP transport can be used by any accounts). >>> >>> So it's not possible to create specific RTP transport for specific >>> account. >>> >>> -benny > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >