opalvoip-svn Mailing List for OpalVOIP (Page 5)
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...> - 2016-05-12 08:50:54
|
Revision: 34826 http://sourceforge.net/p/opalvoip/code/34826 Author: rjongbloed Date: 2016-05-12 08:50:51 +0000 (Thu, 12 May 2016) Log Message: ----------- Fixed missing virtual causing NAT methods to not be correctly selected by interface. Ultimately causing incorrect media addresses to be included in SDP for SIP. Added the local interface to NAT method PrintOn so appears in trace logs etc. Modified Paths: -------------- ptlib/branches/v2_16/include/ptclib/pnat.h ptlib/branches/v2_16/src/ptclib/pnat.cxx Property Changed: ---------------- ptlib/branches/v2_16/ Index: ptlib/branches/v2_16 =================================================================== --- ptlib/branches/v2_16 2016-05-11 10:31:34 UTC (rev 34825) +++ ptlib/branches/v2_16 2016-05-12 08:50:51 UTC (rev 34826) Property changes on: ptlib/branches/v2_16 ___________________________________________________________________ Modified: svn:ignore ## -24,3 +24,4 ## *.sdf ipch .idea +.vs Modified: ptlib/branches/v2_16/include/ptclib/pnat.h =================================================================== --- ptlib/branches/v2_16/include/ptclib/pnat.h 2016-05-11 10:31:34 UTC (rev 34825) +++ ptlib/branches/v2_16/include/ptclib/pnat.h 2016-05-12 08:50:51 UTC (rev 34826) @@ -251,7 +251,7 @@ /**Return the interface NAT router is using. */ - bool GetInterfaceAddress( + virtual bool GetInterfaceAddress( PIPSocket::Address & internalAddress ///< NAT router internal address returned. ) const; Modified: ptlib/branches/v2_16/src/ptclib/pnat.cxx =================================================================== --- ptlib/branches/v2_16/src/ptclib/pnat.cxx 2016-05-11 10:31:34 UTC (rev 34825) +++ ptlib/branches/v2_16/src/ptclib/pnat.cxx 2016-05-12 08:50:51 UTC (rev 34826) @@ -354,14 +354,20 @@ void PNatMethod::PrintOn(ostream & strm) const { strm << GetFriendlyName() << (IsActive() ? " active" : " deactivated"); + PString server = GetServer(); if (!server.IsEmpty()) strm << " server " << server; + if (m_natType != UnknownNat) { strm << " replies " << GetNatTypeName(); if (m_externalAddress.IsValid()) strm << " with address " << m_externalAddress; } + + PIPSocket::Address iface; + if (GetInterfaceAddress(iface)) + strm << " on interface " << iface; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-11 10:31:36
|
Revision: 34825 http://sourceforge.net/p/opalvoip/code/34825 Author: rjongbloed Date: 2016-05-11 10:31:34 +0000 (Wed, 11 May 2016) Log Message: ----------- Merged revision(s) 34805-34824 from ptlib/branches/v2_16: Fixed correctly detecting lua package on some Linux distros Modified Paths: -------------- ptlib/trunk/configure ptlib/trunk/configure.ac Property Changed: ---------------- ptlib/trunk/ Index: ptlib/trunk =================================================================== --- ptlib/trunk 2016-05-11 10:06:26 UTC (rev 34824) +++ ptlib/trunk 2016-05-11 10:31:34 UTC (rev 34825) Property changes on: ptlib/trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -6,7 +6,7 ## /ptlib/branches/v2_10:25177-29189,32921,32947 /ptlib/branches/v2_12:28485-31603 /ptlib/branches/v2_14:31501-33720 -/ptlib/branches/v2_16:34085-34804 +/ptlib/branches/v2_16:34085-34824 /ptlib/branches/v2_2:20746,20791,20827,22014,22942 /ptlib/branches/v2_4:21086,21094,21147,21160,21185,21281,21296,21305,21322,21337,21363,21467,21471-21472,21506,21508,21623,21695,21744,21746,21763,22241,22958,23045-23046,23061,23066,23712 /ptlib/branches/v2_6:22195,22243,22295,22304,22311,22317,22320,22356,22458,22509,22587,22601-22602,22611,22629,22633,22673,22681,22729,22731-22732,22736,22742,22848,22960,22992,23161,23163,23167,23169,23177,23239,23291,23298,23336,23429,23595,23823,23827,23873,24816 \ No newline at end of property Modified: ptlib/trunk/configure =================================================================== --- ptlib/trunk/configure 2016-05-11 10:06:26 UTC (rev 34824) +++ ptlib/trunk/configure 2016-05-11 10:31:34 UTC (rev 34825) @@ -12667,7 +12667,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua[0-9\.-]*\).*/\1/p" | head -1` +LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua-*[0-9\.]*\).*/\1/p" | head -1` LUA_SYSTEM="yes" Modified: ptlib/trunk/configure.ac =================================================================== --- ptlib/trunk/configure.ac 2016-05-11 10:06:26 UTC (rev 34824) +++ ptlib/trunk/configure.ac 2016-05-11 10:31:34 UTC (rev 34825) @@ -1685,7 +1685,7 @@ AC_LANG_PUSH(C) -LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua[[0-9\.-]]*\).*/\1/p" | head -1` +LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua-*[[0-9\.]]*\).*/\1/p" | head -1` PTLIB_MODULE_OPTION( [LUA], [lua], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-11 10:06:29
|
Revision: 34824 http://sourceforge.net/p/opalvoip/code/34824 Author: rjongbloed Date: 2016-05-11 10:06:26 +0000 (Wed, 11 May 2016) Log Message: ----------- Added statistics gathering for audio frames (e.g. FEC count) when packets forwarded, and no transcoding. Modified Paths: -------------- opal/trunk/include/opal/patch.h opal/trunk/src/opal/patch.cxx Modified: opal/trunk/include/opal/patch.h =================================================================== --- opal/trunk/include/opal/patch.h 2016-05-11 07:02:59 UTC (rev 34823) +++ opal/trunk/include/opal/patch.h 2016-05-11 10:06:26 UTC (rev 34824) @@ -272,13 +272,24 @@ RTP_DataFrameList m_intermediateFrames; RTP_DataFrameList m_finalFrames; -#if OPAL_VIDEO && OPAL_STATISTICS - OpalVideoFormat m_videoFormat; - OpalVideoFormat::FrameDetectorPtr m_keyFrameDetector; +#if OPAL_STATISTICS + OpalAudioFormat m_audioFormat; + OpalAudioFormat::FrameDetectorPtr m_audioFrameDetector; + struct AudioStats { + unsigned m_silent; + unsigned m_FEC; + AudioStats() : m_silent(0), m_FEC(0) { } + }; + typedef map<RTP_SyncSourceId, AudioStats> AudioStatsMap; + AudioStatsMap m_audioStatistics; +#if OPAL_VIDEO + OpalVideoFormat m_videoFormat; + OpalVideoFormat::FrameDetectorPtr m_videoFrameDetector; typedef map<RTP_SyncSourceId, OpalVideoStatistics> VideoStatsMap; VideoStatsMap m_videoStatistics; - PDECLARE_MUTEX(m_videoStatsMutex); -#endif +#endif // OPAL_VIDEO + PDECLARE_MUTEX(m_statsMutex); +#endif // OPAL_STATISTICS }; PList<Sink> m_sinks; Modified: opal/trunk/src/opal/patch.cxx =================================================================== --- opal/trunk/src/opal/patch.cxx 2016-05-11 07:02:59 UTC (rev 34823) +++ opal/trunk/src/opal/patch.cxx 2016-05-11 10:06:26 UTC (rev 34824) @@ -308,9 +308,9 @@ m_stream->SetDataSize(packetSize, packetTime); m_stream->InternalUpdateMediaFormat(m_stream->GetMediaFormat()); m_patch.m_source.InternalUpdateMediaFormat(m_patch.m_source.GetMediaFormat()); + m_audioFormat = sourceFormat; #if OPAL_VIDEO - if (sourceFormat.GetMediaType() == OpalMediaType::Video()) - m_videoFormat = sourceFormat; + m_videoFormat = sourceFormat; #endif // OPAL_VIDEO PTRACE(3, "Changed to direct media on " << m_patch); return true; @@ -498,14 +498,20 @@ if (fromSource) m_stream->GetStatistics(statistics, true); + { + PWaitAndSignal mutex(m_statsMutex); + AudioStatsMap::const_iterator itAud = m_audioStatistics.find(statistics.m_SSRC); + if (itAud != m_audioStatistics.end()) { + //statistics.m_silent = itAud->second.m_silent; + statistics.m_FEC = itAud->second.m_FEC; + } + #if OPAL_VIDEO - { - PWaitAndSignal mutex(m_videoStatsMutex); - VideoStatsMap::const_iterator it = m_videoStatistics.find(statistics.m_SSRC); - if (it != m_videoStatistics.end()) - statistics.OpalVideoStatistics::operator=(it->second); + VideoStatsMap::const_iterator itVid = m_videoStatistics.find(statistics.m_SSRC); + if (itVid != m_videoStatistics.end()) + statistics.OpalVideoStatistics::operator=(itVid->second); +#endif } -#endif if (m_primaryCodec != NULL) m_primaryCodec->GetStatistics(statistics); @@ -956,7 +962,7 @@ const OpalVideoUpdatePicture * update = dynamic_cast<const OpalVideoUpdatePicture *>(&command); if (update != NULL) { bool full = dynamic_cast<const OpalVideoPictureLoss *>(&command) == NULL; - PWaitAndSignal mutex(m_videoStatsMutex); + PWaitAndSignal mutex(m_statsMutex); m_videoStatistics[0].IncrementUpdateCount(full); if (update->GetSyncSource() != 0) m_videoStatistics[update->GetSyncSource()].IncrementUpdateCount(full); @@ -974,23 +980,46 @@ return true; if (bypassing || m_primaryCodec == NULL) { + OpalAudioFormat::FrameType audioFrameType; + if (m_audioFormat.IsValid()) + audioFrameType = m_audioFormat.GetFrameType(sourceFrame.GetPayloadPtr(), sourceFrame.GetPayloadSize(), m_audioFrameDetector); + #if OPAL_VIDEO // Must be done before the WritePacket() which could encrypt the packet - OpalVideoFormat::FrameType frameType; + OpalVideoFormat::FrameType videoFrameType; if (m_videoFormat.IsValid()) - frameType = m_videoFormat.GetFrameType(sourceFrame.GetPayloadPtr(), sourceFrame.GetPayloadSize(), m_keyFrameDetector); + videoFrameType = m_videoFormat.GetFrameType(sourceFrame.GetPayloadPtr(), sourceFrame.GetPayloadSize(), m_videoFrameDetector); else - frameType = OpalVideoFormat::e_UnknownFrameType; + videoFrameType = OpalVideoFormat::e_UnknownFrameType; #endif // OPAL_VIDEO if (!m_stream->WritePacket(sourceFrame)) return false; + RTP_SyncSourceId ssrc; + if (audioFrameType != OpalAudioFormat::e_UnknownFrameType) { + PWaitAndSignal mutex(m_statsMutex); + + AudioStats & allStats = m_audioStatistics[0]; + AudioStats * ssrcStats = (ssrc = sourceFrame.GetSyncSource()) != 0 ? &m_audioStatistics[ssrc] : NULL; + + if (audioFrameType&OpalAudioFormat::e_SilenceFrame) { + ++allStats.m_silent; + if (ssrcStats) + ++ssrcStats->m_silent; + } + + if (audioFrameType&OpalAudioFormat::e_FECFrame) { + ++allStats.m_FEC; + if (ssrcStats) + ++ssrcStats->m_FEC; + } + } + #if OPAL_VIDEO - RTP_SyncSourceId ssrc; - switch (frameType) { - case OpalVideoFormat::e_IntraFrame : - m_videoStatsMutex.Wait(); + switch (videoFrameType) { + case OpalVideoFormat::e_IntraFrame : + m_statsMutex.Wait(); m_videoStatistics[0].IncrementFrames(true); if ((ssrc = sourceFrame.GetSyncSource()) != 0) m_videoStatistics[ssrc].IncrementFrames(true); @@ -998,18 +1027,18 @@ << ", ts=" << sourceFrame.GetTimestamp() << ", total=" << m_videoStatistics[ssrc].m_totalFrames << ", key=" << m_videoStatistics[ssrc].m_keyFrames << ", req=" << m_videoStatistics[ssrc].m_lastUpdateRequestTime << ", on " << m_patch); - m_videoStatsMutex.Signal(); + m_statsMutex.Signal(); break; case OpalVideoFormat::e_InterFrame : - m_videoStatsMutex.Wait(); + m_statsMutex.Wait(); m_videoStatistics[0].IncrementFrames(false); if ((ssrc = sourceFrame.GetSyncSource()) != 0) m_videoStatistics[ssrc].IncrementFrames(false); PTRACE(5, "P-Frame detected: SSRC=" << RTP_TRACE_SRC(ssrc) << ", ts=" << sourceFrame.GetTimestamp() << ", total=" << m_videoStatistics[ssrc].m_totalFrames << ", key=" << m_videoStatistics[ssrc].m_keyFrames << ", on " << m_patch); - m_videoStatsMutex.Signal(); + m_statsMutex.Signal(); break; default : @@ -1054,12 +1083,9 @@ } #if OPAL_VIDEO && OPAL_STATISTICS - //if (rcEnabled) - // rateController.AddFrame(totalPayloadSize, frameCount); - OpalVideoTranscoder * videoCodec = dynamic_cast<OpalVideoTranscoder *>(m_primaryCodec); if (videoCodec != NULL && !m_intermediateFrames.IsEmpty()) { - PWaitAndSignal mutex(m_videoStatsMutex); + PWaitAndSignal mutex(m_statsMutex); m_videoStatistics[0].IncrementFrames(videoCodec->WasLastFrameIFrame()); } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cso...@us...> - 2016-05-11 07:03:01
|
Revision: 34823 http://sourceforge.net/p/opalvoip/code/34823 Author: csoutheren Date: 2016-05-11 07:02:59 +0000 (Wed, 11 May 2016) Log Message: ----------- Fix compilation warnings on Ubuntu g++ 4.8.4 and Apple LLVM version 7.3.0 Modified Paths: -------------- ptlib/trunk/include/ptlib/object.h ptlib/trunk/src/ptclib/pstun.cxx ptlib/trunk/src/ptclib/xmpp.cxx ptlib/trunk/src/ptlib/unix/svcproc.cxx Modified: ptlib/trunk/include/ptlib/object.h =================================================================== --- ptlib/trunk/include/ptlib/object.h 2016-05-10 09:55:15 UTC (rev 34822) +++ ptlib/trunk/include/ptlib/object.h 2016-05-11 07:02:59 UTC (rev 34823) @@ -125,6 +125,11 @@ #endif // _MSC_VER #define P_DISABLE_MSVC_WARNINGS(warnings, statement) P_PUSH_MSVC_WARNINGS(warnings) statement P_POP_MSVC_WARNINGS() +#ifdef _MSC_VER + #define PIGNORE_RETURN(t,e) (void)(e) +#else + #define PIGNORE_RETURN(t,e) do { t unused __attribute__((unused)) = (e); } while(0) +#endif // We are gradually converting over to standard C++ names, these // are for backward compatibility only Modified: ptlib/trunk/src/ptclib/pstun.cxx =================================================================== --- ptlib/trunk/src/ptclib/pstun.cxx 2016-05-10 09:55:15 UTC (rev 34822) +++ ptlib/trunk/src/ptclib/pstun.cxx 2016-05-11 07:02:59 UTC (rev 34823) @@ -463,7 +463,9 @@ if (GetSize() < (PINDEX)sizeof(PSTUNMessageHeader)) return false; - return *(PUInt32b *)&((*this)->transactionId) == RFC5389_MAGIC_COOKIE; + const BYTE * ptr = (*this)->transactionId; + + return *((const PUInt32b *)ptr) == RFC5389_MAGIC_COOKIE; } @@ -539,7 +541,8 @@ return false; // do checks for RFC5389: magic cookie and top two bits of type must be 00 - if (*(PUInt32b *)&(header->transactionId) == RFC5389_MAGIC_COOKIE && ((header->msgType & 0x00c0) != 0x00)) { + const BYTE * ptr = header->transactionId; + if (*(PUInt32b *)ptr == RFC5389_MAGIC_COOKIE && ((header->msgType & 0x00c0) != 0x00)) { PTRACE(3, "STUN\tPacket received with magic cookie, but type bits are incorrect."); return false; } Modified: ptlib/trunk/src/ptclib/xmpp.cxx =================================================================== --- ptlib/trunk/src/ptclib/xmpp.cxx 2016-05-10 09:55:15 UTC (rev 34822) +++ ptlib/trunk/src/ptclib/xmpp.cxx 2016-05-11 07:02:59 UTC (rev 34823) @@ -453,7 +453,7 @@ PXMLElement * XMPP::Stanza::GetElement(const PString& name, PINDEX i) { - return GetElement(name, i); + return PXML::GetElement(name, i); } Modified: ptlib/trunk/src/ptlib/unix/svcproc.cxx =================================================================== --- ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-05-10 09:55:15 UTC (rev 34822) +++ ptlib/trunk/src/ptlib/unix/svcproc.cxx 2016-05-11 07:02:59 UTC (rev 34823) @@ -405,9 +405,9 @@ if (args.HasOption('H')) { int uid = geteuid(); - (void)seteuid(getuid()); // Switch back to starting uid for next call + PIGNORE_RETURN(int,seteuid(getuid())); // Switch back to starting uid for next call SetMaxHandles(args.GetOptionString('H').AsInteger()); - (void)seteuid(uid); + PIGNORE_RETURN(int,seteuid(uid)); } #ifdef P_LINUX @@ -418,7 +418,7 @@ cout << "Could not get current core file size : error = " << errno << endl; else { int uid = geteuid(); - (void)seteuid(getuid()); // Switch back to starting uid for next call + PIGNORE_RETURN(int,seteuid(getuid())); // Switch back to starting uid for next call int v = args.GetOptionString('C').AsInteger(); rlim.rlim_cur = v; if (setrlimit(RLIMIT_CORE, &rlim) != 0) @@ -427,7 +427,7 @@ getrlimit(RLIMIT_CORE, &rlim); cout << "Core file size set to " << rlim.rlim_cur << "/" << rlim.rlim_max << endl; } - (void)seteuid(uid); + PIGNORE_RETURN(int,seteuid(uid)); } } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-10 09:55:17
|
Revision: 34822 http://sourceforge.net/p/opalvoip/code/34822 Author: rjongbloed Date: 2016-05-10 09:55:15 +0000 (Tue, 10 May 2016) Log Message: ----------- Avoid issues in jitter buffer with constant delay offset caused by initial in rush of packets. Modified Paths: -------------- opal/trunk/include/rtp/jitter.h opal/trunk/src/rtp/jitter.cxx Modified: opal/trunk/include/rtp/jitter.h =================================================================== --- opal/trunk/include/rtp/jitter.h 2016-05-09 09:47:12 UTC (rev 34821) +++ opal/trunk/include/rtp/jitter.h 2016-05-10 09:55:15 UTC (rev 34822) @@ -332,8 +332,8 @@ PDECLARE_MUTEX(m_bufferMutex); PSemaphore m_frameCount; + PTimeInterval m_lastInsertTick; #if PTRACING - PTimeInterval m_lastInsertTick; PTimeInterval m_lastRemoveTick; public: static unsigned sm_EveryPacketLogLevel; Modified: opal/trunk/src/rtp/jitter.cxx =================================================================== --- opal/trunk/src/rtp/jitter.cxx 2016-05-09 09:47:12 UTC (rev 34821) +++ opal/trunk/src/rtp/jitter.cxx 2016-05-10 09:55:15 UTC (rev 34822) @@ -291,8 +291,7 @@ , m_consecutiveEmpty(0) , m_lastSyncSource(0) #if PTRACING - , m_lastInsertTick(PTimer::Tick()) - , m_lastRemoveTick(m_lastInsertTick) + , m_lastRemoveTick(PTimer::Tick()) #endif { InternalReset(); @@ -393,7 +392,7 @@ } -PBoolean OpalAudioJitterBuffer::WriteData(const RTP_DataFrame & frame, PTimeInterval PTRACE_PARAM(tick)) +PBoolean OpalAudioJitterBuffer::WriteData(const RTP_DataFrame & frame, PTimeInterval tick) { if (m_closed) return false; @@ -409,6 +408,16 @@ RTP_SequenceNumber currentSequenceNum = frame.GetSequenceNumber(); RTP_SyncSourceId newSyncSource = frame.GetSyncSource(); + // Avoid issues with constant delay offset caused by initial in rush of packets + if (m_lastSyncSource == 0 && (m_lastInsertTick == 0 || (tick - m_lastInsertTick) < 10)) { + PTRACE(std::min(sm_EveryPacketLogLevel,4U), "Flushing initial audio packet:" + " SSRC=" << RTP_TRACE_SRC(newSyncSource) << + " sn=" << currentSequenceNum << + " ts=" << timestamp); + m_lastInsertTick = tick; + return true; + } + // Check for remote switching media senders, they shouldn't do this but do anyway if (newSyncSource != m_lastSyncSource) { PTRACE_IF(std::min(sm_EveryPacketLogLevel,4U), m_lastSyncSource != 0, "Buffer reset due to SSRC change from " @@ -521,9 +530,7 @@ " dT=" << (tick - m_lastInsertTick) << "," " payload=" << frame.GetPayloadSize() << "," " size=" << m_frames.size()); -#if PTRACING m_lastInsertTick = tick; -#endif m_frameCount.Signal(); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-09 09:47:14
|
Revision: 34821 http://sourceforge.net/p/opalvoip/code/34821 Author: rjongbloed Date: 2016-05-09 09:47:12 +0000 (Mon, 09 May 2016) Log Message: ----------- Enhanced the PTimeInterval printing so can do nanosecond accuracy. Also cleared up some incorrect documentation and code around negative precision (doc said width!) used to indicate formatting options. Modified Paths: -------------- ptlib/trunk/include/ptlib/timeint.h ptlib/trunk/samples/timing/timing.cxx ptlib/trunk/src/ptlib/common/ptime.cxx Modified: ptlib/trunk/include/ptlib/timeint.h =================================================================== --- ptlib/trunk/include/ptlib/timeint.h 2016-05-06 18:32:03 UTC (rev 34820) +++ ptlib/trunk/include/ptlib/timeint.h 2016-05-09 09:47:12 UTC (rev 34821) @@ -150,11 +150,12 @@ }; /** Output the time interval as a string. - The \p width, if negative, can control which components (hours/minutes) - are output. < -6 suppresses hour, < -3 suppresses minutes. + If \p precision is <= 0 and \p format is NormalFormat then the + format used will be IncludeDays, and the positive value + for \p precision is then used as number of decimals. */ PString AsString( - int decimals = 3, ///< DEcimals for milliseconds part + int decimals = 3, ///< Decimals for milliseconds part Formats format = NormalFormat, ///< Output format options int width = 1 ///< Width of output ) const; @@ -448,12 +449,6 @@ ) const; //@} - protected: - virtual int64_t InternalGet() const; - virtual void InternalSet(int64_t t); - - private: - atomic<int64_t> m_nanoseconds; static int64_t const MicroToNano = 1000; static int64_t const MilliToNano = MicroToNano*1000; static int64_t const SecsToNano = MilliToNano*1000; @@ -461,7 +456,14 @@ static int64_t const HoursToNano = MinsToNano*60; static int64_t const DaysToNano = HoursToNano*24; + protected: + virtual int64_t InternalGet() const; + virtual void InternalSet(int64_t t); + private: + atomic<int64_t> m_nanoseconds; + + // Include platform dependent part of class #ifdef _WIN32 #include "msos/ptlib/timeint.h" Modified: ptlib/trunk/samples/timing/timing.cxx =================================================================== --- ptlib/trunk/samples/timing/timing.cxx 2016-05-06 18:32:03 UTC (rev 34820) +++ ptlib/trunk/samples/timing/timing.cxx 2016-05-09 09:47:12 UTC (rev 34821) @@ -49,6 +49,26 @@ { cout << "Timing Test Program\n" << endl; + PTimeInterval nano = PTimeInterval::NanoSeconds(-543210123456789LL); + int w, p; + for (w = 1; w <= 18; w++) + for (p = 0; p <= 9; p++) + cout << "TimeInterval scientific, width " << w << ", precision " << p << ": \"" + << setiosflags(ios::scientific) + << setw(w) << setprecision(p) << nano + << resetiosflags(ios::scientific) << '"' << endl; + nano.SetNanoSeconds(PTimeInterval::DaysToNano*10+ + PTimeInterval::HoursToNano*12+ + PTimeInterval::MinsToNano*34+ + PTimeInterval::SecsToNano*56+ + 123456789); + for (w = 1; w <= 23; w++) + for (p = -9; p <= 9; p++) + cout << "TimeInterval output, width " << w << ", precision " << p << ": \"" + << setw(w) << setprecision(p) << nano << '"' << endl; + + cout << "\n\n"; + PTime now; cout << "Time is now " << now.AsString("h:m:s.u d/M/y") << "\n" "Time is now " << now.AsString("yyyy/MM/dd h:m:s.uuuu") << "\n" @@ -119,19 +139,6 @@ cout << "Actual resolution is " << 1000000/count << "us\n" "Current tick: \"" << newTick << '"' << endl; - oldTick = 123456; - int w, p; - for (w = 1; w <= 10; w++) - for (p = 0; p < 4; p++) - cout << "TimeInterval output, width " << w << ", precision " << p << ": \"" - << setw(w) << setprecision(p) << oldTick << '"' << endl; - for (w = 1; w <= 8; w++) - for (p = 0; p < 4; p++) - cout << "TimeInterval scientific, width " << w << ", precision " << p << ": \"" - << setiosflags(ios::scientific) - << setw(w) << setprecision(p) << oldTick - << resetiosflags(ios::scientific) << '"' << endl; - cout << "\nTesting sleep function" << endl; PTime start_time1; PINDEX loop; Modified: ptlib/trunk/src/ptlib/common/ptime.cxx =================================================================== --- ptlib/trunk/src/ptlib/common/ptime.cxx 2016-05-06 18:32:03 UTC (rev 34820) +++ ptlib/trunk/src/ptlib/common/ptime.cxx 2016-05-09 09:47:12 UTC (rev 34821) @@ -64,17 +64,9 @@ void PTimeInterval::PrintOn(ostream & stream) const { - int precision = (int)stream.precision(); - - Formats fmt = NormalFormat; - if ((stream.flags()&ios::scientific) != 0) - fmt = SecondsOnly; - else if (precision > -4 && precision < 0) { - fmt = IncludeDays; - precision = -precision; - } - - stream << AsString(precision, fmt, (int)stream.width()); + stream << AsString((int)stream.precision(), + (stream.flags()&ios::scientific) != 0 ? SecondsOnly : NormalFormat, + (int)stream.width()); } @@ -103,93 +95,57 @@ str << right << setfill('0'); - if (precision > 3) - precision = 3; - else if (precision < -9) - precision = -9; - else if (precision < -6) - precision = -6; - else if (precision < -3) - precision = -3; + if (precision <= 0 && format == NormalFormat) { + format = IncludeDays; + precision = -precision; + } + if (precision > 9) + precision = 9; - PInt64 ms = GetMilliSeconds(); - if (ms < 0) { + PInt64 ns = GetNanoSeconds(); + if (ns < 0) { str << '-'; - ms = -ms; + ns = -ns; } - if (format == SecondsOnly) { - switch (precision) { - case 1 : - str << ms/1000 << '.' << (int)(ms%1000+50)/100; - break; + if (format == SecondsOnly) + str << ns/SecsToNano; + else { + bool hadPrevious = false; - case 2 : - str << ms/1000 << '.' << setw(2) << (int)(ms%1000+5)/10; - break; - - case 3 : - str << ms/1000 << '.' << setw(3) << (int)(ms%1000); - break; - - default : - str << (ms+500)/1000; - } - - return str; - } - - PBoolean hadPrevious = false; - long tmp; - - if (format == IncludeDays) { - tmp = (long)(ms/86400000); - if (tmp > 0 || width > (precision+10)) { - str << tmp << 'd'; + if (format == IncludeDays && (ns > DaysToNano || width > (precision + 10))) { + str << ns/DaysToNano << 'd'; + ns = ns % DaysToNano; hadPrevious = true; } - tmp = (long)(ms%86400000)/3600000; - } - else - tmp = (long)(ms/3600000); - - if (precision >= -9) { - if (hadPrevious || tmp > 0 || width > (precision+7)) { + if (hadPrevious || ns > HoursToNano || width > (precision + 7)) { if (hadPrevious) str << ':' << setw(2); - str << tmp; + str << ns/HoursToNano; hadPrevious = true; } - } - if (precision >= -6) { - tmp = (long)(ms%3600000)/60000; - if (hadPrevious || tmp > 0 || width > (precision+4)) { + ns = ns % HoursToNano; + if (hadPrevious || ns > MinsToNano || width > (precision + 4)) { if (hadPrevious) str << ':' << setw(2); - str << tmp; + str << ns/MinsToNano; hadPrevious = true; } - } - if (precision >= -3) { if (hadPrevious) str << ':' << setw(2); - str << (long)(ms%60000)/1000; + str << (ns % MinsToNano) / SecsToNano; } - switch (precision) { - case 1 : - str << '.' << (int)(ms%1000)/100; - break; + ns = ns%SecsToNano; - case 2 : - str << '.' << setw(2) << (int)(ms%1000)/10; - break; - - case 3 : - str << '.' << setw(3) << (int)(ms%1000); + if (precision > 0) { + int64_t powerOfTen = SecsToNano; + for (int i = 0; i < precision; ++i) + powerOfTen /= 10; + str << '.' << setw(precision) << (int)(ns%SecsToNano+powerOfTen/2)/powerOfTen; } return str; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-06 18:32:05
|
Revision: 34820 http://sourceforge.net/p/opalvoip/code/34820 Author: rjongbloed Date: 2016-05-06 18:32:03 +0000 (Fri, 06 May 2016) Log Message: ----------- Fixed jitter buffer when in zero delay mode. Modified Paths: -------------- opal/trunk/src/rtp/jitter.cxx Modified: opal/trunk/src/rtp/jitter.cxx =================================================================== --- opal/trunk/src/rtp/jitter.cxx 2016-05-06 17:08:47 UTC (rev 34819) +++ opal/trunk/src/rtp/jitter.cxx 2016-05-06 18:32:03 UTC (rev 34820) @@ -390,7 +390,6 @@ m_synchronisationState = e_SynchronisationStart; m_frames.clear(); - m_frameCount.Reset(); } @@ -572,7 +571,12 @@ m_currentJitterDelay = 0; m_frameCount.Wait(); // Go synchronous PWaitAndSignal mutex(m_bufferMutex); - if (!m_frames.empty()) { + if (m_frames.empty()) { + // Must have been reset, clear the semaphore. + while (m_frameCount.Wait(0)) + ; + } + else { FrameMap::iterator oldestFrame = m_frames.begin(); frame = oldestFrame->second; m_frames.erase(oldestFrame); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-06 17:08:50
|
Revision: 34819 http://sourceforge.net/p/opalvoip/code/34819 Author: rjongbloed Date: 2016-05-06 17:08:47 +0000 (Fri, 06 May 2016) Log Message: ----------- Added some compile time optional code to calculate jitter buffer latency Modified Paths: -------------- opal/trunk/include/opal_config.h.in opal/trunk/include/rtp/rtp_stream.h opal/trunk/src/rtp/rtp_stream.cxx Modified: opal/trunk/include/opal_config.h.in =================================================================== --- opal/trunk/include/opal_config.h.in 2016-05-06 17:00:47 UTC (rev 34818) +++ opal/trunk/include/opal_config.h.in 2016-05-06 17:08:47 UTC (rev 34819) @@ -204,6 +204,10 @@ // G.711 Packet Loss Concealment #undef OPAL_G711PLC +#if PTRACING + #undef OPAL_JITTER_BUFFER_LATENCY_CHECK +#endif + #if OPAL_VIDEO // Uncompressed video over RTP #undef OPAL_RFC4175 Modified: opal/trunk/include/rtp/rtp_stream.h =================================================================== --- opal/trunk/include/rtp/rtp_stream.h 2016-05-06 17:00:47 UTC (rev 34818) +++ opal/trunk/include/rtp/rtp_stream.h 2016-05-06 17:08:47 UTC (rev 34819) @@ -220,6 +220,11 @@ PDECLARE_RTPDataNotifier(OpalRTPMediaStream, OnReceivedPacket); OpalRTPSession::DataNotifier m_receiveNotifier; +#if OPAL_JITTER_BUFFER_LATENCY_CHECK + PTimeInterval m_jbLatencyAccumulator; + unsigned m_jbLatencySampleCount; +#endif + PTRACE_THROTTLE(m_throttleWriteData,3,500); PTRACE_THROTTLE(m_throttleSendReport,3,500); }; Modified: opal/trunk/src/rtp/rtp_stream.cxx =================================================================== --- opal/trunk/src/rtp/rtp_stream.cxx 2016-05-06 17:00:47 UTC (rev 34818) +++ opal/trunk/src/rtp/rtp_stream.cxx 2016-05-06 17:08:47 UTC (rev 34819) @@ -70,6 +70,10 @@ , m_pictureLossThrottleTime(-1) #endif , m_receiveNotifier(PCREATE_RTPDataNotifier(OnReceivedPacket)) +#if OPAL_JITTER_BUFFER_LATENCY_CHECK + , m_jbLatencySampleCount(0) +#endif + { /* If we are a source then we should set our buffer size to the max practical UDP packet size. This means we have a buffer that can accept @@ -328,14 +332,34 @@ if (!m_jitterBuffer->ReadData(packet, m_readTimeout)) return false; + timestamp = packet.GetTimestamp(); + #if OPAL_VIDEO if (packet.GetDiscontinuity() > 0 && mediaFormat.GetMediaType() == OpalMediaType::Video()) { PTRACE(3, "Automatically requesting video update due to " << packet.GetDiscontinuity() << " missing packets."); - ExecuteCommand(OpalVideoPictureLoss(packet.GetSequenceNumber(), packet.GetTimestamp(), 0, packet.GetSyncSource())); + ExecuteCommand(OpalVideoPictureLoss(packet.GetSequenceNumber(), timestamp, 0, packet.GetSyncSource())); } #endif - timestamp = packet.GetTimestamp(); +#if OPAL_JITTER_BUFFER_LATENCY_CHECK + if (PTrace::CanTrace(3) && packet.GetPayloadSize() > 0) { + unsigned jbDelay = m_jitterBuffer->GetCurrentJitterDelay(); + unsigned jbPktTime = m_jitterBuffer->GetPacketTime(); + if (jbDelay > 0 && jbPktTime > 0) { + m_jbLatencyAccumulator += packet.GetMetaData().m_networkTime.GetElapsed(); + if (++m_jbLatencySampleCount > 100) { + PTimeInterval averageTime = m_jbLatencyAccumulator / m_jbLatencySampleCount; + m_jbLatencyAccumulator = 0; + m_jbLatencySampleCount = 0; + + bool good = averageTime < (jbDelay + 2 * jbPktTime) / m_jitterBuffer->GetTimeUnits(); + PTRACE(good ? 5 : 3, "Packet latency " << (good ? "good" : "BAD") + << " (avg=" << averageTime << ") in jitter buffer " << *m_jitterBuffer); + } + } + } +#endif // OPAL_JITTER_BUFFER_LATENCY_CHECK + return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-06 17:00:49
|
Revision: 34818 http://sourceforge.net/p/opalvoip/code/34818 Author: rjongbloed Date: 2016-05-06 17:00:47 +0000 (Fri, 06 May 2016) Log Message: ----------- Restored value of a PTimer, which is time remaining when running, to be zero when not running. Actually previous implementation would have been a negative time, but zero is more intuitive. Modified Paths: -------------- ptlib/trunk/src/ptlib/common/osutils.cxx Modified: ptlib/trunk/src/ptlib/common/osutils.cxx =================================================================== --- ptlib/trunk/src/ptlib/common/osutils.cxx 2016-05-05 14:32:19 UTC (rev 34817) +++ ptlib/trunk/src/ptlib/common/osutils.cxx 2016-05-06 17:00:47 UTC (rev 34818) @@ -1188,7 +1188,7 @@ int64_t PTimer::InternalGet() const { if (!m_running) - return PTimeInterval::InternalGet(); + return 0; PTimeInterval diff = m_absoluteTime - Tick(); if (diff < 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-05 14:32:22
|
Revision: 34817 http://sourceforge.net/p/opalvoip/code/34817 Author: rjongbloed Date: 2016-05-05 14:32:19 +0000 (Thu, 05 May 2016) Log Message: ----------- Fixed incorrect inclusion of watermark video when not enabled in OpenPhone Modified Paths: -------------- opal/trunk/samples/openphone/main.cxx Modified: opal/trunk/samples/openphone/main.cxx =================================================================== --- opal/trunk/samples/openphone/main.cxx 2016-05-05 14:31:40 UTC (rev 34816) +++ opal/trunk/samples/openphone/main.cxx 2016-05-05 14:32:19 UTC (rev 34817) @@ -2940,7 +2940,7 @@ OpalMediaStream::DetailAudio | OpalMediaStream::DetailEOL); } - else { + else if (!m_VideoWatermarkDevice.IsEmpty()) { OpalVideoMediaStream * videoStream = dynamic_cast<OpalVideoMediaStream *>(&patch.GetSource()); if (videoStream != NULL) { PVideoInputDevice * device = PVideoInputDevice::CreateOpenedDevice(m_VideoWatermarkDevice, false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-05 14:31:43
|
Revision: 34816 http://sourceforge.net/p/opalvoip/code/34816 Author: rjongbloed Date: 2016-05-05 14:31:40 +0000 (Thu, 05 May 2016) Log Message: ----------- Cleaned up trace logs in silence detect Modified Paths: -------------- opal/trunk/src/codec/silencedetect.cxx Modified: opal/trunk/src/codec/silencedetect.cxx =================================================================== --- opal/trunk/src/codec/silencedetect.cxx 2016-05-05 11:40:21 UTC (rev 34815) +++ opal/trunk/src/codec/silencedetect.cxx 2016-05-05 14:31:40 UTC (rev 34816) @@ -38,6 +38,7 @@ #include <opal/patch.h> #define new PNEW +#define PTraceModule() "Silence" extern "C" { @@ -55,7 +56,7 @@ // Initialise the adaptive threshold variables. SetParameters(theParam); - PTRACE(4, "Silence\tHandler created"); + PTRACE(4, "Handler created"); } @@ -91,7 +92,7 @@ else AdaptiveReset(); - PTRACE(3, "Silence\tParameters set: " + PTRACE(3, "Parameters set: " "mode=" << m_mode << ", " "threshold=" << m_levelThreshold << ", " "silencedb=" << m_silenceDeadband << " samples, " @@ -227,7 +228,7 @@ // If have had enough consecutive frames talking/silent, swap modes. if (m_receivedTime >= (m_lastResult != IsSilent ? m_silenceDeadband : m_signalDeadband)) { m_lastResult = m_lastResult != IsSilent ? IsSilent : VoiceActivated; - PTRACE(4, "Silence\tDetector transition: " + PTRACE(4, "Detector transition: " << (m_lastResult != IsSilent ? "Talk" : "Silent") << " level=" << m_lastSignalLevel << " threshold=" << m_levelThreshold); @@ -251,7 +252,7 @@ if (m_lastSignalLevel > 1) { // Bootstrap condition, use first frame level as silence level m_levelThreshold = m_lastSignalLevel/2; - PTRACE(4, "Silence\tThreshold initialised to: " << m_levelThreshold); + PTRACE(4, "Threshold initialised to: " << m_levelThreshold); } return m_lastResult; } @@ -283,7 +284,7 @@ int delta = (m_signalMinimum - m_levelThreshold)/4; if (delta != 0) { m_levelThreshold += delta; - PTRACE(4, "Silence\tThreshold increased to: " << m_levelThreshold); + PTRACE(4, "Threshold increased to: " << m_levelThreshold); } } else if (m_silenceReceivedTime >= m_adaptivePeriod) { @@ -296,7 +297,7 @@ unsigned newThreshold = (m_levelThreshold + m_silenceMaximum)/2 + 1; if (m_levelThreshold != newThreshold) { m_levelThreshold = newThreshold; - PTRACE(4, "Silence\tThreshold decreased to: " << m_levelThreshold); + PTRACE(4, "Threshold decreased to: " << m_levelThreshold); } } else if (m_signalReceivedTime > m_silenceReceivedTime) { @@ -305,7 +306,7 @@ silence we should creep up a bit. */ m_levelThreshold++; - PTRACE(4, "Silence\tThreshold incremented to: " << m_levelThreshold + PTRACE(4, "Threshold incremented to: " << m_levelThreshold << " signal=" << m_signalReceivedTime << ' ' << m_signalMinimum << " silence=" << m_silenceReceivedTime << ' ' << m_silenceMaximum); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-05 11:40:23
|
Revision: 34815 http://sourceforge.net/p/opalvoip/code/34815 Author: rjongbloed Date: 2016-05-05 11:40:21 +0000 (Thu, 05 May 2016) Log Message: ----------- Fixed recent SRTP const issue change for different platforms Modified Paths: -------------- opal/trunk/configure opal/trunk/configure.ac opal/trunk/src/rtp/srtp_session.cxx Modified: opal/trunk/configure =================================================================== --- opal/trunk/configure 2016-05-05 11:05:32 UTC (rev 34814) +++ opal/trunk/configure 2016-05-05 11:40:21 UTC (rev 34815) @@ -7192,7 +7192,7 @@ $as_echo_n "checking for SRTP const in error functions... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#inclide <srtp/srtp.h> +#include <srtp/srtp.h> int main () { @@ -7230,9 +7230,7 @@ $as_echo "#define HAS_SRTP_SRTP_H 0" >>confdefs.h SRTP_MSG="yes (internal)" - $as_echo "#define OPAL_SRTP_ERROR_CONST /*const*/" >>confdefs.h - fi fi Modified: opal/trunk/configure.ac =================================================================== --- opal/trunk/configure.ac 2016-05-05 11:05:32 UTC (rev 34814) +++ opal/trunk/configure.ac 2016-05-05 11:40:21 UTC (rev 34815) @@ -188,7 +188,7 @@ MY_COMPILE_IFELSE( [for SRTP const in error functions], [], - [#inclide <srtp/srtp.h>], + [#include <srtp/srtp.h>], [err_status_t err_reporting_init(const char *ident)], [AC_DEFINE(OPAL_SRTP_ERROR_CONST, const)] ) @@ -196,7 +196,6 @@ AC_CONFIG_SUBDIRS(src/rtp/libsrtp) AC_DEFINE(HAS_SRTP_SRTP_H,0) SRTP_MSG="yes (internal)" - AC_DEFINE(OPAL_SRTP_ERROR_CONST, [/*const*/]) ]) ) Modified: opal/trunk/src/rtp/srtp_session.cxx =================================================================== --- opal/trunk/src/rtp/srtp_session.cxx 2016-05-05 11:05:32 UTC (rev 34814) +++ opal/trunk/src/rtp/srtp_session.cxx 2016-05-05 11:40:21 UTC (rev 34815) @@ -177,6 +177,10 @@ #define CHECK_ERROR(fn, param, ...) ((fn param) == err_status_ok) #endif //PTRACING +#ifndef OPAL_SRTP_ERROR_CONST + #define OPAL_SRTP_ERROR_CONST +#endif + extern "C" { err_reporting_level_t err_level = err_level_none; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-05 11:05:34
|
Revision: 34814 http://sourceforge.net/p/opalvoip/code/34814 Author: rjongbloed Date: 2016-05-05 11:05:32 +0000 (Thu, 05 May 2016) Log Message: ----------- Added support for system based SRTP library version 1.5 API. Modified Paths: -------------- opal/trunk/configure opal/trunk/configure.ac opal/trunk/include/opal_config.h.in opal/trunk/src/rtp/srtp_session.cxx Modified: opal/trunk/configure =================================================================== --- opal/trunk/configure 2016-05-03 08:41:16 UTC (rev 34813) +++ opal/trunk/configure 2016-05-05 11:05:32 UTC (rev 34814) @@ -7186,8 +7186,42 @@ SRTP_MSG="yes (system)" + oldCPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS " + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SRTP const in error functions" >&5 +$as_echo_n "checking for SRTP const in error functions... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#inclide <srtp/srtp.h> +int +main () +{ +err_status_t err_reporting_init(const char *ident) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + usable=yes else + usable=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $usable" >&5 +$as_echo "$usable" >&6; } + CPPFLAGS="$oldCPPFLAGS" + + if test "x$usable" = "xyes"; then : + $as_echo "#define OPAL_SRTP_ERROR_CONST const" >>confdefs.h + + +fi + + + +else + enable_option_checking=no @@ -7196,7 +7230,9 @@ $as_echo "#define HAS_SRTP_SRTP_H 0" >>confdefs.h SRTP_MSG="yes (internal)" + $as_echo "#define OPAL_SRTP_ERROR_CONST /*const*/" >>confdefs.h + fi fi Modified: opal/trunk/configure.ac =================================================================== --- opal/trunk/configure.ac 2016-05-03 08:41:16 UTC (rev 34813) +++ opal/trunk/configure.ac 2016-05-05 11:05:32 UTC (rev 34814) @@ -185,10 +185,18 @@ AS_VAR_IF([SRTP_SYSTEM],[yes],[ AC_DEFINE(HAS_SRTP_SRTP_H,1) SRTP_MSG="yes (system)" + MY_COMPILE_IFELSE( + [for SRTP const in error functions], + [], + [#inclide <srtp/srtp.h>], + [err_status_t err_reporting_init(const char *ident)], + [AC_DEFINE(OPAL_SRTP_ERROR_CONST, const)] + ) ],[ AC_CONFIG_SUBDIRS(src/rtp/libsrtp) AC_DEFINE(HAS_SRTP_SRTP_H,0) SRTP_MSG="yes (internal)" + AC_DEFINE(OPAL_SRTP_ERROR_CONST, [/*const*/]) ]) ) Modified: opal/trunk/include/opal_config.h.in =================================================================== --- opal/trunk/include/opal_config.h.in 2016-05-03 08:41:16 UTC (rev 34813) +++ opal/trunk/include/opal_config.h.in 2016-05-05 11:05:32 UTC (rev 34814) @@ -288,6 +288,7 @@ #if OPAL_PTLIB_SSL #undef OPAL_SRTP + #undef OPAL_SRTP_ERROR_CONST #undef HAS_SRTP_SRTP_H #endif Modified: opal/trunk/src/rtp/srtp_session.cxx =================================================================== --- opal/trunk/src/rtp/srtp_session.cxx 2016-05-03 08:41:16 UTC (rev 34813) +++ opal/trunk/src/rtp/srtp_session.cxx 2016-05-05 11:05:32 UTC (rev 34814) @@ -41,6 +41,7 @@ #include <rtp/dtls_srtp_session.h> #include <h323/h323caps.h> #include <ptclib/cypher.h> +#include <ptclib/random.h> #define PTraceModule() "SRTP" @@ -179,12 +180,12 @@ extern "C" { err_reporting_level_t err_level = err_level_none; - err_status_t err_reporting_init(char *) + err_status_t err_reporting_init(OPAL_SRTP_ERROR_CONST char *) { return err_status_ok; } - void err_report(int PTRACE_PARAM(priority), char * PTRACE_PARAM(format), ...) + void err_report(int PTRACE_PARAM(priority), OPAL_SRTP_ERROR_CONST char * PTRACE_PARAM(format), ...) { #if PTRACING va_list args; @@ -396,11 +397,8 @@ void OpalSRTPKeyInfo::Randomise() { - m_key.SetSize(m_cryptoSuite.GetCipherKeyBytes()); - rand_source_get_octet_string(m_key.GetPointer(), m_key.GetSize()); - - m_salt.SetSize(m_cryptoSuite.GetAuthSaltBytes()); - rand_source_get_octet_string(m_salt.GetPointer(), m_salt.GetSize()); + m_key = PRandom::Octets(m_key.GetSize()); + m_salt = PRandom::Octets(m_cryptoSuite.GetAuthSaltBytes()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-03 08:41:18
|
Revision: 34813 http://sourceforge.net/p/opalvoip/code/34813 Author: rjongbloed Date: 2016-05-03 08:41:16 +0000 (Tue, 03 May 2016) Log Message: ----------- Improve PTime::GetElapsed() handling when time is invalid. Modified Paths: -------------- ptlib/trunk/include/ptlib/osutil.inl Modified: ptlib/trunk/include/ptlib/osutil.inl =================================================================== --- ptlib/trunk/include/ptlib/osutil.inl 2016-05-02 15:54:42 UTC (rev 34812) +++ ptlib/trunk/include/ptlib/osutil.inl 2016-05-03 08:41:16 UTC (rev 34813) @@ -194,13 +194,13 @@ { return m_microSecondsSinceEpoch.load()%Micro; } PINLINE PTimeInterval PTime::GetElapsed() const - { return PTime() - *this; } + { return IsValid() ? (PTime() - *this) : 0; } PINLINE bool PTime::IsPast() const - { return GetTimeInSeconds() < PTime().GetTimeInSeconds(); } + { return GetElapsed() < 0; } PINLINE bool PTime::IsFuture() const - { return GetTimeInSeconds() > PTime().GetTimeInSeconds(); } + { return GetElapsed() > 0; } PINLINE PString PTime::AsString(const PString & format, int zone) const This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 15:54:44
|
Revision: 34812 http://sourceforge.net/p/opalvoip/code/34812 Author: rjongbloed Date: 2016-05-02 15:54:42 +0000 (Mon, 02 May 2016) Log Message: ----------- Added function to set meta data on RTP_DataFrame Modified Paths: -------------- opal/trunk/include/rtp/rtp.h Modified: opal/trunk/include/rtp/rtp.h =================================================================== --- opal/trunk/include/rtp/rtp.h 2016-05-02 10:29:01 UTC (rev 34811) +++ opal/trunk/include/rtp/rtp.h 2016-05-02 15:54:42 UTC (rev 34812) @@ -666,6 +666,10 @@ */ const MetaData & GetMetaData() const { return m_metaData; } + /**Set meta data for RTP packet. + */ + void SetMetaData(const MetaData & metaData) { m_metaData = metaData; } + /**Get absolute (wall clock) time of packet, if known. */ PTime GetAbsoluteTime() const { return m_metaData.m_absoluteTime; } @@ -681,6 +685,8 @@ */ unsigned GetDiscontinuity() const { return m_metaData.m_discontinuity; } + /** Set sequence number discontinuity. + */ void SetDiscontinuity(unsigned lost) { m_metaData.m_discontinuity = lost; } /** Get the identifier that links audio and video streams for This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 10:29:04
|
Revision: 34811 http://sourceforge.net/p/opalvoip/code/34811 Author: rjongbloed Date: 2016-05-02 10:29:01 +0000 (Mon, 02 May 2016) Log Message: ----------- Fixed correctly detecting lua package on some Linux distros Modified Paths: -------------- ptlib/branches/v2_16/configure ptlib/branches/v2_16/configure.ac Modified: ptlib/branches/v2_16/configure =================================================================== --- ptlib/branches/v2_16/configure 2016-05-02 08:44:54 UTC (rev 34810) +++ ptlib/branches/v2_16/configure 2016-05-02 10:29:01 UTC (rev 34811) @@ -12449,7 +12449,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua[0-9\.-]*\).*/\1/p" | head -1` +LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua-*[0-9\.]*\).*/\1/p" | head -1` LUA_SYSTEM="yes" Modified: ptlib/branches/v2_16/configure.ac =================================================================== --- ptlib/branches/v2_16/configure.ac 2016-05-02 08:44:54 UTC (rev 34810) +++ ptlib/branches/v2_16/configure.ac 2016-05-02 10:29:01 UTC (rev 34811) @@ -1635,7 +1635,7 @@ AC_LANG_PUSH(C) -LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua[[0-9\.-]]*\).*/\1/p" | head -1` +LUA_PKG=`pkg-config --list-all | sed -n "s/\(lua-*[[0-9\.]]*\).*/\1/p" | head -1` PTLIB_MODULE_OPTION( [LUA], [lua], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:44:56
|
Revision: 34810 http://sourceforge.net/p/opalvoip/code/34810 Author: rjongbloed Date: 2016-05-02 08:44:54 +0000 (Mon, 02 May 2016) Log Message: ----------- Update configure script Modified Paths: -------------- opal/trunk/plugins/configure Modified: opal/trunk/plugins/configure =================================================================== --- opal/trunk/plugins/configure 2016-05-02 08:44:27 UTC (rev 34809) +++ opal/trunk/plugins/configure 2016-05-02 08:44:54 UTC (rev 34810) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for OPAL-Plugins 3.17alpha1. +# Generated by GNU Autoconf 2.69 for OPAL-Plugins 3.17alpha2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='OPAL-Plugins' PACKAGE_TARNAME='opal-plugins' -PACKAGE_VERSION='3.17alpha1' -PACKAGE_STRING='OPAL-Plugins 3.17alpha1' +PACKAGE_VERSION='3.17alpha2' +PACKAGE_STRING='OPAL-Plugins 3.17alpha2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1433,7 +1433,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures OPAL-Plugins 3.17alpha1 to adapt to many kinds of systems. +\`configure' configures OPAL-Plugins 3.17alpha2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1499,7 +1499,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of OPAL-Plugins 3.17alpha1:";; + short | recursive ) echo "Configuration of OPAL-Plugins 3.17alpha2:";; esac cat <<\_ACEOF @@ -1698,7 +1698,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -OPAL-Plugins configure 3.17alpha1 +OPAL-Plugins configure 3.17alpha2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2314,7 +2314,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by OPAL-Plugins $as_me 3.17alpha1, which was +It was created by OPAL-Plugins $as_me 3.17alpha2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -12219,7 +12219,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by OPAL-Plugins $as_me 3.17alpha1, which was +This file was extended by OPAL-Plugins $as_me 3.17alpha2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12281,7 +12281,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -OPAL-Plugins config.status 3.17alpha1 +OPAL-Plugins config.status 3.17alpha2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:44:30
|
Revision: 34809 http://sourceforge.net/p/opalvoip/code/34809 Author: rjongbloed Date: 2016-05-02 08:44:27 +0000 (Mon, 02 May 2016) Log Message: ----------- Ignorance Property Changed: ---------------- opal/trunk/plugins/audio/G.722.1/libg722_1/tests/ Index: opal/trunk/plugins/audio/G.722.1/libg722_1/tests =================================================================== --- opal/trunk/plugins/audio/G.722.1/libg722_1/tests 2016-05-02 08:41:13 UTC (rev 34808) +++ opal/trunk/plugins/audio/G.722.1/libg722_1/tests 2016-05-02 08:44:27 UTC (rev 34809) Property changes on: opal/trunk/plugins/audio/G.722.1/libg722_1/tests ___________________________________________________________________ Modified: svn:ignore ## -1,3 +1,3 ## .deps Makefile - +regression_tests.sh This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:41:15
|
Revision: 34808 http://sourceforge.net/p/opalvoip/code/34808 Author: rjongbloed Date: 2016-05-02 08:41:13 +0000 (Mon, 02 May 2016) Log Message: ----------- Update configure script Modified Paths: -------------- ptlib/trunk/configure Modified: ptlib/trunk/configure =================================================================== --- ptlib/trunk/configure 2016-05-02 08:33:52 UTC (rev 34807) +++ ptlib/trunk/configure 2016-05-02 08:41:13 UTC (rev 34808) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PTLib 2.17alpha1. +# Generated by GNU Autoconf 2.69 for PTLib 2.17alpha2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='PTLib' PACKAGE_TARNAME='ptlib' -PACKAGE_VERSION='2.17alpha1' -PACKAGE_STRING='PTLib 2.17alpha1' +PACKAGE_VERSION='2.17alpha2' +PACKAGE_STRING='PTLib 2.17alpha2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1608,7 +1608,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures PTLib 2.17alpha1 to adapt to many kinds of systems. +\`configure' configures PTLib 2.17alpha2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1674,7 +1674,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PTLib 2.17alpha1:";; + short | recursive ) echo "Configuration of PTLib 2.17alpha2:";; esac cat <<\_ACEOF @@ -1924,7 +1924,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PTLib configure 2.17alpha1 +PTLib configure 2.17alpha2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2850,7 +2850,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by PTLib $as_me 2.17alpha1, which was +It was created by PTLib $as_me 2.17alpha2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -20198,7 +20198,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PTLib $as_me 2.17alpha1, which was +This file was extended by PTLib $as_me 2.17alpha2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20264,7 +20264,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -PTLib config.status 2.17alpha1 +PTLib config.status 2.17alpha2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:33:55
|
Revision: 34807 http://sourceforge.net/p/opalvoip/code/34807 Author: rjongbloed Date: 2016-05-02 08:33:52 +0000 (Mon, 02 May 2016) Log Message: ----------- Updte configure script Modified Paths: -------------- opal/branches/v3_16/plugins/configure Modified: opal/branches/v3_16/plugins/configure =================================================================== --- opal/branches/v3_16/plugins/configure 2016-05-02 08:20:10 UTC (rev 34806) +++ opal/branches/v3_16/plugins/configure 2016-05-02 08:33:52 UTC (rev 34807) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for OPAL-Plugins 3.17beta1. +# Generated by GNU Autoconf 2.69 for OPAL-Plugins 3.16beta2. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ # Identity of this package. PACKAGE_NAME='OPAL-Plugins' PACKAGE_TARNAME='opal-plugins' -PACKAGE_VERSION='3.17beta1' -PACKAGE_STRING='OPAL-Plugins 3.17beta1' +PACKAGE_VERSION='3.16beta2' +PACKAGE_STRING='OPAL-Plugins 3.16beta2' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1432,7 +1432,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures OPAL-Plugins 3.17beta1 to adapt to many kinds of systems. +\`configure' configures OPAL-Plugins 3.16beta2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1498,7 +1498,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of OPAL-Plugins 3.17beta1:";; + short | recursive ) echo "Configuration of OPAL-Plugins 3.16beta2:";; esac cat <<\_ACEOF @@ -1697,7 +1697,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -OPAL-Plugins configure 3.17beta1 +OPAL-Plugins configure 3.16beta2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2313,7 +2313,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by OPAL-Plugins $as_me 3.17beta1, which was +It was created by OPAL-Plugins $as_me 3.16beta2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -12128,7 +12128,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by OPAL-Plugins $as_me 3.17beta1, which was +This file was extended by OPAL-Plugins $as_me 3.16beta2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12190,7 +12190,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -OPAL-Plugins config.status 3.17beta1 +OPAL-Plugins config.status 3.16beta2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:20:13
|
Revision: 34806 http://sourceforge.net/p/opalvoip/code/34806 Author: rjongbloed Date: 2016-05-02 08:20:10 +0000 (Mon, 02 May 2016) Log Message: ----------- Merged revision(s) 34769-34804 from opal/branches/v3_16: Applied patch to fix divide by zero error in media stream with some media types, thanks Harald Karner Modified Paths: -------------- opal/trunk/src/rtp/rtp_stream.cxx Property Changed: ---------------- opal/trunk/ Index: opal/trunk =================================================================== --- opal/trunk 2016-05-02 08:18:44 UTC (rev 34805) +++ opal/trunk 2016-05-02 08:20:10 UTC (rev 34806) Property changes on: opal/trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -10,7 +10,7 ## /opal/branches/v3_10:25182-29485,30896,32927-32928,32933 /opal/branches/v3_12:28489-31709 /opal/branches/v3_14:31505-33613 -/opal/branches/v3_16:34090-34768 +/opal/branches/v3_16:34090-34804 /opal/branches/v3_2:21143,21220,21227,21253,21455 /opal/branches/v3_4:21060,21062,21088,21092,21111,21113,21115,21119,21143,21148,21151-21152,21155,21158,21184,21188,21253,21265-21266,21283-21284,21298,21300,21303,21307,21309,21311,21327,21331,21333,21359,21367,21369,21488,21556,21564-21565,21568,21570,21620,21625,21631,21748,21751,21756,21759,21761,21767,21770,22246,23044,23140,23143,23286 /opal/branches/v3_6:22169,22178,22184,22186,22197,22204,22216,22251,22253,22255,22258,22260,22291,22296,22300,22306,22308,22313,22319,22336,22353,22358,22436,22447,22449,22497,22511,22517,22519-22521,22527,22536,22538,22589,22596,22599,22617,22620,22622,22630,22640,22655,22675,22682,22726-22728,22730,22733,22738,22745-22746,22800,22820-22821,22842,22844-22845,22851,22853,22889,22896,22902,22904,22906,22918,22924,22928,22946,22965,22967,22976,22978,22980,22982,22994,23028,23123,23125-23126,23128,23157,23165,23173,23175,23183,23294,23341,23465,23467,23474,23521,23829,24346,24809 \ No newline at end of property Modified: opal/trunk/src/rtp/rtp_stream.cxx =================================================================== --- opal/trunk/src/rtp/rtp_stream.cxx 2016-05-02 08:18:44 UTC (rev 34805) +++ opal/trunk/src/rtp/rtp_stream.cxx 2016-05-02 08:20:10 UTC (rev 34806) @@ -320,7 +320,7 @@ RTP_Timestamp packetTime = m_jitterBuffer->GetPacketTime(); if (packetTime > 0) timestamp += packetTime; - else + else if (m_frameTime > 0) timestamp += ((20*GetMediaFormat().GetTimeUnits() + m_frameTime - 1)/m_frameTime) * m_frameTime; packet.SetTimestamp(timestamp); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:18:47
|
Revision: 34805 http://sourceforge.net/p/opalvoip/code/34805 Author: rjongbloed Date: 2016-05-02 08:18:44 +0000 (Mon, 02 May 2016) Log Message: ----------- Merged revision(s) 34728-34804 from ptlib/branches/v2_16: --------------------- r34802 Search more places during configure for gstreamer on Windows. --------------------- r34800 partial fix for 64 bit atomic operations on pre GCC 4.6 compilers and ARM platform. Now checks kernel version and if helper not available then fakes it with non-atomic operations. Prevents hang due to endless loop. --------------------- r34789 Fixed bug #553 Comma in angle brackets & macro PCLASSINFO, thanks Clemens Fischer --------------------- r34781 Applied patch for #551 "Incorrect initialisation order in PTraceInfo; No output to syslog", thanks David Jaschuk --------------------- r34772 Fixed build against older OpenSSL Revision Links: -------------- http://sourceforge.net/p/opalvoip/code/34802 http://sourceforge.net/p/opalvoip/code/34800 http://sourceforge.net/p/opalvoip/code/34789 http://sourceforge.net/p/opalvoip/code/34781 http://sourceforge.net/p/opalvoip/code/34772 Modified Paths: -------------- ptlib/trunk/configure.ac ptlib/trunk/include/ptlib/object.h ptlib/trunk/include/ptlib/osutil.inl ptlib/trunk/src/ptclib/pssl.cxx ptlib/trunk/src/ptlib/common/osutils.cxx ptlib/trunk/src/ptlib/unix/osutil.cxx ptlib/trunk/version.h Property Changed: ---------------- ptlib/trunk/ Index: ptlib/trunk =================================================================== --- ptlib/trunk 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk 2016-05-02 08:18:44 UTC (rev 34805) Property changes on: ptlib/trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -6,7 +6,7 ## /ptlib/branches/v2_10:25177-29189,32921,32947 /ptlib/branches/v2_12:28485-31603 /ptlib/branches/v2_14:31501-33720 -/ptlib/branches/v2_16:34085-34727 +/ptlib/branches/v2_16:34085-34804 /ptlib/branches/v2_2:20746,20791,20827,22014,22942 /ptlib/branches/v2_4:21086,21094,21147,21160,21185,21281,21296,21305,21322,21337,21363,21467,21471-21472,21506,21508,21623,21695,21744,21746,21763,22241,22958,23045-23046,23061,23066,23712 /ptlib/branches/v2_6:22195,22243,22295,22304,22311,22317,22320,22356,22458,22509,22587,22601-22602,22611,22629,22633,22673,22681,22729,22731-22732,22736,22742,22848,22960,22992,23161,23163,23167,23169,23177,23239,23291,23298,23336,23429,23595,23823,23827,23873,24816 \ No newline at end of property Modified: ptlib/trunk/configure.ac =================================================================== --- ptlib/trunk/configure.ac 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk/configure.ac 2016-05-02 08:18:44 UTC (rev 34805) @@ -2135,6 +2135,7 @@ dnl MSWIN_DISPLAY gstreamer,GStreamer 0.10 (OSSBuild) dnl MSWIN_CHECK_FILE gstreamer,include\gstreamer-0.10\gst\gst.h,P_GSTREAMER_WIN32=1 dnl MSWIN_DIR_SYMBOL gstreamer,GSTREAMER_DIR +dnl MSWIN_CHECK_DIR gstreamer,..\external\gstreamer-sdk\0.10\x86 dnl MSWIN_CHECK_DIR gstreamer,\gstreamer-sdk\0.10\x86 dnl MSWIN_CHECK_DIR gstreamer,%ProgramFiles%\gstreamer-sdk\0.10\x86 dnl MSWIN_CHECK_DIR gstreamer,%ProgramW6432%\gstreamer-sdk\0.10\x86 @@ -2143,7 +2144,10 @@ dnl MSWIN_CHECK_FILE gstreamer1,include\gstreamer-1.0\gst\gst.h,P_GSTREAMER_WIN32=1 dnl MSWIN_DIR_SYMBOL gstreamer1,GSTREAMER1_DIR dnl MSWIN_DEFINE gstreamer1,P_GSTREAMER_1_0_API +dnl MSWIN_CHECK_DIR gstreamer1,..\external\gstreamer\1.0\x86 dnl MSWIN_CHECK_DIR gstreamer1,\gstreamer\1.0\x86 +dnl MSWIN_CHECK_DIR gstreamer1,%ProgramFiles%\gstreamer-sdk\1.0\x86 +dnl MSWIN_CHECK_DIR gstreamer1,%ProgramW6432%\gstreamer-sdk\1.0\x86 PTLIB_MODULE_OPTION( [GSTREAMER], Modified: ptlib/trunk/include/ptlib/object.h =================================================================== --- ptlib/trunk/include/ptlib/object.h 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk/include/ptlib/object.h 2016-05-02 08:18:44 UTC (rev 34805) @@ -1819,7 +1819,7 @@ of compatibility with documentation systems. */ -#define PCLASSINFO(cls, par) PCLASSINFO_ALIGNED(cls, par, 0) +#define PCLASSINFO(cls, par) PCLASSINFO_ALIGNED(cls, (par), 0) /// Declare all the standard PTLib class information, plus Clone(). #define PCLASSINFO_WITH_CLONE(cls, par) \ Modified: ptlib/trunk/include/ptlib/osutil.inl =================================================================== --- ptlib/trunk/include/ptlib/osutil.inl 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk/include/ptlib/osutil.inl 2016-05-02 08:18:44 UTC (rev 34805) @@ -176,7 +176,7 @@ { return PNEW PTime(*this); } PINLINE PBoolean PTime::IsValid() const - { return m_microSecondsSinceEpoch.load() > 46800000000; } + { return m_microSecondsSinceEpoch.load() > 46800000000LL; } PINLINE PInt64 PTime::GetTimestamp() const { return m_microSecondsSinceEpoch.load(); } Modified: ptlib/trunk/src/ptclib/pssl.cxx =================================================================== --- ptlib/trunk/src/ptclib/pssl.cxx 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk/src/ptclib/pssl.cxx 2016-05-02 08:18:44 UTC (rev 34805) @@ -1881,6 +1881,7 @@ case TLSv1: meth = TLSv1_method(); break; +#if OPENSSL_VERSION_NUMBER > 0x0090819fL case TLSv1_1 : meth = TLSv1_1_method(); break; @@ -1905,6 +1906,7 @@ meth = DTLSv1_method(); break; #endif +#endif default : PAssertAlways("Unsupported TLS/DTLS version"); m_context = NULL; Modified: ptlib/trunk/src/ptlib/common/osutils.cxx =================================================================== --- ptlib/trunk/src/ptlib/common/osutils.cxx 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk/src/ptlib/common/osutils.cxx 2016-05-02 08:18:44 UTC (rev 34805) @@ -649,9 +649,9 @@ if (m_rolloverPattern.IsEmpty()) m_rolloverPattern = DefaultRollOverPattern; m_lastRotate = GetRotateVal(options); + m_thresholdLevel = level; AdjustOptions(options, UINT_MAX); OpenTraceFile(filename, level > 0); - m_thresholdLevel = level; } Modified: ptlib/trunk/src/ptlib/unix/osutil.cxx =================================================================== --- ptlib/trunk/src/ptlib/unix/osutil.cxx 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk/src/ptlib/unix/osutil.cxx 2016-05-02 08:18:44 UTC (rev 34805) @@ -185,36 +185,60 @@ #if defined(__arm__) && !defined(__llvm__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)) -// ARM build doesn't link before v4.6 -// This code shamelessly stolen from GCC 4.6 source -typedef int (__kernel_cmpxchg64_t) (const long long* oldval, - const long long* newval, - long long *ptr); -#define __kernel_cmpxchg64 (*(__kernel_cmpxchg64_t *) 0xffff0f60) +// ARM build doesn't link before GCC v4.6 +// This code mostly, and shamelessly, stolen from 4.6 source +typedef int (*__kernel_cmpxchg64_t)(const uint64_t * oldval, + const uint64_t * newval, + volatile void * ptr); + +static int dummy_cmpxchg64(const uint64_t *, + const uint64_t * newval, + volatile void * ptr) +{ + // Do it without memory barrier + *(uint64_t *)ptr = *newval; + return 0; +} + +static __kernel_cmpxchg64_t get_kernel_cmpxchg64() +{ + if (*(unsigned int *)0xffff0ffc >= 5) // kernel_helper_version + return (__kernel_cmpxchg64_t)0xffff0f60; + + static const char err[] = "WARNING: __kernel_cmpxchg64 helper not in kernel, no 64 bit atomic operations.\n"; + if (write(2, err, sizeof(err)-1) != sizeof(err) - 1) + abort(); + return dummy_cmpxchg64; +} + extern "C" { - long long __sync_lock_test_and_set_8(long long * ptr, long long val) + uint64_t __sync_lock_test_and_set_8(volatile void * ptr, uint64_t val) { + static __kernel_cmpxchg64_t kernel_cmpxchg64 = get_kernel_cmpxchg64(); + int failure; - long long oldval; + uint64_t oldval; do { - oldval = *ptr; - failure = __kernel_cmpxchg64(&oldval, &val, ptr); + oldval = *(uint64_t *)ptr; + failure = kernel_cmpxchg64(&oldval, &val, ptr); } while (failure != 0); return oldval; } - long long __sync_add_and_fetch_8(long long * ptr, long long val) + uint64_t __sync_add_and_fetch_8(volatile void * ptr, uint64_t val) { + static __kernel_cmpxchg64_t kernel_cmpxchg64 = get_kernel_cmpxchg64(); + int failure; - long long tmp1,tmp2; + uint64_t tmp1,tmp2; do { - tmp1 = *ptr; + tmp1 = *(uint64_t *)ptr; tmp2 = tmp1 + val; - failure = __kernel_cmpxchg64(&tmp1, &tmp2, ptr); + failure = kernel_cmpxchg64(&tmp1, &tmp2, ptr); } while (failure != 0); return tmp2; Modified: ptlib/trunk/version.h =================================================================== --- ptlib/trunk/version.h 2016-05-02 08:15:25 UTC (rev 34804) +++ ptlib/trunk/version.h 2016-05-02 08:18:44 UTC (rev 34805) @@ -36,7 +36,7 @@ #define MAJOR_VERSION 2 #define MINOR_VERSION 17 #define BUILD_TYPE AlphaCode -#define BUILD_NUMBER 1 +#define BUILD_NUMBER 2 #endif // _PTLib_VERSION_H This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:15:27
|
Revision: 34804 http://sourceforge.net/p/opalvoip/code/34804 Author: rjongbloed Date: 2016-05-02 08:15:25 +0000 (Mon, 02 May 2016) Log Message: ----------- Merged revision(s) 34795 from opal/trunk: Fixed crash if something else in the system happens to use FFMPEG independent of PTLib/OPAL Modified Paths: -------------- opal/branches/v3_16/plugins/video/common/ffmpeg.cxx Property Changed: ---------------- opal/branches/v3_16/ Index: opal/branches/v3_16 =================================================================== --- opal/branches/v3_16 2016-05-02 08:14:37 UTC (rev 34803) +++ opal/branches/v3_16 2016-05-02 08:15:25 UTC (rev 34804) Property changes on: opal/branches/v3_16 ___________________________________________________________________ Modified: svn:mergeinfo ## -14,6 +14,6 ## /opal/branches/v3_4:21060,21062,21088,21092,21111,21113,21115,21119,21143,21148,21151-21152,21155,21158,21184,21188,21253,21265-21266,21283-21284,21298,21300,21303,21307,21309,21311,21327,21331,21333,21359,21367,21369,21488,21556,21564-21565,21568,21570,21620,21625,21631,21748,21751,21756,21759,21761,21767,21770,22246,23044,23140,23143,23286 /opal/branches/v3_6:22169,22178,22184,22186,22197,22204,22216,22251,22253,22255,22258,22260,22291,22296,22300,22306,22308,22313,22319,22336,22353,22358,22436,22447,22449,22497,22511,22517,22519-22521,22527,22536,22538,22589,22596,22599,22617,22620,22622,22630,22640,22655,22675,22682,22726-22728,22730,22733,22738,22745-22746,22800,22820-22821,22842,22844-22845,22851,22853,22889,22896,22902,22904,22906,22918,22924,22928,22946,22965,22967,22976,22978,22980,22982,22994,23028,23123,23125-23126,23128,23157,23165,23173,23175,23183,23294,23341,23465,23467,23474,23521,23829,24346,24809 /opal/branches/v3_8:24025,24027,24029,24036,24038,24040,24042,24048,24050,24058,24061,24068,24071,24074,24076,24080,24082,24086-24087,24092,24099,24101,24105,24107,24109,24111,24114,24116-24117,24120-24121,24125,24127,24130,24132,24134,24138,24140,24144,24146,24148,24150-24151,24154,24156,24158,24162,24170,24218,24245,24257,24261,24340,24362-24363,24365,24369,24373,24422,24440,24442,24447,24489,24504,24506,24532,24536,24545,24547,24552,24554,24614,24678,24687,24699,24705,24775,24833,24861,24903,25146 -/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589,34718,34735,34746,34775,34784 +/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589,34718,34735,34746,34775,34784,34795 /ptlib/branches/v2_8:24136 /ptlib/trunk:20820 \ No newline at end of property Modified: opal/branches/v3_16/plugins/video/common/ffmpeg.cxx =================================================================== --- opal/branches/v3_16/plugins/video/common/ffmpeg.cxx 2016-05-02 08:14:37 UTC (rev 34803) +++ opal/branches/v3_16/plugins/video/common/ffmpeg.cxx 2016-05-02 08:15:25 UTC (rev 34804) @@ -91,7 +91,7 @@ (len == 2 && isxdigit(buffer[1]))) level = 6; - if (avcl != NULL && strcmp((*(AVClass**)avcl)->class_name, "AVCodecContext") == 0) + if (avcl != NULL && strcmp((*(AVClass**)avcl)->class_name, "AVCodecContext") == 0 && static_cast<AVCodecContext *>(avcl)->opaque != NULL) static_cast<FFMPEGCodec *>(static_cast<AVCodecContext *>(avcl)->opaque)->ErrorCallback(level, buffer); else PTRACE(level, "FFMPEG", buffer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:14:40
|
Revision: 34803 http://sourceforge.net/p/opalvoip/code/34803 Author: rjongbloed Date: 2016-05-02 08:14:37 +0000 (Mon, 02 May 2016) Log Message: ----------- Merged revision(s) 34784 from opal/trunk: Fixed termination pseudo deadlock issue, if one media session transport subchannel fails, close them all, or the remaining open ones take a long time for their threads to terminate, effectively deadlocking. Modified Paths: -------------- opal/branches/v3_16/include/opal/mediasession.h opal/branches/v3_16/src/opal/mediasession.cxx Property Changed: ---------------- opal/branches/v3_16/ Index: opal/branches/v3_16 =================================================================== --- opal/branches/v3_16 2016-05-02 08:06:39 UTC (rev 34802) +++ opal/branches/v3_16 2016-05-02 08:14:37 UTC (rev 34803) Property changes on: opal/branches/v3_16 ___________________________________________________________________ Modified: svn:mergeinfo ## -14,6 +14,6 ## /opal/branches/v3_4:21060,21062,21088,21092,21111,21113,21115,21119,21143,21148,21151-21152,21155,21158,21184,21188,21253,21265-21266,21283-21284,21298,21300,21303,21307,21309,21311,21327,21331,21333,21359,21367,21369,21488,21556,21564-21565,21568,21570,21620,21625,21631,21748,21751,21756,21759,21761,21767,21770,22246,23044,23140,23143,23286 /opal/branches/v3_6:22169,22178,22184,22186,22197,22204,22216,22251,22253,22255,22258,22260,22291,22296,22300,22306,22308,22313,22319,22336,22353,22358,22436,22447,22449,22497,22511,22517,22519-22521,22527,22536,22538,22589,22596,22599,22617,22620,22622,22630,22640,22655,22675,22682,22726-22728,22730,22733,22738,22745-22746,22800,22820-22821,22842,22844-22845,22851,22853,22889,22896,22902,22904,22906,22918,22924,22928,22946,22965,22967,22976,22978,22980,22982,22994,23028,23123,23125-23126,23128,23157,23165,23173,23175,23183,23294,23341,23465,23467,23474,23521,23829,24346,24809 /opal/branches/v3_8:24025,24027,24029,24036,24038,24040,24042,24048,24050,24058,24061,24068,24071,24074,24076,24080,24082,24086-24087,24092,24099,24101,24105,24107,24109,24111,24114,24116-24117,24120-24121,24125,24127,24130,24132,24134,24138,24140,24144,24146,24148,24150-24151,24154,24156,24158,24162,24170,24218,24245,24257,24261,24340,24362-24363,24365,24369,24373,24422,24440,24442,24447,24489,24504,24506,24532,24536,24545,24547,24552,24554,24614,24678,24687,24699,24705,24775,24833,24861,24903,25146 -/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589,34718,34735,34746,34775 +/opal/trunk:34112-34116,34118-34120,34122,34137-34139,34155-34156,34161-34165,34168,34170,34173,34177,34187-34190,34208,34218,34222,34237-34238,34246-34252,34269-34271,34281-34288,34297,34300,34303-34316,34333,34346,34365,34375,34377,34382-34384,34390,34393-34394,34399,34417-34421,34424,34430,34432,34435-34437,34440,34442,34455-34456,34480,34483-34484,34487-34488,34490-34491,34502-34503,34506,34588-34589,34718,34735,34746,34775,34784 /ptlib/branches/v2_8:24136 /ptlib/trunk:20820 \ No newline at end of property Modified: opal/branches/v3_16/include/opal/mediasession.h =================================================================== --- opal/branches/v3_16/include/opal/mediasession.h 2016-05-02 08:06:39 UTC (rev 34802) +++ opal/branches/v3_16/include/opal/mediasession.h 2016-05-02 08:14:37 UTC (rev 34803) @@ -451,6 +451,7 @@ void SetRemoteBehindNAT(); protected: + virtual void InternalClose(); virtual void InternalStop(); PString m_name; @@ -471,7 +472,6 @@ ); void ThreadMain(); bool HandleUnavailableError(); - void Close(); typedef PNotifierListTemplate<PBYTEArray> NotifierList; NotifierList m_notifiers; Modified: opal/branches/v3_16/src/opal/mediasession.cxx =================================================================== --- opal/branches/v3_16/src/opal/mediasession.cxx 2016-05-02 08:06:39 UTC (rev 34802) +++ opal/branches/v3_16/src/opal/mediasession.cxx 2016-05-02 08:14:37 UTC (rev 34803) @@ -697,7 +697,7 @@ PTRACE(2, m_owner, *m_owner << m_subchannel << " timed out (" << m_channel->GetReadTimeout() << "s), other subchannels running"); else { PTRACE(1, m_owner, *m_owner << m_subchannel << " timed out (" << m_owner->m_mediaTimeout << "s), closing"); - Close(); + m_owner->InternalClose(); } break; @@ -705,7 +705,7 @@ PTRACE(1, m_owner, *m_owner << m_subchannel << " read error (" << m_channel->GetErrorNumber(PChannel::LastReadError) << "): " << m_channel->GetErrorText(PChannel::LastReadError)); - Close(); + m_owner->InternalClose(); break; } } @@ -732,22 +732,25 @@ PTRACE(2, m_owner, *m_owner << m_subchannel << ' ' << m_owner->m_maxNoTransmitTime << " seconds of transmit fails to " << m_owner->GetRemoteAddress(m_subchannel)); - Close(); + m_owner->InternalClose(); return false; } -void OpalMediaTransport::Transport::Close() +void OpalMediaTransport::InternalClose() { - if (m_channel == NULL) + if (!LockReadOnly()) return; - PChannel * base = m_channel->GetBaseReadChannel(); - if (base == NULL) - return; + for (vector<Transport>::iterator it = m_subchannels.begin(); it != m_subchannels.end(); ++it) { + if (it->m_channel != NULL) { + PChannel * base = it->m_channel->GetBaseReadChannel(); + if (base != NULL) + base->Close(); + } + } - base->Close(); - m_owner->InternalRxData(m_subchannel, PBYTEArray()); + UnlockReadOnly(); } @@ -800,10 +803,7 @@ void OpalMediaTransport::InternalStop() { PTRACE(4, *this << "stopping " << m_subchannels.size() << "subchannels."); - LockReadOnly(); - for (vector<Transport>::iterator it = m_subchannels.begin(); it != m_subchannels.end(); ++it) - it->Close(); - UnlockReadOnly(); + InternalClose(); for (vector<Transport>::iterator it = m_subchannels.begin(); it != m_subchannels.end(); ++it) { if (it->m_thread != NULL) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rjo...@us...> - 2016-05-02 08:06:41
|
Revision: 34802 http://sourceforge.net/p/opalvoip/code/34802 Author: rjongbloed Date: 2016-05-02 08:06:39 +0000 (Mon, 02 May 2016) Log Message: ----------- Search more places during configure for gstreamer on Windows. Modified Paths: -------------- ptlib/branches/v2_16/configure.ac Modified: ptlib/branches/v2_16/configure.ac =================================================================== --- ptlib/branches/v2_16/configure.ac 2016-05-02 08:05:54 UTC (rev 34801) +++ ptlib/branches/v2_16/configure.ac 2016-05-02 08:06:39 UTC (rev 34802) @@ -2085,6 +2085,7 @@ dnl MSWIN_DISPLAY gstreamer,GStreamer 0.10 (OSSBuild) dnl MSWIN_CHECK_FILE gstreamer,include\gstreamer-0.10\gst\gst.h,P_GSTREAMER_WIN32=1 dnl MSWIN_DIR_SYMBOL gstreamer,GSTREAMER_DIR +dnl MSWIN_CHECK_DIR gstreamer,..\external\gstreamer-sdk\0.10\x86 dnl MSWIN_CHECK_DIR gstreamer,\gstreamer-sdk\0.10\x86 dnl MSWIN_CHECK_DIR gstreamer,%ProgramFiles%\gstreamer-sdk\0.10\x86 dnl MSWIN_CHECK_DIR gstreamer,%ProgramW6432%\gstreamer-sdk\0.10\x86 @@ -2093,7 +2094,10 @@ dnl MSWIN_CHECK_FILE gstreamer1,include\gstreamer-1.0\gst\gst.h,P_GSTREAMER_WIN32=1 dnl MSWIN_DIR_SYMBOL gstreamer1,GSTREAMER1_DIR dnl MSWIN_DEFINE gstreamer1,P_GSTREAMER_1_0_API +dnl MSWIN_CHECK_DIR gstreamer1,..\external\gstreamer\1.0\x86 dnl MSWIN_CHECK_DIR gstreamer1,\gstreamer\1.0\x86 +dnl MSWIN_CHECK_DIR gstreamer1,%ProgramFiles%\gstreamer-sdk\1.0\x86 +dnl MSWIN_CHECK_DIR gstreamer1,%ProgramW6432%\gstreamer-sdk\1.0\x86 PTLIB_MODULE_OPTION( [GSTREAMER], This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |