<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[214288] trunk/Source/ThirdParty/libwebrtc</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/214288">214288</a></dd>
<dt>Author</dt> <dd>achristensen@apple.com</dd>
<dt>Date</dt> <dd>2017-03-22 17:57:27 -0700 (Wed, 22 Mar 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>Fix warnings in libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=169973
Reviewed by Geoffrey Garen.
* Configurations/boringssl.xcconfig:
* Configurations/libsrtp.xcconfig:
* Configurations/libwebrtc.xcconfig:
* Configurations/libwebrtcpcrtc.xcconfig:
* Configurations/libyuv.xcconfig:
* Configurations/opus.xcconfig:
* Configurations/usrsctp.xcconfig:
Build with more warnings.
opus still needs some incompatible pointer warnings disabled because it converts
const opus_int16 * to const opus_val16 * and opus_int32 * to opus_val32 *
and that's ok because its a codec and that's what codecs do.
* Source/webrtc/base/logging.cc:
* Source/webrtc/base/logging.h:
* Source/webrtc/base/neverdestroyed.h: Added.
(webrtc::NeverDestroyed::NeverDestroyed):
(webrtc::NeverDestroyed::operator T&):
(webrtc::NeverDestroyed::get):
(webrtc::NeverDestroyed::operator&):
(webrtc::NeverDestroyed::asPtr):
Added webrtc::NeverDestroyed which may or may not be based on WTF::NeverDestroyed.
This allows us to avoid exit time destructors, which would slow down program termination for no reason.
* Source/webrtc/base/virtualsocketserver.cc:
* Source/webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory_internal.cc:
Adopt NeverDestroyed in function scope so we don't have global constructors or destructors.
* Source/webrtc/modules/audio_processing/beamformer/array_util.h:
(webrtc::DegreesToRadians):
(webrtc::RadiansToDegrees):
Add constexpr so we can calculate values at compile time instead of launch time.
* Source/webrtc/modules/rtp_rtcp/source/rtp_utility.cc:
* Source/webrtc/system_wrappers/source/clock.cc:
* libwebrtc.xcodeproj/project.pbxproj:
Don't compile ssl_test.cc. We don't need it.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceThirdPartylibwebrtcChangeLog">trunk/Source/ThirdParty/libwebrtc/ChangeLog</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcConfigurationsboringsslxcconfig">trunk/Source/ThirdParty/libwebrtc/Configurations/boringssl.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcConfigurationslibsrtpxcconfig">trunk/Source/ThirdParty/libwebrtc/Configurations/libsrtp.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcConfigurationslibwebrtcxcconfig">trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcConfigurationslibwebrtcpcrtcxcconfig">trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtcpcrtc.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcConfigurationslibyuvxcconfig">trunk/Source/ThirdParty/libwebrtc/Configurations/libyuv.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcConfigurationsopusxcconfig">trunk/Source/ThirdParty/libwebrtc/Configurations/opus.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcConfigurationsusrsctpxcconfig">trunk/Source/ThirdParty/libwebrtc/Configurations/usrsctp.xcconfig</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcbaseloggingcc">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcbaseloggingh">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcbasevirtualsocketservercc">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/virtualsocketserver.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcmodulesaudio_codingcodecsbuiltin_audio_decoder_factory_internalcc">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory_internal.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcmodulesaudio_processingbeamformerarray_utilh">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_processing/beamformer/array_util.h</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcmodulesrtp_rtcpsourcertp_utilitycc">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtp_utility.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcsystem_wrapperssourceclockcc">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/system_wrappers/source/clock.cc</a></li>
<li><a href="#trunkSourceThirdPartylibwebrtclibwebrtcxcodeprojprojectpbxproj">trunk/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceThirdPartylibwebrtcSourcewebrtcbaseneverdestroyedh">trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/neverdestroyed.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceThirdPartylibwebrtcChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/ChangeLog (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/ChangeLog        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/ChangeLog        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2017-03-22 Alex Christensen <achristensen@webkit.org>
+
+ Fix warnings in libwebrtc
+ https://bugs.webkit.org/show_bug.cgi?id=169973
+
+ Reviewed by Geoffrey Garen.
+
+ * Configurations/boringssl.xcconfig:
+ * Configurations/libsrtp.xcconfig:
+ * Configurations/libwebrtc.xcconfig:
+ * Configurations/libwebrtcpcrtc.xcconfig:
+ * Configurations/libyuv.xcconfig:
+ * Configurations/opus.xcconfig:
+ * Configurations/usrsctp.xcconfig:
+ Build with more warnings.
+ opus still needs some incompatible pointer warnings disabled because it converts
+ const opus_int16 * to const opus_val16 * and opus_int32 * to opus_val32 *
+ and that's ok because its a codec and that's what codecs do.
+ * Source/webrtc/base/logging.cc:
+ * Source/webrtc/base/logging.h:
+ * Source/webrtc/base/neverdestroyed.h: Added.
+ (webrtc::NeverDestroyed::NeverDestroyed):
+ (webrtc::NeverDestroyed::operator T&):
+ (webrtc::NeverDestroyed::get):
+ (webrtc::NeverDestroyed::operator&):
+ (webrtc::NeverDestroyed::asPtr):
+ Added webrtc::NeverDestroyed which may or may not be based on WTF::NeverDestroyed.
+ This allows us to avoid exit time destructors, which would slow down program termination for no reason.
+ * Source/webrtc/base/virtualsocketserver.cc:
+ * Source/webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory_internal.cc:
+ Adopt NeverDestroyed in function scope so we don't have global constructors or destructors.
+ * Source/webrtc/modules/audio_processing/beamformer/array_util.h:
+ (webrtc::DegreesToRadians):
+ (webrtc::RadiansToDegrees):
+ Add constexpr so we can calculate values at compile time instead of launch time.
+ * Source/webrtc/modules/rtp_rtcp/source/rtp_utility.cc:
+ * Source/webrtc/system_wrappers/source/clock.cc:
+ * libwebrtc.xcodeproj/project.pbxproj:
+ Don't compile ssl_test.cc. We don't need it.
+
</ins><span class="cx"> 2017-03-10 Youenn Fablet <youenn@apple.com>
</span><span class="cx">
</span><span class="cx"> Move libwebrtc backend to using tracks
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcConfigurationsboringsslxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/boringssl.xcconfig (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Configurations/boringssl.xcconfig        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/boringssl.xcconfig        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -10,7 +10,6 @@
</span><span class="cx"> INSTALL_PATH = /usr/local/lib;
</span><span class="cx"> PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
</span><span class="cx"> USE_HEADERMAP = NO;
</span><del>-WARNING_CFLAGS = -Wno-exit-time-destructors;
</del><span class="cx">
</span><span class="cx"> // FIXME: There's no assembly used in the boringssl build yet :(
</span><span class="cx"> GCC_PREPROCESSOR_DEFINITIONS = OPENSSL_NO_ASM;
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcConfigurationslibsrtpxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libsrtp.xcconfig (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Configurations/libsrtp.xcconfig        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libsrtp.xcconfig        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -11,5 +11,5 @@
</span><span class="cx"> INSTALL_PATH = /usr/local/lib;
</span><span class="cx"> PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
</span><span class="cx"> USE_HEADERMAP = NO;
</span><del>-WARNING_CFLAGS = -Wno-exit-time-destructors -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-deprecated-declarations;
</del><ins>+WARNING_CFLAGS = -Wno-implicit-function-declaration -Wno-deprecated-declarations;
</ins><span class="cx"> GCC_PREPROCESSOR_DEFINITIONS = V8_DEPRECATION_WARNINGS ENABLE_NOTIFICATIONS ENABLE_PLUGINS=1 ENABLE_PDF=1 ENABLE_PRINTING=1 ENABLE_BASIC_PRINTING=1 ENABLE_PRINT_PREVIEW=1 ENABLE_SPELLCHECK=1 USE_BROWSER_SPELLCHECKER=1 NO_TCMALLOC USE_EXTERNAL_POPUP_MENU=1 ENABLE_WEBRTC=1 ENABLE_EXTENSIONS=1 ENABLE_TASK_MANAGER=1 ENABLE_THEMES=1 ENABLE_SESSION_SERVICE=1 ENABLE_SUPERVISED_USERS=1 FULL_SAFE_BROWSING SAFE_BROWSING_CSD SAFE_BROWSING_DB_LOCAL CHROMIUM_BUILD ENABLE_MEDIA_ROUTER=1 FIELDTRIAL_TESTING_ENABLED CR_CLANG_REVISION=284979-1 CR_XCODE_VERSION=0820 __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0 _DEBUG DYNAMIC_ANNOTATIONS_ENABLED=1 WTF_USE_DYNAMIC_ANNOTATIONS=1 PACKAGE_STRING="\"libsrtp2 2.0.0-pre\"" PACKAGE_VERSION="\"2.0.0-pre\"" HAVE_CONFIG_H OPENSSL HAVE_STDLIB_H HAVE_STRING_H HAVE_STDINT_H HAVE_INTTYPES_H HAVE_INT16_T HAVE_INT32_T HAVE_INT8_T HAVE_UINT16_T HAVE_UINT32_T HAVE_UINT64_T HAVE_UINT8_T HAVE_AR
PA_INET_H HAVE_NETINET_IN_H HAVE_SYS_TYPES_H HAVE_UNISTD_H;
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcConfigurationslibwebrtcxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.xcconfig        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx"> PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
</span><span class="cx"> USE_HEADERMAP = NO;
</span><span class="cx"> INSTALLHDRS_SCRIPT_PHASE = YES;
</span><del>-WARNING_CFLAGS = -Wno-exit-time-destructors -Wno-objc-property-no-attribute -Wno-objc-missing-super-calls -Wno-deprecated-declarations;
</del><ins>+WARNING_CFLAGS = -Wno-objc-property-no-attribute -Wno-objc-missing-super-calls -Wno-deprecated-declarations;
</ins><span class="cx">
</span><span class="cx"> GCC_PREPROCESSOR_DEFINITIONS = WEBRTC_POSIX WEBRTC_MAC SSL_USE_OPENSSL FEATURE_ENABLE_SSL HAVE_SRTP HAVE_OPENSSL_SSL_H SCTP_PROCESS_LEVEL_LOCKS SCTP_SIMPLE_ALLOCATOR SCTP_USE_OPENSSL_SHA1 __Userspace__ HAVE_SA_LEN HAVE_SCONN_LEN __APPLE_USE_RFC_2292 __Userspace_os_Darwin NON_WINDOWS_DEFINE HAVE_WEBRTC_VIDEO HAVE_WEBRTC_VOICE WEBRTC_INTELLIGIBILITY_ENHANCER=0 WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_NS_FLOAT WEBRTC_CODEC_ILBC WEBRTC_CODEC_OPUS WEBRTC_CODEC_ISAC WEBRTC_CODEC_RED RTC_DISABLE_VP9 RTC_DISABLE_VP8 HAVE_STDINT_H HAVE_STDLIB_H HAVE_UINT64_T OPENSSL HAVE_CONFIG_H WEBRTC_WEBKIT_BUILD HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE HAVE_SCTP WEBRTC_CODEC_G711 WEBRTC_CODEC_G722;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcConfigurationslibwebrtcpcrtcxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtcpcrtc.xcconfig (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtcpcrtc.xcconfig        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtcpcrtc.xcconfig        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -11,7 +11,7 @@
</span><span class="cx"> INSTALL_PATH = /usr/local/lib;
</span><span class="cx"> PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
</span><span class="cx"> USE_HEADERMAP = NO;
</span><del>-WARNING_CFLAGS = -Wno-exit-time-destructors -Wno-objc-property-no-attribute -Wno-objc-missing-super-calls;
</del><ins>+WARNING_CFLAGS = -Wno-objc-property-no-attribute -Wno-objc-missing-super-calls;
</ins><span class="cx">
</span><span class="cx"> GCC_PREPROCESSOR_DEFINITIONS = WEBRTC_POSIX WEBRTC_MAC SSL_USE_OPENSSL FEATURE_ENABLE_SSL HAVE_SRTP HAVE_OPENSSL_SSL_H SCTP_PROCESS_LEVEL_LOCKS SCTP_SIMPLE_ALLOCATOR SCTP_USE_OPENSSL_SHA1 __Userspace__ HAVE_SA_LEN HAVE_SCONN_LEN __APPLE_USE_RFC_2292 __Userspace_os_Darwin NON_WINDOWS_DEFINE HAVE_WEBRTC_VIDEO HAVE_WEBRTC_VOICE WEBRTC_INTELLIGIBILITY_ENHANCER=0 WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_NS_FLOAT WEBRTC_CODEC_ILBC WEBRTC_CODEC_OPUS WEBRTC_CODEC_ISAC WEBRTC_CODEC_RED RTC_DISABLE_VP9 RTC_DISABLE_VP8 HAVE_STDINT_H HAVE_STDLIB_H HAVE_UINT64_T OPENSSL HAVE_CONFIG_H WEBRTC_WEBKIT_BUILD HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE HAVE_SCTP;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcConfigurationslibyuvxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/libyuv.xcconfig (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Configurations/libyuv.xcconfig        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/libyuv.xcconfig        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -10,4 +10,3 @@
</span><span class="cx"> INSTALL_PATH = /usr/local/lib;
</span><span class="cx"> PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
</span><span class="cx"> USE_HEADERMAP = NO;
</span><del>-WARNING_CFLAGS = -Wno-exit-time-destructors -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-deprecated-declarations;
</del></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcConfigurationsopusxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/opus.xcconfig (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Configurations/opus.xcconfig        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/opus.xcconfig        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> INSTALL_PATH = /usr/local/lib;
</span><span class="cx"> PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
</span><span class="cx"> USE_HEADERMAP = NO;
</span><del>-WARNING_CFLAGS = -Wno-exit-time-destructors -Wno-implicit-function-declaration -Wno-incompatible-pointer-types
</del><ins>+WARNING_CFLAGS = -Wno-incompatible-pointer-types
</ins><span class="cx"> GCC_PREPROCESSOR_DEFINITIONS = VAR_ARRAYS OPUS_BUILD OPUS_EXPORT= HAVE_LRINT HAVE_LRINTF OPUS_X86_MAY_HAVE_SSE2;
</span><span class="cx">
</span><span class="cx"> EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*] = *_sse.c *_sse2.c;
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcConfigurationsusrsctpxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Configurations/usrsctp.xcconfig (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Configurations/usrsctp.xcconfig        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Configurations/usrsctp.xcconfig        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -10,6 +10,6 @@
</span><span class="cx"> INSTALL_PATH = /usr/local/lib;
</span><span class="cx"> PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include/libwebrtc;
</span><span class="cx"> USE_HEADERMAP = NO;
</span><del>-WARNING_CFLAGS = -Wno-exit-time-destructors -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-deprecated-declarations;
</del><ins>+WARNING_CFLAGS = -Wno-deprecated-declarations;
</ins><span class="cx"> GCC_PREPROCESSOR_DEFINITIONS = SCTP_PROCESS_LEVEL_LOCKS SCTP_SIMPLE_ALLOCATOR SCTP_USE_OPENSSL_SHA1 __Userspace__ HAVE_SA_LEN HAVE_SCONN_LEN __APPLE_USE_RFC_2292 __Userspace_os_Darwin;
</span><span class="cx"> OTHER_CFLAGS = -UINET -UINET6 -U__APPLE__;
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcbaseloggingcc"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.cc (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.cc        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.cc        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx">
</span><span class="cx"> #include "webrtc/base/criticalsection.h"
</span><span class="cx"> #include "webrtc/base/logging.h"
</span><ins>+#include "webrtc/base/neverdestroyed.h"
</ins><span class="cx"> #include "webrtc/base/platform_thread.h"
</span><span class="cx"> #include "webrtc/base/stringencode.h"
</span><span class="cx"> #include "webrtc/base/stringutils.h"
</span><span class="lines">@@ -103,8 +104,12 @@
</span><span class="cx"> bool LogMessage::log_to_stderr_ = true;
</span><span class="cx">
</span><span class="cx"> namespace {
</span><del>-// Global lock for log subsystem, only needed to serialize access to streams_.
-CriticalSection g_log_crit;
</del><ins>+// Global lock for log subsystem, only needed to serialize access to streams.
+const CriticalSection& g_log_crit()
+{
+ static webrtc::NeverDestroyed<CriticalSection> g_log_crit;
+ return g_log_crit;
+}
</ins><span class="cx"> } // namespace
</span><span class="cx">
</span><span class="cx"> // The list of logging streams currently configured.
</span><span class="lines">@@ -111,7 +116,11 @@
</span><span class="cx"> // Note: we explicitly do not clean this up, because of the uncertain ordering
</span><span class="cx"> // of destructors at program exit. Let the person who sets the stream trigger
</span><span class="cx"> // cleanup by setting to null, or let it leak (safe at program exit).
</span><del>-LogMessage::StreamList LogMessage::streams_ GUARDED_BY(g_log_crit);
</del><ins>+LogMessage::StreamList& LogMessage::streams()
+{
+ static webrtc::NeverDestroyed<LogMessage::StreamList> streams GUARDED_BY(g_log_crit);
+ return streams;
+}
</ins><span class="cx">
</span><span class="cx"> // Boolean options default to false (0)
</span><span class="cx"> bool LogMessage::thread_, LogMessage::timestamp_;
</span><span class="lines">@@ -207,8 +216,8 @@
</span><span class="cx"> OutputToDebug(str, severity_, tag_);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- CritScope cs(&g_log_crit);
- for (auto& kv : streams_) {
</del><ins>+ CritScope cs(&g_log_crit());
+ for (auto& kv : streams()) {
</ins><span class="cx"> if (severity_ >= kv.second) {
</span><span class="cx"> kv.first->OnLogMessage(str);
</span><span class="cx"> }
</span><span class="lines">@@ -235,7 +244,7 @@
</span><span class="cx">
</span><span class="cx"> void LogMessage::LogToDebug(LoggingSeverity min_sev) {
</span><span class="cx"> dbg_sev_ = min_sev;
</span><del>- CritScope cs(&g_log_crit);
</del><ins>+ CritScope cs(&g_log_crit());
</ins><span class="cx"> UpdateMinLogSeverity();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -244,9 +253,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> int LogMessage::GetLogToStream(LogSink* stream) {
</span><del>- CritScope cs(&g_log_crit);
</del><ins>+ CritScope cs(&g_log_crit());
</ins><span class="cx"> LoggingSeverity sev = LS_NONE;
</span><del>- for (auto& kv : streams_) {
</del><ins>+ for (auto& kv : streams()) {
</ins><span class="cx"> if (!stream || stream == kv.first) {
</span><span class="cx"> sev = std::min(sev, kv.second);
</span><span class="cx"> }
</span><span class="lines">@@ -255,16 +264,16 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void LogMessage::AddLogToStream(LogSink* stream, LoggingSeverity min_sev) {
</span><del>- CritScope cs(&g_log_crit);
- streams_.push_back(std::make_pair(stream, min_sev));
</del><ins>+ CritScope cs(&g_log_crit());
+ streams().push_back(std::make_pair(stream, min_sev));
</ins><span class="cx"> UpdateMinLogSeverity();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void LogMessage::RemoveLogToStream(LogSink* stream) {
</span><del>- CritScope cs(&g_log_crit);
- for (StreamList::iterator it = streams_.begin(); it != streams_.end(); ++it) {
</del><ins>+ CritScope cs(&g_log_crit());
+ for (StreamList::iterator it = streams().begin(); it != streams().end(); ++it) {
</ins><span class="cx"> if (stream == it->first) {
</span><del>- streams_.erase(it);
</del><ins>+ streams().erase(it);
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -335,7 +344,7 @@
</span><span class="cx">
</span><span class="cx"> void LogMessage::UpdateMinLogSeverity() EXCLUSIVE_LOCKS_REQUIRED(g_log_crit) {
</span><span class="cx"> LoggingSeverity min_sev = dbg_sev_;
</span><del>- for (auto& kv : streams_) {
</del><ins>+ for (auto& kv : streams()) {
</ins><span class="cx"> min_sev = std::min(dbg_sev_, kv.second);
</span><span class="cx"> }
</span><span class="cx"> min_sev_ = min_sev;
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcbaseloggingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.h (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.h        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/logging.h        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -234,7 +234,7 @@
</span><span class="cx"> static LoggingSeverity min_sev_, dbg_sev_, ctx_sev_;
</span><span class="cx">
</span><span class="cx"> // The output streams and their associated severities
</span><del>- static StreamList streams_;
</del><ins>+ static StreamList& streams();
</ins><span class="cx">
</span><span class="cx"> // Flags for formatting options
</span><span class="cx"> static bool thread_, timestamp_;
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcbaseneverdestroyedh"></a>
<div class="addfile"><h4>Added: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/neverdestroyed.h (0 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/neverdestroyed.h         (rev 0)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/neverdestroyed.h        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/*
+ * Copyright (c) 2017 Apple Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#pragma once
+
+namespace webrtc {
+
+template<typename T> class NeverDestroyed {
+ NeverDestroyed(const NeverDestroyed&) = delete;
+ NeverDestroyed& operator=(const NeverDestroyed&) = delete;
+public:
+ template<typename... Args>
+ NeverDestroyed(Args&&... args)
+ {
+ new (&m_storage) T(std::forward<Args>(args)...);
+ }
+ operator T&() { return *asPtr(); }
+ T& get() { return *asPtr(); }
+ T* operator&() { return asPtr(); }
+private:
+ typedef typename std::remove_const<T>::type* PointerType;
+ PointerType asPtr() { return reinterpret_cast<PointerType>(&m_storage); }
+ typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type m_storage;
+};
+
+}
</ins></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcbasevirtualsocketservercc"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/virtualsocketserver.cc (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/virtualsocketserver.cc        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/base/virtualsocketserver.cc        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -1016,7 +1016,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static double PI = 4 * atan(1.0);
</del><ins>+static const double PI = 3.141592653589793238462643383279502884;
</ins><span class="cx">
</span><span class="cx"> static double Normal(double x, double mean, double stddev) {
</span><span class="cx"> double a = (x - mean) * (x - mean) / (2 * stddev * stddev);
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcmodulesaudio_codingcodecsbuiltin_audio_decoder_factory_internalcc"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory_internal.cc (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory_internal.cc        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory_internal.cc        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -15,6 +15,7 @@
</span><span class="cx">
</span><span class="cx"> #include "webrtc/base/checks.h"
</span><span class="cx"> #include "webrtc/base/optional.h"
</span><ins>+#include "webrtc/base/neverdestroyed.h"
</ins><span class="cx"> #include "webrtc/common_types.h"
</span><span class="cx"> #include "webrtc/modules/audio_coding/codecs/cng/webrtc_cng.h"
</span><span class="cx"> #include "webrtc/modules/audio_coding/codecs/g711/audio_decoder_pcm.h"
</span><span class="lines">@@ -50,7 +51,8 @@
</span><span class="cx">
</span><span class="cx"> // TODO(kwiberg): These factory functions should probably be moved to each
</span><span class="cx"> // decoder.
</span><del>-NamedDecoderConstructor decoder_constructors[] = {
</del><ins>+static const std::vector<NamedDecoderConstructor>& decoder_constructors() {
+ static NeverDestroyed<std::vector<NamedDecoderConstructor>> decoder_constructors = [] { return std::vector<NamedDecoderConstructor>({
</ins><span class="cx"> {"pcmu",
</span><span class="cx"> [](const SdpAudioFormat& format, std::unique_ptr<AudioDecoder>* out) {
</span><span class="cx"> if (format.clockrate_hz == 8000 && format.num_channels >= 1) {
</span><span class="lines">@@ -170,7 +172,9 @@
</span><span class="cx"> }
</span><span class="cx"> }},
</span><span class="cx"> #endif
</span><del>-};
</del><ins>+ });}();
+ return decoder_constructors.get();
+}
</ins><span class="cx">
</span><span class="cx"> class BuiltinAudioDecoderFactory : public AudioDecoderFactory {
</span><span class="cx"> public:
</span><span class="lines">@@ -177,7 +181,7 @@
</span><span class="cx"> std::vector<AudioCodecSpec> GetSupportedDecoders() override {
</span><span class="cx"> // Although this looks a bit strange, it means specs need only be
</span><span class="cx"> // initialized once, and that that initialization is thread-safe.
</span><del>- static std::vector<AudioCodecSpec> specs = [] {
</del><ins>+ static NeverDestroyed<std::vector<AudioCodecSpec>> specs = [] {
</ins><span class="cx"> std::vector<AudioCodecSpec> specs;
</span><span class="cx"> #ifdef WEBRTC_CODEC_OPUS
</span><span class="cx"> // clang-format off
</span><span class="lines">@@ -210,7 +214,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool IsSupportedDecoder(const SdpAudioFormat& format) override {
</span><del>- for (const auto& dc : decoder_constructors) {
</del><ins>+ for (const auto& dc : decoder_constructors()) {
</ins><span class="cx"> if (STR_CASE_CMP(format.name.c_str(), dc.name) == 0) {
</span><span class="cx"> return dc.constructor(format, nullptr);
</span><span class="cx"> }
</span><span class="lines">@@ -220,7 +224,7 @@
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<AudioDecoder> MakeAudioDecoder(
</span><span class="cx"> const SdpAudioFormat& format) override {
</span><del>- for (const auto& dc : decoder_constructors) {
</del><ins>+ for (const auto& dc : decoder_constructors()) {
</ins><span class="cx"> if (STR_CASE_CMP(format.name.c_str(), dc.name) == 0) {
</span><span class="cx"> std::unique_ptr<AudioDecoder> decoder;
</span><span class="cx"> bool ok = dc.constructor(format, &decoder);
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcmodulesaudio_processingbeamformerarray_utilh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_processing/beamformer/array_util.h (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_processing/beamformer/array_util.h        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/audio_processing/beamformer/array_util.h        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -103,12 +103,14 @@
</span><span class="cx">
</span><span class="cx"> // Helper functions to transform degrees to radians and the inverse.
</span><span class="cx"> template <typename T>
</span><del>-T DegreesToRadians(T angle_degrees) {
</del><ins>+constexpr T DegreesToRadians(T angle_degrees)
+{
</ins><span class="cx"> return M_PI * angle_degrees / 180;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <typename T>
</span><del>-T RadiansToDegrees(T angle_radians) {
</del><ins>+constexpr T RadiansToDegrees(T angle_radians)
+{
</ins><span class="cx"> return 180 * angle_radians / M_PI;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcmodulesrtp_rtcpsourcertp_utilitycc"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtp_utility.cc (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtp_utility.cc        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/modules/rtp_rtcp/source/rtp_utility.cc        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> #include <string.h>
</span><span class="cx">
</span><span class="cx"> #include "webrtc/base/logging.h"
</span><ins>+#include "webrtc/base/neverdestroyed.h"
</ins><span class="cx"> #include "webrtc/modules/rtp_rtcp/include/rtp_cvo.h"
</span><span class="cx"> #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
</span><span class="cx"> #include "webrtc/modules/rtp_rtcp/source/rtp_header_extensions.h"
</span><span class="lines">@@ -20,17 +21,17 @@
</span><span class="cx"> namespace webrtc {
</span><span class="cx">
</span><span class="cx"> RtpData* NullObjectRtpData() {
</span><del>- static NullRtpData null_rtp_data;
</del><ins>+ static NeverDestroyed<NullRtpData> null_rtp_data;
</ins><span class="cx"> return &null_rtp_data;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RtpFeedback* NullObjectRtpFeedback() {
</span><del>- static NullRtpFeedback null_rtp_feedback;
</del><ins>+ static NeverDestroyed<NullRtpFeedback> null_rtp_feedback;
</ins><span class="cx"> return &null_rtp_feedback;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ReceiveStatistics* NullObjectReceiveStatistics() {
</span><del>- static NullReceiveStatistics null_receive_statistics;
</del><ins>+ static NeverDestroyed<NullReceiveStatistics> null_receive_statistics;
</ins><span class="cx"> return &null_receive_statistics;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtcSourcewebrtcsystem_wrapperssourceclockcc"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/system_wrappers/source/clock.cc (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/system_wrappers/source/clock.cc        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/system_wrappers/source/clock.cc        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -20,6 +20,7 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #include "webrtc/base/criticalsection.h"
</span><ins>+#include "webrtc/base/neverdestroyed.h"
</ins><span class="cx"> #include "webrtc/base/timeutils.h"
</span><span class="cx"> #include "webrtc/system_wrappers/include/rw_lock_wrapper.h"
</span><span class="cx">
</span><span class="lines">@@ -223,7 +224,7 @@
</span><span class="cx"> }
</span><span class="cx"> return g_shared_clock;
</span><span class="cx"> #elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
</span><del>- static UnixRealTimeClock clock;
</del><ins>+ static NeverDestroyed<UnixRealTimeClock> clock;
</ins><span class="cx"> return &clock;
</span><span class="cx"> #else
</span><span class="cx"> return NULL;
</span></span></pre></div>
<a id="trunkSourceThirdPartylibwebrtclibwebrtcxcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj (214287 => 214288)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj        2017-03-23 00:27:01 UTC (rev 214287)
+++ trunk/Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj        2017-03-23 00:57:27 UTC (rev 214288)
</span><span class="lines">@@ -528,7 +528,6 @@
</span><span class="cx">                 5C4B48391E42C06A002651C8 /* ssl_rsa.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B47F51E42C066002651C8 /* ssl_rsa.c */; };
</span><span class="cx">                 5C4B483A1E42C06A002651C8 /* ssl_session.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B47F61E42C066002651C8 /* ssl_session.c */; };
</span><span class="cx">                 5C4B483B1E42C06A002651C8 /* ssl_stat.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B47F71E42C066002651C8 /* ssl_stat.c */; };
</span><del>-                5C4B483C1E42C06A002651C8 /* ssl_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B47F81E42C066002651C8 /* ssl_test.cc */; };
</del><span class="cx">                 5C4B483D1E42C06A002651C8 /* t1_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B47F91E42C066002651C8 /* t1_enc.c */; };
</span><span class="cx">                 5C4B483E1E42C06A002651C8 /* t1_lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B47FA1E42C066002651C8 /* t1_lib.c */; };
</span><span class="cx">                 5C4B483F1E42C06A002651C8 /* tls_method.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C4B47FB1E42C066002651C8 /* tls_method.c */; };
</span><span class="lines">@@ -2489,6 +2488,7 @@
</span><span class="cx">                 5CDD907F1E43D15C00621E92 /* mock_nonlinear_beamformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CDD906F1E43D15C00621E92 /* mock_nonlinear_beamformer.h */; };
</span><span class="cx">                 5CDD90821E43D15C00621E92 /* nonlinear_beamformer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5CDD90721E43D15C00621E92 /* nonlinear_beamformer.cc */; };
</span><span class="cx">                 5CDD90831E43D15C00621E92 /* nonlinear_beamformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CDD90731E43D15C00621E92 /* nonlinear_beamformer.h */; };
</span><ins>+                5CDEB3311E82110800209B14 /* neverdestroyed.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CDEB3301E82110800209B14 /* neverdestroyed.h */; };
</ins><span class="cx">                 5CFD537C1E4BA4F500482908 /* audio_device_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CFD53751E4BA4F500482908 /* audio_device_ios.h */; };
</span><span class="cx">                 5CFD53801E4BA4F500482908 /* audio_session_observer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CFD53791E4BA4F500482908 /* audio_session_observer.h */; };
</span><span class="cx">                 5CFD53811E4BA4F500482908 /* voice_processing_audio_unit.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CFD537A1E4BA4F500482908 /* voice_processing_audio_unit.h */; };
</span><span class="lines">@@ -5208,6 +5208,7 @@
</span><span class="cx">                 5CDD90AB1E43D52900621E92 /* aes_icm_ossl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = aes_icm_ossl.c; path = cipher/aes_icm_ossl.c; sourceTree = "<group>"; };
</span><span class="cx">                 5CDD90AC1E43D52900621E92 /* cipher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cipher.c; path = cipher/cipher.c; sourceTree = "<group>"; };
</span><span class="cx">                 5CDD90AD1E43D52900621E92 /* null_cipher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = null_cipher.c; path = cipher/null_cipher.c; sourceTree = "<group>"; };
</span><ins>+                5CDEB3301E82110800209B14 /* neverdestroyed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = neverdestroyed.h; sourceTree = "<group>"; };
</ins><span class="cx">                 5CFD53751E4BA4F500482908 /* audio_device_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_device_ios.h; sourceTree = "<group>"; };
</span><span class="cx">                 5CFD53761E4BA4F500482908 /* audio_device_ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = audio_device_ios.mm; sourceTree = "<group>"; };
</span><span class="cx">                 5CFD53791E4BA4F500482908 /* audio_session_observer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_session_observer.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -6687,6 +6688,7 @@
</span><span class="cx">                 5C63F3041E4146D2002CA531 /* base */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                5CDEB3301E82110800209B14 /* neverdestroyed.h */,
</ins><span class="cx">                                 5CD286421E6A7B420094FDC8 /* sha1.cc */,
</span><span class="cx">                                 5CD286431E6A7B420094FDC8 /* sha1.h */,
</span><span class="cx">                                 5CD2854F1E6A62310094FDC8 /* numerics */,
</span><span class="lines">@@ -10260,6 +10262,7 @@
</span><span class="cx">                                 5CDD8BEA1E43C2B500621E92 /* split_vq.h in Headers */,
</span><span class="cx">                                 5CDD84C21E43AF1300621E92 /* splitting_filter.h in Headers */,
</span><span class="cx">                                 5CDD83601E43257200621E92 /* sps_parser.h in Headers */,
</span><ins>+                                5CDEB3311E82110800209B14 /* neverdestroyed.h in Headers */,
</ins><span class="cx">                                 5CDD83631E43257200621E92 /* sps_vui_rewriter.h in Headers */,
</span><span class="cx">                                 5C63F88D1E416288002CA531 /* ssladapter.h in Headers */,
</span><span class="cx">                                 5C63F8901E416288002CA531 /* sslfingerprint.h in Headers */,
</span><span class="lines">@@ -11211,7 +11214,6 @@
</span><span class="cx">                                 5C4B48391E42C06A002651C8 /* ssl_rsa.c in Sources */,
</span><span class="cx">                                 5C4B483A1E42C06A002651C8 /* ssl_session.c in Sources */,
</span><span class="cx">                                 5C4B483B1E42C06A002651C8 /* ssl_stat.c in Sources */,
</span><del>-                                5C4B483C1E42C06A002651C8 /* ssl_test.cc in Sources */,
</del><span class="cx">                                 5C4B46A51E42AA42002651C8 /* stack.c in Sources */,
</span><span class="cx">                                 5C4B483D1E42C06A002651C8 /* t1_enc.c in Sources */,
</span><span class="cx">                                 5C4B483E1E42C06A002651C8 /* t1_lib.c in Sources */,
</span></span></pre>
</div>
</div>
</body>
</html>