Switch CriticalSectionWrapper->rtc::CriticalSection in modules/audio_coding.
This is a part of cleaning up CriticalSectionWrapper in general. BUG= R=henrik.lundin@webrtc.org Review URL: https://codereview.webrtc.org/1610073003 . Cr-Commit-Position: refs/heads/master@{#11319}
This commit is contained in:
@ -25,7 +25,6 @@
|
||||
#include "webrtc/modules/audio_coding/acm2/call_statistics.h"
|
||||
#include "webrtc/modules/audio_coding/neteq/include/neteq.h"
|
||||
#include "webrtc/system_wrappers/include/clock.h"
|
||||
#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
||||
#include "webrtc/system_wrappers/include/tick_util.h"
|
||||
#include "webrtc/system_wrappers/include/trace.h"
|
||||
|
||||
@ -119,8 +118,7 @@ bool IsCng(int codec_id) {
|
||||
} // namespace
|
||||
|
||||
AcmReceiver::AcmReceiver(const AudioCodingModule::Config& config)
|
||||
: crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||
id_(config.id),
|
||||
: id_(config.id),
|
||||
last_audio_decoder_(nullptr),
|
||||
previous_audio_activity_(AudioFrame::kVadPassive),
|
||||
audio_buffer_(new int16_t[AudioFrame::kMaxDataSizeSamples]),
|
||||
@ -157,7 +155,7 @@ int AcmReceiver::LeastRequiredDelayMs() const {
|
||||
}
|
||||
|
||||
rtc::Optional<int> AcmReceiver::last_packet_sample_rate_hz() const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
return last_packet_sample_rate_hz_;
|
||||
}
|
||||
|
||||
@ -171,7 +169,7 @@ int AcmReceiver::InsertPacket(const WebRtcRTPHeader& rtp_header,
|
||||
const RTPHeader* header = &rtp_header.header; // Just a shorthand.
|
||||
|
||||
{
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
|
||||
const Decoder* decoder = RtpHeaderToDecoder(*header, incoming_payload[0]);
|
||||
if (!decoder) {
|
||||
@ -216,7 +214,7 @@ int AcmReceiver::GetAudio(int desired_freq_hz, AudioFrame* audio_frame) {
|
||||
size_t num_channels;
|
||||
|
||||
// Accessing members, take the lock.
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
|
||||
// Always write the output to |audio_buffer_| first.
|
||||
if (neteq_->GetAudio(AudioFrame::kMaxDataSizeSamples,
|
||||
@ -317,7 +315,7 @@ int32_t AcmReceiver::AddCodec(int acm_codec_id,
|
||||
return *ned;
|
||||
}();
|
||||
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
|
||||
// The corresponding NetEq decoder ID.
|
||||
// If this codec has been registered before.
|
||||
@ -366,13 +364,13 @@ int32_t AcmReceiver::AddCodec(int acm_codec_id,
|
||||
|
||||
void AcmReceiver::EnableVad() {
|
||||
neteq_->EnableVad();
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
vad_enabled_ = true;
|
||||
}
|
||||
|
||||
void AcmReceiver::DisableVad() {
|
||||
neteq_->DisableVad();
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
vad_enabled_ = false;
|
||||
}
|
||||
|
||||
@ -384,7 +382,7 @@ void AcmReceiver::FlushBuffers() {
|
||||
// many as it can.
|
||||
int AcmReceiver::RemoveAllCodecs() {
|
||||
int ret_val = 0;
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
for (auto it = decoders_.begin(); it != decoders_.end(); ) {
|
||||
auto cur = it;
|
||||
++it; // it will be valid even if we erase cur
|
||||
@ -404,7 +402,7 @@ int AcmReceiver::RemoveAllCodecs() {
|
||||
}
|
||||
|
||||
int AcmReceiver::RemoveCodec(uint8_t payload_type) {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
auto it = decoders_.find(payload_type);
|
||||
if (it == decoders_.end()) { // Such a payload-type is not registered.
|
||||
return 0;
|
||||
@ -422,7 +420,7 @@ int AcmReceiver::RemoveCodec(uint8_t payload_type) {
|
||||
}
|
||||
|
||||
void AcmReceiver::set_id(int id) {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
id_ = id;
|
||||
}
|
||||
|
||||
@ -431,7 +429,7 @@ bool AcmReceiver::GetPlayoutTimestamp(uint32_t* timestamp) {
|
||||
}
|
||||
|
||||
int AcmReceiver::LastAudioCodec(CodecInst* codec) const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (!last_audio_decoder_) {
|
||||
return -1;
|
||||
}
|
||||
@ -468,7 +466,7 @@ void AcmReceiver::GetNetworkStatistics(NetworkStatistics* acm_stat) {
|
||||
|
||||
int AcmReceiver::DecoderByPayloadType(uint8_t payload_type,
|
||||
CodecInst* codec) const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
auto it = decoders_.find(payload_type);
|
||||
if (it == decoders_.end()) {
|
||||
LOG(LERROR) << "AcmReceiver::DecoderByPayloadType "
|
||||
@ -532,7 +530,7 @@ uint32_t AcmReceiver::NowInTimestamp(int decoder_sampling_rate) const {
|
||||
|
||||
void AcmReceiver::GetDecodingCallStatistics(
|
||||
AudioDecodingCallStats* stats) const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
*stats = call_stats_.GetDecodingStatistics();
|
||||
}
|
||||
|
||||
|
||||
@ -16,15 +16,16 @@
|
||||
#include <vector>
|
||||
|
||||
#include "webrtc/base/array_view.h"
|
||||
#include "webrtc/base/criticalsection.h"
|
||||
#include "webrtc/base/optional.h"
|
||||
#include "webrtc/base/scoped_ptr.h"
|
||||
#include "webrtc/base/thread_annotations.h"
|
||||
#include "webrtc/common_audio/vad/include/webrtc_vad.h"
|
||||
#include "webrtc/engine_configurations.h"
|
||||
#include "webrtc/modules/audio_coding/include/audio_coding_module.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/acm_resampler.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/call_statistics.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/initial_delay_manager.h"
|
||||
#include "webrtc/modules/audio_coding/include/audio_coding_module.h"
|
||||
#include "webrtc/modules/audio_coding/neteq/include/neteq.h"
|
||||
#include "webrtc/modules/include/module_common_types.h"
|
||||
#include "webrtc/typedefs.h"
|
||||
@ -32,7 +33,6 @@
|
||||
namespace webrtc {
|
||||
|
||||
struct CodecInst;
|
||||
class CriticalSectionWrapper;
|
||||
class NetEq;
|
||||
|
||||
namespace acm2 {
|
||||
@ -281,7 +281,7 @@ class AcmReceiver {
|
||||
|
||||
uint32_t NowInTimestamp(int decoder_sampling_rate) const;
|
||||
|
||||
rtc::scoped_ptr<CriticalSectionWrapper> crit_sect_;
|
||||
mutable rtc::CriticalSection crit_sect_;
|
||||
int id_; // TODO(henrik.lundin) Make const.
|
||||
const Decoder* last_audio_decoder_ GUARDED_BY(crit_sect_);
|
||||
AudioFrame::VADActivity previous_audio_activity_ GUARDED_BY(crit_sect_);
|
||||
|
||||
@ -21,7 +21,6 @@
|
||||
#include "webrtc/modules/audio_coding/acm2/acm_common_defs.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/acm_resampler.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/call_statistics.h"
|
||||
#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
||||
#include "webrtc/system_wrappers/include/logging.h"
|
||||
#include "webrtc/system_wrappers/include/metrics.h"
|
||||
#include "webrtc/system_wrappers/include/rw_lock_wrapper.h"
|
||||
@ -103,8 +102,7 @@ void AudioCodingModuleImpl::ChangeLogger::MaybeLog(int value) {
|
||||
|
||||
AudioCodingModuleImpl::AudioCodingModuleImpl(
|
||||
const AudioCodingModule::Config& config)
|
||||
: acm_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||
id_(config.id),
|
||||
: id_(config.id),
|
||||
expected_codec_ts_(0xD87F3F9F),
|
||||
expected_in_ts_(0xD87F3F9F),
|
||||
receiver_(config),
|
||||
@ -113,7 +111,6 @@ AudioCodingModuleImpl::AudioCodingModuleImpl(
|
||||
receiver_initialized_(false),
|
||||
first_10ms_data_(false),
|
||||
first_frame_(true),
|
||||
callback_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||
packetization_callback_(NULL),
|
||||
vad_callback_(NULL) {
|
||||
if (InitializeReceiverSafe() < 0) {
|
||||
@ -173,7 +170,7 @@ int32_t AudioCodingModuleImpl::Encode(const InputData& input_data) {
|
||||
}
|
||||
|
||||
{
|
||||
CriticalSectionScoped lock(callback_crit_sect_.get());
|
||||
rtc::CritScope lock(&callback_crit_sect_);
|
||||
if (packetization_callback_) {
|
||||
packetization_callback_->SendData(
|
||||
frame_type, encoded_info.payload_type, encoded_info.encoded_timestamp,
|
||||
@ -197,7 +194,7 @@ int32_t AudioCodingModuleImpl::Encode(const InputData& input_data) {
|
||||
|
||||
// Can be called multiple times for Codec, CNG, RED.
|
||||
int AudioCodingModuleImpl::RegisterSendCodec(const CodecInst& send_codec) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!codec_manager_.RegisterEncoder(send_codec)) {
|
||||
return -1;
|
||||
}
|
||||
@ -217,7 +214,7 @@ int AudioCodingModuleImpl::RegisterSendCodec(const CodecInst& send_codec) {
|
||||
|
||||
void AudioCodingModuleImpl::RegisterExternalSendCodec(
|
||||
AudioEncoder* external_speech_encoder) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
auto* sp = codec_manager_.GetStackParams();
|
||||
sp->speech_encoder = external_speech_encoder;
|
||||
rent_a_codec_.RentEncoderStack(sp);
|
||||
@ -225,7 +222,7 @@ void AudioCodingModuleImpl::RegisterExternalSendCodec(
|
||||
|
||||
// Get current send codec.
|
||||
rtc::Optional<CodecInst> AudioCodingModuleImpl::SendCodec() const {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
auto* ci = codec_manager_.GetCodecInst();
|
||||
if (ci) {
|
||||
return rtc::Optional<CodecInst>(*ci);
|
||||
@ -241,7 +238,7 @@ rtc::Optional<CodecInst> AudioCodingModuleImpl::SendCodec() const {
|
||||
int AudioCodingModuleImpl::SendFrequency() const {
|
||||
WEBRTC_TRACE(webrtc::kTraceStream, webrtc::kTraceAudioCoding, id_,
|
||||
"SendFrequency()");
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
|
||||
const auto* enc = rent_a_codec_.GetEncoderStack();
|
||||
if (!enc) {
|
||||
@ -254,7 +251,7 @@ int AudioCodingModuleImpl::SendFrequency() const {
|
||||
}
|
||||
|
||||
void AudioCodingModuleImpl::SetBitRate(int bitrate_bps) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
auto* enc = rent_a_codec_.GetEncoderStack();
|
||||
if (enc) {
|
||||
enc->SetTargetBitrate(bitrate_bps);
|
||||
@ -265,7 +262,7 @@ void AudioCodingModuleImpl::SetBitRate(int bitrate_bps) {
|
||||
// the encoded buffers.
|
||||
int AudioCodingModuleImpl::RegisterTransportCallback(
|
||||
AudioPacketizationCallback* transport) {
|
||||
CriticalSectionScoped lock(callback_crit_sect_.get());
|
||||
rtc::CritScope lock(&callback_crit_sect_);
|
||||
packetization_callback_ = transport;
|
||||
return 0;
|
||||
}
|
||||
@ -273,7 +270,7 @@ int AudioCodingModuleImpl::RegisterTransportCallback(
|
||||
// Add 10MS of raw (PCM) audio data to the encoder.
|
||||
int AudioCodingModuleImpl::Add10MsData(const AudioFrame& audio_frame) {
|
||||
InputData input_data;
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
int r = Add10MsDataInternal(audio_frame, &input_data);
|
||||
return r < 0 ? r : Encode(input_data);
|
||||
}
|
||||
@ -445,14 +442,14 @@ int AudioCodingModuleImpl::PreprocessToAddData(const AudioFrame& in_frame,
|
||||
//
|
||||
|
||||
bool AudioCodingModuleImpl::REDStatus() const {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
return codec_manager_.GetStackParams()->use_red;
|
||||
}
|
||||
|
||||
// Configure RED status i.e on/off.
|
||||
int AudioCodingModuleImpl::SetREDStatus(bool enable_red) {
|
||||
#ifdef WEBRTC_CODEC_RED
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!codec_manager_.SetCopyRed(enable_red)) {
|
||||
return -1;
|
||||
}
|
||||
@ -472,12 +469,12 @@ int AudioCodingModuleImpl::SetREDStatus(bool enable_red) {
|
||||
//
|
||||
|
||||
bool AudioCodingModuleImpl::CodecFEC() const {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
return codec_manager_.GetStackParams()->use_codec_fec;
|
||||
}
|
||||
|
||||
int AudioCodingModuleImpl::SetCodecFEC(bool enable_codec_fec) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!codec_manager_.SetCodecFEC(enable_codec_fec)) {
|
||||
return -1;
|
||||
}
|
||||
@ -493,7 +490,7 @@ int AudioCodingModuleImpl::SetCodecFEC(bool enable_codec_fec) {
|
||||
}
|
||||
|
||||
int AudioCodingModuleImpl::SetPacketLossRate(int loss_rate) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (HaveValidEncoder("SetPacketLossRate")) {
|
||||
rent_a_codec_.GetEncoderStack()->SetProjectedPacketLossRate(loss_rate /
|
||||
100.0);
|
||||
@ -509,7 +506,7 @@ int AudioCodingModuleImpl::SetVAD(bool enable_dtx,
|
||||
ACMVADMode mode) {
|
||||
// Note: |enable_vad| is not used; VAD is enabled based on the DTX setting.
|
||||
RTC_DCHECK_EQ(enable_dtx, enable_vad);
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!codec_manager_.SetVAD(enable_dtx, mode)) {
|
||||
return -1;
|
||||
}
|
||||
@ -522,7 +519,7 @@ int AudioCodingModuleImpl::SetVAD(bool enable_dtx,
|
||||
// Get VAD/DTX settings.
|
||||
int AudioCodingModuleImpl::VAD(bool* dtx_enabled, bool* vad_enabled,
|
||||
ACMVADMode* mode) const {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
const auto* sp = codec_manager_.GetStackParams();
|
||||
*dtx_enabled = *vad_enabled = sp->use_cng;
|
||||
*mode = sp->vad_mode;
|
||||
@ -534,7 +531,7 @@ int AudioCodingModuleImpl::VAD(bool* dtx_enabled, bool* vad_enabled,
|
||||
//
|
||||
|
||||
int AudioCodingModuleImpl::InitializeReceiver() {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
return InitializeReceiverSafe();
|
||||
}
|
||||
|
||||
@ -587,7 +584,7 @@ int AudioCodingModuleImpl::PlayoutFrequency() const {
|
||||
// Register possible receive codecs, can be called multiple times,
|
||||
// for codecs, CNG (NB, WB and SWB), DTMF, RED.
|
||||
int AudioCodingModuleImpl::RegisterReceiveCodec(const CodecInst& codec) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
RTC_DCHECK(receiver_initialized_);
|
||||
if (codec.channels > 2) {
|
||||
LOG_F(LS_ERROR) << "Unsupported number of channels: " << codec.channels;
|
||||
@ -625,7 +622,7 @@ int AudioCodingModuleImpl::RegisterExternalReceiveCodec(
|
||||
int sample_rate_hz,
|
||||
int num_channels,
|
||||
const std::string& name) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
RTC_DCHECK(receiver_initialized_);
|
||||
if (num_channels > 2 || num_channels < 0) {
|
||||
LOG_F(LS_ERROR) << "Unsupported number of channels: " << num_channels;
|
||||
@ -645,7 +642,7 @@ int AudioCodingModuleImpl::RegisterExternalReceiveCodec(
|
||||
|
||||
// Get current received codec.
|
||||
int AudioCodingModuleImpl::ReceiveCodec(CodecInst* current_codec) const {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
return receiver_.LastAudioCodec(current_codec);
|
||||
}
|
||||
|
||||
@ -705,7 +702,7 @@ int AudioCodingModuleImpl::GetNetworkStatistics(NetworkStatistics* statistics) {
|
||||
int AudioCodingModuleImpl::RegisterVADCallback(ACMVADCallback* vad_callback) {
|
||||
WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceAudioCoding, id_,
|
||||
"RegisterVADCallback()");
|
||||
CriticalSectionScoped lock(callback_crit_sect_.get());
|
||||
rtc::CritScope lock(&callback_crit_sect_);
|
||||
vad_callback_ = vad_callback;
|
||||
return 0;
|
||||
}
|
||||
@ -740,7 +737,7 @@ int AudioCodingModuleImpl::IncomingPayload(const uint8_t* incoming_payload,
|
||||
}
|
||||
|
||||
int AudioCodingModuleImpl::SetOpusApplication(OpusApplicationMode application) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!HaveValidEncoder("SetOpusApplication")) {
|
||||
return -1;
|
||||
}
|
||||
@ -761,7 +758,7 @@ int AudioCodingModuleImpl::SetOpusApplication(OpusApplicationMode application) {
|
||||
|
||||
// Informs Opus encoder of the maximum playback rate the receiver will render.
|
||||
int AudioCodingModuleImpl::SetOpusMaxPlaybackRate(int frequency_hz) {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!HaveValidEncoder("SetOpusMaxPlaybackRate")) {
|
||||
return -1;
|
||||
}
|
||||
@ -770,7 +767,7 @@ int AudioCodingModuleImpl::SetOpusMaxPlaybackRate(int frequency_hz) {
|
||||
}
|
||||
|
||||
int AudioCodingModuleImpl::EnableOpusDtx() {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!HaveValidEncoder("EnableOpusDtx")) {
|
||||
return -1;
|
||||
}
|
||||
@ -778,7 +775,7 @@ int AudioCodingModuleImpl::EnableOpusDtx() {
|
||||
}
|
||||
|
||||
int AudioCodingModuleImpl::DisableOpusDtx() {
|
||||
CriticalSectionScoped lock(acm_crit_sect_.get());
|
||||
rtc::CritScope lock(&acm_crit_sect_);
|
||||
if (!HaveValidEncoder("DisableOpusDtx")) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "webrtc/base/buffer.h"
|
||||
#include "webrtc/base/criticalsection.h"
|
||||
#include "webrtc/base/scoped_ptr.h"
|
||||
#include "webrtc/base/thread_annotations.h"
|
||||
#include "webrtc/common_types.h"
|
||||
@ -25,7 +26,6 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
class CriticalSectionWrapper;
|
||||
class AudioCodingImpl;
|
||||
|
||||
namespace acm2 {
|
||||
@ -240,7 +240,7 @@ class AudioCodingModuleImpl final : public AudioCodingModule {
|
||||
// to |index|.
|
||||
int UpdateUponReceivingCodec(int index);
|
||||
|
||||
const rtc::scoped_ptr<CriticalSectionWrapper> acm_crit_sect_;
|
||||
mutable rtc::CriticalSection acm_crit_sect_;
|
||||
rtc::Buffer encode_buffer_ GUARDED_BY(acm_crit_sect_);
|
||||
int id_; // TODO(henrik.lundin) Make const.
|
||||
uint32_t expected_codec_ts_ GUARDED_BY(acm_crit_sect_);
|
||||
@ -271,7 +271,7 @@ class AudioCodingModuleImpl final : public AudioCodingModule {
|
||||
uint32_t last_timestamp_ GUARDED_BY(acm_crit_sect_);
|
||||
uint32_t last_rtp_timestamp_ GUARDED_BY(acm_crit_sect_);
|
||||
|
||||
const rtc::scoped_ptr<CriticalSectionWrapper> callback_crit_sect_;
|
||||
mutable rtc::CriticalSection callback_crit_sect_;
|
||||
AudioPacketizationCallback* packetization_callback_
|
||||
GUARDED_BY(callback_crit_sect_);
|
||||
ACMVADCallback* vad_callback_ GUARDED_BY(callback_crit_sect_);
|
||||
|
||||
@ -13,17 +13,18 @@
|
||||
#include <vector>
|
||||
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "webrtc/base/criticalsection.h"
|
||||
#include "webrtc/base/md5digest.h"
|
||||
#include "webrtc/base/platform_thread.h"
|
||||
#include "webrtc/base/scoped_ptr.h"
|
||||
#include "webrtc/base/thread_annotations.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/acm_receive_test_oldapi.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/acm_send_test_oldapi.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/audio_encoder.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/g711/audio_decoder_pcm.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/g711/audio_encoder_pcm.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
|
||||
#include "webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/acm_receive_test_oldapi.h"
|
||||
#include "webrtc/modules/audio_coding/acm2/acm_send_test_oldapi.h"
|
||||
#include "webrtc/modules/audio_coding/include/audio_coding_module.h"
|
||||
#include "webrtc/modules/audio_coding/include/audio_coding_module_typedefs.h"
|
||||
#include "webrtc/modules/audio_coding/neteq/audio_decoder_impl.h"
|
||||
@ -37,7 +38,6 @@
|
||||
#include "webrtc/modules/audio_coding/neteq/tools/rtp_file_source.h"
|
||||
#include "webrtc/modules/include/module_common_types.h"
|
||||
#include "webrtc/system_wrappers/include/clock.h"
|
||||
#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
||||
#include "webrtc/system_wrappers/include/event_wrapper.h"
|
||||
#include "webrtc/system_wrappers/include/sleep.h"
|
||||
#include "webrtc/test/testsupport/fileutils.h"
|
||||
@ -94,8 +94,7 @@ class PacketizationCallbackStubOldApi : public AudioPacketizationCallback {
|
||||
: num_calls_(0),
|
||||
last_frame_type_(kEmptyFrame),
|
||||
last_payload_type_(-1),
|
||||
last_timestamp_(0),
|
||||
crit_sect_(CriticalSectionWrapper::CreateCriticalSection()) {}
|
||||
last_timestamp_(0) {}
|
||||
|
||||
int32_t SendData(FrameType frame_type,
|
||||
uint8_t payload_type,
|
||||
@ -103,7 +102,7 @@ class PacketizationCallbackStubOldApi : public AudioPacketizationCallback {
|
||||
const uint8_t* payload_data,
|
||||
size_t payload_len_bytes,
|
||||
const RTPFragmentationHeader* fragmentation) override {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
++num_calls_;
|
||||
last_frame_type_ = frame_type;
|
||||
last_payload_type_ = payload_type;
|
||||
@ -113,32 +112,32 @@ class PacketizationCallbackStubOldApi : public AudioPacketizationCallback {
|
||||
}
|
||||
|
||||
int num_calls() const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
return num_calls_;
|
||||
}
|
||||
|
||||
int last_payload_len_bytes() const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
return last_payload_vec_.size();
|
||||
}
|
||||
|
||||
FrameType last_frame_type() const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
return last_frame_type_;
|
||||
}
|
||||
|
||||
int last_payload_type() const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
return last_payload_type_;
|
||||
}
|
||||
|
||||
uint32_t last_timestamp() const {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
return last_timestamp_;
|
||||
}
|
||||
|
||||
void SwapBuffers(std::vector<uint8_t>* payload) {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
last_payload_vec_.swap(*payload);
|
||||
}
|
||||
|
||||
@ -148,7 +147,7 @@ class PacketizationCallbackStubOldApi : public AudioPacketizationCallback {
|
||||
int last_payload_type_ GUARDED_BY(crit_sect_);
|
||||
uint32_t last_timestamp_ GUARDED_BY(crit_sect_);
|
||||
std::vector<uint8_t> last_payload_vec_ GUARDED_BY(crit_sect_);
|
||||
const rtc::scoped_ptr<CriticalSectionWrapper> crit_sect_;
|
||||
mutable rtc::CriticalSection crit_sect_;
|
||||
};
|
||||
|
||||
class AudioCodingModuleTestOldApi : public ::testing::Test {
|
||||
@ -469,7 +468,6 @@ class AudioCodingModuleMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
send_count_(0),
|
||||
insert_packet_count_(0),
|
||||
pull_audio_count_(0),
|
||||
crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||
next_insert_packet_time_ms_(0),
|
||||
fake_clock_(new SimulatedClock(0)) {
|
||||
clock_ = fake_clock_.get();
|
||||
@ -503,7 +501,7 @@ class AudioCodingModuleMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
|
||||
virtual bool TestDone() {
|
||||
if (packet_cb_.num_calls() > kNumPackets) {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (pull_audio_count_ > kNumPullCalls) {
|
||||
// Both conditions for completion are met. End the test.
|
||||
return true;
|
||||
@ -541,7 +539,7 @@ class AudioCodingModuleMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
bool CbInsertPacketImpl() {
|
||||
SleepMs(1);
|
||||
{
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (clock_->TimeInMilliseconds() < next_insert_packet_time_ms_) {
|
||||
return true;
|
||||
}
|
||||
@ -561,7 +559,7 @@ class AudioCodingModuleMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
bool CbPullAudioImpl() {
|
||||
SleepMs(1);
|
||||
{
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
// Don't let the insert thread fall behind.
|
||||
if (next_insert_packet_time_ms_ < clock_->TimeInMilliseconds()) {
|
||||
return true;
|
||||
@ -581,7 +579,7 @@ class AudioCodingModuleMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
int send_count_;
|
||||
int insert_packet_count_;
|
||||
int pull_audio_count_ GUARDED_BY(crit_sect_);
|
||||
const rtc::scoped_ptr<CriticalSectionWrapper> crit_sect_;
|
||||
mutable rtc::CriticalSection crit_sect_;
|
||||
int64_t next_insert_packet_time_ms_ GUARDED_BY(crit_sect_);
|
||||
rtc::scoped_ptr<SimulatedClock> fake_clock_;
|
||||
};
|
||||
@ -681,7 +679,7 @@ class AcmIsacMtTestOldApi : public AudioCodingModuleMtTestOldApi {
|
||||
// run).
|
||||
virtual bool TestDone() {
|
||||
if (packet_cb_.num_calls() > kNumPackets) {
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (pull_audio_count_ > kNumPullCalls) {
|
||||
// Both conditions for completion are met. End the test.
|
||||
return true;
|
||||
@ -720,7 +718,6 @@ class AcmReRegisterIsacMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
this,
|
||||
"codec_registration"),
|
||||
test_complete_(EventWrapper::Create()),
|
||||
crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||
codec_registered_(false),
|
||||
receive_packet_count_(0),
|
||||
next_insert_packet_time_ms_(0),
|
||||
@ -781,7 +778,7 @@ class AcmReRegisterIsacMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
rtc::scoped_ptr<uint8_t[]> encoded(new uint8_t[max_encoded_bytes]);
|
||||
AudioEncoder::EncodedInfo info;
|
||||
{
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (clock_->TimeInMilliseconds() < next_insert_packet_time_ms_) {
|
||||
return true;
|
||||
}
|
||||
@ -829,7 +826,7 @@ class AcmReRegisterIsacMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
// End the test early if a fatal failure (ASSERT_*) has occurred.
|
||||
test_complete_->Set();
|
||||
}
|
||||
CriticalSectionScoped lock(crit_sect_.get());
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (!codec_registered_ &&
|
||||
receive_packet_count_ > kRegisterAfterNumPackets) {
|
||||
// Register the iSAC encoder.
|
||||
@ -845,7 +842,7 @@ class AcmReRegisterIsacMtTestOldApi : public AudioCodingModuleTestOldApi {
|
||||
rtc::PlatformThread receive_thread_;
|
||||
rtc::PlatformThread codec_registration_thread_;
|
||||
const rtc::scoped_ptr<EventWrapper> test_complete_;
|
||||
const rtc::scoped_ptr<CriticalSectionWrapper> crit_sect_;
|
||||
mutable rtc::CriticalSection crit_sect_;
|
||||
bool codec_registered_ GUARDED_BY(crit_sect_);
|
||||
int receive_packet_count_ GUARDED_BY(crit_sect_);
|
||||
int64_t next_insert_packet_time_ms_ GUARDED_BY(crit_sect_);
|
||||
|
||||
Reference in New Issue
Block a user