Thanks Robert. It really works. I can't even guess it is so simple.
On 11/27/2013 04:10 AM, Robert Jongbloed wrote:
> That was supposed to be E.164 number. No idea what short circuit in my
> brain came up with 135 ...
>
> *Robert Jongbloed*
> /OPAL/OpenH323/PTLib Architect and Co-founder./
> Commercial support at http://www.voxlucida.com.au
>
> On 27/11/2013 8:23 AM, Robert Jongbloed wrote:
>> If you dial a valid E.135 number (pretty much just digits) in the URI
>> then OPAL will automatically put this into the CalledPartyNumber
>> Q.931 field, and set the destinationAddress to be of the type
>> dialedDigits. e.g. "h323:12345@..." will put 12345 in
>> CalledPartyNumber and destinationAddress and 172.16.4.20 into
>> destCallSignalAddress.
>>
>> If OPAL is registered with a gatekeeper it is even simpler, just
>> "h323:12345"
>>
>> *Robert Jongbloed*
>> /OPAL/OpenH323/PTLib Architect and Co-founder./
>> Commercial support at http://www.voxlucida.com.au
>>
>>

Hi Robert,
I have not been able to take this forward sine the issue mainly relates to H.264 levels below 3.0 and the part fix enables us to proceed.
So with that we have accepted eridani into our release build and I have been busy with validating other functionalities.
Thanks,
-Satya
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Thursday, November 21, 2013 4:01 AM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Patch - h264 plugin not considering custom maxMBPS, maxFs, maxSMBPS
Did you get anywhere with this?
Do you have a patch to submit?
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 11/11/2013 3:46 PM, Satya Sahoo wrote:
Hi Robert,
The changes you mentioned are not in eridani trunk. It is in the opal trunk.
Thanks for the explanation on the maximum possible frame rate which requires the minimum possible frame size.
I agree, with the common encoded codec frames it is best to set the mixer to the lowest frame rate of all the participants.
I will analyse on the OpalMixerMediaStream::InternalUpdateMediaFormat() possibility.
Thanks,
-Satya
________________________________
From: Robert Jongbloed [robertj@...<mailto:robertj@...>]
Sent: Saturday, November 09, 2013 3:44 PM
To: opalvoip-user@...<mailto:opalvoip-user@...>
Subject: Re: [Opalvoip-user] Patch - h264 plugin not considering custom maxMBPS, maxFs, maxSMBPS
On 8/11/2013 3:56 pm, Satya Sahoo wrote:
I think this is part fix.
The diff below as I understand would now allow the custom values to be used for the frame rate calculation.
+ if (strcasecmp(optionName, MaxMBPS_H241.m_name) == 0)
+ return SetOptionUnsigned(m_h241MBPS, optionValue, 0);
+
if (strcasecmp(optionName, MaxMBPS_SDP.m_name) == 0)
- return SetOptionUnsigned(m_maxMBPS, optionValue, 0);
+ return SetOptionUnsigned(m_sdpMBPS, optionValue, 0);
Isn't this already done? I don't understand.
To get the mixer updated with the new frame rate (PushThread period) OnOpenMediaStream I have to make this change:
(note the use of MAX instead of MIN_RX_FRAME_WIDTH/HEIGHT)
--- src/codec/h264mf_inc.cxx (revision 30868)
+++ src/codec/h264mf_inc.cxx (working copy)
@@ -324,8 +324,8 @@
// Frame rate
if (maxMBPS < LevelInfo[levelIndex].m_MaxMBPS)
maxMBPS = LevelInfo[levelIndex].m_MaxMBPS;
- PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_WIDTH),
- original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
+ PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_WIDTH),
+ original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
original, changed, PLUGINCODEC_OPTION_FRAME_TIME);
No this is not correct. This value has to be the minimum or you end up with much, much too low a max frame rate in some, actually most, conditions.
Note this is to indicate the maximum possible frame rate, which requires the minimum possible size.That is not the same as the actual frame rate which is based on the actual resolution used.
Also the query I have is how to get the mixer frame rate updated (PushThread period) when the encoder changes the frame rate based on new level and MBPS values?
This is the tricky bit. The system should currently set the correct frame rate for the media stream. But that will not translate to the mixer node frame store as that has to operate at a frame rate suitable for all participants.
Ideally each output video stream should do some sort of frame rate adaptation. But that is really hard, especially with the common encoded codec frames that can be sent to multiple participants.
Best bet is just to slow the whole mixer to the lowest frame rate of all participants. To do this, I'd suggest adding aa OpalMixerMediaStream::InternalUpdateMediaFormat() and conditionally reduce the frame rate of the OpalVideoMixer, via the m_node. You might need to add another function to OpalMixerNode to do that.
If that works, please submit the patch for me to include in the SVN.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au

Did you get anywhere with this?
Do you have a patch to submit?
*Robert Jongbloed*
/OPAL/OpenH323/PTLib Architect and Co-founder./
Commercial support at http://www.voxlucida.com.au
On 11/11/2013 3:46 PM, Satya Sahoo wrote:
> Hi Robert,
>
> The changes you mentioned are not in eridani trunk. It is in the opal
> trunk.
>
> Thanks for the explanation on the maximum possible frame rate which
> requires the minimum possible frame size.
>
> I agree, with the common encoded codec frames it is best to set the
> mixer to the lowest frame rate of all the participants.
>
> I will analyse on the
> OpalMixerMediaStream::InternalUpdateMediaFormat() possibility.
>
> Thanks,
> -Satya
>
> ------------------------------------------------------------------------
> *From:* Robert Jongbloed [robertj@...]
> *Sent:* Saturday, November 09, 2013 3:44 PM
> *To:* opalvoip-user@...
> *Subject:* Re: [Opalvoip-user] Patch - h264 plugin not considering
> custom maxMBPS, maxFs, maxSMBPS
>
>
>
> On 8/11/2013 3:56 pm, Satya Sahoo wrote:
>> I think this is part fix.
>> The diff below as I understand would now allow the custom values to
>> be used for the frame rate calculation.
>> + if (strcasecmp(optionName, MaxMBPS_H241.m_name) == 0)
>> + return SetOptionUnsigned(m_h241MBPS, optionValue, 0);
>> +
>> if (strcasecmp(optionName, MaxMBPS_SDP.m_name) == 0)
>> - return SetOptionUnsigned(m_maxMBPS, optionValue, 0);
>> + return SetOptionUnsigned(m_sdpMBPS, optionValue, 0);
>
> Isn't this already done? I don't understand.
>
>> To get the mixer updated with the new frame rate (PushThread period)
>> OnOpenMediaStream I have to make this change:
>> (note the use of MAX instead of MIN_RX_FRAME_WIDTH/HEIGHT)
>> --- src/codec/h264mf_inc.cxx (revision 30868)
>> +++ src/codec/h264mf_inc.cxx (working copy)
>> @@ -324,8 +324,8 @@
>> // Frame rate
>> if (maxMBPS < LevelInfo[levelIndex].m_MaxMBPS)
>> maxMBPS = LevelInfo[levelIndex].m_MaxMBPS;
>> -
>> PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_WIDTH),
>> -
>> original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
>> +
>> PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_WIDTH),
>> +
>> original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
>> original, changed, PLUGINCODEC_OPTION_FRAME_TIME);
>
> No this is not correct. This value has to be the minimum or you end up
> with much, much too low a max frame rate in some, actually most,
> conditions.
>
> Note this is to indicate the /maximum possible/ frame rate, which
> requires the minimum possible size.That is not the same as the
> /actual/ frame rate which is based on the /actual/ resolution used.
>
>>
>> Also the query I have is how to get the mixer frame rate updated
>> (PushThread period) when the encoder changes the frame rate based on
>> new level and MBPS values?
>
> This is the tricky bit. The system should currently set the correct
> frame rate for the media stream. But that will not translate to the
> mixer node frame store as that has to operate at a frame rate suitable
> for /all/ participants.
>
> Ideally each output video stream should do some sort of frame rate
> adaptation. But that is really hard, especially with the common
> encoded codec frames that can be sent to multiple participants.
>
> Best bet is just to slow the whole mixer to the lowest frame rate of
> all participants. To do this, I'd suggest adding aa
> OpalMixerMediaStream::InternalUpdateMediaFormat() and conditionally
> reduce the frame rate of the OpalVideoMixer, via the m_node. You might
> need to add another function to OpalMixerNode to do that.
>
> If that works, please submit the patch for me to include in the SVN.
>
>
> *Robert Jongbloed*
> OPAL/OpenH323/PTLib Architect and Co-founder.
> Commercial support at http://www.voxlucida.com.au

