1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
|
https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/issues/42
https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/merge_requests/60
From c8896801dfbfe03b56f85c1533abc077ff74a533 Mon Sep 17 00:00:00 2001
From: Reilly Brogan <reilly@reillybrogan.com>
Date: Tue, 19 Aug 2025 14:47:03 -0500
Subject: [PATCH] Fix build with abseil-cpp 202508
--- a/webrtc/api/audio/audio_processing.h
+++ b/webrtc/api/audio/audio_processing.h
@@ -28,6 +28,7 @@
#include <string>
#include <utility>
+#include "absl/base/config.h"
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h"
#include "api/array_view.h"
@@ -632,6 +633,7 @@ class RTC_EXPORT AudioProcessing : public RefCountInterface {
// return value of true indicates that the file has been
// sucessfully opened, while a value of false indicates that
// opening the file failed.
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
virtual bool CreateAndAttachAecDump(
absl::string_view file_name,
int64_t max_log_size_bytes,
@@ -640,6 +642,16 @@ class RTC_EXPORT AudioProcessing : public RefCountInterface {
absl::Nonnull<FILE*> handle,
int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue) = 0;
+#else
+ virtual bool CreateAndAttachAecDump(absl::string_view file_name,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull
+ worker_queue) = 0;
+ virtual bool CreateAndAttachAecDump(FILE* absl_nonnull handle,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull
+ worker_queue) = 0;
+#endif
// TODO(webrtc:5298) Deprecated variant.
// Attaches provided webrtc::AecDump for recording debugging
--- a/webrtc/api/make_ref_counted.h
+++ b/webrtc/api/make_ref_counted.h
@@ -13,6 +13,7 @@
#include <type_traits>
#include <utility>
+#include "absl/base/config.h"
#include "absl/base/nullability.h"
#include "api/ref_count.h"
#include "api/scoped_refptr.h"
@@ -86,7 +87,11 @@ template <
typename std::enable_if<std::is_convertible_v<T*, RefCountInterface*> &&
std::is_abstract_v<T>,
T>::type* = nullptr>
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nonnull<scoped_refptr<T>> make_ref_counted(Args&&... args) {
+#else
+absl_nonnull scoped_refptr<T> make_ref_counted(Args&&... args) {
+#endif
return scoped_refptr<T>(new RefCountedObject<T>(std::forward<Args>(args)...));
}
@@ -99,7 +104,11 @@ template <
!std::is_convertible_v<T*, RefCountInterface*> &&
webrtc_make_ref_counted_internal::HasAddRefAndRelease<T>::value,
T>::type* = nullptr>
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nonnull<scoped_refptr<T>> make_ref_counted(Args&&... args) {
+#else
+absl_nonnull scoped_refptr<T> make_ref_counted(Args&&... args) {
+#endif
return scoped_refptr<T>(new T(std::forward<Args>(args)...));
}
@@ -113,7 +122,11 @@ template <
!webrtc_make_ref_counted_internal::HasAddRefAndRelease<T>::value,
T>::type* = nullptr>
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nonnull<scoped_refptr<FinalRefCountedObject<T>>> make_ref_counted(
+#else
+absl_nonnull scoped_refptr<FinalRefCountedObject<T>> make_ref_counted(
+#endif
Args&&... args) {
return scoped_refptr<FinalRefCountedObject<T>>(
new FinalRefCountedObject<T>(std::forward<Args>(args)...));
--- a/webrtc/api/scoped_refptr.h
+++ b/webrtc/api/scoped_refptr.h
@@ -66,6 +66,7 @@
#include <cstddef>
#include <utility>
+#include "absl/base/config.h"
#include "absl/base/nullability.h"
namespace webrtc {
@@ -73,13 +74,19 @@ namespace webrtc {
template <class T>
class ABSL_NULLABILITY_COMPATIBLE scoped_refptr {
public:
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
using absl_nullability_compatible = void;
+#endif
using element_type = T;
scoped_refptr() : ptr_(nullptr) {}
scoped_refptr(std::nullptr_t) : ptr_(nullptr) {} // NOLINT(runtime/explicit)
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
explicit scoped_refptr(absl::Nullable<T*> p) : ptr_(p) {
+#else
+ explicit scoped_refptr(T* absl_nullable p) : ptr_(p) {
+#endif
if (ptr_)
ptr_->AddRef();
}
@@ -122,7 +129,11 @@ class ABSL_NULLABILITY_COMPATIBLE scoped_refptr {
return retVal;
}
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
scoped_refptr<T>& operator=(absl::Nullable<T*> p) {
+#else
+ scoped_refptr<T>& operator=(T* absl_nullable p) {
+#endif
// AddRef first so that self assignment should work
if (p)
p->AddRef();
@@ -152,7 +163,11 @@ class ABSL_NULLABILITY_COMPATIBLE scoped_refptr {
return *this;
}
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
void swap(absl::Nonnull<T**> pp) noexcept {
+#else
+ void swap(T** absl_nonnull pp) noexcept {
+#endif
T* p = ptr_;
ptr_ = *pp;
*pp = p;
--- a/webrtc/modules/audio_processing/aec_dump/aec_dump_factory.h
+++ b/webrtc/modules/audio_processing/aec_dump/aec_dump_factory.h
@@ -29,6 +29,7 @@ class RTC_EXPORT AecDumpFactory {
// The AecDump takes responsibility for `handle` and closes it in the
// destructor. A non-null return value indicates that the file has been
// sucessfully opened.
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
static absl::Nullable<std::unique_ptr<AecDump>> Create(
FileWrapper file,
int64_t max_log_size_bytes,
@@ -41,6 +42,20 @@ class RTC_EXPORT AecDumpFactory {
absl::Nonnull<FILE*> handle,
int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue);
+#else
+ static absl_nullable std::unique_ptr<AecDump> Create(
+ FileWrapper file,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull worker_queue);
+ static absl_nullable std::unique_ptr<AecDump> Create(
+ absl::string_view file_name,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull worker_queue);
+ static absl_nullable std::unique_ptr<AecDump> Create(
+ FILE* absl_nonnull handle,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull worker_queue);
+#endif
};
} // namespace webrtc
--- a/webrtc/modules/audio_processing/aec_dump/null_aec_dump_factory.cc
+++ b/webrtc/modules/audio_processing/aec_dump/null_aec_dump_factory.cc
@@ -16,6 +16,7 @@
namespace webrtc {
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
FileWrapper file,
int64_t max_log_size_bytes,
@@ -37,3 +38,27 @@ absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
return nullptr;
}
} // namespace webrtc
+#else
+absl_nullable std::unique_ptr<AecDump> AecDumpFactory::Create(
+ FileWrapper file,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull worker_queue) {
+ return nullptr;
+}
+
+absl_nullable std::unique_ptr<AecDump> AecDumpFactory::Create(
+ absl::string_view file_name,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull worker_queue) {
+ return nullptr;
+}
+
+absl_nullable std::unique_ptr<AecDump> AecDumpFactory::Create(
+ FILE* absl_nonnull handle,
+ int64_t max_log_size_bytes,
+ TaskQueueBase* absl_nonnull worker_queue) {
+ return nullptr;
+}
+} // namespace webrtc
+
+#endif
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
@@ -19,6 +19,7 @@
#include <type_traits>
#include <utility>
+#include "absl/base/config.h"
#include "absl/base/nullability.h"
#include "absl/strings/match.h"
#include "absl/strings/string_view.h"
@@ -1787,7 +1788,11 @@ void AudioProcessingImpl::UpdateRecommendedInputVolumeLocked() {
bool AudioProcessingImpl::CreateAndAttachAecDump(
absl::string_view file_name,
int64_t max_log_size_bytes,
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nonnull<TaskQueueBase*> worker_queue) {
+#else
+ TaskQueueBase* absl_nonnull worker_queue) {
+#endif
std::unique_ptr<AecDump> aec_dump =
AecDumpFactory::Create(file_name, max_log_size_bytes, worker_queue);
if (!aec_dump) {
@@ -1801,7 +1806,11 @@ bool AudioProcessingImpl::CreateAndAttachAecDump(
bool AudioProcessingImpl::CreateAndAttachAecDump(
FILE* handle,
int64_t max_log_size_bytes,
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nonnull<TaskQueueBase*> worker_queue) {
+#else
+ TaskQueueBase* absl_nonnull worker_queue) {
+#endif
std::unique_ptr<AecDump> aec_dump =
AecDumpFactory::Create(handle, max_log_size_bytes, worker_queue);
if (!aec_dump) {
--- a/webrtc/modules/audio_processing/audio_processing_impl.h
+++ b/webrtc/modules/audio_processing/audio_processing_impl.h
@@ -20,6 +20,7 @@
#include <string>
#include <vector>
+#include "absl/base/config.h"
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h"
#include "api/array_view.h"
@@ -74,11 +75,19 @@ class AudioProcessingImpl : public AudioProcessing {
bool CreateAndAttachAecDump(
absl::string_view file_name,
int64_t max_log_size_bytes,
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nonnull<TaskQueueBase*> worker_queue) override;
+#else
+ TaskQueueBase* absl_nonnull worker_queue) override;
+#endif
bool CreateAndAttachAecDump(
FILE* handle,
int64_t max_log_size_bytes,
+#if defined(ABSL_LTS_RELEASE_VERSION) && ABSL_LTS_RELEASE_VERSION < 20250512
absl::Nonnull<TaskQueueBase*> worker_queue) override;
+#else
+ TaskQueueBase* absl_nonnull worker_queue) override;
+#endif
// TODO(webrtc:5298) Deprecated variant.
void AttachAecDump(std::unique_ptr<AecDump> aec_dump) override;
void DetachAecDump() override;
--
GitLab
|