Remove RTC_DISALLOW_COPY_AND_ASSIGN from modules/
Bug: webrtc:13555, webrtc:13082 Change-Id: I2c2cbcbd918f0cfa970c1a964893220ba11d4b41 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/247960 Reviewed-by: Artem Titov <titovartem@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: (Daniel.L) Byoungchan Lee <daniel.l@hpcnt.com> Cr-Commit-Position: refs/heads/main@{#35771}
This commit is contained in:

committed by
WebRTC LUCI CQ

parent
ce6170fcdf
commit
604fd2f1ab
@ -19,7 +19,6 @@
|
||||
#include "api/audio_codecs/audio_decoder.h"
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -28,6 +27,10 @@ class AudioDecoderPcmU final : public AudioDecoder {
|
||||
explicit AudioDecoderPcmU(size_t num_channels) : num_channels_(num_channels) {
|
||||
RTC_DCHECK_GE(num_channels, 1);
|
||||
}
|
||||
|
||||
AudioDecoderPcmU(const AudioDecoderPcmU&) = delete;
|
||||
AudioDecoderPcmU& operator=(const AudioDecoderPcmU&) = delete;
|
||||
|
||||
void Reset() override;
|
||||
std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
|
||||
uint32_t timestamp) override;
|
||||
@ -44,7 +47,6 @@ class AudioDecoderPcmU final : public AudioDecoder {
|
||||
|
||||
private:
|
||||
const size_t num_channels_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmU);
|
||||
};
|
||||
|
||||
class AudioDecoderPcmA final : public AudioDecoder {
|
||||
@ -52,6 +54,10 @@ class AudioDecoderPcmA final : public AudioDecoder {
|
||||
explicit AudioDecoderPcmA(size_t num_channels) : num_channels_(num_channels) {
|
||||
RTC_DCHECK_GE(num_channels, 1);
|
||||
}
|
||||
|
||||
AudioDecoderPcmA(const AudioDecoderPcmA&) = delete;
|
||||
AudioDecoderPcmA& operator=(const AudioDecoderPcmA&) = delete;
|
||||
|
||||
void Reset() override;
|
||||
std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
|
||||
uint32_t timestamp) override;
|
||||
@ -68,7 +74,6 @@ class AudioDecoderPcmA final : public AudioDecoder {
|
||||
|
||||
private:
|
||||
const size_t num_channels_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmA);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/audio_codecs/audio_encoder.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -83,6 +82,9 @@ class AudioEncoderPcmA final : public AudioEncoderPcm {
|
||||
explicit AudioEncoderPcmA(const Config& config)
|
||||
: AudioEncoderPcm(config, kSampleRateHz) {}
|
||||
|
||||
AudioEncoderPcmA(const AudioEncoderPcmA&) = delete;
|
||||
AudioEncoderPcmA& operator=(const AudioEncoderPcmA&) = delete;
|
||||
|
||||
protected:
|
||||
size_t EncodeCall(const int16_t* audio,
|
||||
size_t input_len,
|
||||
@ -94,7 +96,6 @@ class AudioEncoderPcmA final : public AudioEncoderPcm {
|
||||
|
||||
private:
|
||||
static const int kSampleRateHz = 8000;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderPcmA);
|
||||
};
|
||||
|
||||
class AudioEncoderPcmU final : public AudioEncoderPcm {
|
||||
@ -106,6 +107,9 @@ class AudioEncoderPcmU final : public AudioEncoderPcm {
|
||||
explicit AudioEncoderPcmU(const Config& config)
|
||||
: AudioEncoderPcm(config, kSampleRateHz) {}
|
||||
|
||||
AudioEncoderPcmU(const AudioEncoderPcmU&) = delete;
|
||||
AudioEncoderPcmU& operator=(const AudioEncoderPcmU&) = delete;
|
||||
|
||||
protected:
|
||||
size_t EncodeCall(const int16_t* audio,
|
||||
size_t input_len,
|
||||
@ -117,7 +121,6 @@ class AudioEncoderPcmU final : public AudioEncoderPcm {
|
||||
|
||||
private:
|
||||
static const int kSampleRateHz = 8000;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderPcmU);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -12,7 +12,6 @@
|
||||
#define MODULES_AUDIO_CODING_CODECS_G722_AUDIO_DECODER_G722_H_
|
||||
|
||||
#include "api/audio_codecs/audio_decoder.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
typedef struct WebRtcG722DecInst G722DecInst;
|
||||
|
||||
@ -22,6 +21,10 @@ class AudioDecoderG722Impl final : public AudioDecoder {
|
||||
public:
|
||||
AudioDecoderG722Impl();
|
||||
~AudioDecoderG722Impl() override;
|
||||
|
||||
AudioDecoderG722Impl(const AudioDecoderG722Impl&) = delete;
|
||||
AudioDecoderG722Impl& operator=(const AudioDecoderG722Impl&) = delete;
|
||||
|
||||
bool HasDecodePlc() const override;
|
||||
void Reset() override;
|
||||
std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
|
||||
@ -39,13 +42,17 @@ class AudioDecoderG722Impl final : public AudioDecoder {
|
||||
|
||||
private:
|
||||
G722DecInst* dec_state_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderG722Impl);
|
||||
};
|
||||
|
||||
class AudioDecoderG722StereoImpl final : public AudioDecoder {
|
||||
public:
|
||||
AudioDecoderG722StereoImpl();
|
||||
~AudioDecoderG722StereoImpl() override;
|
||||
|
||||
AudioDecoderG722StereoImpl(const AudioDecoderG722StereoImpl&) = delete;
|
||||
AudioDecoderG722StereoImpl& operator=(const AudioDecoderG722StereoImpl&) =
|
||||
delete;
|
||||
|
||||
void Reset() override;
|
||||
std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
|
||||
uint32_t timestamp) override;
|
||||
@ -71,7 +78,6 @@ class AudioDecoderG722StereoImpl final : public AudioDecoder {
|
||||
|
||||
G722DecInst* dec_state_left_;
|
||||
G722DecInst* dec_state_right_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderG722StereoImpl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include "api/units/time_delta.h"
|
||||
#include "modules/audio_coding/codecs/g722/g722_interface.h"
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -29,6 +28,9 @@ class AudioEncoderG722Impl final : public AudioEncoder {
|
||||
AudioEncoderG722Impl(const AudioEncoderG722Config& config, int payload_type);
|
||||
~AudioEncoderG722Impl() override;
|
||||
|
||||
AudioEncoderG722Impl(const AudioEncoderG722Impl&) = delete;
|
||||
AudioEncoderG722Impl& operator=(const AudioEncoderG722Impl&) = delete;
|
||||
|
||||
int SampleRateHz() const override;
|
||||
size_t NumChannels() const override;
|
||||
int RtpTimestampRateHz() const override;
|
||||
@ -63,7 +65,6 @@ class AudioEncoderG722Impl final : public AudioEncoder {
|
||||
uint32_t first_timestamp_in_buffer_;
|
||||
const std::unique_ptr<EncoderState[]> encoders_;
|
||||
rtc::Buffer interleave_buffer_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderG722Impl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -18,7 +18,6 @@
|
||||
|
||||
#include "api/audio_codecs/audio_decoder.h"
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
typedef struct iLBC_decinst_t_ IlbcDecoderInstance;
|
||||
|
||||
@ -28,6 +27,10 @@ class AudioDecoderIlbcImpl final : public AudioDecoder {
|
||||
public:
|
||||
AudioDecoderIlbcImpl();
|
||||
~AudioDecoderIlbcImpl() override;
|
||||
|
||||
AudioDecoderIlbcImpl(const AudioDecoderIlbcImpl&) = delete;
|
||||
AudioDecoderIlbcImpl& operator=(const AudioDecoderIlbcImpl&) = delete;
|
||||
|
||||
bool HasDecodePlc() const override;
|
||||
size_t DecodePlc(size_t num_frames, int16_t* decoded) override;
|
||||
void Reset() override;
|
||||
@ -45,7 +48,6 @@ class AudioDecoderIlbcImpl final : public AudioDecoder {
|
||||
|
||||
private:
|
||||
IlbcDecoderInstance* dec_state_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderIlbcImpl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "api/audio_codecs/ilbc/audio_encoder_ilbc_config.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "modules/audio_coding/codecs/ilbc/ilbc.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -30,6 +29,9 @@ class AudioEncoderIlbcImpl final : public AudioEncoder {
|
||||
AudioEncoderIlbcImpl(const AudioEncoderIlbcConfig& config, int payload_type);
|
||||
~AudioEncoderIlbcImpl() override;
|
||||
|
||||
AudioEncoderIlbcImpl(const AudioEncoderIlbcImpl&) = delete;
|
||||
AudioEncoderIlbcImpl& operator=(const AudioEncoderIlbcImpl&) = delete;
|
||||
|
||||
int SampleRateHz() const override;
|
||||
size_t NumChannels() const override;
|
||||
size_t Num10MsFramesInNextPacket() const override;
|
||||
@ -53,7 +55,6 @@ class AudioEncoderIlbcImpl final : public AudioEncoder {
|
||||
uint32_t first_timestamp_in_buffer_;
|
||||
int16_t input_buffer_[kMaxSamplesPerPacket];
|
||||
IlbcEncoderInstance* encoder_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderIlbcImpl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/audio_codecs/audio_decoder.h"
|
||||
#include "api/scoped_refptr.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -30,6 +29,9 @@ class AudioDecoderIsacT final : public AudioDecoder {
|
||||
explicit AudioDecoderIsacT(const Config& config);
|
||||
virtual ~AudioDecoderIsacT() override;
|
||||
|
||||
AudioDecoderIsacT(const AudioDecoderIsacT&) = delete;
|
||||
AudioDecoderIsacT& operator=(const AudioDecoderIsacT&) = delete;
|
||||
|
||||
bool HasDecodePlc() const override;
|
||||
size_t DecodePlc(size_t num_frames, int16_t* decoded) override;
|
||||
void Reset() override;
|
||||
@ -45,8 +47,6 @@ class AudioDecoderIsacT final : public AudioDecoder {
|
||||
private:
|
||||
typename T::instance_type* isac_state_;
|
||||
int sample_rate_hz_;
|
||||
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderIsacT);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "api/audio_codecs/audio_encoder.h"
|
||||
#include "api/scoped_refptr.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
#include "system_wrappers/include/field_trial.h"
|
||||
|
||||
namespace webrtc {
|
||||
@ -44,6 +43,9 @@ class AudioEncoderIsacT final : public AudioEncoder {
|
||||
explicit AudioEncoderIsacT(const Config& config);
|
||||
~AudioEncoderIsacT() override;
|
||||
|
||||
AudioEncoderIsacT(const AudioEncoderIsacT&) = delete;
|
||||
AudioEncoderIsacT& operator=(const AudioEncoderIsacT&) = delete;
|
||||
|
||||
int SampleRateHz() const override;
|
||||
size_t NumChannels() const override;
|
||||
size_t Num10MsFramesInNextPacket() const override;
|
||||
@ -99,8 +101,6 @@ class AudioEncoderIsacT final : public AudioEncoder {
|
||||
// Start out with a reasonable default that we can use until we receive a real
|
||||
// value.
|
||||
DataSize overhead_per_packet_ = DataSize::Bytes(28);
|
||||
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderIsacT);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "api/audio_codecs/opus/audio_decoder_multi_channel_opus_config.h"
|
||||
#include "modules/audio_coding/codecs/opus/opus_interface.h"
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -32,6 +31,11 @@ class AudioDecoderMultiChannelOpusImpl final : public AudioDecoder {
|
||||
|
||||
~AudioDecoderMultiChannelOpusImpl() override;
|
||||
|
||||
AudioDecoderMultiChannelOpusImpl(const AudioDecoderMultiChannelOpusImpl&) =
|
||||
delete;
|
||||
AudioDecoderMultiChannelOpusImpl& operator=(
|
||||
const AudioDecoderMultiChannelOpusImpl&) = delete;
|
||||
|
||||
std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
|
||||
uint32_t timestamp) override;
|
||||
void Reset() override;
|
||||
@ -63,7 +67,6 @@ class AudioDecoderMultiChannelOpusImpl final : public AudioDecoder {
|
||||
|
||||
OpusDecInst* dec_state_;
|
||||
const AudioDecoderMultiChannelOpusConfig config_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderMultiChannelOpusImpl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "api/audio_codecs/audio_decoder.h"
|
||||
#include "modules/audio_coding/codecs/opus/opus_interface.h"
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -29,6 +28,9 @@ class AudioDecoderOpusImpl final : public AudioDecoder {
|
||||
int sample_rate_hz = 48000);
|
||||
~AudioDecoderOpusImpl() override;
|
||||
|
||||
AudioDecoderOpusImpl(const AudioDecoderOpusImpl&) = delete;
|
||||
AudioDecoderOpusImpl& operator=(const AudioDecoderOpusImpl&) = delete;
|
||||
|
||||
std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
|
||||
uint32_t timestamp) override;
|
||||
void Reset() override;
|
||||
@ -55,7 +57,6 @@ class AudioDecoderOpusImpl final : public AudioDecoder {
|
||||
OpusDecInst* dec_state_;
|
||||
const size_t channels_;
|
||||
const int sample_rate_hz_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderOpusImpl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "api/audio_codecs/opus/audio_encoder_multi_channel_opus_config.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "modules/audio_coding/codecs/opus/opus_interface.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -34,6 +33,11 @@ class AudioEncoderMultiChannelOpusImpl final : public AudioEncoder {
|
||||
int payload_type);
|
||||
~AudioEncoderMultiChannelOpusImpl() override;
|
||||
|
||||
AudioEncoderMultiChannelOpusImpl(const AudioEncoderMultiChannelOpusImpl&) =
|
||||
delete;
|
||||
AudioEncoderMultiChannelOpusImpl& operator=(
|
||||
const AudioEncoderMultiChannelOpusImpl&) = delete;
|
||||
|
||||
// Static interface for use by BuiltinAudioEncoderFactory.
|
||||
static constexpr const char* GetPayloadName() { return "multiopus"; }
|
||||
static absl::optional<AudioCodecInfo> QueryAudioEncoder(
|
||||
@ -81,7 +85,6 @@ class AudioEncoderMultiChannelOpusImpl final : public AudioEncoder {
|
||||
int next_frame_length_ms_;
|
||||
|
||||
friend struct AudioEncoderMultiChannelOpus;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderMultiChannelOpusImpl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "common_audio/smoothing_filter.h"
|
||||
#include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
|
||||
#include "modules/audio_coding/codecs/opus/opus_interface.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -61,6 +60,9 @@ class AudioEncoderOpusImpl final : public AudioEncoder {
|
||||
AudioEncoderOpusImpl(int payload_type, const SdpAudioFormat& format);
|
||||
~AudioEncoderOpusImpl() override;
|
||||
|
||||
AudioEncoderOpusImpl(const AudioEncoderOpusImpl&) = delete;
|
||||
AudioEncoderOpusImpl& operator=(const AudioEncoderOpusImpl&) = delete;
|
||||
|
||||
int SampleRateHz() const override;
|
||||
size_t NumChannels() const override;
|
||||
int RtpTimestampRateHz() const override;
|
||||
@ -175,7 +177,6 @@ class AudioEncoderOpusImpl final : public AudioEncoder {
|
||||
int consecutive_dtx_frames_;
|
||||
|
||||
friend struct AudioEncoderOpus;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderOpusImpl);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -18,13 +18,16 @@
|
||||
|
||||
#include "api/audio_codecs/audio_decoder.h"
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
class AudioDecoderPcm16B final : public AudioDecoder {
|
||||
public:
|
||||
AudioDecoderPcm16B(int sample_rate_hz, size_t num_channels);
|
||||
|
||||
AudioDecoderPcm16B(const AudioDecoderPcm16B&) = delete;
|
||||
AudioDecoderPcm16B& operator=(const AudioDecoderPcm16B&) = delete;
|
||||
|
||||
void Reset() override;
|
||||
std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
|
||||
uint32_t timestamp) override;
|
||||
@ -42,7 +45,6 @@ class AudioDecoderPcm16B final : public AudioDecoder {
|
||||
private:
|
||||
const int sample_rate_hz_;
|
||||
const size_t num_channels_;
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcm16B);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -12,7 +12,6 @@
|
||||
#define MODULES_AUDIO_CODING_CODECS_PCM16B_AUDIO_ENCODER_PCM16B_H_
|
||||
|
||||
#include "modules/audio_coding/codecs/g711/audio_encoder_pcm.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -29,6 +28,9 @@ class AudioEncoderPcm16B final : public AudioEncoderPcm {
|
||||
explicit AudioEncoderPcm16B(const Config& config)
|
||||
: AudioEncoderPcm(config, config.sample_rate_hz) {}
|
||||
|
||||
AudioEncoderPcm16B(const AudioEncoderPcm16B&) = delete;
|
||||
AudioEncoderPcm16B& operator=(const AudioEncoderPcm16B&) = delete;
|
||||
|
||||
protected:
|
||||
size_t EncodeCall(const int16_t* audio,
|
||||
size_t input_len,
|
||||
@ -37,9 +39,6 @@ class AudioEncoderPcm16B final : public AudioEncoderPcm {
|
||||
size_t BytesPerSample() const override;
|
||||
|
||||
AudioEncoder::CodecType GetCodecType() const override;
|
||||
|
||||
private:
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderPcm16B);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "api/audio_codecs/audio_encoder.h"
|
||||
#include "api/units/time_delta.h"
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/constructor_magic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -47,6 +46,9 @@ class AudioEncoderCopyRed final : public AudioEncoder {
|
||||
|
||||
~AudioEncoderCopyRed() override;
|
||||
|
||||
AudioEncoderCopyRed(const AudioEncoderCopyRed&) = delete;
|
||||
AudioEncoderCopyRed& operator=(const AudioEncoderCopyRed&) = delete;
|
||||
|
||||
int SampleRateHz() const override;
|
||||
size_t NumChannels() const override;
|
||||
int RtpTimestampRateHz() const override;
|
||||
@ -92,8 +94,6 @@ class AudioEncoderCopyRed final : public AudioEncoder {
|
||||
size_t max_packet_length_;
|
||||
int red_payload_type_;
|
||||
std::list<std::pair<EncodedInfo, rtc::Buffer>> redundant_encodings_;
|
||||
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderCopyRed);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
Reference in New Issue
Block a user