Add thread annotations to parts of ACMGenericCodec
This change adds annotations to all member variables that could be annotated without acquiring any new locks, or changing the lock structure in any other way. BUG=3041 R=kwiberg@webrtc.org Review URL: https://webrtc-codereview.appspot.com/18539004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6441 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
#define WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_ACM_G722_H_
|
#define WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_ACM_G722_H_
|
||||||
|
|
||||||
#include "webrtc/modules/audio_coding/main/acm2/acm_generic_codec.h"
|
#include "webrtc/modules/audio_coding/main/acm2/acm_generic_codec.h"
|
||||||
|
#include "webrtc/system_wrappers/interface/thread_annotations.h"
|
||||||
|
|
||||||
typedef struct WebRtcG722EncInst G722EncInst;
|
typedef struct WebRtcG722EncInst G722EncInst;
|
||||||
typedef struct WebRtcG722DecInst G722DecInst;
|
typedef struct WebRtcG722DecInst G722DecInst;
|
||||||
@@ -40,7 +41,8 @@ class ACMG722 : public ACMGenericCodec {
|
|||||||
int32_t Add10MsDataSafe(const uint32_t timestamp,
|
int32_t Add10MsDataSafe(const uint32_t timestamp,
|
||||||
const int16_t* data,
|
const int16_t* data,
|
||||||
const uint16_t length_smpl,
|
const uint16_t length_smpl,
|
||||||
const uint8_t audio_channel);
|
const uint8_t audio_channel)
|
||||||
|
EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
void DestructEncoderSafe();
|
void DestructEncoderSafe();
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace acm2 {
|
|||||||
// Enum for CNG
|
// Enum for CNG
|
||||||
enum {
|
enum {
|
||||||
kMaxPLCParamsCNG = WEBRTC_CNG_MAX_LPC_ORDER,
|
kMaxPLCParamsCNG = WEBRTC_CNG_MAX_LPC_ORDER,
|
||||||
kNewCNGNumPLCParams = 8
|
kNewCNGNumLPCParams = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
// Interval for sending new CNG parameters (SID frames) is 100 msec.
|
// Interval for sending new CNG parameters (SID frames) is 100 msec.
|
||||||
@@ -56,7 +56,7 @@ ACMGenericCodec::ACMGenericCodec()
|
|||||||
vad_mode_(VADNormal),
|
vad_mode_(VADNormal),
|
||||||
dtx_enabled_(false),
|
dtx_enabled_(false),
|
||||||
ptr_dtx_inst_(NULL),
|
ptr_dtx_inst_(NULL),
|
||||||
num_lpc_params_(kNewCNGNumPLCParams),
|
num_lpc_params_(kNewCNGNumLPCParams),
|
||||||
sent_cn_previous_(false),
|
sent_cn_previous_(false),
|
||||||
prev_frame_cng_(0),
|
prev_frame_cng_(0),
|
||||||
has_internal_fec_(false),
|
has_internal_fec_(false),
|
||||||
@@ -547,7 +547,7 @@ void ACMGenericCodec::DestructEncoder() {
|
|||||||
WebRtcCng_FreeEnc(ptr_dtx_inst_);
|
WebRtcCng_FreeEnc(ptr_dtx_inst_);
|
||||||
ptr_dtx_inst_ = NULL;
|
ptr_dtx_inst_ = NULL;
|
||||||
}
|
}
|
||||||
num_lpc_params_ = kNewCNGNumPLCParams;
|
num_lpc_params_ = kNewCNGNumLPCParams;
|
||||||
|
|
||||||
DestructEncoderSafe();
|
DestructEncoderSafe();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
#include "webrtc/modules/audio_coding/neteq/interface/neteq.h"
|
#include "webrtc/modules/audio_coding/neteq/interface/neteq.h"
|
||||||
#include "webrtc/modules/audio_coding/neteq/interface/audio_decoder.h"
|
#include "webrtc/modules/audio_coding/neteq/interface/audio_decoder.h"
|
||||||
#include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
|
#include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
|
||||||
|
#include "webrtc/system_wrappers/interface/thread_annotations.h"
|
||||||
#include "webrtc/system_wrappers/interface/trace.h"
|
#include "webrtc/system_wrappers/interface/trace.h"
|
||||||
|
|
||||||
#define MAX_FRAME_SIZE_10MSEC 6
|
#define MAX_FRAME_SIZE_10MSEC 6
|
||||||
@@ -616,7 +617,8 @@ class ACMGenericCodec {
|
|||||||
virtual int32_t Add10MsDataSafe(const uint32_t timestamp,
|
virtual int32_t Add10MsDataSafe(const uint32_t timestamp,
|
||||||
const int16_t* data,
|
const int16_t* data,
|
||||||
const uint16_t length,
|
const uint16_t length,
|
||||||
const uint8_t audio_channel);
|
const uint8_t audio_channel)
|
||||||
|
EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// See EncoderParam() for the description of function, input(s)/output(s)
|
// See EncoderParam() for the description of function, input(s)/output(s)
|
||||||
@@ -628,14 +630,15 @@ class ACMGenericCodec {
|
|||||||
// See ResetEncoder() for the description of function, input(s)/output(s)
|
// See ResetEncoder() for the description of function, input(s)/output(s)
|
||||||
// and return value.
|
// and return value.
|
||||||
//
|
//
|
||||||
int16_t ResetEncoderSafe();
|
int16_t ResetEncoderSafe() EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// See InitEncoder() for the description of function, input(s)/output(s)
|
// See InitEncoder() for the description of function, input(s)/output(s)
|
||||||
// and return value.
|
// and return value.
|
||||||
//
|
//
|
||||||
int16_t InitEncoderSafe(WebRtcACMCodecParams* codec_params,
|
int16_t InitEncoderSafe(WebRtcACMCodecParams* codec_params,
|
||||||
bool force_initialization);
|
bool force_initialization)
|
||||||
|
EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// See InitDecoder() for the description of function, input(s)/output(s)
|
// See InitDecoder() for the description of function, input(s)/output(s)
|
||||||
@@ -681,7 +684,8 @@ class ACMGenericCodec {
|
|||||||
// See SetVAD() for the description of function, input(s)/output(s) and
|
// See SetVAD() for the description of function, input(s)/output(s) and
|
||||||
// return value.
|
// return value.
|
||||||
//
|
//
|
||||||
int16_t SetVADSafe(bool* enable_dtx, bool* enable_vad, ACMVADMode* mode);
|
int16_t SetVADSafe(bool* enable_dtx, bool* enable_vad, ACMVADMode* mode)
|
||||||
|
EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// See ReplaceInternalDTX() for the description of function, input and
|
// See ReplaceInternalDTX() for the description of function, input and
|
||||||
@@ -718,7 +722,8 @@ class ACMGenericCodec {
|
|||||||
// -1 if failed,
|
// -1 if failed,
|
||||||
// 0 if succeeded.
|
// 0 if succeeded.
|
||||||
//
|
//
|
||||||
int16_t EnableVAD(ACMVADMode mode);
|
int16_t EnableVAD(ACMVADMode mode)
|
||||||
|
EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// int16_t DisableVAD()
|
// int16_t DisableVAD()
|
||||||
@@ -728,7 +733,7 @@ class ACMGenericCodec {
|
|||||||
// -1 if failed,
|
// -1 if failed,
|
||||||
// 0 if succeeded.
|
// 0 if succeeded.
|
||||||
//
|
//
|
||||||
int16_t DisableVAD();
|
int16_t DisableVAD() EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// int16_t EnableDTX()
|
// int16_t EnableDTX()
|
||||||
@@ -739,7 +744,7 @@ class ACMGenericCodec {
|
|||||||
// -1 if failed,
|
// -1 if failed,
|
||||||
// 0 if succeeded.
|
// 0 if succeeded.
|
||||||
//
|
//
|
||||||
virtual int16_t EnableDTX();
|
virtual int16_t EnableDTX() EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// int16_t DisableDTX()
|
// int16_t DisableDTX()
|
||||||
@@ -750,7 +755,7 @@ class ACMGenericCodec {
|
|||||||
// -1 if failed,
|
// -1 if failed,
|
||||||
// 0 if succeeded.
|
// 0 if succeeded.
|
||||||
//
|
//
|
||||||
virtual int16_t DisableDTX();
|
virtual int16_t DisableDTX() EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// int16_t InternalEncode()
|
// int16_t InternalEncode()
|
||||||
@@ -878,7 +883,8 @@ class ACMGenericCodec {
|
|||||||
//
|
//
|
||||||
int16_t ProcessFrameVADDTX(uint8_t* bitstream,
|
int16_t ProcessFrameVADDTX(uint8_t* bitstream,
|
||||||
int16_t* bitstream_len_byte,
|
int16_t* bitstream_len_byte,
|
||||||
int16_t* samples_processed);
|
int16_t* samples_processed)
|
||||||
|
EXCLUSIVE_LOCKS_REQUIRED(codec_wrapper_lock_);
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// CurrentRate()
|
// CurrentRate()
|
||||||
@@ -925,19 +931,20 @@ class ACMGenericCodec {
|
|||||||
// True if the encoder instance initialized
|
// True if the encoder instance initialized
|
||||||
bool encoder_initialized_;
|
bool encoder_initialized_;
|
||||||
|
|
||||||
bool registered_in_neteq_;
|
const bool registered_in_neteq_; // TODO(henrik.lundin) Remove?
|
||||||
|
|
||||||
// VAD/DTX
|
// VAD/DTX
|
||||||
bool has_internal_dtx_;
|
bool has_internal_dtx_;
|
||||||
WebRtcVadInst* ptr_vad_inst_;
|
WebRtcVadInst* ptr_vad_inst_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
bool vad_enabled_;
|
bool vad_enabled_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
ACMVADMode vad_mode_;
|
ACMVADMode vad_mode_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
int16_t vad_label_[MAX_FRAME_SIZE_10MSEC];
|
int16_t vad_label_[MAX_FRAME_SIZE_10MSEC] GUARDED_BY(codec_wrapper_lock_);
|
||||||
bool dtx_enabled_;
|
bool dtx_enabled_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
WebRtcCngEncInst* ptr_dtx_inst_;
|
WebRtcCngEncInst* ptr_dtx_inst_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
uint8_t num_lpc_params_;
|
uint8_t num_lpc_params_ // TODO(henrik.lundin) Delete and
|
||||||
bool sent_cn_previous_;
|
GUARDED_BY(codec_wrapper_lock_); // replace with kNewCNGNumLPCParams.
|
||||||
int16_t prev_frame_cng_;
|
bool sent_cn_previous_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
|
int16_t prev_frame_cng_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
|
|
||||||
// FEC.
|
// FEC.
|
||||||
bool has_internal_fec_;
|
bool has_internal_fec_;
|
||||||
@@ -952,7 +959,7 @@ class ACMGenericCodec {
|
|||||||
// such as buffers and state variables.
|
// such as buffers and state variables.
|
||||||
RWLockWrapper& codec_wrapper_lock_;
|
RWLockWrapper& codec_wrapper_lock_;
|
||||||
|
|
||||||
uint32_t last_timestamp_;
|
uint32_t last_timestamp_ GUARDED_BY(codec_wrapper_lock_);
|
||||||
uint32_t unique_id_;
|
uint32_t unique_id_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user