opalvoip-svn Mailing List for OpalVOIP (Page 579)
Brought to you by:
csoutheren,
rjongbloed
You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(71) |
Nov
(241) |
Dec
(143) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(210) |
Feb
(263) |
Mar
(214) |
Apr
(290) |
May
(203) |
Jun
(160) |
Jul
(128) |
Aug
(158) |
Sep
(376) |
Oct
(234) |
Nov
(227) |
Dec
(216) |
2009 |
Jan
(99) |
Feb
(151) |
Mar
(234) |
Apr
(143) |
May
(271) |
Jun
(244) |
Jul
(173) |
Aug
(124) |
Sep
(246) |
Oct
(178) |
Nov
(85) |
Dec
(77) |
2010 |
Jan
(101) |
Feb
(79) |
Mar
(92) |
Apr
(134) |
May
(125) |
Jun
(121) |
Jul
(61) |
Aug
(70) |
Sep
(86) |
Oct
(81) |
Nov
(65) |
Dec
(75) |
2011 |
Jan
(110) |
Feb
(119) |
Mar
(267) |
Apr
(154) |
May
(296) |
Jun
(177) |
Jul
(149) |
Aug
(124) |
Sep
(120) |
Oct
(116) |
Nov
(99) |
Dec
(121) |
2012 |
Jan
(78) |
Feb
(161) |
Mar
(323) |
Apr
(154) |
May
(190) |
Jun
(207) |
Jul
(176) |
Aug
(165) |
Sep
(137) |
Oct
(85) |
Nov
(112) |
Dec
(100) |
2013 |
Jan
(341) |
Feb
(102) |
Mar
(240) |
Apr
(216) |
May
(233) |
Jun
(226) |
Jul
(139) |
Aug
(192) |
Sep
(183) |
Oct
(211) |
Nov
(220) |
Dec
(110) |
2014 |
Jan
(203) |
Feb
(205) |
Mar
(100) |
Apr
(178) |
May
(194) |
Jun
(249) |
Jul
(136) |
Aug
(241) |
Sep
(226) |
Oct
(200) |
Nov
(94) |
Dec
(46) |
2015 |
Jan
(94) |
Feb
(74) |
Mar
(89) |
Apr
(78) |
May
(65) |
Jun
(70) |
Jul
(113) |
Aug
(176) |
Sep
(140) |
Oct
(154) |
Nov
(99) |
Dec
(115) |
2016 |
Jan
(102) |
Feb
(69) |
Mar
(97) |
Apr
(53) |
May
(42) |
Jun
(13) |
Jul
(42) |
Aug
(30) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <rjo...@us...> - 2008-06-17 23:12:42
|
Revision: 20455 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20455&view=rev Author: rjongbloed Date: 2008-06-17 16:12:26 -0700 (Tue, 17 Jun 2008) Log Message: ----------- Fixed OpenPhone secure RTP string for disable. Modified Paths: -------------- opal/trunk/samples/openphone/main.cxx Modified: opal/trunk/samples/openphone/main.cxx =================================================================== --- opal/trunk/samples/openphone/main.cxx 2008-06-17 08:33:22 UTC (rev 20454) +++ opal/trunk/samples/openphone/main.cxx 2008-06-17 23:12:26 UTC (rev 20455) @@ -3265,6 +3265,10 @@ m_manager.DetachEndPoint("sips"); config->Write(SecureSIPKey, m_SecureSIP); + if (m_RTPSecurityModeH323 == "None") + m_RTPSecurityModeH323.erase(); + if (m_RTPSecurityModeSIP == "None") + m_RTPSecurityModeSIP.erase(); SAVE_FIELD(RTPSecurityModeH323, m_manager.h323EP->SetDefaultSecurityMode); SAVE_FIELD(RTPSecurityModeSIP, m_manager.sipEP->SetDefaultSecurityMode); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-17 08:33:13
|
Revision: 20454 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20454&view=rev Author: csoutheren Date: 2008-06-17 01:33:22 -0700 (Tue, 17 Jun 2008) Log Message: ----------- Backport from head Keep track of maximum frames per packet that a codec can possibly handle to allow worst-case sizing of output buffers for audio transcoders Modified Paths: -------------- opal/branches/csoutheren/BarnardSnapshot1/include/opal/mediafmt.h opal/branches/csoutheren/BarnardSnapshot1/include/opal/transcoders.h opal/branches/csoutheren/BarnardSnapshot1/src/opal/mediafmt.cxx opal/branches/csoutheren/BarnardSnapshot1/src/opal/transcoders.cxx Modified: opal/branches/csoutheren/BarnardSnapshot1/include/opal/mediafmt.h =================================================================== --- opal/branches/csoutheren/BarnardSnapshot1/include/opal/mediafmt.h 2008-06-17 08:25:31 UTC (rev 20453) +++ opal/branches/csoutheren/BarnardSnapshot1/include/opal/mediafmt.h 2008-06-17 08:33:22 UTC (rev 20454) @@ -1088,6 +1088,7 @@ static const PString & RxFramesPerPacketOption(); static const PString & TxFramesPerPacketOption(); + static const PString & MaxFramesPerPacketOption(); }; #endif Modified: opal/branches/csoutheren/BarnardSnapshot1/include/opal/transcoders.h =================================================================== --- opal/branches/csoutheren/BarnardSnapshot1/include/opal/transcoders.h 2008-06-17 08:25:31 UTC (rev 20453) +++ opal/branches/csoutheren/BarnardSnapshot1/include/opal/transcoders.h 2008-06-17 08:33:22 UTC (rev 20454) @@ -429,8 +429,7 @@ protected: PINDEX inputBytesPerFrame; PINDEX outputBytesPerFrame; - //PBYTEArray partialFrame; - //PINDEX partialBytes; + PINDEX maxOutputDataSize; }; Modified: opal/branches/csoutheren/BarnardSnapshot1/src/opal/mediafmt.cxx =================================================================== --- opal/branches/csoutheren/BarnardSnapshot1/src/opal/mediafmt.cxx 2008-06-17 08:25:31 UTC (rev 20453) +++ opal/branches/csoutheren/BarnardSnapshot1/src/opal/mediafmt.cxx 2008-06-17 08:33:22 UTC (rev 20454) @@ -275,7 +275,7 @@ if (m_value < m_enumerations.GetSize()) strm << m_enumerations[m_value]; else - strm << '#' << m_value; + strm << psprintf("<%u>", m_value); // Don't output direct to stream so width() works correctly } @@ -286,9 +286,8 @@ PINDEX longestMatch = 0; PCaselessString str; - int ch; - while ((ch = strm.get()) != EOF) { - str += (char)ch; + while (strm.peek() != EOF) { + str += (char)strm.get(); PINDEX i; for (i = 0; i < m_enumerations.GetSize(); i++) { @@ -305,10 +304,6 @@ } } - // For some reason the get at eof sets the badbit, don't want that! - // But we do want the eofbit if it was set. - strm.clear(strm.rdstate()&ios::badbit); - if (str == m_enumerations[longestMatch]) m_value = longestMatch; else { @@ -385,21 +380,20 @@ void OpalMediaOptionString::ReadFrom(istream & strm) { - char c; - strm >> c; // Skip whitespace + while (isspace(strm.peek())) // Skip whitespace + strm.get(); - if (c != '"') { - strm.putback(c); - strm >> m_value; // If no " then read to end of line. - } + if (strm.peek() != '"') + strm >> m_value; // If no '"' then read to end of line or eof. else { // If there was a '"' then assume it is a C style literal string with \ escapes etc + // The following will set the bad bit if eof occurs before + char c = ' '; PINDEX count = 0; PStringStream str; - str << '"'; - - while (strm.get(c).good()) { + while (strm.peek() != EOF) { + strm.get(c); str << c; // Keep reading till get a '"' that is not preceded by a '\' that is not itself preceded by a '\' @@ -409,6 +403,12 @@ count++; } + if (c != '"') { + // No closing quote, add one and set fail bit. + strm.setstate(ios::failbit); + str << '"'; + } + m_value = PString(PString::Literal, (const char *)str); } } @@ -479,13 +479,26 @@ if (m_base64) strm << PBase64::Encode(m_value); else { + streamsize width = strm.width(); ios::fmtflags flags = strm.flags(); char fill = strm.fill(); - strm << hex << setfill('0'); + int fillLength = width - m_value.GetSize()*2; + if (fillLength > 0 && (flags&ios_base::adjustfield) == ios::right) { + for (int i = 0; i < fillLength; i++) + strm << fill; + } + + strm << right << hex << setfill('0'); for (PINDEX i = 0; i < m_value.GetSize(); i++) strm << setw(2) << (unsigned)m_value[i]; + if (fillLength > 0 && (flags&ios_base::adjustfield) == ios::left) { + strm << setw(1); + for (int i = 0; i < fillLength; i++) + strm << fill; + } + strm.fill(fill); strm.flags(flags); } @@ -504,19 +517,29 @@ pair[2] = '\0'; PINDEX count = 0; + PINDEX nibble = 0; - while (isxdigit(strm.peek())) { - pair[0] = (char)strm.get(); - if (!isxdigit(strm.peek())) { - strm.putback(pair[0]); + while (strm.peek() != EOF) { + char ch = (char)strm.get(); + if (isxdigit(ch)) + pair[nibble++] = ch; + else if (ch == ' ') + pair[nibble++] = '0'; + else break; + + if (nibble == 2) { + if (!m_value.SetMinSize(100*((count+1+99)/100))) + break; + m_value[count++] = (BYTE)strtoul(pair, NULL, 16); + nibble = 0; } - pair[1] = (char)strm.get(); - if (!m_value.SetMinSize((count+1+99)%100)) - break; - m_value[count++] = (BYTE)strtoul(pair, NULL, 16); } + // Report error if no legal hex, not empty is OK. + if (count == 0 && !strm.eof()) + strm.setstate(ios::failbit); + m_value.SetSize(count); } } @@ -1227,6 +1250,7 @@ const PString & OpalAudioFormat::RxFramesPerPacketOption() { static PString s = PLUGINCODEC_OPTION_RX_FRAMES_PER_PACKET; return s; } const PString & OpalAudioFormat::TxFramesPerPacketOption() { static PString s = PLUGINCODEC_OPTION_TX_FRAMES_PER_PACKET; return s; } +const PString & OpalAudioFormat::MaxFramesPerPacketOption(){ static PString s = "Max Frames Per Packet"; return s; } OpalAudioFormat::OpalAudioFormat(const char * fullName, RTP_DataFrame::PayloadTypes rtpPayloadType, @@ -1277,6 +1301,8 @@ AddOption(new OpalMediaOptionUnsigned(OpalAudioFormat::RxFramesPerPacketOption(), false, OpalMediaOption::NoMerge, rxFrames, 1, maxFrames)); if (txFrames > 0) AddOption(new OpalMediaOptionUnsigned(OpalAudioFormat::TxFramesPerPacketOption(), false, OpalMediaOption::NoMerge, txFrames, 1, maxFrames)); + + AddOption(new OpalMediaOptionUnsigned(OpalAudioFormat::MaxFramesPerPacketOption(), true, OpalMediaOption::NoMerge, maxFrames)); } Modified: opal/branches/csoutheren/BarnardSnapshot1/src/opal/transcoders.cxx =================================================================== --- opal/branches/csoutheren/BarnardSnapshot1/src/opal/transcoders.cxx 2008-06-17 08:25:31 UTC (rev 20453) +++ opal/branches/csoutheren/BarnardSnapshot1/src/opal/transcoders.cxx 2008-06-17 08:33:22 UTC (rev 20454) @@ -415,6 +415,15 @@ PINDEX framesPerPacket = outputMediaFormat.GetOptionInteger(OpalAudioFormat::TxFramesPerPacketOption(), 1); inputBytesPerFrame = inputBytes*framesPerPacket; outputBytesPerFrame = outputBytes*framesPerPacket; + + PINDEX inMaxTimePerFrame = inputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + inputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + PINDEX outMaxTimePerFrame = outputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + + PINDEX maxPacketTime = PMAX(inMaxTimePerFrame, outMaxTimePerFrame); + + maxOutputDataSize = outputBytesPerFrame * (maxPacketTime / outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption())); } @@ -437,6 +446,16 @@ unsigned leastCommonMultiple = inFrameTime*outFrameTime/GreatestCommonDivisor(inFrameTime, outFrameTime); inputBytesPerFrame = leastCommonMultiple/inFrameTime*inFrameSize*framesPerPacket; outputBytesPerFrame = leastCommonMultiple/outFrameTime*outFrameSize*framesPerPacket; + + PINDEX inMaxTimePerFrame = inputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + inputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + PINDEX outMaxTimePerFrame = outputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + + PINDEX maxPacketTime = PMAX(inMaxTimePerFrame, outMaxTimePerFrame); + + maxOutputDataSize = outputBytesPerFrame * (maxPacketTime / outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption())); + return true; } @@ -500,7 +519,7 @@ } // set maximum output payload size - if (!output.SetPayloadSize((inputLength + inputBytesPerFrame - 1)/inputBytesPerFrame*outputBytesPerFrame)) + if (!output.SetPayloadSize(maxOutputDataSize)) return PFalse; BYTE * outputPtr = output.GetPayloadPtr(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-17 08:25:36
|
Revision: 20453 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20453&view=rev Author: csoutheren Date: 2008-06-17 01:25:31 -0700 (Tue, 17 Jun 2008) Log Message: ----------- Keep track of maximum frames per packet that a codec can possibly handle to allow worst-case sizing of output buffers for audio transcoders Modified Paths: -------------- opal/trunk/include/opal/mediafmt.h opal/trunk/include/opal/transcoders.h opal/trunk/src/opal/mediafmt.cxx opal/trunk/src/opal/transcoders.cxx Modified: opal/trunk/include/opal/mediafmt.h =================================================================== --- opal/trunk/include/opal/mediafmt.h 2008-06-17 05:19:55 UTC (rev 20452) +++ opal/trunk/include/opal/mediafmt.h 2008-06-17 08:25:31 UTC (rev 20453) @@ -1088,6 +1088,7 @@ static const PString & RxFramesPerPacketOption(); static const PString & TxFramesPerPacketOption(); + static const PString & MaxFramesPerPacketOption(); }; #endif Modified: opal/trunk/include/opal/transcoders.h =================================================================== --- opal/trunk/include/opal/transcoders.h 2008-06-17 05:19:55 UTC (rev 20452) +++ opal/trunk/include/opal/transcoders.h 2008-06-17 08:25:31 UTC (rev 20453) @@ -429,8 +429,7 @@ protected: PINDEX inputBytesPerFrame; PINDEX outputBytesPerFrame; - //PBYTEArray partialFrame; - //PINDEX partialBytes; + PINDEX maxOutputDataSize; }; Modified: opal/trunk/src/opal/mediafmt.cxx =================================================================== --- opal/trunk/src/opal/mediafmt.cxx 2008-06-17 05:19:55 UTC (rev 20452) +++ opal/trunk/src/opal/mediafmt.cxx 2008-06-17 08:25:31 UTC (rev 20453) @@ -1250,6 +1250,7 @@ const PString & OpalAudioFormat::RxFramesPerPacketOption() { static PString s = PLUGINCODEC_OPTION_RX_FRAMES_PER_PACKET; return s; } const PString & OpalAudioFormat::TxFramesPerPacketOption() { static PString s = PLUGINCODEC_OPTION_TX_FRAMES_PER_PACKET; return s; } +const PString & OpalAudioFormat::MaxFramesPerPacketOption(){ static PString s = "Max Frames Per Packet"; return s; } OpalAudioFormat::OpalAudioFormat(const char * fullName, RTP_DataFrame::PayloadTypes rtpPayloadType, @@ -1300,6 +1301,8 @@ AddOption(new OpalMediaOptionUnsigned(OpalAudioFormat::RxFramesPerPacketOption(), false, OpalMediaOption::NoMerge, rxFrames, 1, maxFrames)); if (txFrames > 0) AddOption(new OpalMediaOptionUnsigned(OpalAudioFormat::TxFramesPerPacketOption(), false, OpalMediaOption::NoMerge, txFrames, 1, maxFrames)); + + AddOption(new OpalMediaOptionUnsigned(OpalAudioFormat::MaxFramesPerPacketOption(), true, OpalMediaOption::NoMerge, maxFrames)); } Modified: opal/trunk/src/opal/transcoders.cxx =================================================================== --- opal/trunk/src/opal/transcoders.cxx 2008-06-17 05:19:55 UTC (rev 20452) +++ opal/trunk/src/opal/transcoders.cxx 2008-06-17 08:25:31 UTC (rev 20453) @@ -415,6 +415,15 @@ PINDEX framesPerPacket = outputMediaFormat.GetOptionInteger(OpalAudioFormat::TxFramesPerPacketOption(), 1); inputBytesPerFrame = inputBytes*framesPerPacket; outputBytesPerFrame = outputBytes*framesPerPacket; + + PINDEX inMaxTimePerFrame = inputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + inputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + PINDEX outMaxTimePerFrame = outputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + + PINDEX maxPacketTime = PMAX(inMaxTimePerFrame, outMaxTimePerFrame); + + maxOutputDataSize = outputBytesPerFrame * (maxPacketTime / outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption())); } @@ -437,6 +446,16 @@ unsigned leastCommonMultiple = inFrameTime*outFrameTime/GreatestCommonDivisor(inFrameTime, outFrameTime); inputBytesPerFrame = leastCommonMultiple/inFrameTime*inFrameSize*framesPerPacket; outputBytesPerFrame = leastCommonMultiple/outFrameTime*outFrameSize*framesPerPacket; + + PINDEX inMaxTimePerFrame = inputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + inputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + PINDEX outMaxTimePerFrame = outputMediaFormat.GetOptionInteger(OpalAudioFormat::MaxFramesPerPacketOption()) * + outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption()); + + PINDEX maxPacketTime = PMAX(inMaxTimePerFrame, outMaxTimePerFrame); + + maxOutputDataSize = outputBytesPerFrame * (maxPacketTime / outputMediaFormat.GetOptionInteger(OpalAudioFormat::FrameTimeOption())); + return true; } @@ -500,7 +519,7 @@ } // set maximum output payload size - if (!output.SetPayloadSize((inputLength + inputBytesPerFrame - 1)/inputBytesPerFrame*outputBytesPerFrame)) + if (!output.SetPayloadSize(maxOutputDataSize)) return PFalse; BYTE * outputPtr = output.GetPayloadPtr(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-17 05:19:52
|
Revision: 20452 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20452&view=rev Author: rjongbloed Date: 2008-06-16 22:19:55 -0700 (Mon, 16 Jun 2008) Log Message: ----------- Added dimming of OpenPhone menu items if T.38 not selected as a valid codec in the options dialogue. Modified Paths: -------------- opal/trunk/samples/openphone/main.cxx Modified: opal/trunk/samples/openphone/main.cxx =================================================================== --- opal/trunk/samples/openphone/main.cxx 2008-06-16 09:11:09 UTC (rev 20451) +++ opal/trunk/samples/openphone/main.cxx 2008-06-17 05:19:55 UTC (rev 20452) @@ -1166,7 +1166,7 @@ menubar->Enable(XRCID("MenuStopRecording"), m_callState == InCallState && m_activeCall->IsRecording()); #if OPAL_FAX - menubar->Enable(XRCID("MenuSendFax"), m_callState != InCallState); + menubar->Enable(XRCID("MenuSendFax"), m_callState != InCallState && GetMediaFormatMask().GetValuesIndex(OpalT38.GetName()) == P_MAX_INDEX); #else menubar->Enable(XRCID("MenuSendFax"), false); #endif @@ -1568,6 +1568,7 @@ { wxMenuBar * menuBar = wxXmlResource::Get()->LoadMenuBar("SpeedDialMenu"); menuBar->Enable(XRCID("CallSpeedDialHandset"), HasHandset()); + menuBar->Enable(XRCID("SendFaxSpeedDial"), m_callState != InCallState && GetMediaFormatMask().GetValuesIndex(OpalT38.GetName()) == P_MAX_INDEX); PopupMenu(menuBar->GetMenu(0), event.GetPoint()); delete menuBar; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-16 09:12:24
|
Revision: 20451 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20451&view=rev Author: rjongbloed Date: 2008-06-16 02:11:09 -0700 (Mon, 16 Jun 2008) Log Message: ----------- Fixed issues with using TCP as transport for SIP. Modified Paths: -------------- opal/trunk/include/sip/sipcon.h opal/trunk/src/sip/sipcon.cxx opal/trunk/src/sip/sipep.cxx opal/trunk/src/sip/sippdu.cxx Modified: opal/trunk/include/sip/sipcon.h =================================================================== --- opal/trunk/include/sip/sipcon.h 2008-06-16 07:13:02 UTC (rev 20450) +++ opal/trunk/include/sip/sipcon.h 2008-06-16 09:11:09 UTC (rev 20451) @@ -457,6 +457,7 @@ SIPEndPoint & endpoint; OpalTransport * transport; + bool deleteTransport; enum HoldState { eHoldOff, Modified: opal/trunk/src/sip/sipcon.cxx =================================================================== --- opal/trunk/src/sip/sipcon.cxx 2008-06-16 07:13:02 UTC (rev 20450) +++ opal/trunk/src/sip/sipcon.cxx 2008-06-16 09:11:09 UTC (rev 20451) @@ -171,6 +171,7 @@ : OpalRTPConnection(call, ep, token, options, stringOptions) , endpoint(ep) , transport(newTransport) + , deleteTransport(newTransport == NULL || !newTransport->IsReliable()) , m_holdToRemote(eHoldOff) , m_holdFromRemote(false) , originalInvite(NULL) @@ -230,8 +231,10 @@ { delete authentication; delete originalInvite; - delete transport; + if (deleteTransport) + delete transport; + PTRACE(4, "SIP\tDeleted connection."); } @@ -1024,7 +1027,8 @@ originating = PTrue; - delete transport; + if (deleteTransport) + delete transport; transport = endpoint.CreateTransport(transportAddress.GetHostAddress()); if (transport == NULL) { Release(EndedByUnreachable); Modified: opal/trunk/src/sip/sipep.cxx =================================================================== --- opal/trunk/src/sip/sipep.cxx 2008-06-16 07:13:02 UTC (rev 20450) +++ opal/trunk/src/sip/sipep.cxx 2008-06-16 09:11:09 UTC (rev 20451) @@ -594,11 +594,16 @@ } // create and check transport - OpalTransport * newTransport = CreateTransport(transport.GetRemoteAddress(), transport.GetInterface()); - if (newTransport == NULL) { - PTRACE(1, "SIP\tFailed to create transport for SIPConnection for INVITE from " << request->GetURI() << " for " << toAddr); - SendResponse(SIP_PDU::Failure_NotFound, transport, *request); - return PFalse; + OpalTransport * newTransport; + if (transport.IsReliable()) + newTransport = &transport; + else { + newTransport = CreateTransport(transport.GetRemoteAddress(), transport.GetInterface()); + if (newTransport == NULL) { + PTRACE(1, "SIP\tFailed to create transport for SIPConnection for INVITE from " << request->GetURI() << " for " << toAddr); + SendResponse(SIP_PDU::Failure_NotFound, transport, *request); + return PFalse; + } } if (call == NULL) { Modified: opal/trunk/src/sip/sippdu.cxx =================================================================== --- opal/trunk/src/sip/sippdu.cxx 2008-06-16 07:13:02 UTC (rev 20450) +++ opal/trunk/src/sip/sippdu.cxx 2008-06-16 09:11:09 UTC (rev 20451) @@ -1734,7 +1734,7 @@ if (!param.IsEmpty()) viaPort = param; - OpalTransportAddress address(viaAddress+":"+viaPort, ep.GetDefaultSignalPort(), (proto *= "TCP") ? "$tcp" : "udp$"); + OpalTransportAddress address(viaAddress+":"+viaPort, ep.GetDefaultSignalPort(), (proto *= "TCP") ? "tcp$" : "udp$"); return address; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-16 07:12:54
|
Revision: 20450 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20450&view=rev Author: rjongbloed Date: 2008-06-16 00:13:02 -0700 (Mon, 16 Jun 2008) Log Message: ----------- Fixed TCP transport being filtered out by SIp URI sanitisation. Now strictly by RFC3261, Section 19.1.1, Table 1 for what gets filtered. Modified Paths: -------------- opal/trunk/include/sip/sippdu.h opal/trunk/src/sip/handlers.cxx opal/trunk/src/sip/sipcon.cxx opal/trunk/src/sip/sipep.cxx opal/trunk/src/sip/sippdu.cxx Modified: opal/trunk/include/sip/sippdu.h =================================================================== --- opal/trunk/include/sip/sippdu.h 2008-06-16 04:38:19 UTC (rev 20449) +++ opal/trunk/include/sip/sippdu.h 2008-06-16 07:13:02 UTC (rev 20450) @@ -107,10 +107,23 @@ OpalTransportAddress GetHostAddress() const; + enum UsageContext { + ExternalURI, ///< URI used anywhere outside of protocol + RequestURI, ///< Request-URI (after the INVITE) + ToURI, ///< To header field + FromURI, ///< From header field + ContactURI, ///< Registration or Redirection Contact header field + RouteURI ///< Dialog Contact header field, or Record-Route header field + }; + /** Removes tag parm & query vars and recalculates urlString (scheme, user, password, host, port & URI parms (like transport)) + which are not allowed in the context specified, e.g. Request-URI etc + According to RFC3261, 19.1.1 Table 1 */ - void AdjustForRequestURI(); + void Sanitise( + UsageContext context ///< Context for URI + ); /** This will adjust the current URL according to RFC3263, using DNS SRV records. @@ -138,7 +151,7 @@ fragment Note that tag parameter outside of <> will be lost, - but tag in URL without <> will be kept until AdjustForRequestURI + but tag in URL without <> will be kept until Sanitise() */ virtual PBoolean InternalParse( const char * cstr, Modified: opal/trunk/src/sip/handlers.cxx =================================================================== --- opal/trunk/src/sip/handlers.cxx 2008-06-16 04:38:19 UTC (rev 20449) +++ opal/trunk/src/sip/handlers.cxx 2008-06-16 07:13:02 UTC (rev 20450) @@ -135,7 +135,7 @@ const PString SIPHandler::GetRemotePartyAddress () { SIPURL cleanAddress = remotePartyAddress; - cleanAddress.AdjustForRequestURI(); + cleanAddress.Sanitise(SIPURL::ExternalURI); return cleanAddress.AsString(); } @@ -708,7 +708,7 @@ if (noteElement) note = noteElement->GetData(); - from.AdjustForRequestURI(); + from.Sanitise(SIPURL::ExternalURI); endpoint.OnPresenceInfoReceived (from.AsQuotedString(), basic, note); return PTrue; } Modified: opal/trunk/src/sip/sipcon.cxx =================================================================== --- opal/trunk/src/sip/sipcon.cxx 2008-06-16 04:38:19 UTC (rev 20449) +++ opal/trunk/src/sip/sipcon.cxx 2008-06-16 07:13:02 UTC (rev 20450) @@ -1,5 +1,5 @@ - -/* sipcon.cxx +/* + * sipcon.cxx * * Session Initiation Protocol connection. * @@ -200,8 +200,6 @@ // Update remote party parameters UpdateRemoteAddresses(m_requestURI.AsQuotedString()); - m_requestURI.AdjustForRequestURI(), - forkedInvitations.DisallowDeleteObjects(); ackTimer.SetNotifier(PCREATE_NOTIFIER(OnAckTimeout)); @@ -1136,7 +1134,7 @@ PString SIPConnection::GetRemotePartyURL() const { SIPURL url = GetRemotePartyAddress(); - url.AdjustForRequestURI(); + url.Sanitise(SIPURL::ExternalURI); return url.AsString(); } @@ -1264,7 +1262,6 @@ PString contact = response.GetMIME().GetContact(); if (statusClass == 2 && !contact.IsEmpty()) { m_requestURI = contact; - m_requestURI.AdjustForRequestURI(); PTRACE(4, "SIP\tSet Request URI to " << m_requestURI); } @@ -1456,7 +1453,6 @@ PString contact = mime.GetContact(); if (!contact.IsEmpty()) { m_requestURI = contact; - m_requestURI.AdjustForRequestURI(); PTRACE(4, "SIP\tSet Request URI to " << m_requestURI); } Modified: opal/trunk/src/sip/sipep.cxx =================================================================== --- opal/trunk/src/sip/sipep.cxx 2008-06-16 04:38:19 UTC (rev 20449) +++ opal/trunk/src/sip/sipep.cxx 2008-06-16 07:13:02 UTC (rev 20450) @@ -1128,7 +1128,9 @@ { SIP_PDU response(pdu, code); PString username = SIPURL(response.GetMIME().GetTo()).GetUserName(); - response.GetMIME().SetContact(GetLocalURL(transport, username)); + SIPURL contact = GetLocalURL(transport, username); + contact.Sanitise(SIPURL::ContactURI); + response.GetMIME().SetContact(contact); return response.Write(transport, pdu.GetViaAddress(*this)); } Modified: opal/trunk/src/sip/sippdu.cxx =================================================================== --- opal/trunk/src/sip/sippdu.cxx 2008-06-16 04:38:19 UTC (rev 20449) +++ opal/trunk/src/sip/sippdu.cxx 2008-06-16 07:13:02 UTC (rev 20450) @@ -371,11 +371,32 @@ } -void SIPURL::AdjustForRequestURI() +void SIPURL::Sanitise(UsageContext context) { - paramVars.RemoveAt("tag"); - paramVars.RemoveAt("transport"); - queryVars.RemoveAll(); + // RFC3261, 19.1.1 Table 1 + static struct { + const char * name; + unsigned contexts; + } const SanitaryFields[] = { + { "method", (1<<RequestURI)|(1<<ToURI)|(1<<FromURI)|(1<<ContactURI)|(1<<RouteURI) }, + { "maddr", (1<<ToURI)|(1<<FromURI) }, + { "ttl", (1<<ToURI)|(1<<FromURI)|(1<<RouteURI) }, + { "transport", (1<<ToURI)|(1<<FromURI) }, + { "lr", (1<<ToURI)|(1<<FromURI)|(1<<ContactURI) }, + { "tag", (1<<RequestURI)|(1<<ContactURI)|(1<<RouteURI)|(1<<ExternalURI) } + }; + + for (PINDEX i = 0; i < PARRAYSIZE(SanitaryFields); i++) { + if (SanitaryFields[i].contexts&(1<<context)) + paramVars.RemoveAt(PCaselessString(SanitaryFields[i].name)); + } + + if (context != ContactURI && context != ExternalURI) + queryVars.RemoveAll(); + + if (context == ToURI || context == FromURI) + port = (scheme *= "sips") ? 5061 : 5060; + Recalculate(); } @@ -1449,7 +1470,8 @@ /* Use extra parameter as redirection URL in case of 302 */ if (code == SIP_PDU::Redirection_MovedTemporarily) { SIPURL contact(extra); - mime.SetContact(contact.AsQuotedString()); + contact.Sanitise(SIPURL::ContactURI); + mime.SetContact(contact); extra = NULL; } else if (contact != NULL) { @@ -1533,7 +1555,7 @@ Construct(meth); uri = dest; - uri.AdjustForRequestURI(); + uri.Sanitise(SIPURL::RequestURI); mime.SetTo(to); mime.SetFrom(from); @@ -1571,6 +1593,7 @@ PString localPartyName = connection.GetLocalPartyName(); SIPURL contact = endpoint.GetContactURL(transport, localPartyName, SIPURL(connection.GetRemotePartyAddress()).GetHostName()); SIPURL via = endpoint.GetLocalURL(transport, localPartyName); + contact.Sanitise(meth != Method_INVITE ? SIPURL::ContactURI : SIPURL::RouteURI); mime.SetContact(contact); Construct(meth, @@ -1599,7 +1622,7 @@ routeSet.RemoveAt(0); routeSet.AppendString(uri.AsString()); uri = firstRoute; - uri.AdjustForRequestURI(); + uri.Sanitise(SIPURL::RouteURI); } mime.SetRoute(routeSet); @@ -2454,6 +2477,7 @@ SIPURL contact = params.m_contactAddress; if (contact.IsEmpty()) contact = endpoint.GetLocalURL(trans, aor.GetUserName()); + contact.Sanitise(SIPURL::ContactURI); mime.SetContact(contact); mime.SetExpires(params.m_expire); @@ -2491,7 +2515,7 @@ } SIPURL address = targetAddress; - address.AdjustForRequestURI(); + address.Sanitise(SIPURL::RequestURI); OpalTransportAddress viaAddress = ep.GetLocalURL(transport).GetHostAddress(); SIP_PDU::Construct(Method_SUBSCRIBE, @@ -2502,8 +2526,8 @@ cseq, viaAddress); - SIPURL contact = - endpoint.GetLocalURL(trans, SIPURL(localPartyAddress).GetUserName()); + SIPURL contact = endpoint.GetLocalURL(trans, SIPURL(localPartyAddress).GetUserName()); + contact.Sanitise(SIPURL::ContactURI); mime.SetProductInfo(ep.GetUserAgent(), ep.GetProductInfo()); mime.SetContact(contact); mime.SetAccept(acceptField); @@ -2536,6 +2560,7 @@ mime.SetProductInfo(ep.GetUserAgent(), ep.GetProductInfo()); SIPURL contact = endpoint.GetLocalURL(trans, targetAddress.GetUserName()); + contact.Sanitise(SIPURL::ContactURI); mime.SetContact(contact); mime.SetExpires(expires); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-16 04:38:11
|
Revision: 20449 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20449&view=rev Author: rjongbloed Date: 2008-06-15 21:38:19 -0700 (Sun, 15 Jun 2008) Log Message: ----------- Added new local endpoint classes source files. Modified Paths: -------------- opal/trunk/src/win32/opal_lib_2005.vcproj Modified: opal/trunk/src/win32/opal_lib_2005.vcproj =================================================================== --- opal/trunk/src/win32/opal_lib_2005.vcproj 2008-06-16 04:31:46 UTC (rev 20448) +++ opal/trunk/src/win32/opal_lib_2005.vcproj 2008-06-16 04:38:19 UTC (rev 20449) @@ -260,13 +260,13 @@ /> </Configuration> <Configuration - Name="Release|Win32" - OutputDirectory=".\..\..\lib" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm5sp" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" > <Tool Name="VCPreBuildEventTool" @@ -282,21 +282,21 @@ /> <Tool Name="VCMIDLTool" + TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="2" + ExecutionBucket="7" + Optimization="0" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;PTRACING" - StringPooling="true" - RuntimeLibrary="2" - EnableFunctionLevelLinking="true" + PreprocessorDefinitions="_DEBUG;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" + RuntimeLibrary="3" + TreatWChar_tAsBuiltInType="true" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" - PrecompiledHeaderFile="$(IntDir)/$(ProjectName).pch" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" + BrowseInformation="1" WarningLevel="4" SuppressStartupBanner="true" DebugInformationFormat="3" @@ -313,7 +313,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\lib\opals.lib" + OutputFile="$(OutDir)\opalsd.lib" SuppressStartupBanner="true" /> <Tool @@ -326,15 +326,23 @@ Name="VCBscMakeTool" /> <Tool - Name="VCFxCopTool" + Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool + ForceDirty="-1" + RemoteDirectory="" + RegisterOutput="0" + AdditionalFiles="" + /> + <DebuggerTool + /> </Configuration> <Configuration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm5ppc" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm6std" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" UseOfMFC="0" @@ -360,18 +368,16 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" - InlineFunctionExpansion="2" + Optimization="0" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" - StringPooling="true" - RuntimeLibrary="2" - EnableFunctionLevelLinking="true" + PreprocessorDefinitions="_DEBUG;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" + RuntimeLibrary="3" TreatWChar_tAsBuiltInType="true" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" + BrowseInformation="1" WarningLevel="4" SuppressStartupBanner="true" DebugInformationFormat="3" @@ -388,7 +394,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opals.lib" + OutputFile="$(OutDir)\opalsd.lib" SuppressStartupBanner="true" /> <Tool @@ -416,13 +422,13 @@ /> </Configuration> <Configuration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm6pro" + Name="Release|Win32" + OutputDirectory=".\..\..\lib" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="1" > <Tool Name="VCPreBuildEventTool" @@ -438,22 +444,20 @@ /> <Tool Name="VCMIDLTool" - TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" - ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC" + PreprocessorDefinitions="NDEBUG;PTRACING" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" - TreatWChar_tAsBuiltInType="false" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" + PrecompiledHeaderFile="$(IntDir)/$(ProjectName).pch" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" WarningLevel="4" SuppressStartupBanner="true" @@ -471,7 +475,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opals.lib" + OutputFile="..\..\lib\opals.lib" SuppressStartupBanner="true" /> <Tool @@ -484,28 +488,20 @@ Name="VCBscMakeTool" /> <Tool - Name="VCCodeSignTool" + Name="VCFxCopTool" /> <Tool Name="VCPostBuildEventTool" /> - <DeploymentTool - ForceDirty="-1" - RemoteDirectory="" - RegisterOutput="0" - AdditionalFiles="" - /> - <DebuggerTool - /> </Configuration> <Configuration - Name="No Trace|Win32" - OutputDirectory=".\..\..\lib" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm5ppc" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" - InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" + CharacterSet="1" > <Tool Name="VCPreBuildEventTool" @@ -521,23 +517,26 @@ /> <Tool Name="VCMIDLTool" + TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" - Optimization="1" + ExecutionBucket="7" + Optimization="2" InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;PTRACING=0;PASN_NOPRINTON;PASN_LEANANDMEAN" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" + TreatWChar_tAsBuiltInType="true" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" - PrecompiledHeaderFile="$(IntDir)/$(ProjectName).pch" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" WarningLevel="4" SuppressStartupBanner="true" + DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" @@ -551,7 +550,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="..\..\lib\opalsn.lib" + OutputFile="$(OutDir)\opals.lib" SuppressStartupBanner="true" /> <Tool @@ -564,15 +563,23 @@ Name="VCBscMakeTool" /> <Tool - Name="VCFxCopTool" + Name="VCCodeSignTool" /> <Tool Name="VCPostBuildEventTool" /> + <DeploymentTool + ForceDirty="-1" + RemoteDirectory="" + RegisterOutput="0" + AdditionalFiles="" + /> + <DebuggerTool + /> </Configuration> <Configuration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm5ppc" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm6pro" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" UseOfMFC="0" @@ -598,20 +605,21 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="1" + Optimization="2" InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;PTRACING=0;PASN_NOPRINTON;PASN_LEANANDMEAN" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" - TreatWChar_tAsBuiltInType="true" + TreatWChar_tAsBuiltInType="false" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" WarningLevel="4" SuppressStartupBanner="true" + DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" @@ -625,7 +633,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opalsn.lib" + OutputFile="$(OutDir)\opals.lib" SuppressStartupBanner="true" /> <Tool @@ -653,8 +661,8 @@ /> </Configuration> <Configuration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm6pro" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm5sp" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" UseOfMFC="0" @@ -680,20 +688,21 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="1" + Optimization="2" InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;PTRACING=0;PASN_NOPRINTON;PASN_LEANANDMEAN" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" - TreatWChar_tAsBuiltInType="false" + TreatWChar_tAsBuiltInType="true" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" WarningLevel="4" SuppressStartupBanner="true" + DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" @@ -707,7 +716,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opalsn.lib" + OutputFile="$(OutDir)\opals.lib" SuppressStartupBanner="true" /> <Tool @@ -735,8 +744,8 @@ /> </Configuration> <Configuration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm5sp" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm6std" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" UseOfMFC="0" @@ -762,16 +771,18 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="0" + Optimization="2" + InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="_DEBUG;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" - RuntimeLibrary="3" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC" + StringPooling="true" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" TreatWChar_tAsBuiltInType="true" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" - BrowseInformation="1" WarningLevel="4" SuppressStartupBanner="true" DebugInformationFormat="3" @@ -788,7 +799,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opalsd.lib" + OutputFile="$(OutDir)\opals.lib" SuppressStartupBanner="true" /> <Tool @@ -816,13 +827,13 @@ /> </Configuration> <Configuration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm6std" + Name="No Trace|Win32" + OutputDirectory=".\..\..\lib" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" UseOfMFC="0" ATLMinimizesCRunTimeLibraryUsage="false" - CharacterSet="1" > <Tool Name="VCPreBuildEventTool" @@ -838,24 +849,23 @@ /> <Tool Name="VCMIDLTool" - TargetEnvironment="1" /> <Tool Name="VCCLCompilerTool" - ExecutionBucket="7" - Optimization="0" + Optimization="1" + InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="_DEBUG;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" - RuntimeLibrary="3" - TreatWChar_tAsBuiltInType="true" + PreprocessorDefinitions="NDEBUG;PTRACING=0;PASN_NOPRINTON;PASN_LEANANDMEAN" + StringPooling="true" + RuntimeLibrary="2" + EnableFunctionLevelLinking="true" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" + PrecompiledHeaderFile="$(IntDir)/$(ProjectName).pch" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" - BrowseInformation="1" WarningLevel="4" SuppressStartupBanner="true" - DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" @@ -869,7 +879,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opalsd.lib" + OutputFile="..\..\lib\opalsn.lib" SuppressStartupBanner="true" /> <Tool @@ -882,23 +892,15 @@ Name="VCBscMakeTool" /> <Tool - Name="VCCodeSignTool" + Name="VCFxCopTool" /> <Tool Name="VCPostBuildEventTool" /> - <DeploymentTool - ForceDirty="-1" - RemoteDirectory="" - RegisterOutput="0" - AdditionalFiles="" - /> - <DebuggerTool - /> </Configuration> <Configuration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm5sp" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm5ppc" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" UseOfMFC="0" @@ -924,10 +926,10 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" + Optimization="1" InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC;PTRACING=1" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;PTRACING=0;PASN_NOPRINTON;PASN_LEANANDMEAN" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" @@ -938,7 +940,6 @@ ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" WarningLevel="4" SuppressStartupBanner="true" - DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" @@ -952,7 +953,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opals.lib" + OutputFile="$(OutDir)\opalsn.lib" SuppressStartupBanner="true" /> <Tool @@ -980,8 +981,8 @@ /> </Configuration> <Configuration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" - OutputDirectory="..\..\lib\wm6std" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + OutputDirectory="..\..\lib\wm6pro" IntermediateDirectory="$(OutDir)\$(ConfigurationName)" ConfigurationType="4" UseOfMFC="0" @@ -1007,21 +1008,20 @@ <Tool Name="VCCLCompilerTool" ExecutionBucket="7" - Optimization="2" + Optimization="1" InlineFunctionExpansion="2" AdditionalIncludeDirectories="..\..\include;..\..\..\ptlib\include" - PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;XML_STATIC" + PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;$(ARCHFAM);$(_ARCHFAM_);UNICODE;_UNICODE;PTRACING=0;PASN_NOPRINTON;PASN_LEANANDMEAN" StringPooling="true" RuntimeLibrary="2" EnableFunctionLevelLinking="true" - TreatWChar_tAsBuiltInType="true" + TreatWChar_tAsBuiltInType="false" RuntimeTypeInfo="true" UsePrecompiledHeader="2" PrecompiledHeaderThrough="ptlib.h" ProgramDataBaseFileName="$(TargetDir)\$(TargetName).pdb" WarningLevel="4" SuppressStartupBanner="true" - DebugInformationFormat="3" /> <Tool Name="VCManagedResourceCompilerTool" @@ -1035,7 +1035,7 @@ /> <Tool Name="VCLibrarianTool" - OutputFile="$(OutDir)\opals.lib" + OutputFile="$(OutDir)\opalsn.lib" SuppressStartupBanner="true" /> <Tool @@ -1273,27 +1273,31 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" UsePrecompiledHeader="1" + BrowseInformation="1" + DebugInformationFormat="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" UsePrecompiledHeader="1" + BrowseInformation="1" + DebugInformationFormat="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -1303,75 +1307,71 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" UsePrecompiledHeader="1" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" UsePrecompiledHeader="1" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" UsePrecompiledHeader="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" UsePrecompiledHeader="1" - BrowseInformation="1" - DebugInformationFormat="3" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" UsePrecompiledHeader="1" - BrowseInformation="1" - DebugInformationFormat="3" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" UsePrecompiledHeader="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" UsePrecompiledHeader="1" /> @@ -1434,25 +1434,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -1461,67 +1463,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -1578,25 +1578,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -1605,67 +1607,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -1722,25 +1722,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -1749,67 +1751,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -1866,25 +1866,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -1893,67 +1895,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -2010,25 +2010,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -2037,67 +2039,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -2121,6 +2121,10 @@ </FileConfiguration> </File> <File + RelativePath="..\opal\localep.cxx" + > + </File> + <File RelativePath="..\opal\manager.cxx" > <FileConfiguration @@ -2154,25 +2158,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -2181,67 +2187,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -2298,25 +2302,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -2325,67 +2331,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -2442,25 +2446,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -2469,67 +2475,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -2602,25 +2606,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -2629,67 +2635,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -2746,25 +2750,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -2773,67 +2779,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -2890,25 +2894,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -2917,67 +2923,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> @@ -3034,25 +3038,27 @@ /> </FileConfiguration> <FileConfiguration - Name="Release|Win32" + Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="0" PreprocessorDefinitions="" + BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Win32" > <Tool Name="VCCLCompilerTool" @@ -3061,67 +3067,65 @@ /> </FileConfiguration> <FileConfiguration - Name="No Trace|Win32" + Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" + Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="1" + Optimization="2" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="2" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Win32" > <Tool Name="VCCLCompilerTool" - Optimization="0" + Optimization="1" PreprocessorDefinitions="" - BrowseInformation="1" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)" + Name="No Trace|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - Optimization="2" + Optimization="1" PreprocessorDefinitions="" /> </FileConfiguration> <FileConfiguration - Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)" + Name="No Trace|Windows Mobile 6 Professional SDK (ARMV4I)" > <Tool Name="VCCLCompilerTool" - ... [truncated message content] |
From: <rjo...@us...> - 2008-06-16 04:31:39
|
Revision: 20448 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20448&view=rev Author: rjongbloed Date: 2008-06-15 21:31:46 -0700 (Sun, 15 Jun 2008) Log Message: ----------- Added endpoint/connection classes for "user defined" local calls, similar to the PCSS endpoint but not specific to sound cards. An application writer may use this as a base class that will accept calls from other protocols such as H.323 or SIP and simply have all media data sent to some virtual functions. Everything else is automatically handled. Also added "C" API interface to the above so a "C" application can do the same thing. Modified Paths: -------------- opal/trunk/Makefile.in opal/trunk/include/opal/connection.h opal/trunk/include/opal/endpoint.h opal/trunk/include/opal/pcss.h opal/trunk/include/opal.h opal/trunk/samples/c_api/main.c opal/trunk/src/opal/connection.cxx opal/trunk/src/opal/endpoint.cxx opal/trunk/src/opal/opal_c.cxx opal/trunk/src/opal/pcss.cxx opal/trunk/src/win32/opal_lib.vcproj opal/trunk/src/win32/opal_lib_2008.vcproj Added Paths: ----------- opal/trunk/include/opal/localep.h opal/trunk/src/opal/localep.cxx Modified: opal/trunk/Makefile.in =================================================================== --- opal/trunk/Makefile.in 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/Makefile.in 2008-06-16 04:31:46 UTC (rev 20448) @@ -130,6 +130,7 @@ $(OPAL_SRCDIR)/opal/rtpep.cxx \ $(OPAL_SRCDIR)/opal/connection.cxx \ $(OPAL_SRCDIR)/opal/rtpconn.cxx \ + $(OPAL_SRCDIR)/opal/localep.cxx \ $(OPAL_SRCDIR)/opal/call.cxx \ $(OPAL_SRCDIR)/opal/mediafmt.cxx \ $(OPAL_SRCDIR)/opal/mediatype.cxx \ Modified: opal/trunk/include/opal/connection.h =================================================================== --- opal/trunk/include/opal/connection.h 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/include/opal/connection.h 2008-06-16 04:31:46 UTC (rev 20448) @@ -752,13 +752,13 @@ This provides a list of media data format names that a OpalMediaStream may be created in within this connection. - The default behaviour is pure. + The default behaviour calls GetMediaFormats() on the endpoint. */ - virtual OpalMediaFormatList GetMediaFormats() const = 0; + virtual OpalMediaFormatList GetMediaFormats() const; /**Get the list of data formats used for making calls - The default behaviour is to call call.GetMediaFormats(); + The default behaviour is to call GetMediaFormats() on the owner call. */ virtual OpalMediaFormatList GetLocalMediaFormats(); Modified: opal/trunk/include/opal/endpoint.h =================================================================== --- opal/trunk/include/opal/endpoint.h 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/include/opal/endpoint.h 2008-06-16 04:31:46 UTC (rev 20448) @@ -419,6 +419,30 @@ PSafetyMode mode = PSafeReadWrite ) { return connectionsActive.FindWithLock(token, mode); } + /**Find a connection that uses the specified token. + This searches the endpoint for the connection that contains the token + as provided by functions such as MakeConnection(). If not then it + attempts to use the token as a OpalCall token and find a connection + of the same class. + */ + template <class ConnClass> + PSafePtr<ConnClass> GetConnectionWithLockAs( + const PString & token, ///< Token to identify connection + PSafetyMode mode = PSafeReadWrite + ) + { + PSafePtr<ConnClass> connection = PSafePtrCast<OpalConnection, ConnClass>(GetConnectionWithLock(token, mode)); + if (connection == NULL) { + PSafePtr<OpalCall> call = manager.FindCallWithLock(token, PSafeReadOnly); + if (call != NULL) { + connection = PSafePtrCast<OpalConnection, ConnClass>(call->GetConnection(0, mode)); + if (connection == NULL) + connection = PSafePtrCast<OpalConnection, ConnClass>(call->GetConnection(1, mode)); + } + } + return connection; + } + /**Get all calls current on the endpoint. */ PStringList GetAllConnections(); @@ -449,9 +473,10 @@ Note that a specific connection may not actually support all of the media formats returned here, but should return no more. - The default behaviour is pure. + The default behaviour returns the most basic media formats, PCM audio + and YUV420P video. */ - virtual OpalMediaFormatList GetMediaFormats() const = 0; + virtual OpalMediaFormatList GetMediaFormats() const; /**Adjust media formats available on a connection. This is called by a connection after it has called Added: opal/trunk/include/opal/localep.h =================================================================== --- opal/trunk/include/opal/localep.h (rev 0) +++ opal/trunk/include/opal/localep.h 2008-06-16 04:31:46 UTC (rev 20448) @@ -0,0 +1,391 @@ +/* + * localep.h + * + * Local EndPoint/Connection. + * + * Open Phone Abstraction Library (OPAL) + * Formally known as the Open H323 project. + * + * Copyright (c) 2008 Vox Lucida Pty. Ltd. + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + * the License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Open Phone Abstraction Library. + * + * The Initial Developer of the Original Code is Equivalence Pty. Ltd. + * + * Contributor(s): ______________________________________. + * + * $Revision$ + * $Author$ + * $Date$ + */ + +#ifndef __OPAL_LOCAL_H +#define __OPAL_LOCAL_H + +#ifdef P_USE_PRAGMA +#pragma interface +#endif + +#include <opal/endpoint.h> + +class OpalLocalConnection; + + +/** Local EndPoint. + This class represents an endpoint on the local machine that can receive + media via virtual functions. + */ +class OpalLocalEndPoint : public OpalEndPoint +{ + PCLASSINFO(OpalLocalEndPoint, OpalEndPoint); + public: + /**@name Construction */ + //@{ + /**Create a new endpoint. + */ + OpalLocalEndPoint( + OpalManager & manager, ///< Manager of all endpoints. + const char * prefix = "local" ///< Prefix for URL style address strings + ); + + /**Destroy endpoint. + */ + ~OpalLocalEndPoint(); + //@} + + /**@name Overrides from OpalEndPoint */ + //@{ + /**Set up a connection to a remote party. + This is called from the OpalManager::MakeConnection() function once + it has determined that this is the endpoint for the protocol. + + The general form for this party parameter is: + + [proto:][alias@][transport$]address[:port] + + where the various fields will have meanings specific to the endpoint + type. For example, with H.323 it could be "h323:Fr...@si..." which + indicates a user Fred at gatekeeper size.com. Whereas for the PSTN + endpoint it could be "pstn:5551234" which is to call 5551234 on the + first available PSTN line. + + The proto field is optional when passed to a specific endpoint. If it + is present, however, it must agree with the endpoints protocol name or + false is returned. + + This function usually returns almost immediately with the connection + continuing to occur in a new background thread. + + If false is returned then the connection could not be established. For + example if a PSTN endpoint is used and the assiciated line is engaged + then it may return immediately. Returning a non-NULL value does not + mean that the connection will succeed, only that an attempt is being + made. + + The default behaviour is pure. + */ + virtual PBoolean MakeConnection( + OpalCall & call, ///< Owner of connection + const PString & party, ///< Remote party to call + void * userData = NULL, ///< Arbitrary data to pass to connection + unsigned int options = 0, ///< options to pass to conneciton + OpalConnection::StringOptions * stringOptions = NULL + ); + //@} + + /**@name Customisation call backs */ + //@{ + /**Find a connection that uses the specified token. + This searches the endpoint for the connection that contains the token + as provided by functions such as MakeConnection(). If not then it + attempts to use the token as a OpalCall token and find a connection + of the same class. + */ + PSafePtr<OpalLocalConnection> GetLocalConnectionWithLock( + const PString & token, ///< Token to identify connection + PSafetyMode mode = PSafeReadWrite + ) { return GetConnectionWithLockAs<OpalLocalConnection>(token, mode); } + + /**Create a connection for the PCSS endpoint. + The default implementation is to create a OpalLocalConnection. + */ + virtual OpalLocalConnection * CreateConnection( + OpalCall & call, ///< Owner of connection + void * userData ///< Arbitrary data to pass to connection + ); + + /**Call back to indicate that remote is ringing. + If false is returned the call is aborted. + + The default implementation does nothing. + */ + virtual bool OnOutgoingCall( + const OpalLocalConnection & connection ///< Connection having event + ); + + /**Call back to indicate that remote is ringing. + If false is returned the call is aborted. + + The default implementation answers the call immediately. + */ + virtual bool OnIncomingCall( + OpalLocalConnection & connection ///< Connection having event + ); + + /**Accept the incoming connection. + Returns false if the connection token does not correspond to a valid + connection. + */ + virtual bool AcceptIncomingCall( + const PString & token ///< Token of connection to accept call + ); + + /**Reject the incoming connection. + Returns false if the connection token does not correspond to a valid + connection. + */ + virtual bool RejectIncomingCall( + const PString & token ///< Token of connection to accept call + ); + + /**Call back to indicate that the remote user has indicated something. + If false is returned the call is aborted. + + The default implementation does nothing. + */ + virtual bool OnUserInput( + const OpalLocalConnection & connection, ///< Connection having event + const PString & indication + ); + + /**Call back to get media data for transmission. + If false is returned then OnReadMediaData() is called. + + The default implementation returns false. + */ + virtual bool OnReadMediaFrame( + const OpalLocalConnection & connection, ///< Connection for media + const OpalMediaStream & mediaStream, ///< Media stream data is required for + RTP_DataFrame & frame ///< RTP frame for data + ); + + /**Call back to handle received media data. + If false is returned then OnWriteMediaData() is called. + + The default implementation . + The default implementation returns false. + */ + virtual bool OnWriteMediaFrame( + const OpalLocalConnection & connection, ///< Connection for media + const OpalMediaStream & mediaStream, ///< Media stream data is required for + RTP_DataFrame & frame ///< RTP frame for data + ); + + /**Call back to get media data for transmission. + If false is returned the media stream will be closed. + + The default implementation returns false. + */ + virtual bool OnReadMediaData( + const OpalLocalConnection & connection, ///< Connection for media + const OpalMediaStream & mediaStream, ///< Media stream data is required for + void * data, ///< Data to send + PINDEX size, ///< Maximum size of data buffer + PINDEX & length ///< Number of bytes placed in buffer + ); + + /**Call back to handle received media data. + If false is returned the media stream will be closed. + + The default implementation returns false. + */ + virtual bool OnWriteMediaData( + const OpalLocalConnection & connection, ///< Connection for media + const OpalMediaStream & mediaStream, ///< Media stream data is required for + const void * data, ///< Data received + PINDEX length, ///< Amount of data available to write + PINDEX & written ///< Amount of data written + ); + //@} +}; + + +/** PC Sound System connection. + */ +class OpalLocalConnection : public OpalConnection +{ + PCLASSINFO(OpalLocalConnection, OpalConnection); + public: + /**@name Construction */ + //@{ + /**Create a new endpoint. + */ + OpalLocalConnection( + OpalCall & call, ///< Owner calll for connection + OpalLocalEndPoint & endpoint, ///< Owner endpoint for connection + void * userData ///< Arbitrary data to pass to connection + ); + + /**Destroy endpoint. + */ + ~OpalLocalConnection(); + //@} + + /**@name Overrides from OpalConnection */ + //@{ + /**Get indication of connection being to a "network". + This indicates the if the connection may be regarded as a "network" + connection. The distinction is about if there is a concept of a "remote" + party being connected to and is best described by example: sip, h323, + iax and pstn are all "network" connections as they connect to something + "remote". While pc, pots and ivr are not as the entity being connected + to is intrinsically local. + */ + virtual PBoolean IsNetworkConnection() const { return false; } + + /**Start an outgoing connection. + This function will initiate the connection to the remote entity, for + example in H.323 it sends a SETUP, in SIP it sends an INVITE etc. + + The default behaviour does. + */ + virtual PBoolean SetUpConnection(); + + /**Indicate to remote endpoint an alert is in progress. + If this is an incoming connection and the AnswerCallResponse is in a + AnswerCallDeferred or AnswerCallPending state, then this function is + used to indicate to that endpoint that an alert is in progress. This is + usually due to another connection which is in the call (the B party) + has received an OnAlerting() indicating that its remote endpoint is + "ringing". + + The default behaviour does nothing. + */ + virtual PBoolean SetAlerting( + const PString & calleeName, ///< Name of endpoint being alerted. + PBoolean withMedia ///< Open media with alerting + ); + + /**Open a new media stream. + This will create a media stream of an appropriate subclass as required + by the underlying connection protocol. For instance H.323 would create + an OpalRTPStream. + + The sessionID parameter may not be needed by a particular media stream + and may be ignored. In the case of an OpalRTPStream it us used. + + Note that media streams may be created internally to the underlying + protocol. This function is not the only way a stream can come into + existance. + + The default behaviour is pure. + */ + virtual OpalMediaStream * CreateMediaStream( + const OpalMediaFormat & mediaFormat, ///< Media format for stream + unsigned sessionID, ///< Session number for stream + PBoolean isSource ///< Is a source stream + ); + + /**Send a user input indication to the remote endpoint. + This sends an arbitrary string as a user indication. If DTMF tones in + particular are required to be sent then the SendIndicationTone() + function should be used. + + The default behaviour plays the DTMF tones on the line. + */ + virtual PBoolean SendUserInputString( + const PString & value ///< String value of indication + ); + //@} + + /**@name New operations */ + //@{ + /**Accept the incoming connection. + */ + virtual void AcceptIncoming(); + //@} + + + protected: + OpalLocalEndPoint & endpoint; +}; + + +/**This class describes a media stream that transfers data to/from a Local + EndPoint or Connection. + */ +class OpalLocalMediaStream : public OpalMediaStream +{ + PCLASSINFO(OpalLocalMediaStream, OpalMediaStream); + public: + /**@name Construction */ + //@{ + /**Construct a new media stream for Line Interface Devices. + */ + OpalLocalMediaStream( + OpalLocalConnection & conn, + const OpalMediaFormat & mediaFormat, ///< Media format for stream + unsigned sessionID, ///< Session number for stream + bool isSource ///< Is a source stream + ); + //@} + + /**@name Overrides of OpalMediaStream class */ + //@{ + /**Read an RTP frame of data from the source media stream. + The default behaviour simply calls ReadData() on the data portion of the + RTP_DataFrame and sets the frames timestamp and marker from the internal + member variables of the media stream class. + */ + virtual PBoolean ReadPacket( + RTP_DataFrame & packet + ); + + /**Write an RTP frame of data to the sink media stream. + The default behaviour simply calls WriteData() on the data portion of the + RTP_DataFrame and and sets the internal timestamp and marker from the + member variables of the media stream class. + */ + virtual PBoolean WritePacket( + RTP_DataFrame & packet + ); + + /**Read raw media data from the source media stream. + The default behaviour reads from the OpalLine object. + */ + virtual PBoolean ReadData( + BYTE * data, ///< Data buffer to read to + PINDEX size, ///< Size of buffer + PINDEX & length ///< Length of data actually read + ); + + /**Write raw media data to the sink media stream. + The default behaviour writes to the OpalLine object. + */ + virtual PBoolean WriteData( + const BYTE * data, ///< Data to write + PINDEX length, ///< Length of data to read. + PINDEX & written ///< Length of data actually written + ); + + /**Indicate if the media stream is synchronous. + Returns PTrue for LID streams. + */ + virtual PBoolean IsSynchronous() const; + //@} +}; + + +#endif // __OPAL_LOCAL_H + +// End of File /////////////////////////////////////////////////////////////// Property changes on: opal/trunk/include/opal/localep.h ___________________________________________________________________ Name: svn:keywords + Revision Author Date Name: svn:eol-style + native Modified: opal/trunk/include/opal/pcss.h =================================================================== --- opal/trunk/include/opal/pcss.h 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/include/opal/pcss.h 2008-06-16 04:31:46 UTC (rev 20448) @@ -107,17 +107,6 @@ unsigned int options = 0, ///< options to pass to conneciton OpalConnection::StringOptions * stringOptions = NULL ); - - /**Get the data formats this endpoint is capable of operating. - This provides a list of media data format names that may be used by an - OpalMediaStream may be created by a connection from this endpoint. - - Note that a specific connection may not actually support all of the - media formats returned here, but should return no more. - - The default behaviour is pure. - */ - virtual OpalMediaFormatList GetMediaFormats() const; //@} /**@name Customisation call backs */ @@ -145,12 +134,14 @@ //@{ /**Find a connection that uses the specified token. This searches the endpoint for the connection that contains the token - as provided by functions such as MakeConnection(). + as provided by functions such as MakeConnection(). If not then it + attempts to use the token as a OpalCall token and find a connection + of the same class. */ PSafePtr<OpalPCSSConnection> GetPCSSConnectionWithLock( const PString & token, ///< Token to identify connection PSafetyMode mode = PSafeReadWrite - ); + ) { return GetConnectionWithLockAs<OpalPCSSConnection>(token, mode); } /**Call back to indicate that remote is ringing. If PFalse is returned the call is aborted. @@ -316,15 +307,6 @@ PBoolean withMedia ///< Open media with alerting ); - /**Get the data formats this connection is capable of operating. - This provides a list of media data format names that an - OpalMediaStream may be created in within this connection. - - The default behaviour returns the formats the PSoundChannel can do, - typically only PCM-16. - */ - virtual OpalMediaFormatList GetMediaFormats() const; - /**Open a new media stream. This will create a media stream of an appropriate subclass as required by the underlying connection protocol. For instance H.323 would create Modified: opal/trunk/include/opal.h =================================================================== --- opal/trunk/include/opal.h 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/include/opal.h 2008-06-16 04:31:46 UTC (rev 20448) @@ -55,7 +55,7 @@ typedef struct OpalMessage OpalMessage; -#define OPAL_C_API_VERSION 4 +#define OPAL_C_API_VERSION 5 /////////////////////////////////////// @@ -199,23 +199,75 @@ /////////////////////////////////////// -#define OPAL_PREFIX_PC "pc" -#define OPAL_PREFIX_H323 "h323" -#define OPAL_PREFIX_SIP "sip" -#define OPAL_PREFIX_IAX2 "iax2" -#define OPAL_PREFIX_POTS "pots" -#define OPAL_PREFIX_PSTN "pstn" -#define OPAL_PREFIX_IVR "ivr" +#define OPAL_PREFIX_PCSS "pc" +#define OPAL_PREFIX_LOCAL "local" +#define OPAL_PREFIX_H323 "h323" +#define OPAL_PREFIX_SIP "sip" +#define OPAL_PREFIX_IAX2 "iax2" +#define OPAL_PREFIX_POTS "pots" +#define OPAL_PREFIX_PSTN "pstn" +#define OPAL_PREFIX_IVR "ivr" -#define OPAL_PREFIX_ALL OPAL_PREFIX_PCSS " " \ - OPAL_PREFIX_H323 " " \ - OPAL_PREFIX_SIP " " \ - OPAL_PREFIX_IAX2 " " \ - OPAL_PREFIX_POTS " " \ - OPAL_PREFIX_PSTN " " \ +#define OPAL_PREFIX_ALL OPAL_PREFIX_PCSS " " \ + OPAL_PREFIX_LOCAL " " \ + OPAL_PREFIX_H323 " " \ + OPAL_PREFIX_SIP " " \ + OPAL_PREFIX_IAX2 " " \ + OPAL_PREFIX_POTS " " \ + OPAL_PREFIX_PSTN " " \ OPAL_PREFIX_IVR +/**Type code the silence detect algorithm modes. + This is used by the OpalCmdSetGeneralParameters command in the OpalParamGeneral structure. + */ +typedef enum OpalSilenceDetectModes { + OpalSilenceDetectNoChange, /**< No change to the silence detect mode. */ + OpalSilenceDetectDisabled, /**< Indicate silence detect is disabled */ + OpalSilenceDetectFixed, /**< Indicate silence detect uses a fixed threshold */ + OpalSilenceDetectAdaptive /**< Indicate silence detect uses an adaptive threashold */ +} OpalSilenceDetectModes; + + +/**Type code the echo cancellation algorithm modes. + This is used by the OpalCmdSetGeneralParameters command in the OpalParamGeneral structure. + */ +typedef enum OpalEchoCancelMode { + OpalEchoCancelNoChange, /**< No change to the echo cancellation mode. */ + OpalEchoCancelDisabled, /**< Indicate the echo cancellation is disabled */ + OpalEchoCancelEnabled /**< Indicate the echo cancellation is enabled */ +} OpalEchoCancelMode; + + +/** Function for reading/writing media data. + Returns size of data actually read or written, or -1 if there is an error + and the media stream should be shut down. + */ +typedef int (*OpalMediaDataFunction)( + const char * token, /**< Call token for media data as returned by OpalIndIncomingCall. + This may be used to discriminate between individiual calls. */ + const char * stream, /**< Stream identifier for media data. This may be used to + discriminate between media streams within a call, applicable + if there can be more than one stream of a particular format, + e.g. two H.263 video channels. */ + const char * format, /**< Format of media data, e.g. "PCM-16" */ + void * data, /**< Data to read/write */ + int size /**< Maximum size of data to read, or size of actual data to write */ +); + + +/**Type code the media data call back functions data type. + This is used by the OpalCmdSetGeneralParameters command in the OpalParamGeneral structure. + */ +typedef enum OpalMediaDataType { + OpalMediaDataNoChange, /**< No change to the media data type. */ + OpalMediaDataPayloadOnly, /**< Indicate only the RTP payload is passed to the + read/write function */ + OpalMediaDataWithHeader /**< Indicate the while RTP frame including header is + passed to the read/write function */ +} OpalMediaDataType; + + /**Type code for messages defined by OpalMessage. */ typedef enum OpalMessageType { @@ -257,6 +309,9 @@ OpalGetMessage() function when the underlying protocol states the remote telephone is "ringing". See the OpalParamSetUpCall structure for more information. */ + OpalIndMediaStream, /**<A media stream has started/stopped. This message is returned in the + OpalGetMessage() function when a media stream is started or stopped. See the + OpalStatusMediaStream structure for more information. */ OpalIndEstablished, /**<Call is established indication. This message is returned in the OpalGetMessage() function when the remote or local endpont has "answered" the call and there is media flowing. See the OpalParamSetUpCall @@ -331,9 +386,9 @@ received this sets the maximum time of the adaptive jitter buffer which smooths out irregularities in the transmission of audio data over the Internet. */ - unsigned m_silenceDetectMode; /**< Silence detection mode. This controls the silence detection - algorithm for audio transmission: 0=no change, 1=disabled, - 2=fixed, 3=adaptive. */ + OpalSilenceDetectModes m_silenceDetectMode; /**< Silence detection mode. This controls the silence + detection algorithm for audio transmission: 0=no change, + 1=disabled, 2=fixed, 3=adaptive. */ unsigned m_silenceThreshold; /**< Silence detection threshold value. This applies if m_silenceDetectMode is fixed (2) and is a PCM-16 value. */ unsigned m_signalDeadband; /**< Time signal is required before audio is transmitted. This is @@ -343,10 +398,14 @@ unsigned m_silenceAdaptPeriod; /**< Window for adapting the silence threashold. This applies if m_silenceDetectMode is adaptive (3). This is is RTP timestamp units (8000Hz). */ - unsigned m_echoCancellation; /**< Accoustic Echo Cancellation control. 0=no change, 1=disabled, - 2=enabled. */ + OpalEchoCancelMode m_echoCancellation; /**< Accoustic Echo Cancellation control. 0=no change, 1=disabled, + 2=enabled. */ unsigned m_audioBuffers; /**< Set the number of hardware sound buffers to use. */ - + OpalMediaDataFunction m_mediaReadData; /**< Callback function for reading raw media data. */ + OpalMediaDataFunction m_mediaWriteData; /**< Callback function for writing raw media data. */ + OpalMediaDataType m_mediaDataHeader; /**< Indicate that the media read/write callback function + is passed the full RTP header or just the payload. + 0=no change, 1=payload only, 2=with RTP header. */ } OpalParamGeneral; @@ -492,6 +551,17 @@ } OpalStatusIncomingCall; +/**Media stream information for the OpalIndMediaStream indication. + This is only returned from the OpalGetMessage() function. + */ +typedef struct OpalStatusMediaStream { + const char * m_callToken; ///< Call token for the call the media stream is. + const char * m_identifier; ///< Unique identifier for the media stream + const char * m_format; ///< Media format for the stream. + unsigned m_status; ///< Status of stream, 1=started, 2=stopped +} OpalStatusMediaStream; + + /**User input information for the OpalIndUserInput indication. This is only returned from the OpalGetMessage() function. */ @@ -539,6 +609,7 @@ OpalParamSetUpCall m_callSetUp; ///< Used by OpalCmdSetUpCall const char * m_callToken; ///< Used by OpalCmdAnswerCall/OpalCmdRefuseCall/OpalCmdClearCall/OpalIndAlerting/OpalIndEstablished OpalStatusIncomingCall m_incomingCall; ///< Used by OpalIndIncomingCall + OpalStatusMediaStream m_mediaStream; ///< Used by OpalIndMediaStream OpalStatusUserInput m_userInput; ///< Used by OpalIndUserInput OpalStatusMessageWaiting m_messageWaiting; ///< Used by OpalIndMessageWaiting OpalStatusCallCleared m_callCleared; ///< Used by OpalIndCallCleared Modified: opal/trunk/samples/c_api/main.c =================================================================== --- opal/trunk/samples/c_api/main.c 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/samples/c_api/main.c 2008-06-16 04:31:46 UTC (rev 20448) @@ -29,13 +29,14 @@ */ #define _CRT_NONSTDC_NO_WARNINGS +#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <opal.h> -#if defined(_WIN32) - +#if defined(_WIN32) + #include <windows.h> #ifdef _DEBUG @@ -47,22 +48,22 @@ #define OPEN_LIBRARY(name) LoadLibrary(name) #define GET_LIBRARY_FUNCTION(dll, fn) GetProcAddress(dll, fn) - HINSTANCE hDLL; - -#else // _WIN32 - - #include <memory.h> - #include <dlfcn.h> - + HINSTANCE hDLL; + +#else // _WIN32 + + #include <memory.h> + #include <dlfcn.h> + #define OPAL_DLL "libopal.so" #define OPEN_LIBRARY(name) dlopen(name, RTLD_NOW) #define GET_LIBRARY_FUNCTION(dll, fn) dlsym(dll, (const char *)(fn)); - void * hDLL; - -#endif // _WIN32 + void * hDLL; +#endif // _WIN32 + OpalInitialiseFunction InitialiseFunction; OpalShutDownFunction ShutDownFunction; OpalGetMessageFunction GetMessageFunction; @@ -94,6 +95,41 @@ } +int MyReadMediaData(const char * token, const char * id, const char * format, void * data, int size) +{ + static FILE * file = NULL; + if (file == NULL) { + if (strcmp(format, "PCM-16") == 0) + file = fopen("ogm.wav", "rb"); + printf("Reading %s media for stream %s on call %s\n", format, id, token); + } + + if (file != NULL) + return fread(data, 1, size, file); + + memset(data, 0, size); + return size; +} + + +int MyWriteMediaData(const char * token, const char * id, const char * format, void * data, int size) +{ + static FILE * file = NULL; + if (file == NULL) { + char name[100]; + sprintf(name, "Media-%s-%s.%s", token, id, format); + file = fopen(name, "wb"); + if (file == NULL) { + printf("Could not create media output file \"%s\"\n", name); + return -1; + } + printf("Writing %s media for stream %s on call %s\n", format, id, token); + } + + return fwrite(data, 1, size, file); +} + + int InitialiseOPAL() { OpalMessage command; @@ -126,7 +162,7 @@ // Initialisation version = OPAL_C_API_VERSION; - if ((hOPAL = InitialiseFunction(&version, "pc h323 sip TraceLevel=4")) == NULL) { + if ((hOPAL = InitialiseFunction(&version, OPAL_PREFIX_ALL" TraceLevel=4")) == NULL) { fputs("Could not initialise OPAL\n", stderr); return 0; } @@ -136,6 +172,10 @@ memset(&command, 0, sizeof(command)); command.m_type = OpalCmdSetGeneralParameters; + command.m_param.m_general.m_mediaReadData = MyReadMediaData; + command.m_param.m_general.m_mediaWriteData = MyWriteMediaData; + command.m_param.m_general.m_mediaDataHeader = OpalMediaDataPayloadOnly; + if ((response = MySendCommand(&command, "Could not set general options")) == NULL) return 0; @@ -189,6 +229,13 @@ puts("Ringing.\n"); break; + case OpalIndMediaStream : + printf("Media stream %s %s using %s\n", + message->m_param.m_mediaStream.m_identifier, + message->m_param.m_mediaStream.m_status == 1 ? "started" : "ended", + message->m_param.m_mediaStream.m_format); + break; + case OpalIndEstablished : puts("Established.\n"); break; @@ -214,7 +261,7 @@ } -int DoCall(const char * to) +int DoCall(const char * from, const char * to) { OpalMessage command; OpalMessage * response; @@ -224,6 +271,7 @@ memset(&command, 0, sizeof(command)); command.m_type = OpalCmdSetUpCall; + command.m_param.m_callSetUp.m_partyA = from; command.m_param.m_callSetUp.m_partyB = to; if ((response = MySendCommand(&command, "Could not make call")) == NULL) return 0; @@ -328,13 +376,18 @@ break; case OpCall : - if (!DoCall(argv[2])) - break; + if (argc > 3) { + if (!DoCall(argv[2], argv[3])) + break; + } else { + if (!DoCall(NULL, argv[2])) + break; + } HandleMessages(15000); break; case OpHold : - if (!DoCall(argv[2])) + if (!DoCall(NULL, argv[2])) break; HandleMessages(15000); if (!DoHold()) @@ -343,7 +396,7 @@ break; case OpTransfer : - if (!DoCall(argv[2])) + if (!DoCall(NULL, argv[2])) break; HandleMessages(15000); if (!DoTransfer(argv[3])) @@ -352,13 +405,13 @@ break; case OpConsult : - if (!DoCall(argv[2])) + if (!DoCall(NULL, argv[2])) break; HandleMessages(15000); if (!DoHold()) break; HandleMessages(15000); - if (!DoCall(argv[3])) + if (!DoCall(NULL, argv[3])) break; HandleMessages(15000); if (!DoTransfer(HeldCallToken)) Modified: opal/trunk/src/opal/connection.cxx =================================================================== --- opal/trunk/src/opal/connection.cxx 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/src/opal/connection.cxx 2008-06-16 04:31:46 UTC (rev 20448) @@ -1038,6 +1038,13 @@ { } + +OpalMediaFormatList OpalConnection::GetMediaFormats() const +{ + return endpoint.GetMediaFormats(); +} + + OpalMediaFormatList OpalConnection::GetLocalMediaFormats() { return ownerCall.GetMediaFormats(*this, FALSE); Modified: opal/trunk/src/opal/endpoint.cxx =================================================================== --- opal/trunk/src/opal/endpoint.cxx 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/src/opal/endpoint.cxx 2008-06-16 04:31:46 UTC (rev 20448) @@ -439,6 +439,23 @@ } +OpalMediaFormatList OpalEndPoint::GetMediaFormats() const +{ + OpalMediaFormatList formats; + + // Sound cards can only do 16 bit PCM, but at various sample rates + // The following will be in order of preference, so lets do wideband first + formats += OpalPCM16_16KHZ; + formats += OpalPCM16; + +#if OPAL_VIDEO + AddVideoMediaFormats(formats); +#endif + + return formats; +} + + void OpalEndPoint::AdjustMediaFormats(const OpalConnection & connection, OpalMediaFormatList & mediaFormats) const { Added: opal/trunk/src/opal/localep.cxx =================================================================== --- opal/trunk/src/opal/localep.cxx (rev 0) +++ opal/trunk/src/opal/localep.cxx 2008-06-16 04:31:46 UTC (rev 20448) @@ -0,0 +1,291 @@ +/* + * localep.cxx + * + * Local EndPoint/Connection. + * + * Open Phone Abstraction Library (OPAL) + * + * Copyright (c) 2008 Vox Lucida Pty. Ltd. + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + * the License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is Open Phone Abstraction Library. + * + * The Initial Developer of the Original Code is Equivalence Pty. Ltd. + * + * Contributor(s): ______________________________________. + * + * $Revision$ + * $Author$ + * $Date$ + */ + +#include <ptlib.h> + +#ifdef __GNUC__ +#pragma implementation "localep.h" +#endif + +#include <opal/buildopts.h> +#include <opal/localep.h> + +#include <opal/call.h> + + +#define new PNEW + + +///////////////////////////////////////////////////////////////////////////// + +OpalLocalEndPoint::OpalLocalEndPoint(OpalManager & mgr, const char * prefix) + : OpalEndPoint(mgr, prefix, CanTerminateCall) +{ + PTRACE(3, "LocalEP\tCreated endpoint.\n"); +} + + +OpalLocalEndPoint::~OpalLocalEndPoint() +{ + PTRACE(4, "LocalEP\tDeleted endpoint."); +} + + +PBoolean OpalLocalEndPoint::MakeConnection(OpalCall & call, + const PString & /*remoteParty*/, + void * userData, + unsigned int /*options*/, + OpalConnection::StringOptions * /* stringOptions*/) +{ + return AddConnection(CreateConnection(call, userData)); +} + + +OpalLocalConnection * OpalLocalEndPoint::CreateConnection(OpalCall & call, void * userData) +{ + return new OpalLocalConnection(call, *this, userData); +} + + +bool OpalLocalEndPoint::OnOutgoingCall(const OpalLocalConnection & /*connection*/) +{ + return true; +} + + +bool OpalLocalEndPoint::OnIncomingCall(OpalLocalConnection & connection) +{ + connection.AcceptIncoming(); + return true; +} + + +bool OpalLocalEndPoint::AcceptIncomingCall(const PString & token) +{ + PSafePtr<OpalLocalConnection> connection = GetLocalConnectionWithLock(token, PSafeReadOnly); + if (connection == NULL) { + PTRACE(2, "LocalEP\tCould not find connection using token \"" << token << '"'); + return false; + } + + connection->AcceptIncoming(); + return true; +} + + +bool OpalLocalEndPoint::RejectIncomingCall(const PString & token) +{ + PSafePtr<OpalLocalConnection> connection = GetLocalConnectionWithLock(token, PSafeReadOnly); + if (connection == NULL) + return false; + + connection->Release(OpalConnection::EndedByAnswerDenied); + return true; +} + + +bool OpalLocalEndPoint::OnUserInput(const OpalLocalConnection &, const PString &) +{ + return true; +} + + +bool OpalLocalEndPoint::OnReadMediaFrame(const OpalLocalConnection & /*connection*/, + const OpalMediaStream & /*mediaStream*/, + RTP_DataFrame & /*frame*/) +{ + return false; +} + + +bool OpalLocalEndPoint::OnWriteMediaFrame(const OpalLocalConnection & /*connection*/, + const OpalMediaStream & /*mediaStream*/, + RTP_DataFrame & /*frame*/) +{ + return false; +} + + +bool OpalLocalEndPoint::OnReadMediaData(const OpalLocalConnection & /*connection*/, + const OpalMediaStream & /*mediaStream*/, + void * /*data*/, + PINDEX /*size*/, + PINDEX & /*length*/) +{ + return false; +} + + +bool OpalLocalEndPoint::OnWriteMediaData(const OpalLocalConnection & /*connection*/, + const OpalMediaStream & /*mediaStream*/, + const void * /*data*/, + PINDEX /*length*/, + PINDEX & /*written*/) +{ + return false; +} + + +///////////////////////////////////////////////////////////////////////////// + +static unsigned LastConnectionTokenID; + +OpalLocalConnection::OpalLocalConnection(OpalCall & call, OpalLocalEndPoint & ep, void * /*userData*/) + : OpalConnection(call, ep, psprintf("%u", ++LastConnectionTokenID)) + , endpoint(ep) +{ + PTRACE(4, "LocalCon\tCreated connection with token \"" << callToken << '"'); +} + + +OpalLocalConnection::~OpalLocalConnection() +{ + PTRACE(4, "LocalCon\tDeleted connection."); +} + + +PBoolean OpalLocalConnection::SetUpConnection() +{ + originating = true; + + // Check if we are A-Party in thsi call, so need to do things differently + if (ownerCall.GetConnection(0) == this) { + SetPhase(SetUpPhase); + if (!OnIncomingConnection(0, NULL)) { + Release(EndedByCallerAbort); + return false; + } + + PTRACE(3, "LocalCon\tOutgoing call routed to " << ownerCall.GetPartyB() << " for " << *this); + if (!ownerCall.OnSetUp(*this)) { + Release(EndedByNoAccept); + return false; + } + + return true; + } + + PTRACE(3, "LocalCon\tSetUpConnection(" << remotePartyName << ')'); + SetPhase(AlertingPhase); + OnAlerting(); + + return endpoint.OnIncomingCall(*this); +} + + +PBoolean OpalLocalConnection::SetAlerting(const PString & calleeName, PBoolean) +{ + PTRACE(3, "LocalCon\tSetAlerting(" << calleeName << ')'); + SetPhase(AlertingPhase); + remotePartyName = calleeName; + return endpoint.OnOutgoingCall(*this); +} + + +OpalMediaStream * OpalLocalConnection::CreateMediaStream(const OpalMediaFormat & mediaFormat, + unsigned sessionID, + PBoolean isSource) +{ + return new OpalLocalMediaStream(*this, mediaFormat, sessionID, isSource); +} + + +bool OpalLocalConnection::SendUserInputString(const PString & value) +{ + PTRACE(3, "LocalCon\tSendUserInputString(" << value << ')'); + return endpoint.OnUserInput(*this, value); +} + + +void OpalLocalConnection::AcceptIncoming() +{ + if (LockReadWrite()) { + OnConnectedInternal(); + UnlockReadWrite(); + } +} + + +///////////////////////////////////////////////////////////////////////////// + +OpalLocalMediaStream::OpalLocalMediaStream(OpalLocalConnection & connection, + const OpalMediaFormat & mediaFormat, + unsigned sessionID, + bool isSource) + : OpalMediaStream(connection, mediaFormat, sessionID, isSource) +{ +} + + +PBoolean OpalLocalMediaStream::ReadPacket(RTP_DataFrame & frame) +{ + OpalLocalEndPoint & ep = dynamic_cast<OpalLocalEndPoint &>(connection.GetEndPoint()); + OpalLocalConnection & conn = dynamic_cast<OpalLocalConnection &>(connection); + if (ep.OnReadMediaFrame(conn, *this, frame)) + return true; + + return OpalMediaStream::ReadPacket(frame); +} + + +PBoolean OpalLocalMediaStream::WritePacket(RTP_DataFrame & frame) +{ + OpalLocalEndPoint & ep = dynamic_cast<OpalLocalEndPoint &>(connection.GetEndPoint()); + OpalLocalConnection & conn = dynamic_cast<OpalLocalConnection &>(connection); + if (ep.OnWriteMediaFrame(conn, *this, frame)) + return true; + + return OpalMediaStream::WritePacket(frame); +} + + +PBoolean OpalLocalMediaStream::ReadData(BYTE * data, PINDEX size, PINDEX & length) +{ + OpalLocalEndPoint & ep = dynamic_cast<OpalLocalEndPoint &>(connection.GetEndPoint()); + OpalLocalConnection & conn = dynamic_cast<OpalLocalConnection &>(connection); + return ep.OnReadMediaData(conn, *this, data, size, length); +} + + +PBoolean OpalLocalMediaStream::WriteData(const BYTE * data, PINDEX length, PINDEX & written) +{ + OpalLocalEndPoint & ep = dynamic_cast<OpalLocalEndPoint &>(connection.GetEndPoint()); + OpalLocalConnection & conn = dynamic_cast<OpalLocalConnection &>(connection); + return ep.OnWriteMediaData(conn, *this, data, length, written); +} + + +PBoolean OpalLocalMediaStream::IsSynchronous() const +{ + return false; +} + + +///////////////////////////////////////////////////////////////////////////// Property changes on: opal/trunk/src/opal/localep.cxx ___________________________________________________________________ Name: svn:keywords + Revision Author Date Name: svn:eol-style + native Modified: opal/trunk/src/opal/opal_c.cxx =================================================================== --- opal/trunk/src/opal/opal_c.cxx 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/src/opal/opal_c.cxx 2008-06-16 04:31:46 UTC (rev 20448) @@ -35,6 +35,7 @@ #include <opal.h> #include <opal/manager.h> #include <opal/pcss.h> +#include <opal/localep.h> #include <h323/h323ep.h> #include <sip/sipep.h> #include <iax2/iax2ep.h> @@ -81,14 +82,35 @@ public: OpalPCSSEndPoint_C(OpalManager_C & manager); - PBoolean OpalPCSSEndPoint::OnShowIncoming(const OpalPCSSConnection &); - PBoolean OpalPCSSEndPoint::OnShowOutgoing(const OpalPCSSConnection &); + virtual PBoolean OnShowIncoming(const OpalPCSSConnection &); + virtual PBoolean OnShowOutgoing(const OpalPCSSConnection &); private: - OpalManager_C & manager; + OpalManager_C & m_manager; }; +class OpalLocalEndPoint_C : public OpalLocalEndPoint +{ + public: + OpalLocalEndPoint_C(OpalManager_C & manager); + + virtual bool OnOutgoingCall(const OpalLocalConnection &); + virtual bool OnIncomingCall(OpalLocalConnection &); + virtual bool OnReadMediaFrame(const OpalLocalConnection &, const OpalMediaStream & mediaStream, RTP_DataFrame &); + virtual bool OnWriteMediaFrame(const OpalLocalConnection &, const OpalMediaStream &, RTP_DataFrame & frame); + virtual bool OnReadMediaData(const OpalLocalConnection &, const OpalMediaStream &, void *, PINDEX, PINDEX &); + virtual bool OnWriteMediaData(const OpalLocalConnection &, const OpalMediaStream &, const void *, PINDEX, PINDEX &); + + OpalMediaDataFunction m_mediaReadData; + OpalMediaDataFunction m_mediaWriteData; + OpalMediaDataType m_mediaDataHeader; + + private: + OpalManager_C & m_manager; +}; + + #if OPAL_SIP class SIPEndPoint_C : public SIPEndPoint { @@ -103,7 +125,7 @@ ); private: - OpalManager_C & manager; + OpalManager_C & m_manager; }; #endif @@ -113,6 +135,7 @@ public: OpalManager_C(unsigned version) : pcssEP(NULL) + , localEP(NULL) , m_apiVersion(version) , m_messagesAvailable(0, INT_MAX) { @@ -125,6 +148,8 @@ OpalMessage * SendMessage(const OpalMessage * message); virtual void OnEstablishedCall(OpalCall & call); + virtual PBoolean OnOpenMediaStream(OpalConnection & connection, OpalMediaStream & stream); + virtual void OnClosedMediaStream(const OpalMediaStream & stream); virtual void OnUserInputString(OpalConnection & connection, const PString & value); virtual void OnUserInputTone(OpalConnection & connection, char tone, int duration); virtual void OnMWIReceived(const PString & party, MessageWaitingType type, const PString & extraInfo); @@ -142,7 +167,8 @@ void HandleRetrieveCall (const OpalMessage & message, OpalMessageBuffer & response); void HandleTransferCall (const OpalMessage & message, OpalMessageBuffer & response); - OpalPCSSEndPoint_C * pcssEP; + OpalPCSSEndPoint_C * pcssEP; + OpalLocalEndPoint_C * localEP; unsigned m_apiVersion; std::queue<OpalMessage *> m_messageQueue; @@ -268,9 +294,146 @@ /////////////////////////////////////// +OpalLocalEndPoint_C::OpalLocalEndPoint_C(OpalManager_C & mgr) + : OpalLocalEndPoint(mgr) + , m_manager(mgr) + , m_mediaReadData(NULL) + , m_mediaWriteData(NULL) + , m_mediaDataHeader(OpalMediaDataPayloadOnly) +{ +} + + +bool OpalLocalEndPoint_C::OnOutgoingCall(const OpalLocalConnection & connection) +{ + PTRACE(4, "OpalC\tOnOutgoingCall " << connection); + const OpalCall & call = connection.GetCall(); + OpalMessageBuffer message(OpalIndAlerting); + SET_MESSAGE_STRING(message, m_param.m_callSetUp.m_partyA, call.GetPartyA()); + SET_MESSAGE_STRING(message, m_param.m_callSetUp.m_partyB, call.GetPartyB()); + SET_MESSAGE_STRING(message, m_param.m_callSetUp.m_callToken, call.GetToken()); + PTRACE(4, "OpalC API\tOnOutgoingCall:" + " token=\"" << message->m_param.m_callSetUp.m_callToken << "\"" + " A=\"" << message->m_param.m_callSetUp.m_partyA << "\"" + " B=\"" << message->m_param.m_callSetUp.m_partyB << '"'); + m_manager.PostMessage(message); + return true; +} + + +bool OpalLocalEndPoint_C::OnIncomingCall(OpalLocalConnection & connection) +{ + PTRACE(4, "OpalC\tOnIncomingCall " << connection); + OpalMessageBuffer message(OpalIndIncomingCall); + SET_MESSAGE_STRING(message, m_param.m_incomingCall.m_callToken, connection.GetCall().GetToken()); + SET_MESSAGE_STRING(message, m_param.m_incomingCall.m_localAddress, connection.GetLocalPartyURL()); + SET_MESSAGE_STRING(message, m_param.m_incomingCall.m_remoteAddress, connection.GetRemotePartyURL()); + PTRACE(4, "OpalC API\tOnIncomingCall:" + " token=\"" << message->m_param.m_incomingCall.m_callToken << "\"" + " local=\"" << message->m_param.m_incomingCall.m_localAddress << "\"" + " remote=\""<< message->m_param.m_incomingCall.m_remoteAddress << '"'); + m_manager.PostMessage(message); + return true; +} + + +bool OpalLocalEndPoint_C::OnReadMediaFrame(const OpalLocalConnection & connection, + const OpalMediaStream & mediaStream, + RTP_DataFrame & frame) +{ + if (m_mediaDataHeader != OpalMediaDataWithHeader) + return false; + + if (m_mediaReadData == NULL) + return false; + + int result = m_mediaReadData(connection.GetCall().GetToken(), + mediaStream.GetID(), + mediaStream.GetMediaFormat().GetName(), + frame.GetPointer(), + frame.GetSize()); + if (result < 0) + return false; + + frame.SetPayloadSize(result-frame.GetHeaderSize()); + return true; +} + + +bool OpalLocalEndPoint_C::OnWriteMediaFrame(const OpalLocalConnection & connection, + const OpalMediaStream & mediaStream, + RTP_DataFrame & frame) +{ + if (m_mediaDataHeader != OpalMediaDataWithHeader) + return false; + + if (m_mediaWriteData == NULL) + return false; + + int result = m_mediaWriteData(connection.GetCall().GetToken(), + mediaStream.GetID(), + mediaStream.GetMediaFormat().GetName(), + frame.GetPointer(), + frame.GetHeaderSize()+frame.GetPayloadSize()); + return result >= 0; +} + + +bool OpalLocalEndPoint_C::OnReadMediaData(const OpalLocalConnection & connection, + const OpalMediaStream & mediaStream, + void * data, + PINDEX size, + PINDEX & length) +{ + if (m_mediaDataHeader != OpalMediaDataPayloadOnly) + return false; + + if (m_mediaReadData == NULL) + return false; + + int result = m_mediaReadData(connection.GetCall().GetToken(), + mediaStream.GetID(), + mediaStream.GetMediaFormat().GetName(), + data, + size); + if (result < 0) + return false; + + length = result; + return true; +} + + +bool OpalLocalEndPoint_C::OnWriteMediaData(const OpalLocalConnection & connection, + const OpalMediaStream & mediaStream, + const void * data, + PINDEX length, + PINDEX & written) +{ + if (m_mediaDataHeader != OpalMediaDataPayloadOnly) + return false; + + if (m_mediaWriteData == NULL) + return false; + + int result = m_mediaWriteData(connection.GetCall().GetToken(), + mediaStream.GetID(), + mediaStream.GetMediaFormat().GetName(), + (void *)data, + length); + if (result < 0) + return false; + + written = result; + return true; +} + + +/////////////////////////////////////// + OpalPCSSEndPoint_C::OpalPCSSEndPoint_C(OpalManager_C & mgr) : OpalPCSSEndPoint(mgr) - , manager(mgr) + , m_manager(mgr) { } @@ -286,7 +449,7 @@ " token=\"" << message->m_param.m_incomingCall.m_callToken << "\"" " local=\"" << message->m_param.m_incomingCall.m_localAddress << "\"" " remote=\""<< message->m_param.m_incomingCall.m_remoteAddress << '"'); - manager.PostMessage(message); + m_manager.PostMessage(message); return true; } @@ -303,7 +466,7 @@ " token=\"" << message->m_param.m_callSetUp.m_callToken << "\"" " A=\"" << message->m_param.m_callSetUp.m_partyA << "\"" " B=\"" << message->m_param.m_callSetUp.m_partyB << '"'); - manager.PostMessage(message); + m_manager.PostMessage(message); return true; } @@ -314,7 +477,7 @@ SIPEndPoint_C::SIPEndPoint_C(OpalManager_C & mgr) : SIPEndPoint(mgr) - , manager(mgr) + , m_manager(mgr) { } @@ -332,7 +495,7 @@ strm << "Error " << reason << " in SIP registration."; SET_MESSAGE_STRING(message, m_param.m_registrationStatus.m_error, strm); } - manager.PostMessage(message); + m_manager.PostMessage(message); } #endif @@ -388,7 +551,13 @@ defUserPos = pcPos; } + PINDEX localPos = options.Find("local"); + if (localPos < defUserPos) { + defUser = "local:<du>"; + defUserPos = localPos; + } + #if OPAL_IVR if (options.Find("ivr") != P_MAX_INDEX) { new OpalIVREndPoint(*this); @@ -433,6 +602,11 @@ AddRouteEntry("pc:.*=" + defProto + ":<da>"); } + if (localPos != P_MAX_INDEX) { + localEP = new OpalLocalEndPoint_C(*this); + AddRouteEntry("local:.*=" + defProto + ":<da>"); + } + return true; } @@ -626,7 +800,7 @@ return; OpalSilenceDetector::Params silenceDetectParams = GetSilenceDetectParams(); - response->m_param.m_general.m_silenceDetectMode = silenceDetectParams.m_mode+1; + response->m_param.m_general.m_silenceDetectMode = (OpalSilenceDetectModes)(silenceDetectParams.m_mode+1); if (command.m_param.m_general.m_silenceDetectMode != 0) silenceDetectParams.m_mode = (OpalSilenceDetector::Mode)(command.m_param.m_general.m_silenceDetectMode-1); response->m_param.m_general.m_silenceThreshold = silenceDetectParams.m_threshold; @@ -644,7 +818,7 @@ SetSilenceDetectParams(silenceDetectParams); OpalEchoCanceler::Params echoCancelParams = GetEchoCancelParams(); - response->m_param.m_general.m_echoCancellation = echoCancelParams.m_mode+1; + response->m_param.m_general.m_echoCancellation = (OpalEchoCancelMode)(echoCancelParams.m_mode+1); if (command.m_param.m_general.m_echoCancellation != 0) echoCancelParams.m_mode = (OpalEchoCanceler::Mode)(command.m_param.m_general.m_echoCancellation-1); SetEchoCancelParams(echoCancelParams); @@ -655,6 +829,23 @@ response->m_param.m_general.m_audioBuffers = pcssEP->GetSoundChannelBufferDepth(); if (command.m_param.m_general.m_audioBuffers != 0) pcssEP->SetSoundChannelBufferDepth(command.m_param.m_general.m_audioBuffers); + + if (m_apiVersion < 5) + return; + + if (localEP != NULL) { + response->m_param.m_general.m_mediaReadData = localEP->m_mediaReadData; + if (command.m_param.m_general.m_mediaReadData != NULL) + localEP->m_mediaReadData = command.m_param.m_general.m_mediaReadData; + + response->m_param.m_general.m_mediaWriteData = localEP->m_mediaWriteData; + if (command.m_param.m_general.m_mediaWriteData != NULL) + localEP->m_mediaWriteData = command.m_param.m_general.m_mediaWriteData; + + response->m_param.m_general.m_mediaDataHeader = localEP->m_mediaDataHeader; + if (command.m_param.m_general.m_mediaDataHeader != 0) + localEP->m_mediaDataHeader = command.m_param.m_general.m_mediaDataHeader; + } } @@ -1012,6 +1203,47 @@ } +PBoolean OpalManager_C::OnOpenMediaStream(OpalConnection & connection, OpalMediaStream & stream) +{ + if (!OpalManager::OnOpenMediaStream(connection, stream)) + return false; + + if (connection.IsNetworkConnection()) + return true; + + OpalMessageBuffer message(OpalIndMediaStream); + SET_MESSAGE_STRING(message, m_param.m_mediaStream.m_callToken, connection.GetCall().GetToken()); + SET_MESSAGE_STRING(message, m_param.m_mediaStream.m_identifier, stream.GetID()); + SET_MESSAGE_STRING(message, m_param.m_mediaStream.m_format, stream.GetMediaFormat().GetName()); + message->m_param.m_mediaStream.m_status = 1; + PTRACE(4, "OpalC API\tOnClosedMediaStream:" + " token=\"" << message->m_param.m_userInput.m_callToken << "\"" + " id=\"" << message->m_param.m_mediaStream.m_identifier << '"'); + PostMessage(message); + + return true; +} + + +void OpalManager_C::OnClosedMediaStream(const OpalMediaStream & stream) +{ + OpalManager::OnClosedMediaStream(stream); + + if (stream.GetConnection().IsNetworkConnection()) + return; + + OpalMessageBuffer message(OpalIndMediaStream); + SET_MESSAGE_STRING(message, m_param.m_mediaStream.m_callToken, stream.GetConnection().GetCall().GetToken()); + SET_MESSAGE_STRING(message, m_param.m_mediaStream.m_identifier, stream.GetID()); + SET_MESSAGE_STRING(message, m_param.m_mediaStream.m_format, stream.GetMediaFormat().GetName()); + message->m_param.m_mediaStream.m_status = 2; + PTRACE(4, "OpalC API\tOnClosedMediaStream:" + " token=\"" << message->m_param.m_userInput.m_callToken << "\"" + " id=\"" << message->m_param.m_mediaStream.m_identifier << '"'); + PostMessage(message); +} + + void OpalManager_C::OnUserInputString(OpalConnection & connection, const PString & value) { OpalMessageBuffer message(OpalIndUserInput); Modified: opal/trunk/src/opal/pcss.cxx =================================================================== --- opal/trunk/src/opal/pcss.cxx 2008-06-16 02:11:35 UTC (rev 20447) +++ opal/trunk/src/opal/pcss.cxx 2008-06-16 04:31:46 UTC (rev 20448) @@ -151,23 +151,6 @@ } -OpalMediaFormatList OpalPCSSEndPoint::GetMediaFormats() const -{ - OpalMediaFormatList formats; - - // Sound cards can only do 16 bit PCM, but at various sample rates - // The following will be in order of preference, so lets do wideband first - formats += OpalPCM16_16KHZ; - formats += OpalPCM16; - -#if OPAL_VIDEO - AddVideoMediaFormats(formats); -#endif - - return formats; -} - - OpalPCSSConnection * OpalPCSSEndPoint::CreateConnection(OpalCall & call, ... [truncated message content] |
From: <rjo...@us...> - 2008-06-16 02:11:27
|
Revision: 20447 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20447&view=rev Author: rjongbloed Date: 2008-06-15 19:11:35 -0700 (Sun, 15 Jun 2008) Log Message: ----------- Fixed OpenPhone secure RTP string for disable. Modified Paths: -------------- opal/trunk/samples/openphone/main.cxx Modified: opal/trunk/samples/openphone/main.cxx =================================================================== --- opal/trunk/samples/openphone/main.cxx 2008-06-15 12:47:00 UTC (rev 20446) +++ opal/trunk/samples/openphone/main.cxx 2008-06-16 02:11:35 UTC (rev 20447) @@ -843,9 +843,9 @@ DetachEndPoint("h323s"); if (config->Read(SecureSIPKey, &onoff) && !onoff) DetachEndPoint("sips"); - if (config->Read(RTPSecurityModeH323Key, &str) && !str.empty()) + if (config->Read(RTPSecurityModeH323Key, &str) && str != "None") h323EP->SetDefaultSecurityMode(str); - if (config->Read(RTPSecurityModeSIPKey, &str) && !str.empty()) + if (config->Read(RTPSecurityModeSIPKey, &str) && str != "None") sipEP->SetDefaultSecurityMode(str); //////////////////////////////////////// This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-15 12:46:57
|
Revision: 20446 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20446&view=rev Author: rjongbloed Date: 2008-06-15 05:47:00 -0700 (Sun, 15 Jun 2008) Log Message: ----------- Fixed MSVC warning Modified Paths: -------------- opal/trunk/include/iax2/regprocessor.h opal/trunk/include/iax2/specialprocessor.h Modified: opal/trunk/include/iax2/regprocessor.h =================================================================== --- opal/trunk/include/iax2/regprocessor.h 2008-06-15 07:57:14 UTC (rev 20445) +++ opal/trunk/include/iax2/regprocessor.h 2008-06-15 12:47:00 UTC (rev 20446) @@ -132,7 +132,7 @@ @return true if the frame is out of order, which deletes the supplied frame @return false, and does not destroy the supplied frame*/ - virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *ff) + virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *) { return PFalse; }; Modified: opal/trunk/include/iax2/specialprocessor.h =================================================================== --- opal/trunk/include/iax2/specialprocessor.h 2008-06-15 07:57:14 UTC (rev 20445) +++ opal/trunk/include/iax2/specialprocessor.h 2008-06-15 12:47:00 UTC (rev 20446) @@ -97,7 +97,7 @@ @return false always, as the special packet handler never gets frame ordered correctly - there will always be skipped frames. */ - virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *ff) + virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *) { return PFalse; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-15 07:57:12
|
Revision: 20445 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20445&view=rev Author: rjongbloed Date: 2008-06-15 00:57:14 -0700 (Sun, 15 Jun 2008) Log Message: ----------- Fixed issue with LID "destination number input phase" timing out and terminating the call, causing a lock up. Modified Paths: -------------- opal/trunk/src/lids/lidep.cxx Modified: opal/trunk/src/lids/lidep.cxx =================================================================== --- opal/trunk/src/lids/lidep.cxx 2008-06-14 09:38:05 UTC (rev 20444) +++ opal/trunk/src/lids/lidep.cxx 2008-06-15 07:57:14 UTC (rev 20445) @@ -479,7 +479,7 @@ { PTRACE(3, "LID Con\tOnReleased " << *this); - if (handlerThread != NULL) { + if (handlerThread != NULL && PThread::Current() != handlerThread) { PTRACE(4, "LID Con\tAwaiting handler thread termination " << *this); // Stop the signalling handler thread SetUserInput(PString()); // Break out of ReadUserInput This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-14 09:38:00
|
Revision: 20444 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20444&view=rev Author: rjongbloed Date: 2008-06-14 02:38:05 -0700 (Sat, 14 Jun 2008) Log Message: ----------- Fixed lock up when hanging up a LID handset when currently in the "digit collection" phase of call. Modified Paths: -------------- opal/trunk/src/opal/connection.cxx Modified: opal/trunk/src/opal/connection.cxx =================================================================== --- opal/trunk/src/opal/connection.cxx 2008-06-13 13:42:33 UTC (rev 20443) +++ opal/trunk/src/opal/connection.cxx 2008-06-14 09:38:05 UTC (rev 20444) @@ -891,7 +891,9 @@ PString OpalConnection::GetUserInput(unsigned timeout) { PString reply; - if (userInputAvailable.Wait(PTimeInterval(0, timeout)) && LockReadWrite()) { + if (userInputAvailable.Wait(PTimeInterval(0, timeout)) && + GetPhase() < ReleasingPhase && + LockReadWrite()) { reply = userInputString; userInputString = PString(); UnlockReadWrite(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-13 13:42:46
|
Revision: 20443 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20443&view=rev Author: rjongbloed Date: 2008-06-13 06:42:33 -0700 (Fri, 13 Jun 2008) Log Message: ----------- Added security configuration to OpenPhone options dialog. Modified Paths: -------------- opal/trunk/samples/openphone/main.cxx opal/trunk/samples/openphone/main.h opal/trunk/samples/openphone/openphone.wxg opal/trunk/samples/openphone/openphone.xrc Modified: opal/trunk/samples/openphone/main.cxx =================================================================== --- opal/trunk/samples/openphone/main.cxx 2008-06-13 04:56:31 UTC (rev 20442) +++ opal/trunk/samples/openphone/main.cxx 2008-06-13 13:42:33 UTC (rev 20443) @@ -165,6 +165,12 @@ static const char CodecsGroup[] = "/Codecs"; static const char CodecNameKey[] = "Name"; +static const char SecurityGroup[] = "/Security"; +DEF_FIELD(SecureH323); +DEF_FIELD(SecureSIP); +DEF_FIELD(RTPSecurityModeH323); +DEF_FIELD(RTPSecurityModeSIP); + static const char H323Group[] = "/H.323"; DEF_FIELD(GatekeeperMode); DEF_FIELD(GatekeeperAddress); @@ -831,6 +837,18 @@ #endif //////////////////////////////////////// + // Security fields + config->SetPath(SecurityGroup); + if (config->Read(SecureH323Key, &onoff) && !onoff) + DetachEndPoint("h323s"); + if (config->Read(SecureSIPKey, &onoff) && !onoff) + DetachEndPoint("sips"); + if (config->Read(RTPSecurityModeH323Key, &str) && !str.empty()) + h323EP->SetDefaultSecurityMode(str); + if (config->Read(RTPSecurityModeSIPKey, &str) && !str.empty()) + sipEP->SetDefaultSecurityMode(str); + + //////////////////////////////////////// // H.323 fields config->SetPath(H323AliasesGroup); if (config->GetFirstEntry(entryName, entryIndex)) { @@ -2917,6 +2935,35 @@ m_CodecOptionValueError->Show(false); //////////////////////////////////////// + // Security fields +#if P_SSL + INIT_FIELD(SecureH323, m_manager.FindEndPoint("h323s") != NULL); + INIT_FIELD(SecureSIP, m_manager.FindEndPoint("sips") != NULL); +#else + FindWindowByName(SecureH323Key)->Disable(); + FindWindowByName(SecureSIPKey)->Disable(); +#endif +#if OPAL_SRTP || OPAL_ZRTP + INIT_FIELD(RTPSecurityModeH323, m_manager.h323EP->GetDefaultSecurityMode()); + INIT_FIELD(RTPSecurityModeSIP, m_manager.sipEP->GetDefaultSecurityMode()); +#if !OPAL_SRTP + choice = FindWindowByNameAs<wxChoice>(this, RTPSecurityModeH323Key); + choice->Delete(choice->FindString("SRTP")); + choice = FindWindowByNameAs<wxChoice>(this, RTPSecurityModeSIPKey); + choice->Delete(choice->FindString("SRTP")); +#endif +#if !OPAL_ZRTP + choice = FindWindowByNameAs<wxChoice>(this, RTPSecurityModeH323Key); + choice->Delete(choice->FindString("ZRTP")); + choice = FindWindowByNameAs<wxChoice>(this, RTPSecurityModeSIPKey); + choice->Delete(choice->FindString("ZRTP")); +#endif +#else + FindWindowByName(RTPSecurityModeH323Key)->Disable(); + FindWindowByName(RTPSecurityModeSIPKey)->Disable(); +#endif // OPAL_SRTP || OPAL_ZRTP + + //////////////////////////////////////// // H.323 fields m_AddAlias = FindWindowByNameAs<wxButton>(this, "AddAlias"); m_AddAlias->Disable(); @@ -3203,6 +3250,25 @@ //////////////////////////////////////// + // Security fields + config->SetPath(SecurityGroup); + if (m_SecureH323) + m_manager.AttachEndPoint(m_manager.FindEndPoint("h323"), "h323s"); + else + m_manager.DetachEndPoint("h323s"); + config->Write(SecureH323Key, m_SecureH323); + + if (m_SecureSIP) + m_manager.AttachEndPoint(m_manager.FindEndPoint("sip"), "sips"); + else + m_manager.DetachEndPoint("sips"); + config->Write(SecureSIPKey, m_SecureSIP); + + SAVE_FIELD(RTPSecurityModeH323, m_manager.h323EP->SetDefaultSecurityMode); + SAVE_FIELD(RTPSecurityModeSIP, m_manager.sipEP->SetDefaultSecurityMode); + + + //////////////////////////////////////// // H.323 fields config->DeleteGroup(H323AliasesGroup); config->SetPath(H323AliasesGroup); Modified: opal/trunk/samples/openphone/main.h =================================================================== --- opal/trunk/samples/openphone/main.h 2008-06-13 04:56:31 UTC (rev 20442) +++ opal/trunk/samples/openphone/main.h 2008-06-13 13:42:33 UTC (rev 20443) @@ -486,6 +486,13 @@ void ChangedCodecOptionValue(wxCommandEvent & event); //////////////////////////////////////// + // Security fields + bool m_SecureH323; + bool m_SecureSIP; + PwxString m_RTPSecurityModeH323; + PwxString m_RTPSecurityModeSIP; + + //////////////////////////////////////// // H.323 fields int m_GatekeeperMode; PwxString m_GatekeeperAddress; Modified: opal/trunk/samples/openphone/openphone.wxg =================================================================== --- opal/trunk/samples/openphone/openphone.wxg 2008-06-13 04:56:31 UTC (rev 20442) +++ opal/trunk/samples/openphone/openphone.wxg 2008-06-13 13:42:33 UTC (rev 20443) @@ -1,5 +1,5 @@ <?xml version="1.0"?> -<!-- generated by wxGlade 0.6.1 on Tue May 13 19:35:26 2008 --> +<!-- generated by wxGlade 0.6.1 on Mon Jun 09 22:58:12 2008 --> <application path="openphone.xrc" name="OpenPhone" class="" option="0" language="XRC" top_window="CallDialog" encoding="ISO-8859-1" use_gettext="0" overwrite="0" use_new_namespace="1" for_version="2.8" is_template="0"> <object class="MyMenuBar" name="MenuBar" base="EditMenuBar"> @@ -275,6 +275,8 @@ </object> <object class="sizeritem"> <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag> + <border>0</border> + <option>0</option> <object class="wxCheckBox" name="UseHandset" base="EditCheckBox"> </object> </object> @@ -1785,9 +1787,9 @@ </object> </object> <object class="sizeritem"> - <flag>wxLEFT|wxRIGHT|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> + <flag>wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> <border>20</border> - <option>0</option> + <option>1</option> <object class="wxListCtrl" name="CodecOptionsList" base="EditListCtrl"> <style>wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_SORT_ASCENDING|wxSUNKEN_BORDER</style> </object> @@ -1853,58 +1855,125 @@ <object class="wxBoxSizer" name="sizer_27" base="EditBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> - <flag>wxLEFT|wxRIGHT|wxTOP|wxEXPAND</flag> - <border>8</border> + <flag>wxEXPAND</flag> + <border>0</border> <option>0</option> - <object class="wxStaticBoxSizer" name="sizer_28" base="EditStaticBoxSizer"> + <object class="wxBoxSizer" name="sizer_83" base="EditBoxSizer"> <orient>wxHORIZONTAL</orient> - <label>Aliases</label> <object class="sizeritem"> - <border>0</border> - <option>1</option> - <object class="wxBoxSizer" name="sizer_29" base="EditBoxSizer"> + <flag>wxLEFT|wxRIGHT|wxTOP|wxEXPAND</flag> + <border>8</border> + <option>0</option> + <object class="wxStaticBoxSizer" name="sizer_28" base="EditStaticBoxSizer"> <orient>wxHORIZONTAL</orient> + <label>Aliases</label> <object class="sizeritem"> - <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> + <border>0</border> <option>1</option> - <object class="wxListBox" name="Aliases" base="EditListBox"> - <selection>-1</selection> - <choices> - </choices> - <size>146, 40d</size> + <object class="wxBoxSizer" name="sizer_29" base="EditBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="sizeritem"> + <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>1</option> + <object class="wxListBox" name="Aliases" base="EditListBox"> + <selection>-1</selection> + <choices> + </choices> + <size>80, 40d</size> + </object> + </object> + <object class="sizeritem"> + <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag> + <border>16</border> + <option>0</option> + <object class="wxBoxSizer" name="sizer_30" base="EditBoxSizer"> + <orient>wxVERTICAL</orient> + <object class="sizeritem"> + <border>0</border> + <option>0</option> + <object class="wxButton" name="AddAlias" base="EditButton"> + <label><- Add</label> + </object> + </object> + <object class="sizeritem"> + <border>0</border> + <option>0</option> + <object class="wxButton" name="RemoveAlias" base="EditButton"> + <label>Remove -></label> + </object> + </object> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>1</option> + <object class="wxTextCtrl" name="NewAlias" base="EditTextCtrl"> + <size>80, 12d</size> + </object> + </object> </object> </object> + </object> + </object> + <object class="sizeritem"> + <flag>wxLEFT|wxRIGHT|wxTOP|wxEXPAND</flag> + <border>8</border> + <option>0</option> + <object class="wxStaticBoxSizer" name="sizer_82_copy" base="EditStaticBoxSizer"> + <orient>wxHORIZONTAL</orient> + <label>Security</label> <object class="sizeritem"> - <flag>wxALL|wxALIGN_CENTER_VERTICAL</flag> - <border>16</border> - <option>0</option> - <object class="wxBoxSizer" name="sizer_30" base="EditBoxSizer"> - <orient>wxVERTICAL</orient> + <flag>wxEXPAND</flag> + <border>0</border> + <option>1</option> + <object class="wxFlexGridSizer" name="grid_sizer_20_copy" base="EditFlexGridSizer"> + <hgap>0</hgap> + <rows>2</rows> + <cols>2</cols> + <vgap>0</vgap> <object class="sizeritem"> + <flag>wxEXPAND</flag> <border>0</border> + <option>1</option> + <object class="spacer" name="spacer" base="EditSpacer"> + <height>8</height> + <width>8</width> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> <option>0</option> - <object class="wxButton" name="AddAlias" base="EditButton"> - <label><- Add</label> + <object class="wxCheckBox" name="SecureH323" base="EditCheckBox"> + <label>h323s</label> </object> </object> <object class="sizeritem"> - <border>0</border> + <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> <option>0</option> - <object class="wxButton" name="RemoveAlias" base="EditButton"> - <label>Remove -></label> + <object class="wxStaticText" name="label_76_copy" base="EditStaticText"> + <attribute>1</attribute> + <label>RTP Mode:</label> </object> </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>1</option> + <object class="wxChoice" name="RTPSecurityModeH323" base="EditChoice"> + <selection>0</selection> + <choices> + <choice>None</choice> + <choice>SRTP</choice> + <choice>ZRTP</choice> + </choices> + </object> + </object> </object> </object> - <object class="sizeritem"> - <flag>wxRIGHT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> - <option>1</option> - <object class="wxTextCtrl" name="NewAlias" base="EditTextCtrl"> - <size>146, 12d</size> - </object> - </object> </object> </object> </object> @@ -2145,90 +2214,157 @@ <object class="wxBoxSizer" name="sizer_44" base="EditBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> - <flag>wxALL</flag> - <border>8</border> + <flag>wxEXPAND</flag> + <border>0</border> <option>0</option> - <object class="wxStaticBoxSizer" name="sizer_46" base="EditStaticBoxSizer"> + <object class="wxBoxSizer" name="sizer_79" base="EditBoxSizer"> <orient>wxHORIZONTAL</orient> - <label>Proxy</label> <object class="sizeritem"> - <flag>wxEXPAND</flag> - <border>0</border> + <flag>wxALL|wxEXPAND</flag> + <border>8</border> <option>0</option> - <object class="wxFlexGridSizer" name="grid_sizer_11" base="EditFlexGridSizer"> - <hgap>2</hgap> - <rows>2</rows> - <growable_cols>1</growable_cols> - <cols>4</cols> - <vgap>0</vgap> + <object class="wxStaticBoxSizer" name="sizer_46" base="EditStaticBoxSizer"> + <orient>wxHORIZONTAL</orient> + <label>Proxy</label> <object class="sizeritem"> - <flag>wxTOP|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> + <flag>wxEXPAND</flag> + <border>0</border> <option>0</option> - <object class="spacer" name="spacer" base="EditSpacer"> - <height>20</height> - <width>20</width> + <object class="wxFlexGridSizer" name="grid_sizer_11" base="EditFlexGridSizer"> + <hgap>2</hgap> + <rows>2</rows> + <growable_cols>1</growable_cols> + <cols>4</cols> + <vgap>0</vgap> + <object class="sizeritem"> + <flag>wxTOP|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="spacer" name="spacer" base="EditSpacer"> + <height>20</height> + <width>20</width> + </object> + </object> + <object class="sizeritem"> + <flag>wxTOP|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxCheckBox" name="SIPProxyUsed" base="EditCheckBox"> + <label>Use Proxy</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxLEFT|wxTOP|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxStaticText" name="label_50" base="EditStaticText"> + <attribute>1</attribute> + <label>Login Name:</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxTextCtrl" name="SIPProxyUsername" base="EditTextCtrl"> + <size>72, 12d</size> + </object> + </object> + <object class="sizeritem"> + <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxStaticText" name="label_48" base="EditStaticText"> + <attribute>1</attribute> + <label>Host:</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxBOTTOM</flag> + <border>8</border> + <option>0</option> + <object class="wxTextCtrl" name="SIPProxy" base="EditTextCtrl"> + <size>96, 12d</size> + </object> + </object> + <object class="sizeritem"> + <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxStaticText" name="label_51" base="EditStaticText"> + <attribute>1</attribute> + <label>Password:</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxTextCtrl" name="SIPProxyPassword" base="EditTextCtrl"> + <style>wxTE_PASSWORD</style> + </object> + </object> </object> </object> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxBOTTOM|wxEXPAND</flag> + <border>8</border> + <option>0</option> + <object class="wxStaticBoxSizer" name="sizer_82" base="EditStaticBoxSizer"> + <orient>wxHORIZONTAL</orient> + <label>Security</label> <object class="sizeritem"> - <flag>wxTOP|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> - <option>0</option> - <object class="wxCheckBox" name="SIPProxyUsed" base="EditCheckBox"> - <label>Use Proxy</label> + <flag>wxEXPAND</flag> + <border>0</border> + <option>1</option> + <object class="wxFlexGridSizer" name="grid_sizer_20" base="EditFlexGridSizer"> + <hgap>0</hgap> + <rows>2</rows> + <cols>2</cols> + <vgap>0</vgap> + <object class="sizeritem"> + <flag>wxEXPAND</flag> + <border>0</border> + <option>1</option> + <object class="spacer" name="spacer" base="EditSpacer"> + <height>8</height> + <width>8</width> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxCheckBox" name="SecureSIP" base="EditCheckBox"> + <label>sips</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>0</option> + <object class="wxStaticText" name="label_76" base="EditStaticText"> + <attribute>1</attribute> + <label>RTP Mode:</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxTOP|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> + <border>8</border> + <option>1</option> + <object class="wxChoice" name="RTPSecurityModeSIP" base="EditChoice"> + <selection>0</selection> + <choices> + <choice>None</choice> + <choice>SRTP</choice> + <choice>ZRTP</choice> + </choices> + </object> + </object> </object> </object> - <object class="sizeritem"> - <flag>wxLEFT|wxTOP|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> - <option>0</option> - <object class="wxStaticText" name="label_50" base="EditStaticText"> - <attribute>1</attribute> - <label>Login Name:</label> - </object> - </object> - <object class="sizeritem"> - <flag>wxRIGHT|wxTOP|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> - <option>0</option> - <object class="wxTextCtrl" name="SIPProxyUsername" base="EditTextCtrl"> - <size>72, 12d</size> - </object> - </object> - <object class="sizeritem"> - <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> - <option>0</option> - <object class="wxStaticText" name="label_48" base="EditStaticText"> - <attribute>1</attribute> - <label>Host:</label> - </object> - </object> - <object class="sizeritem"> - <flag>wxRIGHT|wxTOP|wxBOTTOM</flag> - <border>8</border> - <option>0</option> - <object class="wxTextCtrl" name="SIPProxy" base="EditTextCtrl"> - <size>96, 12d</size> - </object> - </object> - <object class="sizeritem"> - <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> - <option>0</option> - <object class="wxStaticText" name="label_51" base="EditStaticText"> - <attribute>1</attribute> - <label>Password:</label> - </object> - </object> - <object class="sizeritem"> - <flag>wxRIGHT|wxTOP|wxBOTTOM|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> - <border>8</border> - <option>0</option> - <object class="wxTextCtrl" name="SIPProxyPassword" base="EditTextCtrl"> - <style>wxTE_PASSWORD</style> - </object> - </object> </object> </object> </object> Modified: opal/trunk/samples/openphone/openphone.xrc =================================================================== --- opal/trunk/samples/openphone/openphone.xrc 2008-06-13 04:56:31 UTC (rev 20442) +++ opal/trunk/samples/openphone/openphone.xrc 2008-06-13 13:42:33 UTC (rev 20443) @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="ISO-8859-1"?> -<!-- generated by wxGlade 0.6.1 on Tue May 13 19:39:41 2008 --> +<!-- generated by wxGlade 0.6.1 on Fri Jun 13 23:39:56 2008 --> <resource version="2.3.0.1"> <object class="wxPanel" name="CallingPanel" subclass="CallingPanel"> @@ -31,6 +31,1419 @@ </object> </object> </object> + <object class="wxMenuBar" name="SpeedDialMenu"> + <object class="wxMenu" name="SpeedDialMenu"> + <label>SpeedDialMenu</label> + <object class="wxMenuItem" name="CallSpeedDialAudio"> + <label>Call using Audio</label> + </object> + <object class="wxMenuItem" name="CallSpeedDialHandset"> + <label>Call using Handset</label> + </object> + <object class="wxMenuItem" name="SendFaxSpeedDial"> + <label>Send _FAX ...</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="MenuCut"> + <label>Cu_t</label> + </object> + <object class="wxMenuItem" name="MenuCopy"> + <label>_Copy</label> + </object> + <object class="wxMenuItem" name="MenuPaste"> + <label>_Paste</label> + </object> + <object class="wxMenuItem" name="MenuDelete"> + <label>_Delete</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="EditSpeedDial"> + <label>_Edit ...</label> + </object> + </object> + </object> + <object class="wxDialog" name="CallDialog" subclass="CallDialog"> + <style>wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxTHICK_FRAME</style> + <title>Call Remote</title> + <object class="wxBoxSizer"> + <orient>wxVERTICAL</orient> + <object class="sizeritem"> + <option>1</option> + <flag>wxEXPAND</flag> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="sizeritem"> + <flag>wxLEFT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxStaticText" name="AddressLabel"> + <label>Address:</label> + </object> + </object> + <object class="sizeritem"> + <option>1</option> + <flag>wxRIGHT|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxComboBox" name="Address"> + <size>160, 12d</size> + <selection>0</selection> + <content> + </content> + </object> + </object> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag> + <object class="wxCheckBox" name="UseHandset"> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="sizeritem"> + <flag>wxALL|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL</flag> + <border>16</border> + <object class="wxButton" name="wxID_OK"> + <default>1</default> + <label>OK</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxALL|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag> + <border>16</border> + <object class="wxButton" name="wxID_CANCEL"> + <label>Cancel</label> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="wxPanel" name="AnswerPanel" subclass="AnswerPanel"> + <style>wxTAB_TRAVERSAL</style> + <object class="wxBoxSizer"> + <orient>wxVERTICAL</orient> + <object class="sizeritem"> + <option>2</option> + <flag>wxEXPAND</flag> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="spacer"> + <size>20, 20</size> + <option>1</option> + <flag>wxEXPAND</flag> + </object> + <object class="sizeritem"> + <flag>wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>12</border> + <object class="wxButton" name="AnswerCall"> + <size>80, 20d</size> + <label>Answer</label> + <font> + <style>normal</style> + <family>default</family> + <weight>normal</weight> + <underlined>0</underlined> + <size>12</size> + </font> + </object> + </object> + <object class="spacer"> + <size>20, 20</size> + <option>1</option> + <flag>wxEXPAND</flag> + </object> + <object class="sizeritem"> + <flag>wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL</flag> + <border>12</border> + <object class="wxButton" name="RejectCall"> + <size>80, 20d</size> + <label>Reject</label> + <font> + <style>normal</style> + <family>default</family> + <weight>normal</weight> + <underlined>0</underlined> + <size>12</size> + </font> + </object> + </object> + <object class="spacer"> + <size>20, 20</size> + <option>1</option> + <flag>wxEXPAND</flag> + </object> + </object> + </object> + <object class="sizeritem"> + <option>1</option> + <flag>wxEXPAND</flag> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="sizeritem"> + <option>1</option> + <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag> + <border>12</border> + <object class="wxRadioBox" name="AnswerAs"> + <content> + <item>Voice</item> + <item>Fax</item> + <item>Detect</item> + </content> + <style>wxRA_SPECIFY_COLS</style> + <selection>2</selection> + <dimension>3</dimension> + <label>Answer As</label> + </object> + </object> + <object class="sizeritem"> + <option>2</option> + <flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag> + <border>12</border> + <object class="wxFlexGridSizer"> + <hgap>3</hgap> + <rows>2</rows> + <cols>2</cols> + <vgap>2</vgap> + <object class="sizeritem"> + <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <object class="wxStaticText" name="label_72"> + <label>Calling Party:</label> + <font> + <style>slant</style> + <family>default</family> + <weight>normal</weight> + <underlined>0</underlined> + <size>10</size> + </font> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_CENTER_VERTICAL</flag> + <object class="wxStaticText" name="CallingParty"> + <label>sip:fred</label> + <font> + <style>normal</style> + <family>default</family> + <weight>normal</weight> + <underlined>0</underlined> + <size>10</size> + </font> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <object class="wxStaticText" name="label_74"> + <label>Called Party:</label> + <font> + <style>slant</style> + <family>default</family> + <weight>normal</weight> + <underlined>0</underlined> + <size>10</size> + </font> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_CENTER_VERTICAL</flag> + <object class="wxStaticText" name="CalledParty"> + <label>pc:fred</label> + <font> + <style>normal</style> + <family>default</family> + <weight>normal</weight> + <underlined>0</underlined> + <size>10</size> + </font> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="wxDialog" name="SpeedDialDialog" subclass="SpeedDialDialog"> + <style>wxCAPTION|wxSYSTEM_MENU</style> + <title>Speed Dial</title> + <object class="wxBoxSizer"> + <orient>wxVERTICAL</orient> + <object class="sizeritem"> + <flag>wxEXPAND</flag> + <object class="wxFlexGridSizer"> + <hgap>2</hgap> + <rows>4</rows> + <cols>2</cols> + <vgap>8</vgap> + <object class="sizeritem"> + <flag>wxLEFT|wxTOP|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxStaticText" name="label_55"> + <style>wxALIGN_RIGHT</style> + <label>Name:</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxTOP|wxEXPAND|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="sizeritem"> + <flag>wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxTextCtrl" name="SpeedDialName"> + <size>120, 12d</size> + </object> + </object> + <object class="sizeritem"> + <flag>wxLEFT|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxStaticText" name="SpeedDialInUse"> + <label>Name already in use.</label> + </object> + </object> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <object class="wxStaticText" name="label_56"> + <style>wxALIGN_RIGHT</style> + <label>Number:</label> + </object> + </object> + <object class="sizeritem"> + <option>1</option> + <flag>wxEXPAND</flag> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="sizeritem"> + <flag>wxALIGN_CENTER_VERTICAL</flag> + <object class="wxTextCtrl" name="SpeedDialNumber"> + <size>48, 12d</size> + </object> + </object> + <object class="sizeritem"> + <option>1</option> + <flag>wxLEFT|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxStaticText" name="SpeedDialAmbiguous"> + <label>This number cannot be dialled from a keypad.</label> + </object> + </object> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <object class="wxStaticText" name="label_57"> + <style>wxALIGN_RIGHT</style> + <label>Address:</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxALIGN_CENTER_VERTICAL</flag> + <object class="wxTextCtrl" name="SpeedDialAddress"> + <size>120, 12d</size> + </object> + </object> + <object class="sizeritem"> + <flag>wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxStaticText" name="label_58"> + <style>wxALIGN_RIGHT</style> + <label>Description:</label> + </object> + </object> + <object class="sizeritem"> + <flag>wxRIGHT|wxALIGN_CENTER_VERTICAL</flag> + <border>20</border> + <object class="wxTextCtrl" name="SpeedDialDescription"> + <size>240, 12d</size> + </object> + </object> + </object> + </object> + <object class="sizeritem"> + <flag>wxEXPAND</flag> + <object class="wxBoxSizer"> + <orient>wxHORIZONTAL</orient> + <object class="spacer"> + <size>20, 20</size> + <option>3</option> + </object> + <object class="sizeritem"> + <flag>wxTOP|wxBOTTOM</flag> + <border>25</border> + <object class="wxButton" name="wxID_OK"> + <default>1</default> + <label>OK</label> + </object> + </object> + <object class="spacer"> + <size>20, 20</size> + <option>1</option> + </object> + <object class="sizeritem"> + <flag>wxTOP|wxBOTTOM</flag> + <border>25</border> + <object class="wxButton" name="wxID_CANCEL"> + <label>Cancel</label> + </object> + </object> + <object class="spacer"> + <size>20, 20</size> + <option>3</option> + </object> + </object> + </object> + </object> + </object> + <object class="wxMenuBar" name="MenuBar"> + <object class="wxMenu"> + <label>_File</label> + <object class="wxMenuItem" name="MenuSendFax"> + <label>Send FAX ...</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="MenuStartRecording"> + <label>Start Recording ...</label> + </object> + <object class="wxMenuItem" name="MenuStopRecording"> + <label>Stop Recording</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="MenuQuit"> + <label>E_xit</label> + </object> + </object> + <object class="wxMenu"> + <label>_Edit</label> + <object class="wxMenuItem" name="NewSpeedDial"> + <label>_New</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="MenuCut"> + <label>Cu_t</label> + </object> + <object class="wxMenuItem" name="MenuCopy"> + <label>_Copy</label> + </object> + <object class="wxMenuItem" name="MenuPaste"> + <label>_Paste</label> + </object> + <object class="wxMenuItem" name="MenuDelete"> + <label>_Delete</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="EditSpeedDial"> + <label>_Edit ...</label> + </object> + </object> + <object class="wxMenu"> + <label>_View</label> + <object class="wxMenuItem" name="ViewLarge"> + <label>Large _Icons</label> + <radio>1</radio> + </object> + <object class="wxMenuItem" name="ViewSmall"> + <label>_Small Icons</label> + <radio>1</radio> + </object> + <object class="wxMenuItem" name="ViewList"> + <label>_List</label> + <radio>1</radio> + </object> + <object class="wxMenuItem" name="ViewDetails"> + <label>_Details</label> + <radio>1</radio> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="MenuOptions"> + <label>_Options...</label> + </object> + </object> + <object class="wxMenu"> + <label>_Call</label> + <object class="wxMenuItem" name="MenuAnswer"> + <label>_Answer</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="MenuCall"> + <label>_Dial ...</label> + </object> + <object class="wxMenuItem" name="MenuCallLastDialed"> + <label>Call Last _Dialed</label> + </object> + <object class="wxMenuItem" name="MenuCallLastReceived"> + <label>Call Last _Received</label> + </object> + <object class="separator"/> + <object class="wxMenuItem" name="MenuHold"> + <label>H_old</label> + </object> + <object class="wxMenu" name="SubMenuRetrieve"> + <label>Retrieve</label> + <object class="separator"/> + </object> + <object class="wxMenu" name="SubMenuTransfer"> + <label>_Transfer</label> + <object class="wxMenuItem" name="MenuTransfer"> + <label>Other ...</label> + </object> + </object> + <object class="separator"/> + <object class="wxMenu" name="SubMenuAudio"> + <label>Audio</label> + <object class="separator"/> + </object> + <object class="wxMenu" name="SubMenuVideo"> + <label>Video</label> + <object class="separator"/> + </object> + <object class="wxMenuItem" name="MenuStartVideo"> + <label>Start Sending Video</label> + </object> + <object class="wxMenuItem" name="MenuStopVideo"> + <label>Stop Sending Video</label> + </object> + <object class="wxMenuItem" name="MenuSendVFU"> + <label... [truncated message content] |
From: <der...@us...> - 2008-06-13 04:56:24
|
Revision: 20442 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20442&view=rev Author: dereksmithies Date: 2008-06-12 21:56:31 -0700 (Thu, 12 Jun 2008) Log Message: ----------- Tidy up the handling of outoforder packets for the different processor types. Fix a memory leak, where the specialprocessor just absorbed packets and did no more. Now, the special processor thread runs, and does correctly handle those weird packets. Thanks to all who helped along the way, and to Robert who provided some useful tips. Modified Paths: -------------- opal/trunk/src/iax2/callprocessor.cxx opal/trunk/src/iax2/iax2con.cxx opal/trunk/src/iax2/iax2ep.cxx opal/trunk/src/iax2/processor.cxx opal/trunk/src/iax2/specialprocessor.cxx Modified: opal/trunk/src/iax2/callprocessor.cxx =================================================================== --- opal/trunk/src/iax2/callprocessor.cxx 2008-06-13 04:52:48 UTC (rev 20441) +++ opal/trunk/src/iax2/callprocessor.cxx 2008-06-13 04:56:31 UTC (rev 20442) @@ -1264,17 +1264,40 @@ return ""; } +PBoolean IAX2CallProcessor::IncomingMessageOutOfOrder(IAX2FullFrame *f) +{ + /*Check to see if this frame is legitimate - that sequence numbers match. If it is out of + sequence, we have to drop it, and send a vnak frame */ + switch(sequence.IncomingMessageInOrder(*f)) { + case IAX2SequenceNumbers::InSequence: + break; + case IAX2SequenceNumbers::SkippedFrame: { + PTRACE(4, "Skipped frame, received frame is " << f->GetSequenceInfo().AsString()); + SendVnakFrame(f); + delete f; + return PTrue; + } + break; + case IAX2SequenceNumbers::RepeatedFrame: { + SendAckFrame(f); + delete f; + return PTrue; + } + } + + /*The frame is ok, and the order is "good". so leave it alone for later processing */ + return PFalse; +} //////////////////////////////////////////////////////////////////////////////// /* The comment below is magic for those who use emacs to edit this file. */ -/* With the comment below, the tab key does auto indent to 4 spaces. */ +/* With the comment below, the tab key does auto indent to 2 spaces. */ /* * Local Variables: * mode:c - * c-file-style:linux * c-basic-offset:2 * End: */ Modified: opal/trunk/src/iax2/iax2con.cxx =================================================================== --- opal/trunk/src/iax2/iax2con.cxx 2008-06-13 04:52:48 UTC (rev 20441) +++ opal/trunk/src/iax2/iax2con.cxx 2008-06-13 04:56:31 UTC (rev 20442) @@ -533,7 +533,6 @@ /* * Local Variables: * mode:c - * c-file-style:linux * c-basic-offset:2 * End: */ Modified: opal/trunk/src/iax2/iax2ep.cxx =================================================================== --- opal/trunk/src/iax2/iax2ep.cxx 2008-06-13 04:52:48 UTC (rev 20441) +++ opal/trunk/src/iax2/iax2ep.cxx 2008-06-13 04:56:31 UTC (rev 20442) @@ -58,7 +58,7 @@ statusQueryCounter = 1; specialPacketHandler = new IAX2SpecialProcessor(*this); - + transmitter = NULL; receiver = NULL; sock = NULL; @@ -693,7 +693,6 @@ IAX2RegProcessor *regProcessor = new IAX2RegProcessor(*this, host, username, password, requestedRefreshTime); - regProcessors.Append(regProcessor); } @@ -818,7 +817,6 @@ /* * Local Variables: * mode:c - * c-file-style:linux * c-basic-offset:2 * End: */ Modified: opal/trunk/src/iax2/processor.cxx =================================================================== --- opal/trunk/src/iax2/processor.cxx 2008-06-13 04:52:48 UTC (rev 20441) +++ opal/trunk/src/iax2/processor.cxx 2008-06-13 04:56:31 UTC (rev 20442) @@ -270,27 +270,10 @@ IAX2FullFrame *f = (IAX2FullFrame *) frame; PTRACE(5, "IaxConnection\tFullFrame incoming frame " << frame->IdString()); - /*Check to see if this frame is legitimate - that sequence numbers match. If it is out of - sequence, we have to drop it, and send a vnak frame */ - switch(sequence.IncomingMessageInOrder(*f)) { - case IAX2SequenceNumbers::InSequence: - break; - case IAX2SequenceNumbers::SkippedFrame: { - PTRACE(4, "Skipped frame, received frame is " << f->GetSequenceInfo().AsString()); - SendVnakFrame(f); - delete f; - return PTrue; - } - break; - case IAX2SequenceNumbers::RepeatedFrame: { - SendAckFrame(f); - delete f; - return PTrue; - } - } + if (IncomingMessageOutOfOrder(f)) + return PTrue; // sequence numbers are Ok. Good. - endpoint.transmitter->PurgeMatchingFullFrames(f); IncControlFramesRcvd(); Modified: opal/trunk/src/iax2/specialprocessor.cxx =================================================================== --- opal/trunk/src/iax2/specialprocessor.cxx 2008-06-13 04:52:48 UTC (rev 20441) +++ opal/trunk/src/iax2/specialprocessor.cxx 2008-06-13 04:56:31 UTC (rev 20442) @@ -60,6 +60,7 @@ IAX2SpecialProcessor::IAX2SpecialProcessor(IAX2EndPoint & ep) : IAX2Processor(ep) { + Resume(); } IAX2SpecialProcessor::~IAX2SpecialProcessor() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <der...@us...> - 2008-06-13 04:52:42
|
Revision: 20441 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20441&view=rev Author: dereksmithies Date: 2008-06-12 21:52:48 -0700 (Thu, 12 Jun 2008) Log Message: ----------- Sort out the handling of out of order packets for the different procesors. Modified Paths: -------------- opal/trunk/include/iax2/callprocessor.h opal/trunk/include/iax2/processor.h opal/trunk/include/iax2/regprocessor.h opal/trunk/include/iax2/specialprocessor.h Modified: opal/trunk/include/iax2/callprocessor.h =================================================================== --- opal/trunk/include/iax2/callprocessor.h 2008-06-13 04:14:32 UTC (rev 20440) +++ opal/trunk/include/iax2/callprocessor.h 2008-06-13 04:52:48 UTC (rev 20441) @@ -149,8 +149,9 @@ packets */ virtual void OnReleased(); - /** Ask this IAX2CallProcessor to send dtmf to the remote endpoint. The dtmf is placed on a queue, - ready for transmission in fullframes of type dtmf. */ + /** Ask this IAX2CallProcessor to send dtmf to the remote + endpoint. The dtmf is placed on a queue, ready for transmission + in fullframes of type dtmf. */ void SendDtmf(const PString & dtmfs); /** Ask this IAX2CallProcessor to send text to the remote endpoint. The text @@ -253,6 +254,14 @@ void StartStatusCheckTimer(PINDEX msToWait = 10000 /*!< time between status checks, default = 10 seconds*/); + /**Test the sequence number of the incoming frame. This is only + valid for handling a call. If the message is outof order, the + supplied fullframe is deleted. + + @return true if the frame is out of order, which deletes the supplied frame + @return false, and does not destroy the supplied frame*/ + virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *ff); + protected: /**The connection class we are charged with running. */ @@ -736,7 +745,6 @@ /* * Local Variables: * mode:c - * c-file-style:linux * c-basic-offset:2 * End: */ Modified: opal/trunk/include/iax2/processor.h =================================================================== --- opal/trunk/include/iax2/processor.h 2008-06-13 04:14:32 UTC (rev 20440) +++ opal/trunk/include/iax2/processor.h 2008-06-13 04:52:48 UTC (rev 20441) @@ -258,9 +258,19 @@ void Terminate(); /**Cause this thread to come to life, and process events that are - * pending at IAX2Connection */ + * pending at IAX2Connection. This method does not start this + * thread. This method causes this thread to be joggled back into + * life, after waiting on a PSyncPoint. */ void Activate(); + /**Test the sequence number of the incoming frame. This is only + valid for handling a call. If the message is outof order, the + supplied fullframe is deleted. + + @return true if the frame is out of order, which deletes the supplied frame + @return false, and does not destroy the supplied frame*/ + virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *ff)= 0; + protected: /**Reference to the global variable of this program */ Modified: opal/trunk/include/iax2/regprocessor.h =================================================================== --- opal/trunk/include/iax2/regprocessor.h 2008-06-13 04:14:32 UTC (rev 20440) +++ opal/trunk/include/iax2/regprocessor.h 2008-06-13 04:52:48 UTC (rev 20441) @@ -125,6 +125,16 @@ seperate call. */ void ResetCall(); + + /**Test the sequence number of the incoming frame. This is only + valid for handling a call. If the message is outof order, the + supplied fullframe is deleted. + + @return true if the frame is out of order, which deletes the supplied frame + @return false, and does not destroy the supplied frame*/ + virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *ff) + { return PFalse; }; + /**A class that generates random values used for varying the registration timer*/ Modified: opal/trunk/include/iax2/specialprocessor.h =================================================================== --- opal/trunk/include/iax2/specialprocessor.h 2008-06-13 04:14:32 UTC (rev 20440) +++ opal/trunk/include/iax2/specialprocessor.h 2008-06-13 04:52:48 UTC (rev 20441) @@ -90,6 +90,17 @@ /**Process a poke command*/ void ProcessIaxCmdPoke(IAX2FullFrameProtocol * src); + + /**Test the sequence number of the incoming frame. This is only + valid for handling a call. If the message is outof order, the + supplied fullframe is deleted. + + @return false always, as the special packet handler never gets + frame ordered correctly - there will always be skipped frames. */ + virtual PBoolean IncomingMessageOutOfOrder(IAX2FullFrame *ff) + { return PFalse; } + + }; #endif /*SPECIALPROCESSOR_H*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-13 04:14:24
|
Revision: 20440 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20440&view=rev Author: rjongbloed Date: 2008-06-12 21:14:32 -0700 (Thu, 12 Jun 2008) Log Message: ----------- Removed inclusion of SRTP when compiling for Windows Mobile, at least for now. Modified Paths: -------------- opal/trunk/include/opal/buildopts.h.in opal/trunk/src/opal/opalglobalstatics.cxx opal/trunk/src/rtp/srtp.cxx Modified: opal/trunk/include/opal/buildopts.h.in =================================================================== --- opal/trunk/include/opal/buildopts.h.in 2008-06-13 04:13:01 UTC (rev 20439) +++ opal/trunk/include/opal/buildopts.h.in 2008-06-13 04:14:32 UTC (rev 20440) @@ -144,7 +144,7 @@ // //#undef HAS_LIBZRTP -#if HAS_LIBZRTP +#if defined(HAS_LIBZRTP) && !defined(_WIN32_WCE) #define OPAL_ZRTP 1 @@ -204,7 +204,7 @@ // #undef HAS_LIBSRTP -#if HAS_LIBSRTP && !OPAL_ZRTP +#if HAS_LIBSRTP && !OPAL_ZRTP && !defined(_WIN32_WCE) #define OPAL_SRTP 1 Modified: opal/trunk/src/opal/opalglobalstatics.cxx =================================================================== --- opal/trunk/src/opal/opalglobalstatics.cxx 2008-06-13 04:13:01 UTC (rev 20439) +++ opal/trunk/src/opal/opalglobalstatics.cxx 2008-06-13 04:14:32 UTC (rev 20440) @@ -63,7 +63,7 @@ OpalPluginCodecManager::Bootstrap(); PWLibStupidLinkerHacks::mediaTypeLoader = 1; PWLibStupidLinkerHacks::opalwavfileLoader =1; -#if HAS_LIBSRTP +#if OPAL_SRTP PWLibStupidLinkerHacks::libSRTPLoader = 1; #endif #if OPAL_FAX Modified: opal/trunk/src/rtp/srtp.cxx =================================================================== --- opal/trunk/src/rtp/srtp.cxx 2008-06-13 04:13:01 UTC (rev 20439) +++ opal/trunk/src/rtp/srtp.cxx 2008-06-13 04:14:32 UTC (rev 20440) @@ -88,7 +88,7 @@ int libSRTPLoader; }; -#if HAS_LIBSRTP && _WIN32 +#ifdef LIBSRTP_LIBRARY #pragma comment(lib, LIBSRTP_LIBRARY) #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-13 04:12:59
|
Revision: 20439 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20439&view=rev Author: rjongbloed Date: 2008-06-12 21:13:01 -0700 (Thu, 12 Jun 2008) Log Message: ----------- Fixed deployment directory for MobileOPAL Modified Paths: -------------- opal/trunk/samples/mobileopal/MobileOPAL.vcproj opal/trunk/src/win32/opal_dll_2005.vcproj Modified: opal/trunk/samples/mobileopal/MobileOPAL.vcproj =================================================================== --- opal/trunk/samples/mobileopal/MobileOPAL.vcproj 2008-06-13 04:12:17 UTC (rev 20438) +++ opal/trunk/samples/mobileopal/MobileOPAL.vcproj 2008-06-13 04:13:01 UTC (rev 20439) @@ -99,9 +99,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -182,9 +182,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -264,9 +264,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -346,9 +346,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80UD.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -429,9 +429,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -513,9 +513,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\OPAL|0" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -596,9 +596,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -679,9 +679,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -764,9 +764,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -850,9 +850,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -935,9 +935,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> @@ -1020,9 +1020,9 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" - AdditionalFiles="" + AdditionalFiles="msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\MobileOPAL|0" /> <DebuggerTool /> Modified: opal/trunk/src/win32/opal_dll_2005.vcproj =================================================================== --- opal/trunk/src/win32/opal_dll_2005.vcproj 2008-06-13 04:12:17 UTC (rev 20438) +++ opal/trunk/src/win32/opal_dll_2005.vcproj 2008-06-13 04:13:01 UTC (rev 20439) @@ -221,7 +221,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -323,7 +323,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -425,7 +425,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -527,7 +527,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -719,7 +719,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -816,7 +816,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -914,7 +914,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1011,7 +1011,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1214,7 +1214,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1316,7 +1316,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1418,7 +1418,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1520,7 +1520,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2008-06-13 04:12:10
|
Revision: 20438 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20438&view=rev Author: rjongbloed Date: 2008-06-12 21:12:17 -0700 (Thu, 12 Jun 2008) Log Message: ----------- Fixed deployment directory for MobileOPAL Modified Paths: -------------- ptlib/trunk/src/ptlib/msos/PTLib_2005.vcproj Modified: ptlib/trunk/src/ptlib/msos/PTLib_2005.vcproj =================================================================== --- ptlib/trunk/src/ptlib/msos/PTLib_2005.vcproj 2008-06-12 01:58:07 UTC (rev 20437) +++ ptlib/trunk/src/ptlib/msos/PTLib_2005.vcproj 2008-06-13 04:12:17 UTC (rev 20438) @@ -212,7 +212,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -311,7 +311,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -409,7 +409,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -508,7 +508,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -715,7 +715,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -822,7 +822,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -928,7 +928,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1035,7 +1035,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1242,7 +1242,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1349,7 +1349,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1455,7 +1455,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="%CSIDL_PROGRAM_FILES%\OPAL" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> @@ -1562,7 +1562,7 @@ /> <DeploymentTool ForceDirty="-1" - RemoteDirectory="" + RemoteDirectory="%CSIDL_PROGRAM_FILES%\MobileOPAL" RegisterOutput="0" AdditionalFiles="" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-12 01:58:07
|
Revision: 20437 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20437&view=rev Author: csoutheren Date: 2008-06-11 18:58:07 -0700 (Wed, 11 Jun 2008) Log Message: ----------- Fix problem in length calculation of hex media option strings Modified Paths: -------------- opal/trunk/src/opal/mediafmt.cxx Modified: opal/trunk/src/opal/mediafmt.cxx =================================================================== --- opal/trunk/src/opal/mediafmt.cxx 2008-06-11 04:04:33 UTC (rev 20436) +++ opal/trunk/src/opal/mediafmt.cxx 2008-06-12 01:58:07 UTC (rev 20437) @@ -529,7 +529,7 @@ break; if (nibble == 2) { - if (!m_value.SetMinSize((count+1+99)%100)) + if (!m_value.SetMinSize(100*((count+1+99)/100))) break; m_value[count++] = (BYTE)strtoul(pair, NULL, 16); nibble = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-11 04:04:24
|
Revision: 20436 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20436&view=rev Author: csoutheren Date: 2008-06-10 21:04:33 -0700 (Tue, 10 Jun 2008) Log Message: ----------- make libavcodec.so available Added Paths: ----------- opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/ffmpeg/libavcodec.so Copied: opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/ffmpeg/libavcodec.so (from rev 20435, opal/trunk/plugins/video/H.263-ffmpeg/ffmpeg/libavcodec.so) =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-11 04:01:59
|
Revision: 20435 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20435&view=rev Author: csoutheren Date: 2008-06-10 21:01:54 -0700 (Tue, 10 Jun 2008) Log Message: ----------- Add Linux avcodec plugin Added Paths: ----------- opal/trunk/plugins/video/H.263-ffmpeg/ffmpeg/libavcodec.so Added: opal/trunk/plugins/video/H.263-ffmpeg/ffmpeg/libavcodec.so =================================================================== (Binary files differ) Property changes on: opal/trunk/plugins/video/H.263-ffmpeg/ffmpeg/libavcodec.so ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-11 03:58:18
|
Revision: 20434 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20434&view=rev Author: csoutheren Date: 2008-06-10 20:58:27 -0700 (Tue, 10 Jun 2008) Log Message: ----------- backport strcpy fix Modified Paths: -------------- opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx Modified: opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx =================================================================== --- opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:57:16 UTC (rev 20433) +++ opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:58:27 UTC (rev 20434) @@ -261,7 +261,7 @@ if ((env = ::getenv("PTLIBPLUGINDIR")) == NULL && (env = ::getenv("PWLIBPLUGINDIR")) == NULL) { env = (char *)alloca(strlen(P_DEFAULT_PLUGIN_DIR)+1); - strcat(env, P_DEFAULT_PLUGIN_DIR); + strcpy(env, P_DEFAULT_PLUGIN_DIR); } const char * token = strtok(env, DIR_TOKENISER); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-11 03:57:08
|
Revision: 20433 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20433&view=rev Author: csoutheren Date: 2008-06-10 20:57:16 -0700 (Tue, 10 Jun 2008) Log Message: ----------- Grrr..how many bugs can you fit into one line of code Use strcpy instead of strcat to fix problem with uninitialised memory Modified Paths: -------------- opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx Modified: opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx =================================================================== --- opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:54:52 UTC (rev 20432) +++ opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:57:16 UTC (rev 20433) @@ -261,7 +261,7 @@ if ((env = ::getenv("PTLIBPLUGINDIR")) == NULL && (env = ::getenv("PWLIBPLUGINDIR")) == NULL) { env = (char *)alloca(strlen(P_DEFAULT_PLUGIN_DIR)+1); - strcat(env, P_DEFAULT_PLUGIN_DIR); + strcpy(env, P_DEFAULT_PLUGIN_DIR); } const char * token = strtok(env, DIR_TOKENISER); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-11 03:54:44
|
Revision: 20432 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20432&view=rev Author: csoutheren Date: 2008-06-10 20:54:52 -0700 (Tue, 10 Jun 2008) Log Message: ----------- fix memory leak caused by removal of free Modified Paths: -------------- opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx Modified: opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx =================================================================== --- opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:53:13 UTC (rev 20431) +++ opal/trunk/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:54:52 UTC (rev 20432) @@ -259,14 +259,15 @@ char * env; if ((env = ::getenv("PTLIBPLUGINDIR")) == NULL && - (env = ::getenv("PWLIBPLUGINDIR")) == NULL) - env = strdup(P_DEFAULT_PLUGIN_DIR); + (env = ::getenv("PWLIBPLUGINDIR")) == NULL) { + env = (char *)alloca(strlen(P_DEFAULT_PLUGIN_DIR)+1); + strcat(env, P_DEFAULT_PLUGIN_DIR); + } const char * token = strtok(env, DIR_TOKENISER); while (token != NULL) { - if (InternalOpen(token, name)) { + if (InternalOpen(token, name)) return true; - } token = strtok(NULL, DIR_TOKENISER); } return InternalOpen(NULL, name); // Last ditch effort This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2008-06-11 03:53:07
|
Revision: 20431 http://opalvoip.svn.sourceforge.net/opalvoip/?rev=20431&view=rev Author: csoutheren Date: 2008-06-10 20:53:13 -0700 (Tue, 10 Jun 2008) Log Message: ----------- backport bit rate fixes, and fix memory leak caused by removal of free Modified Paths: -------------- opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx Property Changed: ---------------- opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx Modified: opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx =================================================================== --- opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:47:37 UTC (rev 20430) +++ opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx 2008-06-11 03:53:13 UTC (rev 20431) @@ -259,12 +259,14 @@ char * env; if ((env = ::getenv("PTLIBPLUGINDIR")) == NULL && - (env = ::getenv("PWLIBPLUGINDIR")) == NULL) - env = strdup(P_DEFAULT_PLUGIN_DIR); + (env = ::getenv("PWLIBPLUGINDIR")) == NULL) { + env = (char *)alloca(strlen(P_DEFAULT_PLUGIN_DIR)+1); + strcat(env, P_DEFAULT_PLUGIN_DIR); + } const char * token = strtok(env, DIR_TOKENISER); while (token != NULL) { - if (InternalOpen(token, name)) + if (InternalOpen(token, name)) return true; token = strtok(NULL, DIR_TOKENISER); } @@ -916,17 +918,19 @@ avpicture->linesize[2] = frameWidth / 2; avpicture->quality = (float)videoQuality; - avcontext->bit_rate = (bitRate * 3) >> 2; // average bit rate - avcontext->bit_rate_tolerance = bitRate >> 1; + int _bitRate = bitRate; // 10000000 + + avcontext->bit_rate = (_bitRate * 3) >> 2; // average bit rate + avcontext->bit_rate_tolerance = _bitRate >> 1; avcontext->rc_min_rate = 0; // minimum bitrate - avcontext->rc_max_rate = bitRate; // maximum bitrate + avcontext->rc_max_rate = _bitRate; // maximum bitrate avcontext->mb_qmin = avcontext->qmin = videoQMin; avcontext->mb_qmax = avcontext->qmax = videoQMax; avcontext->rc_qsquish = 0; // limit q by clipping //avcontext->rc_eq = (char*) "tex^qComp"; // rate control equation avcontext->rc_eq = (char*) "1"; // rate control equation - avcontext->rc_buffer_size = bitRate * 64; + avcontext->rc_buffer_size = _bitRate * 64; avcontext->max_qdiff = 3; // max q difference between frames avcontext->qcompress = 0.5; // qscale factor between easy & hard scenes (0.0-1.0) @@ -1593,7 +1597,7 @@ int minWidth, minHeight, maxHeight, maxWidth, frameTime, bitRate; FindBoundingBox((const char * const * *)parm, mpi, minWidth, minHeight, maxWidth, maxHeight, frameTime, bitRate); - char ** options = (char **)calloc(14+2, sizeof(char *)); + char ** options = (char **)calloc(16+(5*2)+2, sizeof(char *)); *(char ***)parm = options; if (options == NULL) return 0; @@ -1610,8 +1614,14 @@ options[ 9] = num2str(frameTime); options[10] = strdup(PLUGINCODEC_OPTION_MAX_BIT_RATE); options[11] = num2str(bitRate); - options[12] = strdup("MaxBR"); - options[13] = num2str((bitRate+50)/100); + options[12] = strdup(PLUGINCODEC_OPTION_TARGET_BIT_RATE); + options[13] = num2str(bitRate); + options[14] = strdup("MaxBR"); + options[15] = num2str((bitRate+50)/100); + for (int i = 0; i < 5; i++) { + options[16+i*2] = strdup(StandardVideoSizes[i].optionName); + options[16+i*2+1] = num2str(mpi[i]); + } return 1; } @@ -1631,7 +1641,7 @@ int minWidth, minHeight, maxHeight, maxWidth, frameTime, bitRate; FindBoundingBox((const char * const * *)parm, mpi, minWidth, minHeight, maxWidth, maxHeight, frameTime, bitRate); - char ** options = (char **)calloc(12+5*2+2, sizeof(char *)); + char ** options = (char **)calloc(14+5*2+2, sizeof(char *)); *(char ***)parm = options; if (options == NULL) return 0; @@ -1646,11 +1656,13 @@ options[ 7] = num2str(maxHeight); options[ 8] = strdup(PLUGINCODEC_OPTION_MAX_BIT_RATE); options[ 9] = num2str(bitRate); - options[10] = strdup("MaxBR"); - options[11] = num2str((bitRate+50)/100); + options[10] = strdup(PLUGINCODEC_OPTION_TARGET_BIT_RATE); + options[11] = num2str(bitRate); + options[12] = strdup("MaxBR"); + options[13] = num2str((bitRate+50)/100); for (int i = 0; i < 5; i++) { - options[12+i*2] = strdup(StandardVideoSizes[i].optionName); - options[12+i*2] = num2str(mpi[i]); + options[14+i*2] = strdup(StandardVideoSizes[i].optionName); + options[14+i*2+1] = num2str(mpi[i]); } return 1; Property changes on: opal/branches/csoutheren/BarnardSnapshot1/plugins/video/H.263-ffmpeg/h263ffmpeg.cxx ___________________________________________________________________ Name: svn:keywords - Id Date Author Revision + Revision Author Date This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |