#include "webrtc/modules/audio_coding/main/acm2/acm_codec_database.h"
#include "webrtc/modules/audio_coding/main/acm2/acm_common_defs.h"
#include "webrtc/system_wrappers/interface/trace.h"
-
-#define SIGN(x) (x > 0 ? 1 : -1)
#endif
namespace webrtc {
sample_freq_(0),
bitrate_(0),
channels_(1),
- fec_enabled_(false),
packet_loss_rate_(0) {
return;
}
return;
}
-void ACMOpus::InternalDestructEncoderInst(void* /* ptr_inst */) {
- return;
-}
-
int16_t ACMOpus::SetBitRateSafe(const int32_t /*rate*/) {
return -1;
}
sample_freq_(32000), // Default sampling frequency.
bitrate_(20000), // Default bit-rate.
channels_(1), // Default mono.
- fec_enabled_(false), // Default FEC is off.
- packet_loss_rate_(0) {
+ packet_loss_rate_(0) { // Initial packet loss rate.
codec_id_ = codec_id;
// Opus has internal DTX, but we dont use it for now.
has_internal_dtx_ = false;
}
}
-void ACMOpus::InternalDestructEncoderInst(void* ptr_inst) {
- if (ptr_inst != NULL) {
- WebRtcOpus_EncoderFree(static_cast<OpusEncInst*>(ptr_inst));
- }
- return;
-}
-
int16_t ACMOpus::SetBitRateSafe(const int32_t rate) {
if (rate < 6000 || rate > 510000) {
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, unique_id_,
"SetBitRateSafe: Invalid rate Opus");
return -1;
}
- // Initial packet loss rate.
bitrate_ = rate;
int ACMOpus::SetFEC(bool enable_fec) {
// Ask the encoder to enable FEC.
if (enable_fec) {
- if (WebRtcOpus_EnableFec(encoder_inst_ptr_) == 0) {
- fec_enabled_ = true;
+ if (WebRtcOpus_EnableFec(encoder_inst_ptr_) == 0)
return 0;
- }
} else {
- if (WebRtcOpus_DisableFec(encoder_inst_ptr_) == 0) {
- fec_enabled_ = false;
+ if (WebRtcOpus_DisableFec(encoder_inst_ptr_) == 0)
return 0;
- }
}
return -1;
}
const int kLossRate5Margin = 1;
int opt_loss_rate;
if (loss_rate >= kPacketLossRate20 + kLossRate20Margin *
- SIGN(kPacketLossRate20 - packet_loss_rate_)) {
+ (kPacketLossRate20 - packet_loss_rate_ > 0 ? 1 : -1)) {
opt_loss_rate = kPacketLossRate20;
} else if (loss_rate >= kPacketLossRate10 + kLossRate10Margin *
- SIGN(kPacketLossRate10 - packet_loss_rate_)) {
+ (kPacketLossRate10 - packet_loss_rate_ > 0 ? 1 : -1)) {
opt_loss_rate = kPacketLossRate10;
} else if (loss_rate >= kPacketLossRate5 + kLossRate5Margin *
- SIGN(kPacketLossRate5 - packet_loss_rate_)) {
+ (kPacketLossRate5 - packet_loss_rate_ > 0 ? 1 : -1)) {
opt_loss_rate = kPacketLossRate5;
} else if (loss_rate >= kPacketLossRate1) {
opt_loss_rate = kPacketLossRate1;
return -1;
}
-int ACMOpus::SetOpusMaxBandwidth(int max_bandwidth) {
- // Ask the encoder to change the maximum required bandwidth.
- return WebRtcOpus_SetMaxBandwidth(encoder_inst_ptr_, max_bandwidth);
+int ACMOpus::SetOpusMaxPlaybackRate(int frequency_hz) {
+ // Informs Opus encoder of the maximum playback rate the receiver will render.
+ return WebRtcOpus_SetMaxPlaybackRate(encoder_inst_ptr_, frequency_hz);
}
#endif // WEBRTC_CODEC_OPUS