Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit 6296266

Browse files
authored
Merge pull request #517 from taste1981/perf_optimization
Windows SDK Perf optimization
2 parents fb0b28d + b644f68 commit 6296266

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+5628
-655
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Before you start, make sure you have the following prerequisites installed/built
2323
The following dependencies are for Windows only:
2424

2525
- [Boost 1.67.0 or higher](https://www.boost.org/users/download/).
26-
- [Intel Media SDK for Windows, version 2018 R1 or higher](https://software.intel.com/en-us/media-sdk/choose-download/client).
26+
- [Intel Media SDK for Windows, version 2020 R1 or higher](https://software.intel.com/en-us/media-sdk/choose-download/client).
2727

2828
### Get the code
2929
- Make sure you clone the source code to a directory named `src`.

scripts/prepare_dev.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
THIRD_PARTY_PATH = os.path.join(HOME_PATH, 'third_party')
1919
LIBSRTP_PATH = os.path.join(THIRD_PARTY_PATH, 'libsrtp')
2020
FFMPEG_PATH = os.path.join(THIRD_PARTY_PATH, 'ffmpeg')
21+
LIBVPX_PATH = os.path.join(THIRD_PARTY_PATH, 'libvpx')
22+
LIBVPX_SOURCE_PATH = os.path.join(LIBVPX_PATH, 'source/libvpx')
2123
WEBRTC_OVERRIDES_PATH = os.path.join(THIRD_PARTY_PATH, 'webrtc_overrides')
2224
BUILD_PATH = os.path.join(HOME_PATH, 'build')
2325
CONFIG_PATH = os.path.join(BUILD_PATH, 'config')
@@ -42,7 +44,8 @@
4244
('0013-Remove-unused-gni-for-av1-build.patch', THIRD_PARTY_PATH),
4345
('0014-Fix-missing-ffmpeg-configure-item-for-msvc-build.patch', FFMPEG_PATH),
4446
('0015-Remove-custom-d8-dependency.patch', BUILD_PATH),
45-
('0016-Remove-deprecated-create_srcjar-property.patch', THIRD_PARTY_PATH)
47+
('0016-Remove-deprecated-create_srcjar-property.patch', THIRD_PARTY_PATH),
48+
('0017-Build-libvpx-with-RTC-rate-control-impl-included.patch', THIRD_PARTY_PATH)
4649
]
4750

4851
def _patch(ignoreFailures=False):

talk/owt/BUILD.gn

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,27 @@
44

55
import("//build_overrides/webrtc.gni")
66
import("//testing/test.gni")
7+
8+
# Introduced for using libvpx config files. We only enable libvpx rate
9+
# controller for VP9 on Windows.
10+
if (is_win) {
11+
os_category = current_os
12+
13+
if (current_cpu == "x86") {
14+
cpu_arch_full = "ia32"
15+
} else if (current_cpu == "x64") {
16+
cpu_arch_full = "x64"
17+
} else if (current_cpu == "arm") {
18+
if (arm_use_neon) {
19+
cpu_arch_full = "arm-neon"
20+
} else if (is_android) {
21+
cpu_arch_full = "arm-neon-cpu-detect"
22+
} else {
23+
cpu_arch_full = "arm"
24+
}
25+
}
26+
}
27+
728
if (is_android) {
829
import("//build/config/android/config.gni")
930
import("//build/config/android/rules.gni")
@@ -156,8 +177,32 @@ static_library("owt_sdk_base") {
156177

157178
defines = [ "USE_BUILTIN_SW_CODECS" ]
158179

159-
if (owt_msdk_header_root != "") {
180+
if (is_win && owt_msdk_header_root != "") {
160181
include_dirs += [ owt_msdk_header_root ]
182+
defines += [ "OWT_USE_MSDK" ]
183+
sources += [
184+
"sdk/base/win/base_allocator.cc",
185+
"sdk/base/win/base_allocator.h",
186+
"sdk/base/win/d3d_allocator.cc",
187+
"sdk/base/win/d3d_allocator.h",
188+
"sdk/base/win/d3d11_allocator.cc",
189+
"sdk/base/win/d3d11_allocator.h",
190+
"sdk/base/win/d3dnativeframe.h",
191+
"sdk/base/win/mediacapabilities.cc",
192+
"sdk/base/win/mediacapabilities.h",
193+
"sdk/base/win/msdkvideobase.cc",
194+
"sdk/base/win/msdkvideobase.h",
195+
"sdk/base/win/msdkvideodecoder.cc",
196+
"sdk/base/win/msdkvideodecoder.h",
197+
"sdk/base/win/msdkvideodecoderfactory.cc",
198+
"sdk/base/win/msdkvideodecoderfactory.h",
199+
"sdk/base/win/msdkvideoencoder.cc",
200+
"sdk/base/win/msdkvideoencoder.h",
201+
"sdk/base/win/msdkvideoencoderfactory.cc",
202+
"sdk/base/win/msdkvideoencoderfactory.h",
203+
"sdk/base/win/sysmem_allocator.cc",
204+
"sdk/base/win/sysmem_allocator.h",
205+
]
161206
}
162207

163208
if (rtc_include_internal_audio_device) {
@@ -166,6 +211,7 @@ static_library("owt_sdk_base") {
166211
if (rtc_use_x11) {
167212
defines += [ "WEBRTC_USE_X11" ]
168213
}
214+
169215
if (!rtc_use_h265) {
170216
defines += [ "DISABLE_H265" ]
171217
} else {
@@ -189,28 +235,21 @@ static_library("owt_sdk_base") {
189235
sources += [
190236
"sdk/base/desktopcapturer.cc",
191237
"sdk/base/desktopcapturer.h",
192-
"sdk/base/win/base_allocator.cc",
193-
"sdk/base/win/base_allocator.h",
194-
"sdk/base/win/d3d_allocator.cc",
195-
"sdk/base/win/d3d_allocator.h",
196-
"sdk/base/win/d3dnativeframe.h",
197-
"sdk/base/win/msdkvideobase.cc",
198-
"sdk/base/win/msdkvideobase.h",
199-
"sdk/base/win/msdkvideodecoder.cc",
200-
"sdk/base/win/msdkvideodecoder.h",
201-
"sdk/base/win/msdkvideodecoderfactory.cc",
202-
"sdk/base/win/msdkvideodecoderfactory.h",
203-
"sdk/base/win/msdkvideoencoder.cc",
204-
"sdk/base/win/msdkvideoencoder.h",
205-
"sdk/base/win/msdkvideoencoderfactory.cc",
206-
"sdk/base/win/msdkvideoencoderfactory.h",
207-
"sdk/base/win/sysmem_allocator.cc",
208-
"sdk/base/win/sysmem_allocator.h",
209238
"sdk/base/win/videorendererwin.cc",
210239
"sdk/base/win/videorendererwin.h",
240+
"sdk/base/win/videorendererd3d11.cc",
241+
"sdk/base/win/videorendererd3d11.h",
242+
"sdk/base/win/vp9ratecontrol.cc",
243+
"sdk/base/win/vp9ratecontrol.h",
211244
"sdk/base/windowcapturer.cc",
212245
]
213246
public_deps += [ "//third_party/webrtc/modules/audio_device:audio_device_module_from_input_and_output" ]
247+
public_deps += [ "//third_party/libvpx" ]
248+
include_dirs += [
249+
"//third_party/libvpx/source/config",
250+
"//third_party/libvpx/source/config/$os_category/$cpu_arch_full",
251+
"//third_party/libvpx/source/libvpx",
252+
]
214253
}
215254
if (is_linux) {
216255
if (owt_msdk_header_root != "") {
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
From 382a51c501bd52bf349cb76a17a1f03d79e251b5 Mon Sep 17 00:00:00 2001
2+
From: Qiu Jainlin <[email protected]>
3+
Date: Tue, 20 Apr 2021 13:31:03 +0800
4+
Subject: [PATCH] Build libvpx with RTC rate control impl included
5+
6+
---
7+
libvpx/libvpx_srcs.gni | 18 ++++++++++++++++++
8+
1 file changed, 18 insertions(+)
9+
10+
diff --git a/libvpx/libvpx_srcs.gni b/libvpx/libvpx_srcs.gni
11+
index b78d739082a..8890da99d47 100644
12+
--- a/libvpx/libvpx_srcs.gni
13+
+++ b/libvpx/libvpx_srcs.gni
14+
@@ -261,6 +261,8 @@ libvpx_srcs_x86 = [
15+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
16+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
17+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
18+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
19+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
20+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
21+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
22+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
23+
@@ -738,6 +740,8 @@ libvpx_srcs_x86_64 = [
24+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
25+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
26+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
27+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
28+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
29+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
30+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
31+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
32+
@@ -1218,6 +1222,8 @@ libvpx_srcs_arm = [
33+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
34+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
35+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
36+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
37+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
38+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
39+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
40+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
41+
@@ -1588,6 +1594,8 @@ libvpx_srcs_arm_neon = [
42+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
43+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
44+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
45+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
46+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
47+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
48+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
49+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
50+
@@ -1987,6 +1995,8 @@ libvpx_srcs_arm_neon_cpu_detect = [
51+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
52+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
53+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
54+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
55+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
56+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
57+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
58+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
59+
@@ -2435,6 +2445,8 @@ libvpx_srcs_arm64 = [
60+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
61+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
62+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
63+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
64+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
65+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
66+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
67+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
68+
@@ -2845,6 +2857,8 @@ libvpx_srcs_arm_neon_highbd = [
69+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
70+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
71+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
72+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
73+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
74+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
75+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
76+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
77+
@@ -3284,6 +3298,8 @@ libvpx_srcs_arm64_highbd = [
78+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
79+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
80+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
81+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
82+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
83+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
84+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
85+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
86+
@@ -4364,6 +4380,8 @@ libvpx_srcs_generic = [
87+
"//third_party/libvpx/source/libvpx/vp9/vp9_dx_iface.h",
88+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.c",
89+
"//third_party/libvpx/source/libvpx/vp9/vp9_iface_common.h",
90+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.cc",
91+
+ "//third_party/libvpx/source/libvpx/vp9/ratectrl_rtc.h",
92+
"//third_party/libvpx/source/libvpx/vpx/internal/vpx_codec_internal.h",
93+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_codec.c",
94+
"//third_party/libvpx/source/libvpx/vpx/src/vpx_decoder.c",
95+
--
96+
2.30.2.windows.1
97+

talk/owt/sdk/base/codecutils.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ std::vector<webrtc::SdpVideoFormat> CodecUtils::GetSupportedH265Codecs() {
3838
{{cricket::kH265FmtpProfileSpace, "0"},
3939
{cricket::kH265FmtpProfileId, "1"},
4040
{cricket::kH265FmtpTierFlag, "0"},
41+
{cricket::kH265FmtpLevelId, "120"}}),
42+
webrtc::SdpVideoFormat(cricket::kH265CodecName,
43+
{{cricket::kH265FmtpProfileSpace, "0"},
44+
{cricket::kH265FmtpProfileId, "2"},
45+
{cricket::kH265FmtpTierFlag, "0"},
4146
{cricket::kH265FmtpLevelId, "120"}})};
4247
}
4348
#endif
@@ -52,6 +57,8 @@ webrtc::VideoCodecType CodecUtils::ConvertSdpFormatToCodecType(webrtc::SdpVideoF
5257
} else if (absl::EqualsIgnoreCase(format.name, cricket::kH265CodecName)) {
5358
return webrtc::kVideoCodecH265;
5459
#endif
60+
} else if (absl::EqualsIgnoreCase(format.name, cricket::kAv1CodecName)) {
61+
return webrtc::kVideoCodecAV1;
5562
}
5663
else {
5764
return webrtc::kVideoCodecGeneric;

talk/owt/sdk/base/connectionstats.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
694694
double gap_loss_rate,
695695
double gap_discard_rate,
696696
uint32_t frames_decoded,
697+
uint32_t frames_rendered,
697698
uint32_t key_frames_decoded,
698699
double total_decode_time,
699700
double total_inter_frame_delay,
@@ -724,6 +725,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
724725
gap_loss_rate(gap_loss_rate),
725726
gap_discard_rate(gap_discard_rate),
726727
frames_decoded(frames_decoded),
728+
frames_rendered(frames_rendered),
727729
key_frames_decoded(key_frames_decoded),
728730
total_decode_time(total_decode_time),
729731
total_inter_frame_delay(total_inter_frame_delay),
@@ -755,6 +757,7 @@ RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
755757
gap_loss_rate(other.gap_loss_rate),
756758
gap_discard_rate(other.gap_discard_rate),
757759
frames_decoded(other.frames_decoded),
760+
frames_rendered(other.frames_rendered),
758761
key_frames_decoded(other.key_frames_decoded),
759762
total_decode_time(other.total_decode_time),
760763
total_inter_frame_delay(other.total_inter_frame_delay),

talk/owt/sdk/base/deviceutils.cc

Lines changed: 68 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ std::vector<Resolution> DeviceUtils::VideoCapturerSupportedResolutions(
6262
} else {
6363
for (int32_t i = 0; i < info->NumberOfCapabilities(id.c_str()); i++) {
6464
if (info->GetCapability(id.c_str(), i, capability) == 0) {
65-
resolutions.push_back(Resolution(capability.width, capability.height));
65+
resolutions.push_back(
66+
Resolution(capability.width, capability.height));
6667
} else {
6768
RTC_LOG(LS_WARNING) << "Failed to get capability.";
6869
}
@@ -89,8 +90,8 @@ std::vector<Resolution> DeviceUtils::VideoCapturerSupportedResolutions(
8990
if (found) {
9091
for (int32_t i = 0; i < info->NumberOfCapabilities(vcm_id); i++) {
9192
if (info->GetCapability(vcm_id, i, capability) == 0) {
92-
resolutions.push_back(
93-
Resolution(capability.width, capability.height));
93+
resolutions.push_back(Resolution(
94+
capability.width, capability.height));
9495
} else {
9596
RTC_LOG(LS_WARNING) << "Failed to get capability.";
9697
}
@@ -100,5 +101,69 @@ std::vector<Resolution> DeviceUtils::VideoCapturerSupportedResolutions(
100101
}
101102
return resolutions;
102103
}
104+
105+
std::vector<VideoTrackCapabilities>
106+
DeviceUtils::VideoCapturerSupportedCapabilities(
107+
const std::string& id) {
108+
std::vector<VideoTrackCapabilities> resolutions;
109+
webrtc::VideoCaptureCapability capability;
110+
std::unique_ptr<webrtc::VideoCaptureModule::DeviceInfo> info(
111+
webrtc::VideoCaptureFactory::CreateDeviceInfo());
112+
if (!info) {
113+
RTC_LOG(LS_ERROR) << "CreateDeviceInfo failed";
114+
} else {
115+
for (int32_t i = 0; i < info->NumberOfCapabilities(id.c_str()); i++) {
116+
if (info->GetCapability(id.c_str(), i, capability) == 0) {
117+
resolutions.push_back(VideoTrackCapabilities(
118+
capability.width, capability.height, capability.maxFPS));
119+
} else {
120+
RTC_LOG(LS_WARNING) << "Failed to get capability.";
121+
}
122+
}
123+
// Try to get capabilities by device name if getting capabilities by ID is
124+
// failed.
125+
// TODO(jianjun): Remove this when creating stream by device name is no
126+
// longer supported.
127+
if (resolutions.size() == 0) {
128+
// Get device ID by name.
129+
int num_cams = info->NumberOfDevices();
130+
char vcm_id[256] = "";
131+
bool found = false;
132+
for (int index = 0; index < num_cams; ++index) {
133+
char vcm_name[256] = "";
134+
if (info->GetDeviceName(index, vcm_name, arraysize(vcm_name), vcm_id,
135+
arraysize(vcm_id)) != -1) {
136+
if (id == reinterpret_cast<char*>(vcm_name)) {
137+
found = true;
138+
break;
139+
}
140+
}
141+
}
142+
if (found) {
143+
for (int32_t i = 0; i < info->NumberOfCapabilities(vcm_id); i++) {
144+
if (info->GetCapability(vcm_id, i, capability) == 0) {
145+
resolutions.push_back(VideoTrackCapabilities(
146+
capability.width, capability.height, capability.maxFPS));
147+
} else {
148+
RTC_LOG(LS_WARNING) << "Failed to get capability.";
149+
}
150+
}
151+
}
152+
}
153+
}
154+
return resolutions;
155+
}
156+
157+
std::string DeviceUtils::GetDeviceNameByIndex(int index) {
158+
std::unique_ptr<webrtc::VideoCaptureModule::DeviceInfo> info(
159+
webrtc::VideoCaptureFactory::CreateDeviceInfo());
160+
char device_name[256];
161+
char unique_name[256];
162+
info->GetDeviceName(static_cast<uint32_t>(index), device_name,
163+
sizeof(device_name), unique_name, sizeof(unique_name));
164+
std::string name(device_name);
165+
return name;
166+
}
167+
103168
}
104169
}

talk/owt/sdk/base/functionalobserver.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,8 @@ void FunctionalStandardRTCStatsCollectorCallback::OnStatsDelivered(
612612
0),
613613
OWT_STATS_VALUE_OR_DEFAULT(webrtc_stats, frames_decoded, uint32_t,
614614
0),
615+
OWT_STATS_VALUE_OR_DEFAULT(webrtc_stats, frames_rendered, uint32_t,
616+
0),
615617
OWT_STATS_VALUE_OR_DEFAULT(webrtc_stats, key_frames_decoded,
616618
uint32_t, 0),
617619
OWT_STATS_VALUE_OR_DEFAULT(webrtc_stats, total_decode_time,

talk/owt/sdk/base/globalconfiguration.cc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,12 @@ AudioProcessingSettings GlobalConfiguration::audio_processing_settings_ = {
2121
AudioProcessingSettings GlobalConfiguration::audio_processing_settings_ = {
2222
true, true, true, true};
2323
#endif
24-
}
24+
IcePortRanges GlobalConfiguration::ice_port_ranges_ = {
25+
{0, 0},
26+
{0, 0},
27+
{0, 0},
28+
{0, 0}};
29+
bool GlobalConfiguration::pre_decode_dump_enabled_ = false;
30+
bool GlobalConfiguration::post_encode_dump_enabled_ = false;
31+
} // namespace base
2532
}

0 commit comments

Comments
 (0)