Anyone looked at Cisco open source of H.264
http://www.eweek.com/networking/cisco-open-sourcing-h.264-fuels-debate-over-video-codecs.html?kc=EWKNLVPU11112013STR2&dni=88608265&rni=23993468
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Monday, November 11, 2013 21:18
To: Satya Sahoo; opalvoip-user@...
Subject: Re: [Opalvoip-user] Patch - h264 plugin not considering custom maxMBPS, maxFs, maxSMBPS
Ah, OK, sorry.
I have now back ported the change to Eridani.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 11/11/2013 3:46 PM, Satya Sahoo wrote:
Hi Robert,
The changes you mentioned are not in eridani trunk. It is in the opal trunk.
Thanks for the explanation on the maximum possible frame rate which requires the minimum possible frame size.
I agree, with the common encoded codec frames it is best to set the mixer to the lowest frame rate of all the participants.
I will analyse on the OpalMixerMediaStream::InternalUpdateMediaFormat() possibility.
Thanks,
-Satya
________________________________
From: Robert Jongbloed [robertj@...<mailto:robertj@...>]
Sent: Saturday, November 09, 2013 3:44 PM
To: opalvoip-user@...<mailto:opalvoip-user@...>
Subject: Re: [Opalvoip-user] Patch - h264 plugin not considering custom maxMBPS, maxFs, maxSMBPS
On 8/11/2013 3:56 pm, Satya Sahoo wrote:
I think this is part fix.
The diff below as I understand would now allow the custom values to be used for the frame rate calculation.
+ if (strcasecmp(optionName, MaxMBPS_H241.m_name) == 0)
+ return SetOptionUnsigned(m_h241MBPS, optionValue, 0);
+
if (strcasecmp(optionName, MaxMBPS_SDP.m_name) == 0)
- return SetOptionUnsigned(m_maxMBPS, optionValue, 0);
+ return SetOptionUnsigned(m_sdpMBPS, optionValue, 0);
Isn't this already done? I don't understand.
To get the mixer updated with the new frame rate (PushThread period) OnOpenMediaStream I have to make this change:
(note the use of MAX instead of MIN_RX_FRAME_WIDTH/HEIGHT)
--- src/codec/h264mf_inc.cxx (revision 30868)
+++ src/codec/h264mf_inc.cxx (working copy)
@@ -324,8 +324,8 @@
// Frame rate
if (maxMBPS < LevelInfo[levelIndex].m_MaxMBPS)
maxMBPS = LevelInfo[levelIndex].m_MaxMBPS;
- PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_WIDTH),
- original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
+ PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_WIDTH),
+ original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
original, changed, PLUGINCODEC_OPTION_FRAME_TIME);
No this is not correct. This value has to be the minimum or you end up with much, much too low a max frame rate in some, actually most, conditions.
Note this is to indicate the maximum possible frame rate, which requires the minimum possible size.That is not the same as the actual frame rate which is based on the actual resolution used.
Also the query I have is how to get the mixer frame rate updated (PushThread period) when the encoder changes the frame rate based on new level and MBPS values?
This is the tricky bit. The system should currently set the correct frame rate for the media stream. But that will not translate to the mixer node frame store as that has to operate at a frame rate suitable for all participants.
Ideally each output video stream should do some sort of frame rate adaptation. But that is really hard, especially with the common encoded codec frames that can be sent to multiple participants.
Best bet is just to slow the whole mixer to the lowest frame rate of all participants. To do this, I'd suggest adding aa OpalMixerMediaStream::InternalUpdateMediaFormat() and conditionally reduce the frame rate of the OpalVideoMixer, via the m_node. You might need to add another function to OpalMixerNode to do that.
If that works, please submit the patch for me to include in the SVN.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au

There are no references to those symbols in the Eridani version of
OpenPhone. There is in the Lacaille version, which is why I suggested a
mismatch.
My Windows build of Eridani worked fine without H.224 enabled.
I searched for every example of GetOpalH224_H323AnnexQ and it has a #if
OPAL_HAS_H224 around it. I am at a loss why this is a problem for you.
I have just compiled on my MacBook pro OS-X, iOS simulator and iOS ARM
versions. I really have no idea why it this is not working for you either.
Note the Mac uses native audio not ALSA etc. So it is expected that
there are no audop/video plugins built. However, codec plug ins should
be built.
*Robert Jongbloed*
/OPAL/OpenH323/PTLib Architect and Co-founder./
Commercial support at http://www.voxlucida.com.au
On 14/11/2013 5:12 PM, Toan Vuong wrote:
> Hi Robert,
> The undefined functions were a result of attempting to build Openphone
> against Eridani without H224 on Linux. The opal.so still seems to have
> references to H224 functions even though opal was built without them
> for some reason.
>
> ----
>
> Lacaille on the other hand, seems to not be playing well with my Mac
> either. I'm not sure what system libraries/headers were changed in
> Mavericks, but this is not the first time I couldn't build something
> on Mavericks :( unfortunately.
> For instance, ptlib couldn't find any of the plugin dependencies:
> /.../
> /checking alsa/asoundlib.h usability... no/
> /checking alsa/asoundlib.h presence... no/
> /checking for alsa/asoundlib.h... no/
> /checking for ESD... no/
> /checking sys/soundcard.h usability... no/
> /checking sys/soundcard.h presence... no/
> /.../
>
> Resulting in no plugins being built. Do I need to install certain
> libraries for the plugins to work? The same thing happens with opal,
> so none of the audio or video plugins get built.
> I'll periodically play around with it and keep you posted if anything
> new comes up. Thanks for your time!
>
> Toan
> ------------------------------------------------------------------------
>

Hi Robert,
The undefined functions were a result of attempting to build Openphone against Eridani without H224 on Linux. The opal.so still seems to have references to H224 functions even though opal was built without them for some reason.
----
Lacaille on the other hand, seems to not be playing well with my Mac either. I'm not sure what system libraries/headers were changed in Mavericks, but this is not the first time I couldn't build something on Mavericks :( unfortunately.
For instance, ptlib couldn't find any of the plugin dependencies:
...
checking alsa/asoundlib.h usability... no
checking alsa/asoundlib.h presence... no
checking for alsa/asoundlib.h... no
checking for ESD... no
checking sys/soundcard.h usability... no
checking sys/soundcard.h presence... no
...
Resulting in no plugins being built. Do I need to install certain libraries for the plugins to work? The same thing happens with opal, so none of the audio or video plugins get built.
I'll periodically play around with it and keep you posted if anything new comes up. Thanks for your time!
Toan
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Wednesday, November 13, 2013 2:08 PM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Polycom INVITE being
It all builds fine here.
Those undefined references are functions that no longer exist in Lacaille. So, you must have some version mismatch of libraries/headers.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 14/11/2013 8:05 AM, Toan Vuong wrote:
Hey Robert,
On Mavericks with trunk, none of the ptlib plugins built, but ptlib built and installed fine. None of the opal plugins built either, but opal also built fine. However, it failed on the install step. Looks like it assumes silk gets built:
install: /source/stand_alone_opal/Source/opal/lib_Darwin_x86_64/plugins/silk/silk_ptplugin.dylib: No such file or directory
The silk plugin wasn't built, so that library was not there.
I tried building Eridani without H224, which went well. However, Openphone complained:
$ make debug
make[1]: Entering directory `/media/data/stand_alone_opal/Build/Source/opal/samples/openphone'
[CC] main.cxx
[LD] obj_linux_x86_64_d/openphone
/source/stand_alone_opal/SDK/lib/libopal_d.so: undefined reference to `GetOpalH224_H323AnnexQ()'
/source/stand_alone_opal/SDK/lib/libopal_d.so: undefined reference to `GetOpalH224_HDLCTunneling()'
/source/stand_alone_opal/SDK/lib/libopal_d.so: undefined reference to `OpalH224MediaType::MediaType()'
Not sure how to proceed from here.
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Tuesday, November 12, 2013 10:58 PM
To: robertj@...<mailto:robertj@...>; opalvoip-user@...<mailto:opalvoip-user@...>
Subject: RE: [Opalvoip-user] Polycom INVITE being
Hey Robert,
Sorry about that. I wasn't in the office today and couldn't check this out. Tomorrow, I'll checkout the latest trunk on a mac and try to build it again. Out of curiosity, have you built it on Mavericks? Or only pre-Mavericks OS X?
I'll also try disabling H.224 on Eridani as well. I'll keep you updated.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...<mailto:robertj@...>]
Sent: Tuesday, November 12, 2013 6:37 PM
To: opalvoip-user@...<mailto:opalvoip-user@...>
Subject: Re: [Opalvoip-user] Polycom INVITE being
I haven't heard anything back on this.
One other thing to try with Eridani is disable H.224. It was seriously broken in pre-Lacaille versions.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 12/11/2013 5:06 PM, Robert Jongbloed wrote:
You may have caught it between check ins.
Certainly, the current Lacaille head compiles on OS-X, unfortunately my Fedora Linux box just died, so can't check that platform right now.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 12/11/2013 7:07 AM, Toan Vuong wrote:
I fixed this by manually moving all the plugins under devices/sound/[subfolders]/*.so and devices/videoinput/[subfolders]/*.so to devices/sound/ and devices/videoinput.
This makes ptlib build successfully.
Then I tried building opal and got:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx: In member function ‘virtual PBoolean H323Connection::OnStartHandleControlChannel()’:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘feature’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ cannot appear in a constant-expression
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: no matching function for call to ‘H460_FeatureSet::GetFeatureAs(int)’
So I turned on --disable-h460 and --disable-h460nat. This lets me build opal successfully. Openphone, however, seems to be missing an ifdef for ptlib's NAT support:
tvuong@...:/source/stand_alone_opal.lacaille/Source/opal/samples/openphone<mailto:tvuong@...:/source/stand_alone_opal.lacaille/Source/opal/samples/openphone>(trunk)
$ make
[CXX] main.cxx
main.cxx: In member function ‘bool MyManager::Initialise(bool)’:
main.cxx:1100: error: ‘PNatMethod_Fixed’ has not been declared
...
I'm not sure how to modify Openphone to build. Please advise.
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Monday, November 11, 2013 11:00 AM
To: robertj@...<mailto:robertj@...>; opalvoip-user@...<mailto:opalvoip-user@...>
Subject: RE: [Opalvoip-user] Polycom INVITE being
Hi Robert,
I checked out trunk just now and tried to build it. The first issue I got was:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx: In member function ‘bool PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, const PIPSocket::Address&)’:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx:471: error: ‘class PNatMethod’ has no member named ‘GetName’
I checked the header file and that function's not there, so I disabled nat with --disable-nat. Everything builds fine now, but when it gets to the install step I get this:
/usr/bin/install: cannot stat `././sound/*.so': No such file or directory
/usr/bin/install: cannot stat `././videoinput/*.so': No such file or directory
The libraries are in subfolders of sound/ and videoinput/:
$ ls Source/ptlib/lib_linux_x86_64/device/sound/
alsa esd oss pulse
tvuong@...:/source/stand_alone_opal.lacaille<mailto:tvuong@...:/source/stand_alone_opal.lacaille>(trunk)
$ ls Source/ptlib/lib_linux_x86_64/device/sound/alsa/
alsa_ptplugin.so sound_alsa.o
At this point I'm not sure how to edit the install paths to find the right plugin libraries. Any pointers on what I should do next?
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Saturday, November 09, 2013 1:55 PM
To: robertj@...<mailto:robertj@...>; opalvoip-user@...<mailto:opalvoip-user@...>
Subject: RE: [Opalvoip-user] Polycom INVITE being
Sure thing. I'll try it out on Monday when I'm back in the office.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...<mailto:robertj@...>]
Sent: Saturday, November 09, 2013 2:21 AM
To: opalvoip-user@...<mailto:opalvoip-user@...>
Subject: Re: [Opalvoip-user] Polycom INVITE being
Hmm, I thought I fixed this. Do you think you can try the trunk (Lacaille) version?
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 9/11/2013 8:07 am, Toan Vuong wrote:
Hi all,
I'm using a Polycom 8000 HDX over SIP to Openphone on the latest Eridani code. When I disable H.239 support on the Polycom, the flow is fine and I can get two-way video. However, when I enable H.239, weird things happen. First, in the SIP INVITE body from the Polycom, there are these extra fields even though H.239 is an H323 spec:
m=application 36637 UDP/BFCP *
a=floorctrl:c-s
a=setup:actpass
a=connection:new
OPAL doesn't seem to support them:
2013/11/08 11:39:13.771 0:17.088 1 SIP Pool:0x7fdda9329700 0x1daa6c0 sdp.cxx(1804) 0000000000002 SDP Unknown SDP media type parsing "m=application 36637 UDP/BFCP *"
...
Openphone then sends its INVITE response. Upon receiving it, the Polycom resends an ACK followed by another INVITE with the same body as the first. This time, however, Openphone responds with:
SIP/2.0 488 Not Acceptable Here
And the Polycom never transmits a/v. It does receive and display properly media from Openphone.
One thing I noticed was that, using a LifeSize Softphone, a similar flow happens. However, whereas Openphone replied with a 488, the LifeSize replies with the same reply body as the first INVITE. This seems to agree with the Polycom, and I get audio/video both ways.
----------------
So what I'm wondering is what should the behavior be in this case? Is Openphone handling things incorrectly? I can attach the logs for a call with and a call without H.239 enabled if necessary.
Thanks,
Toan
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Opalvoip-user mailing list
Opalvoip-user@...<mailto:Opalvoip-user@...>
https://lists.sourceforge.net/lists/listinfo/opalvoip-user

Hey Robert,
On Mavericks with trunk, none of the ptlib plugins built, but ptlib built and installed fine. None of the opal plugins built either, but opal also built fine. However, it failed on the install step. Looks like it assumes silk gets built:
install: /source/stand_alone_opal/Source/opal/lib_Darwin_x86_64/plugins/silk/silk_ptplugin.dylib: No such file or directory
The silk plugin wasn't built, so that library was not there.
I tried building Eridani without H224, which went well. However, Openphone complained:
$ make debug
make[1]: Entering directory `/media/data/stand_alone_opal/Build/Source/opal/samples/openphone'
[CC] main.cxx
[LD] obj_linux_x86_64_d/openphone
/source/stand_alone_opal/SDK/lib/libopal_d.so: undefined reference to `GetOpalH224_H323AnnexQ()'
/source/stand_alone_opal/SDK/lib/libopal_d.so: undefined reference to `GetOpalH224_HDLCTunneling()'
/source/stand_alone_opal/SDK/lib/libopal_d.so: undefined reference to `OpalH224MediaType::MediaType()'
Not sure how to proceed from here.
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Tuesday, November 12, 2013 10:58 PM
To: robertj@...; opalvoip-user@...
Subject: RE: [Opalvoip-user] Polycom INVITE being
Hey Robert,
Sorry about that. I wasn't in the office today and couldn't check this out. Tomorrow, I'll checkout the latest trunk on a mac and try to build it again. Out of curiosity, have you built it on Mavericks? Or only pre-Mavericks OS X?
I'll also try disabling H.224 on Eridani as well. I'll keep you updated.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Tuesday, November 12, 2013 6:37 PM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Polycom INVITE being
I haven't heard anything back on this.
One other thing to try with Eridani is disable H.224. It was seriously broken in pre-Lacaille versions.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 12/11/2013 5:06 PM, Robert Jongbloed wrote:
You may have caught it between check ins.
Certainly, the current Lacaille head compiles on OS-X, unfortunately my Fedora Linux box just died, so can't check that platform right now.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 12/11/2013 7:07 AM, Toan Vuong wrote:
I fixed this by manually moving all the plugins under devices/sound/[subfolders]/*.so and devices/videoinput/[subfolders]/*.so to devices/sound/ and devices/videoinput.
This makes ptlib build successfully.
Then I tried building opal and got:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx: In member function ‘virtual PBoolean H323Connection::OnStartHandleControlChannel()’:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘feature’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ cannot appear in a constant-expression
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: no matching function for call to ‘H460_FeatureSet::GetFeatureAs(int)’
So I turned on --disable-h460 and --disable-h460nat. This lets me build opal successfully. Openphone, however, seems to be missing an ifdef for ptlib's NAT support:
tvuong@...:/source/stand_alone_opal.lacaille/Source/opal/samples/openphone<mailto:tvuong@...:/source/stand_alone_opal.lacaille/Source/opal/samples/openphone>(trunk)
$ make
[CXX] main.cxx
main.cxx: In member function ‘bool MyManager::Initialise(bool)’:
main.cxx:1100: error: ‘PNatMethod_Fixed’ has not been declared
...
I'm not sure how to modify Openphone to build. Please advise.
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Monday, November 11, 2013 11:00 AM
To: robertj@...<mailto:robertj@...>; opalvoip-user@...<mailto:opalvoip-user@...>
Subject: RE: [Opalvoip-user] Polycom INVITE being
Hi Robert,
I checked out trunk just now and tried to build it. The first issue I got was:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx: In member function ‘bool PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, const PIPSocket::Address&)’:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx:471: error: ‘class PNatMethod’ has no member named ‘GetName’
I checked the header file and that function's not there, so I disabled nat with --disable-nat. Everything builds fine now, but when it gets to the install step I get this:
/usr/bin/install: cannot stat `././sound/*.so': No such file or directory
/usr/bin/install: cannot stat `././videoinput/*.so': No such file or directory
The libraries are in subfolders of sound/ and videoinput/:
$ ls Source/ptlib/lib_linux_x86_64/device/sound/
alsa esd oss pulse
tvuong@...:/source/stand_alone_opal.lacaille<mailto:tvuong@...:/source/stand_alone_opal.lacaille>(trunk)
$ ls Source/ptlib/lib_linux_x86_64/device/sound/alsa/
alsa_ptplugin.so sound_alsa.o
At this point I'm not sure how to edit the install paths to find the right plugin libraries. Any pointers on what I should do next?
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Saturday, November 09, 2013 1:55 PM
To: robertj@...<mailto:robertj@...>; opalvoip-user@...<mailto:opalvoip-user@...>
Subject: RE: [Opalvoip-user] Polycom INVITE being
Sure thing. I'll try it out on Monday when I'm back in the office.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...<mailto:robertj@...>]
Sent: Saturday, November 09, 2013 2:21 AM
To: opalvoip-user@...<mailto:opalvoip-user@...>
Subject: Re: [Opalvoip-user] Polycom INVITE being
Hmm, I thought I fixed this. Do you think you can try the trunk (Lacaille) version?
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 9/11/2013 8:07 am, Toan Vuong wrote:
Hi all,
I'm using a Polycom 8000 HDX over SIP to Openphone on the latest Eridani code. When I disable H.239 support on the Polycom, the flow is fine and I can get two-way video. However, when I enable H.239, weird things happen. First, in the SIP INVITE body from the Polycom, there are these extra fields even though H.239 is an H323 spec:
m=application 36637 UDP/BFCP *
a=floorctrl:c-s
a=setup:actpass
a=connection:new
OPAL doesn't seem to support them:
2013/11/08 11:39:13.771 0:17.088 1 SIP Pool:0x7fdda9329700 0x1daa6c0 sdp.cxx(1804) 0000000000002 SDP Unknown SDP media type parsing "m=application 36637 UDP/BFCP *"
...
Openphone then sends its INVITE response. Upon receiving it, the Polycom resends an ACK followed by another INVITE with the same body as the first. This time, however, Openphone responds with:
SIP/2.0 488 Not Acceptable Here
And the Polycom never transmits a/v. It does receive and display properly media from Openphone.
One thing I noticed was that, using a LifeSize Softphone, a similar flow happens. However, whereas Openphone replied with a 488, the LifeSize replies with the same reply body as the first INVITE. This seems to agree with the Polycom, and I get audio/video both ways.
----------------
So what I'm wondering is what should the behavior be in this case? Is Openphone handling things incorrectly? I can attach the logs for a call with and a call without H.239 enabled if necessary.
Thanks,
Toan
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Opalvoip-user mailing list
Opalvoip-user@...<mailto:Opalvoip-user@...>
https://lists.sourceforge.net/lists/listinfo/opalvoip-user

Hey Robert,
Sorry about that. I wasn't in the office today and couldn't check this out. Tomorrow, I'll checkout the latest trunk on a mac and try to build it again. Out of curiosity, have you built it on Mavericks? Or only pre-Mavericks OS X?
I'll also try disabling H.224 on Eridani as well. I'll keep you updated.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Tuesday, November 12, 2013 6:37 PM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Polycom INVITE being
I haven't heard anything back on this.
One other thing to try with Eridani is disable H.224. It was seriously broken in pre-Lacaille versions.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 12/11/2013 5:06 PM, Robert Jongbloed wrote:
You may have caught it between check ins.
Certainly, the current Lacaille head compiles on OS-X, unfortunately my Fedora Linux box just died, so can't check that platform right now.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 12/11/2013 7:07 AM, Toan Vuong wrote:
I fixed this by manually moving all the plugins under devices/sound/[subfolders]/*.so and devices/videoinput/[subfolders]/*.so to devices/sound/ and devices/videoinput.
This makes ptlib build successfully.
Then I tried building opal and got:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx: In member function ‘virtual PBoolean H323Connection::OnStartHandleControlChannel()’:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘feature’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ cannot appear in a constant-expression
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: no matching function for call to ‘H460_FeatureSet::GetFeatureAs(int)’
So I turned on --disable-h460 and --disable-h460nat. This lets me build opal successfully. Openphone, however, seems to be missing an ifdef for ptlib's NAT support:
tvuong@...:/source/stand_alone_opal.lacaille/Source/opal/samples/openphone<mailto:tvuong@...:/source/stand_alone_opal.lacaille/Source/opal/samples/openphone>(trunk)
$ make
[CXX] main.cxx
main.cxx: In member function ‘bool MyManager::Initialise(bool)’:
main.cxx:1100: error: ‘PNatMethod_Fixed’ has not been declared
...
I'm not sure how to modify Openphone to build. Please advise.
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Monday, November 11, 2013 11:00 AM
To: robertj@...<mailto:robertj@...>; opalvoip-user@...<mailto:opalvoip-user@...>
Subject: RE: [Opalvoip-user] Polycom INVITE being
Hi Robert,
I checked out trunk just now and tried to build it. The first issue I got was:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx: In member function ‘bool PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, const PIPSocket::Address&)’:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx:471: error: ‘class PNatMethod’ has no member named ‘GetName’
I checked the header file and that function's not there, so I disabled nat with --disable-nat. Everything builds fine now, but when it gets to the install step I get this:
/usr/bin/install: cannot stat `././sound/*.so': No such file or directory
/usr/bin/install: cannot stat `././videoinput/*.so': No such file or directory
The libraries are in subfolders of sound/ and videoinput/:
$ ls Source/ptlib/lib_linux_x86_64/device/sound/
alsa esd oss pulse
tvuong@...:/source/stand_alone_opal.lacaille<mailto:tvuong@...:/source/stand_alone_opal.lacaille>(trunk)
$ ls Source/ptlib/lib_linux_x86_64/device/sound/alsa/
alsa_ptplugin.so sound_alsa.o
At this point I'm not sure how to edit the install paths to find the right plugin libraries. Any pointers on what I should do next?
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Saturday, November 09, 2013 1:55 PM
To: robertj@...<mailto:robertj@...>; opalvoip-user@...<mailto:opalvoip-user@...>
Subject: RE: [Opalvoip-user] Polycom INVITE being
Sure thing. I'll try it out on Monday when I'm back in the office.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...<mailto:robertj@...>]
Sent: Saturday, November 09, 2013 2:21 AM
To: opalvoip-user@...<mailto:opalvoip-user@...>
Subject: Re: [Opalvoip-user] Polycom INVITE being
Hmm, I thought I fixed this. Do you think you can try the trunk (Lacaille) version?
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 9/11/2013 8:07 am, Toan Vuong wrote:
Hi all,
I'm using a Polycom 8000 HDX over SIP to Openphone on the latest Eridani code. When I disable H.239 support on the Polycom, the flow is fine and I can get two-way video. However, when I enable H.239, weird things happen. First, in the SIP INVITE body from the Polycom, there are these extra fields even though H.239 is an H323 spec:
m=application 36637 UDP/BFCP *
a=floorctrl:c-s
a=setup:actpass
a=connection:new
OPAL doesn't seem to support them:
2013/11/08 11:39:13.771 0:17.088 1 SIP Pool:0x7fdda9329700 0x1daa6c0 sdp.cxx(1804) 0000000000002 SDP Unknown SDP media type parsing "m=application 36637 UDP/BFCP *"
...
Openphone then sends its INVITE response. Upon receiving it, the Polycom resends an ACK followed by another INVITE with the same body as the first. This time, however, Openphone responds with:
SIP/2.0 488 Not Acceptable Here
And the Polycom never transmits a/v. It does receive and display properly media from Openphone.
One thing I noticed was that, using a LifeSize Softphone, a similar flow happens. However, whereas Openphone replied with a 488, the LifeSize replies with the same reply body as the first INVITE. This seems to agree with the Polycom, and I get audio/video both ways.
----------------
So what I'm wondering is what should the behavior be in this case? Is Openphone handling things incorrectly? I can attach the logs for a call with and a call without H.239 enabled if necessary.
Thanks,
Toan
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Opalvoip-user mailing list
Opalvoip-user@...<mailto:Opalvoip-user@...>
https://lists.sourceforge.net/lists/listinfo/opalvoip-user

I seem to remember that at one point it was to return the old state, but
later was changed to be success/failure. Certainly, in the current
stable version (Eridani) it does appear as though it should return true.
It is reasonable to assume that it should be true in Luyten as well, and
I will take your word for it that it works.
*Robert Jongbloed*
/OPAL/OpenH323/PTLib Architect and Co-founder./
Commercial support at http://www.voxlucida.com.au
On 12/11/2013 2:46 PM, Pete Davidson wrote:
> Robert,
>
> In OpalConnection::OnSwitchingFaxMediaStreams() you return !toT38.
> This always returns false when you are switching to T.38 and causes
> the switch to fail with SIP 488 Not acceptable here.
>
> If I override it in my code and return true, all works fine. Is that
> what was desired here?
>
> I know that are further changes in Eridani in this area, but I need to
> get this working with Luyten and I just want to make sure I am not
> missing something.
>
> Thanks,
> Pete Davidson
>
>
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models. Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
>
>
> _______________________________________________
> Opalvoip-user mailing list
> Opalvoip-user@...
> https://lists.sourceforge.net/lists/listinfo/opalvoip-user

Robert,
In OpalConnection::OnSwitchingFaxMediaStreams() you return !toT38. This
always returns false when you are switching to T.38 and causes the switch
to fail with SIP 488 Not acceptable here.
If I override it in my code and return true, all works fine. Is that what
was desired here?
I know that are further changes in Eridani in this area, but I need to get
this working with Luyten and I just want to make sure I am not missing
something.
Thanks,
Pete Davidson

Ah, OK, sorry.
I have now back ported the change to Eridani.
*Robert Jongbloed*
/OPAL/OpenH323/PTLib Architect and Co-founder./
Commercial support at http://www.voxlucida.com.au
On 11/11/2013 3:46 PM, Satya Sahoo wrote:
> Hi Robert,
>
> The changes you mentioned are not in eridani trunk. It is in the opal
> trunk.
>
> Thanks for the explanation on the maximum possible frame rate which
> requires the minimum possible frame size.
>
> I agree, with the common encoded codec frames it is best to set the
> mixer to the lowest frame rate of all the participants.
>
> I will analyse on the
> OpalMixerMediaStream::InternalUpdateMediaFormat() possibility.
>
> Thanks,
> -Satya
>
> ------------------------------------------------------------------------
> *From:* Robert Jongbloed [robertj@...]
> *Sent:* Saturday, November 09, 2013 3:44 PM
> *To:* opalvoip-user@...
> *Subject:* Re: [Opalvoip-user] Patch - h264 plugin not considering
> custom maxMBPS, maxFs, maxSMBPS
>
>
>
> On 8/11/2013 3:56 pm, Satya Sahoo wrote:
>> I think this is part fix.
>> The diff below as I understand would now allow the custom values to
>> be used for the frame rate calculation.
>> + if (strcasecmp(optionName, MaxMBPS_H241.m_name) == 0)
>> + return SetOptionUnsigned(m_h241MBPS, optionValue, 0);
>> +
>> if (strcasecmp(optionName, MaxMBPS_SDP.m_name) == 0)
>> - return SetOptionUnsigned(m_maxMBPS, optionValue, 0);
>> + return SetOptionUnsigned(m_sdpMBPS, optionValue, 0);
>
> Isn't this already done? I don't understand.
>
>> To get the mixer updated with the new frame rate (PushThread period)
>> OnOpenMediaStream I have to make this change:
>> (note the use of MAX instead of MIN_RX_FRAME_WIDTH/HEIGHT)
>> --- src/codec/h264mf_inc.cxx (revision 30868)
>> +++ src/codec/h264mf_inc.cxx (working copy)
>> @@ -324,8 +324,8 @@
>> // Frame rate
>> if (maxMBPS < LevelInfo[levelIndex].m_MaxMBPS)
>> maxMBPS = LevelInfo[levelIndex].m_MaxMBPS;
>> -
>> PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_WIDTH),
>> -
>> original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
>> +
>> PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_WIDTH),
>> +
>> original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
>> original, changed, PLUGINCODEC_OPTION_FRAME_TIME);
>
> No this is not correct. This value has to be the minimum or you end up
> with much, much too low a max frame rate in some, actually most,
> conditions.
>
> Note this is to indicate the /maximum possible/ frame rate, which
> requires the minimum possible size.That is not the same as the
> /actual/ frame rate which is based on the /actual/ resolution used.
>
>>
>> Also the query I have is how to get the mixer frame rate updated
>> (PushThread period) when the encoder changes the frame rate based on
>> new level and MBPS values?
>
> This is the tricky bit. The system should currently set the correct
> frame rate for the media stream. But that will not translate to the
> mixer node frame store as that has to operate at a frame rate suitable
> for /all/ participants.
>
> Ideally each output video stream should do some sort of frame rate
> adaptation. But that is really hard, especially with the common
> encoded codec frames that can be sent to multiple participants.
>
> Best bet is just to slow the whole mixer to the lowest frame rate of
> all participants. To do this, I'd suggest adding aa
> OpalMixerMediaStream::InternalUpdateMediaFormat() and conditionally
> reduce the frame rate of the OpalVideoMixer, via the m_node. You might
> need to add another function to OpalMixerNode to do that.
>
> If that works, please submit the patch for me to include in the SVN.
>
>
> *Robert Jongbloed*
> OPAL/OpenH323/PTLib Architect and Co-founder.
> Commercial support at http://www.voxlucida.com.au

I fixed this by manually moving all the plugins under devices/sound/[subfolders]/*.so and devices/videoinput/[subfolders]/*.so to devices/sound/ and devices/videoinput.
This makes ptlib build successfully.
Then I tried building opal and got:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx: In member function ‘virtual PBoolean H323Connection::OnStartHandleControlChannel()’:
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘feature’ was not declared in this scope
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: ‘H460_FeatureStd18’ cannot appear in a constant-expression
/media/data/stand_alone_opal.lacaille/Source/opal/src/h323/h323.cxx:2807: error: no matching function for call to ‘H460_FeatureSet::GetFeatureAs(int)’
So I turned on --disable-h460 and --disable-h460nat. This lets me build opal successfully. Openphone, however, seems to be missing an ifdef for ptlib's NAT support:
tvuong@...:/source/stand_alone_opal.lacaille/Source/opal/samples/openphone(trunk)
$ make
[CXX] main.cxx
main.cxx: In member function ‘bool MyManager::Initialise(bool)’:
main.cxx:1100: error: ‘PNatMethod_Fixed’ has not been declared
...
I'm not sure how to modify Openphone to build. Please advise.
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Monday, November 11, 2013 11:00 AM
To: robertj@...; opalvoip-user@...
Subject: RE: [Opalvoip-user] Polycom INVITE being
Hi Robert,
I checked out trunk just now and tried to build it. The first issue I got was:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx: In member function ‘bool PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, const PIPSocket::Address&)’:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx:471: error: ‘class PNatMethod’ has no member named ‘GetName’
I checked the header file and that function's not there, so I disabled nat with --disable-nat. Everything builds fine now, but when it gets to the install step I get this:
/usr/bin/install: cannot stat `././sound/*.so': No such file or directory
/usr/bin/install: cannot stat `././videoinput/*.so': No such file or directory
The libraries are in subfolders of sound/ and videoinput/:
$ ls Source/ptlib/lib_linux_x86_64/device/sound/
alsa esd oss pulse
tvuong@...:/source/stand_alone_opal.lacaille(trunk)
$ ls Source/ptlib/lib_linux_x86_64/device/sound/alsa/
alsa_ptplugin.so sound_alsa.o
At this point I'm not sure how to edit the install paths to find the right plugin libraries. Any pointers on what I should do next?
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Saturday, November 09, 2013 1:55 PM
To: robertj@...; opalvoip-user@...
Subject: RE: [Opalvoip-user] Polycom INVITE being
Sure thing. I'll try it out on Monday when I'm back in the office.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Saturday, November 09, 2013 2:21 AM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Polycom INVITE being
Hmm, I thought I fixed this. Do you think you can try the trunk (Lacaille) version?
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 9/11/2013 8:07 am, Toan Vuong wrote:
Hi all,
I'm using a Polycom 8000 HDX over SIP to Openphone on the latest Eridani code. When I disable H.239 support on the Polycom, the flow is fine and I can get two-way video. However, when I enable H.239, weird things happen. First, in the SIP INVITE body from the Polycom, there are these extra fields even though H.239 is an H323 spec:
m=application 36637 UDP/BFCP *
a=floorctrl:c-s
a=setup:actpass
a=connection:new
OPAL doesn't seem to support them:
2013/11/08 11:39:13.771 0:17.088 1 SIP Pool:0x7fdda9329700 0x1daa6c0 sdp.cxx(1804) 0000000000002 SDP Unknown SDP media type parsing "m=application 36637 UDP/BFCP *"
...
Openphone then sends its INVITE response. Upon receiving it, the Polycom resends an ACK followed by another INVITE with the same body as the first. This time, however, Openphone responds with:
SIP/2.0 488 Not Acceptable Here
And the Polycom never transmits a/v. It does receive and display properly media from Openphone.
One thing I noticed was that, using a LifeSize Softphone, a similar flow happens. However, whereas Openphone replied with a 488, the LifeSize replies with the same reply body as the first INVITE. This seems to agree with the Polycom, and I get audio/video both ways.
----------------
So what I'm wondering is what should the behavior be in this case? Is Openphone handling things incorrectly? I can attach the logs for a call with and a call without H.239 enabled if necessary.
Thanks,
Toan
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Opalvoip-user mailing list
Opalvoip-user@...<mailto:Opalvoip-user@...>
https://lists.sourceforge.net/lists/listinfo/opalvoip-user

Hi Robert,
I checked out trunk just now and tried to build it. The first issue I got was:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx: In member function ‘bool PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, const PIPSocket::Address&)’:
/media/data/stand_alone_opal.lacaille/Source/ptlib/src/ptclib/psockbun.cxx:471: error: ‘class PNatMethod’ has no member named ‘GetName’
I checked the header file and that function's not there, so I disabled nat with --disable-nat. Everything builds fine now, but when it gets to the install step I get this:
/usr/bin/install: cannot stat `././sound/*.so': No such file or directory
/usr/bin/install: cannot stat `././videoinput/*.so': No such file or directory
The libraries are in subfolders of sound/ and videoinput/:
$ ls Source/ptlib/lib_linux_x86_64/device/sound/
alsa esd oss pulse
tvuong@...:/source/stand_alone_opal.lacaille(trunk)
$ ls Source/ptlib/lib_linux_x86_64/device/sound/alsa/
alsa_ptplugin.so sound_alsa.o
At this point I'm not sure how to edit the install paths to find the right plugin libraries. Any pointers on what I should do next?
Thanks,
Toan
________________________________
From: Toan Vuong
Sent: Saturday, November 09, 2013 1:55 PM
To: robertj@...; opalvoip-user@...
Subject: RE: [Opalvoip-user] Polycom INVITE being
Sure thing. I'll try it out on Monday when I'm back in the office.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Saturday, November 09, 2013 2:21 AM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Polycom INVITE being
Hmm, I thought I fixed this. Do you think you can try the trunk (Lacaille) version?
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 9/11/2013 8:07 am, Toan Vuong wrote:
Hi all,
I'm using a Polycom 8000 HDX over SIP to Openphone on the latest Eridani code. When I disable H.239 support on the Polycom, the flow is fine and I can get two-way video. However, when I enable H.239, weird things happen. First, in the SIP INVITE body from the Polycom, there are these extra fields even though H.239 is an H323 spec:
m=application 36637 UDP/BFCP *
a=floorctrl:c-s
a=setup:actpass
a=connection:new
OPAL doesn't seem to support them:
2013/11/08 11:39:13.771 0:17.088 1 SIP Pool:0x7fdda9329700 0x1daa6c0 sdp.cxx(1804) 0000000000002 SDP Unknown SDP media type parsing "m=application 36637 UDP/BFCP *"
...
Openphone then sends its INVITE response. Upon receiving it, the Polycom resends an ACK followed by another INVITE with the same body as the first. This time, however, Openphone responds with:
SIP/2.0 488 Not Acceptable Here
And the Polycom never transmits a/v. It does receive and display properly media from Openphone.
One thing I noticed was that, using a LifeSize Softphone, a similar flow happens. However, whereas Openphone replied with a 488, the LifeSize replies with the same reply body as the first INVITE. This seems to agree with the Polycom, and I get audio/video both ways.
----------------
So what I'm wondering is what should the behavior be in this case? Is Openphone handling things incorrectly? I can attach the logs for a call with and a call without H.239 enabled if necessary.
Thanks,
Toan
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Opalvoip-user mailing list
Opalvoip-user@...<mailto:Opalvoip-user@...>
https://lists.sourceforge.net/lists/listinfo/opalvoip-user

Hi Robert,
The changes you mentioned are not in eridani trunk. It is in the opal trunk.
Thanks for the explanation on the maximum possible frame rate which requires the minimum possible frame size.
I agree, with the common encoded codec frames it is best to set the mixer to the lowest frame rate of all the participants.
I will analyse on the OpalMixerMediaStream::InternalUpdateMediaFormat() possibility.
Thanks,
-Satya
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Saturday, November 09, 2013 3:44 PM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Patch - h264 plugin not considering custom maxMBPS, maxFs, maxSMBPS
<http://www.voxlucida.com.au&gt;
<http://www.voxlucida.com.au&gt;
On 8/11/2013 3:56 pm, Satya Sahoo wrote:
I think this is part fix.
The diff below as I understand would now allow the custom values to be used for the frame rate calculation.
+ if (strcasecmp(optionName, MaxMBPS_H241.m_name) == 0)
+ return SetOptionUnsigned(m_h241MBPS, optionValue, 0);
+
if (strcasecmp(optionName, MaxMBPS_SDP.m_name) == 0)
- return SetOptionUnsigned(m_maxMBPS, optionValue, 0);
+ return SetOptionUnsigned(m_sdpMBPS, optionValue, 0);
Isn't this already done? I don't understand.
To get the mixer updated with the new frame rate (PushThread period) OnOpenMediaStream I have to make this change:
(note the use of MAX instead of MIN_RX_FRAME_WIDTH/HEIGHT)
--- src/codec/h264mf_inc.cxx (revision 30868)
+++ src/codec/h264mf_inc.cxx (working copy)
@@ -324,8 +324,8 @@
// Frame rate
if (maxMBPS < LevelInfo[levelIndex].m_MaxMBPS)
maxMBPS = LevelInfo[levelIndex].m_MaxMBPS;
- PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_WIDTH),
- original.GetUnsigned(PLUGINCODEC_OPTION_MIN_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
+ PluginCodec_Utilities::ClampMin(PluginCodec_Utilities::GetMacroBlocks(original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_WIDTH),
+ original.GetUnsigned(PLUGINCODEC_OPTION_MAX_RX_FRAME_HEIGHT))*PLUGINCODEC_VIDEO_CLOCK/maxMBPS,
original, changed, PLUGINCODEC_OPTION_FRAME_TIME);
No this is not correct. This value has to be the minimum or you end up with much, much too low a max frame rate in some, actually most, conditions.
Note this is to indicate the maximum possible frame rate, which requires the minimum possible size.That is not the same as the actual frame rate which is based on the actual resolution used.
Also the query I have is how to get the mixer frame rate updated (PushThread period) when the encoder changes the frame rate based on new level and MBPS values?
This is the tricky bit. The system should currently set the correct frame rate for the media stream. But that will not translate to the mixer node frame store as that has to operate at a frame rate suitable for all participants.
Ideally each output video stream should do some sort of frame rate adaptation. But that is really hard, especially with the common encoded codec frames that can be sent to multiple participants.
Best bet is just to slow the whole mixer to the lowest frame rate of all participants. To do this, I'd suggest adding aa OpalMixerMediaStream::InternalUpdateMediaFormat() and conditionally reduce the frame rate of the OpalVideoMixer, via the m_node. You might need to add another function to OpalMixerNode to do that.
If that works, please submit the patch for me to include in the SVN.
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au

OPAL is very much active.
Fedora 19 is also the Linux distribution I use all the time. The
traditional "./configure ; make ; sudo make install" should work. For
other possibilities, there are instructions on the web site.
Maybe if you said what trouble you were having?
*Robert Jongbloed*
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 10/11/2013 2:12 am, Michael A Hawkins wrote:
> Greetings everyone,
>
> Here's what I want to do.
>
> I have a Cisco router in my home office. I use a Cisco router because I am
> an old network engineer with alot of experience with networking. I have a
> set of tools that I developed myself in a LAMP configuration that lets me do
> nice stuff with home control. The router is also running call manager
> express and I have Cisco IP phones (SCCP) all over the house. I also have
> Cablevision Optimum voice service with free voice mail. What I want to do is
> to light up the message waiting indicator on the IP phones when a voice mail
> arrives in the Optimum voice mailbox. Optimum uses dial tone stutter to
> notify a customer that there's new voice mail. The phone service plugs into
> an FXO port on the home Cisco router. There's no way for call manager
> express to test for dial tone stutter. It's a feature that simply isn't
> there (thank you Cisco /sarc).
>
> Fortunately, Optimum voice mail can be set up to send an email to any email
> address of your choice (which I have done). And now, I have a TCL script
> called mwi.exp that logs into POP3 mail server and checks for any emails
> received from Optimum voice mail notification email address.
>
> Also fortunately, I know I can activate any MWI light on any phone by
> dialing the right numbers as they are set up on the router. So I know I can
> turn the darn lights on or off simply by calling the right digits. And I
> know I can do this via H323 because I succeeded in doing so from my lab
> router to the home router via a H323 call between them.
>
> What I want to do, is to make a H323 call to the router to activate MWI on
> IP phones in the house from my Fedora LINUX server. It runs all the home
> control, media server, music, mythtv etc. I have also sorts of cron scripts
> doing all sorts of stuff. Adding a simple message waiting script seems like
> a nice way to go.
>
> I went looking for a simple command line tool that could make H323 calls. I
> found this: http://sipcmd.sourceforge.net/ which led me to OpenH323, then
> OpenH323+, then Opal and PTlib. I am also well aware of Asterisk and
> FreeSwitch. I have not spent much time with them because time is precious
> and it's easy for me to set up a Cisco 2611XM and set up telephone service
> and SCCP phones. It also keeps the electrical costs down when I can run
> phones, Internet router and phone switch all in one device and then have one
> LINUX server doing everything else.
>
> My problem right now is that I am most familiar with Fedora LINUX and I am
> having a lot of trouble compiling PTLib and Opal.
>
> But before I get into those details I wanted to see if anyone was here on
> this list and if they had any suggestions or comments regarding my approach
> and also find out how "alive" the Opal/Ptlib project is or whether I should
> be using some other tool or package that is available. For example, I hoped
> that perhaps Asterisk or Freeswitch might have a tool that would allow me to
> make command line H323 calls. In which case, I should probably go that route
> as a way to get into the whole Asterisk thing.
>
> Any comments or suggestions will be much appreciated.
>
> I've included the expect script below for anyone that might be interested.
> It's unfinished because I am not able to make a H323 call yet.
>
> Michael A Hawkins
>
> This email and any attached files are confidential and are intended solely
> for the use of the intended recipient(s). If you received this email in
> error, please notify the sender and delete the email and attachments.
>
>
> mwi.exp
>
> #!/usr/bin/expect
>
> # mwi.exp logs into a POP3 mail server and walks through the email headers
> searching for a matching email address
> # that would indicate that a voice mail message was received on a phone
> message service.
> # If any such emails are found they are deleted and an H323 call is made to
> one or more phone numbers
> # Those phone numbers activate a Message Waiting Indicator on a phone.
>
> # NOTE: some of the strings are very specific to the Optimum mail server and
> could change if
> # Optimum chooses to upgrade their mail server. So a feature to warn of
> problems with the script
> # should be added.
>
> # NOTE2: no H323 call is being made yet. That part is not yet completed.
>
> set pop3server "mail.optonline.net"
> set user "voicemailbox@..."
> set pass "xxxxxxxx"
> set lookingfor "OptimumVoice@..."
> set found 0
>
> # now telnet into mail server
> if { [eval spawn telnet "$pop3server 110"]!=0 } {
>
> set timeout 4
>
> # first telnet to the mail server on port 110 (pop3) and see if there's any
> new mail
>
> expect "+OK Messaging Multiplexor (Sun Java(tm) System Messaging Server
> 6.2-8.04 (built Feb 28 2007))" { puts "We're connected" }
> expect "\r\n" {send "user $user\n"; puts "We're connected, sent user";}
> expect "+OK password required for user $user\r\n" {send "pass $pass\n";
> puts "Got password required, sent password";}
> expect "+OK Maildrop ready\r\n" {send "stat\n"; puts "Got mail drop ready,
> sent stat"}
> expect "+OK "
> expect "\r\n"
> set stat_result $expect_out(buffer)
>
> set pos [string first " " $stat_result]
> set numberofemails [string range $stat_result 0 $pos-1]
> if { $numberofemails>1 } then {
> puts "There are $numberofemails emails in the mailbox"
> } else {
> puts "There is $numberofemails email in the mailbox"
> }
> while { $numberofemails>0 } {
> # parse the header of each email and test for incoming voicemail
> exp_send "top $numberofemails 0\n"
> expect $lookingfor { set found 1 }
> if { $found==1 } then {
> expect ".\r\n" { send "DELE $numberofemails\n" }
> expect "+OK message deleted\r\n"
> set found 0
> }
> set emailheader $expect_out(buffer)
> set numberofemails [ expr $numberofemails - 1 ]
> }
> exp_send "list\n"
> expect ".\r\n" { send "quit\n"; puts "Got list now quit" }
> expect "+OK\r\n"
> }
> exit
>
>
> Michael A Hawkins
> 203-550-5502
>
> This email and any attached files are confidential and are intended solely
> for the use of the intended recipient(s). If you received this email in
> error, please notify the sender and delete the email and attachments.
>
>
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models. Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> _______________________________________________
> Opalvoip-user mailing list
> Opalvoip-user@...
> https://lists.sourceforge.net/lists/listinfo/opalvoip-user

Sure thing. I'll try it out on Monday when I'm back in the office.
Thanks,
Toan
________________________________
From: Robert Jongbloed [robertj@...]
Sent: Saturday, November 09, 2013 2:21 AM
To: opalvoip-user@...
Subject: Re: [Opalvoip-user] Polycom INVITE being
Hmm, I thought I fixed this. Do you think you can try the trunk (Lacaille) version?
Robert Jongbloed
OPAL/OpenH323/PTLib Architect and Co-founder.
Commercial support at http://www.voxlucida.com.au
On 9/11/2013 8:07 am, Toan Vuong wrote:
Hi all,
I'm using a Polycom 8000 HDX over SIP to Openphone on the latest Eridani code. When I disable H.239 support on the Polycom, the flow is fine and I can get two-way video. However, when I enable H.239, weird things happen. First, in the SIP INVITE body from the Polycom, there are these extra fields even though H.239 is an H323 spec:
m=application 36637 UDP/BFCP *
a=floorctrl:c-s
a=setup:actpass
a=connection:new
OPAL doesn't seem to support them:
2013/11/08 11:39:13.771 0:17.088 1 SIP Pool:0x7fdda9329700 0x1daa6c0 sdp.cxx(1804) 0000000000002 SDP Unknown SDP media type parsing "m=application 36637 UDP/BFCP *"
...
Openphone then sends its INVITE response. Upon receiving it, the Polycom resends an ACK followed by another INVITE with the same body as the first. This time, however, Openphone responds with:
SIP/2.0 488 Not Acceptable Here
And the Polycom never transmits a/v. It does receive and display properly media from Openphone.
One thing I noticed was that, using a LifeSize Softphone, a similar flow happens. However, whereas Openphone replied with a 488, the LifeSize replies with the same reply body as the first INVITE. This seems to agree with the Polycom, and I get audio/video both ways.
----------------
So what I'm wondering is what should the behavior be in this case? Is Openphone handling things incorrectly? I can attach the logs for a call with and a call without H.239 enabled if necessary.
Thanks,
Toan
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Opalvoip-user mailing list
Opalvoip-user@...<mailto:Opalvoip-user@...>
https://lists.sourceforge.net/lists/listinfo/opalvoip-user

Hi Michael,
when compiling on Fedora, make sure you use gcc, not clang.
I just compiled PTLib (2.10.x), H323Plus and GnuGk on Fedora 19 and it
worked fine. I would assume OPAL should be OK, too.
Regards,
Jan
Michael A Hawkins wrote:
> Greetings everyone,
>
> Here's what I want to do.
>
> I have a Cisco router in my home office. I use a Cisco router because I am
> an old network engineer with alot of experience with networking. I have a
> set of tools that I developed myself in a LAMP configuration that lets me do
> nice stuff with home control. The router is also running call manager
> express and I have Cisco IP phones (SCCP) all over the house. I also have
> Cablevision Optimum voice service with free voice mail. What I want to do is
> to light up the message waiting indicator on the IP phones when a voice mail
> arrives in the Optimum voice mailbox. Optimum uses dial tone stutter to
> notify a customer that there's new voice mail. The phone service plugs into
> an FXO port on the home Cisco router. There's no way for call manager
> express to test for dial tone stutter. It's a feature that simply isn't
> there (thank you Cisco /sarc).
>
> Fortunately, Optimum voice mail can be set up to send an email to any email
> address of your choice (which I have done). And now, I have a TCL script
> called mwi.exp that logs into POP3 mail server and checks for any emails
> received from Optimum voice mail notification email address.
>
> Also fortunately, I know I can activate any MWI light on any phone by
> dialing the right numbers as they are set up on the router. So I know I can
> turn the darn lights on or off simply by calling the right digits. And I
> know I can do this via H323 because I succeeded in doing so from my lab
> router to the home router via a H323 call between them.
>
> What I want to do, is to make a H323 call to the router to activate MWI on
> IP phones in the house from my Fedora LINUX server. It runs all the home
> control, media server, music, mythtv etc. I have also sorts of cron scripts
> doing all sorts of stuff. Adding a simple message waiting script seems like
> a nice way to go.
>
> I went looking for a simple command line tool that could make H323 calls. I
> found this: http://sipcmd.sourceforge.net/ which led me to OpenH323, then
> OpenH323+, then Opal and PTlib. I am also well aware of Asterisk and
> FreeSwitch. I have not spent much time with them because time is precious
> and it's easy for me to set up a Cisco 2611XM and set up telephone service
> and SCCP phones. It also keeps the electrical costs down when I can run
> phones, Internet router and phone switch all in one device and then have one
> LINUX server doing everything else.
>
> My problem right now is that I am most familiar with Fedora LINUX and I am
> having a lot of trouble compiling PTLib and Opal.
>
> But before I get into those details I wanted to see if anyone was here on
> this list and if they had any suggestions or comments regarding my approach
> and also find out how "alive" the Opal/Ptlib project is or whether I should
> be using some other tool or package that is available. For example, I hoped
> that perhaps Asterisk or Freeswitch might have a tool that would allow me to
> make command line H323 calls. In which case, I should probably go that route
> as a way to get into the whole Asterisk thing.
>
> Any comments or suggestions will be much appreciated.
>
> I've included the expect script below for anyone that might be interested.
> It's unfinished because I am not able to make a H323 call yet.
>
> Michael A Hawkins
>
> This email and any attached files are confidential and are intended solely
> for the use of the intended recipient(s). If you received this email in
> error, please notify the sender and delete the email and attachments.
>
>
> mwi.exp
>
> #!/usr/bin/expect
>
> # mwi.exp logs into a POP3 mail server and walks through the email headers
> searching for a matching email address
> # that would indicate that a voice mail message was received on a phone
> message service.
> # If any such emails are found they are deleted and an H323 call is made to
> one or more phone numbers
> # Those phone numbers activate a Message Waiting Indicator on a phone.
>
> # NOTE: some of the strings are very specific to the Optimum mail server and
> could change if
> # Optimum chooses to upgrade their mail server. So a feature to warn of
> problems with the script
> # should be added.
>
> # NOTE2: no H323 call is being made yet. That part is not yet completed.
>
> set pop3server "mail.optonline.net"
> set user "voicemailbox@..."
> set pass "xxxxxxxx"
> set lookingfor "OptimumVoice@..."
> set found 0
>
> # now telnet into mail server
> if { [eval spawn telnet "$pop3server 110"]!=0 } {
>
> set timeout 4
>
> # first telnet to the mail server on port 110 (pop3) and see if there's any
> new mail
>
> expect "+OK Messaging Multiplexor (Sun Java(tm) System Messaging Server
> 6.2-8.04 (built Feb 28 2007))" { puts "We're connected" }
> expect "\r\n" {send "user $user\n"; puts "We're connected, sent user";}
> expect "+OK password required for user $user\r\n" {send "pass $pass\n";
> puts "Got password required, sent password";}
> expect "+OK Maildrop ready\r\n" {send "stat\n"; puts "Got mail drop ready,
> sent stat"}
> expect "+OK "
> expect "\r\n"
> set stat_result $expect_out(buffer)
>
> set pos [string first " " $stat_result]
> set numberofemails [string range $stat_result 0 $pos-1]
> if { $numberofemails>1 } then {
> puts "There are $numberofemails emails in the mailbox"
> } else {
> puts "There is $numberofemails email in the mailbox"
> }
> while { $numberofemails>0 } {
> # parse the header of each email and test for incoming voicemail
> exp_send "top $numberofemails 0\n"
> expect $lookingfor { set found 1 }
> if { $found==1 } then {
> expect ".\r\n" { send "DELE $numberofemails\n" }
> expect "+OK message deleted\r\n"
> set found 0
> }
> set emailheader $expect_out(buffer)
> set numberofemails [ expr $numberofemails - 1 ]
> }
> exp_send "list\n"
> expect ".\r\n" { send "quit\n"; puts "Got list now quit" }
> expect "+OK\r\n"
> }
> exit
>
>
> Michael A Hawkins
> 203-550-5502
--
Jan Willamowius, jan@..., http://www.gnugk.org/