Revert r8342 "Switch to using AudioEncoderIsac instead of ACMISAC"

BUG=chromium:458638
TBR=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/33349004

Cr-Commit-Position: refs/heads/master@{#8372}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8372 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrik.lundin@webrtc.org 2015-02-14 09:42:26 +00:00
parent 30142bbe07
commit 4dc0003bed
4 changed files with 22 additions and 17 deletions

View File

@ -578,9 +578,7 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst,
// All we have support for right now. // All we have support for right now.
if (!STR_CASE_CMP(codec_inst.plname, "ISAC")) { if (!STR_CASE_CMP(codec_inst.plname, "ISAC")) {
#if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) #if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX))
return new ACMGenericCodecWrapper(codec_inst, cng_pt_nb, cng_pt_wb, return new ACMISAC(kISAC, enable_red);
cng_pt_swb, cng_pt_fb, enable_red,
red_payload_type);
#endif #endif
} else if (!STR_CASE_CMP(codec_inst.plname, "PCMU") || } else if (!STR_CASE_CMP(codec_inst.plname, "PCMU") ||
!STR_CASE_CMP(codec_inst.plname, "PCMA")) { !STR_CASE_CMP(codec_inst.plname, "PCMA")) {

View File

@ -270,6 +270,7 @@ int32_t AudioCodingModuleImpl::Process() {
FrameType frame_type = kAudioFrameSpeech; FrameType frame_type = kAudioFrameSpeech;
uint8_t current_payload_type = 0; uint8_t current_payload_type = 0;
bool has_data_to_send = false; bool has_data_to_send = false;
bool red_active = false;
RTPFragmentationHeader my_fragmentation; RTPFragmentationHeader my_fragmentation;
// Keep the scope of the ACM critical section limited. // Keep the scope of the ACM critical section limited.
@ -301,32 +302,36 @@ int32_t AudioCodingModuleImpl::Process() {
} }
case kActiveNormalEncoded: case kActiveNormalEncoded:
case kPassiveNormalEncoded: { case kPassiveNormalEncoded: {
current_payload_type = static_cast<uint8_t>(send_codec_inst_.pltype);
frame_type = kAudioFrameSpeech; frame_type = kAudioFrameSpeech;
break; break;
} }
case kPassiveDTXNB: { case kPassiveDTXNB: {
current_payload_type = cng_nb_pltype_;
frame_type = kAudioFrameCN; frame_type = kAudioFrameCN;
is_first_red_ = true; is_first_red_ = true;
break; break;
} }
case kPassiveDTXWB: { case kPassiveDTXWB: {
current_payload_type = cng_wb_pltype_;
frame_type = kAudioFrameCN; frame_type = kAudioFrameCN;
is_first_red_ = true; is_first_red_ = true;
break; break;
} }
case kPassiveDTXSWB: { case kPassiveDTXSWB: {
current_payload_type = cng_swb_pltype_;
frame_type = kAudioFrameCN; frame_type = kAudioFrameCN;
is_first_red_ = true; is_first_red_ = true;
break; break;
} }
case kPassiveDTXFB: { case kPassiveDTXFB: {
current_payload_type = cng_fb_pltype_;
frame_type = kAudioFrameCN; frame_type = kAudioFrameCN;
is_first_red_ = true; is_first_red_ = true;
break; break;
} }
} }
has_data_to_send = true; has_data_to_send = true;
current_payload_type = encoded_info.payload_type;
previous_pltype_ = current_payload_type; previous_pltype_ = current_payload_type;
ConvertEncodedInfoToFragmentationHeader(encoded_info, &my_fragmentation); ConvertEncodedInfoToFragmentationHeader(encoded_info, &my_fragmentation);
@ -343,9 +348,8 @@ int32_t AudioCodingModuleImpl::Process() {
// have been switched to the new AudioEncoder interface. // have been switched to the new AudioEncoder interface.
if ((codecs_[current_send_codec_idx_]->ExternalRedNeeded()) && if ((codecs_[current_send_codec_idx_]->ExternalRedNeeded()) &&
((encoding_type == kActiveNormalEncoded) || ((encoding_type == kActiveNormalEncoded) ||
(encoding_type == kPassiveNormalEncoded))) { (encoding_type == kPassiveNormalEncoded))) {
DCHECK(encoded_info.redundant.empty()); DCHECK(encoded_info.redundant.empty());
FATAL() << "Don't go here!";
// RED is enabled within this scope. // RED is enabled within this scope.
// //
// Note that, a special solution exists for iSAC since it is the only // Note that, a special solution exists for iSAC since it is the only
@ -385,6 +389,7 @@ int32_t AudioCodingModuleImpl::Process() {
// //
// Hence, even if every second packet is dropped, perfect // Hence, even if every second packet is dropped, perfect
// reconstruction is possible. // reconstruction is possible.
red_active = true;
has_data_to_send = false; has_data_to_send = false;
// Skip the following part for the first packet in a RED session. // Skip the following part for the first packet in a RED session.
@ -452,7 +457,7 @@ int32_t AudioCodingModuleImpl::Process() {
CriticalSectionScoped lock(callback_crit_sect_); CriticalSectionScoped lock(callback_crit_sect_);
if (packetization_callback_ != NULL) { if (packetization_callback_ != NULL) {
if (my_fragmentation.fragmentationVectorSize > 0) { if (red_active || my_fragmentation.fragmentationVectorSize > 0) {
// Callback with payload data, including redundant data (RED). // Callback with payload data, including redundant data (RED).
packetization_callback_->SendData(frame_type, current_payload_type, packetization_callback_->SendData(frame_type, current_payload_type,
rtp_timestamp, stream, length_bytes, rtp_timestamp, stream, length_bytes,

View File

@ -809,14 +809,15 @@ TEST_F(AcmSenderBitExactness, DISABLED_ON_ANDROID(IsacSwb30ms)) {
ASSERT_NO_FATAL_FAILURE( ASSERT_NO_FATAL_FAILURE(
SetUpTest(acm2::ACMCodecDB::kISACSWB, 1, 104, 960, 960)); SetUpTest(acm2::ACMCodecDB::kISACSWB, 1, 104, 960, 960));
Run(AcmReceiverBitExactness::PlatformChecksum( Run(AcmReceiverBitExactness::PlatformChecksum(
"2b3c387d06f00b7b7aad4c9be56fb83d", "98d960600eb4ddb3fcbe11f5057ddfd7",
"", "",
"5683b58da0fbf2063c7adc2e6bfb3fb8"), "2f6dfe142f735f1d96f6bd86d2526f42"),
AcmReceiverBitExactness::PlatformChecksum( AcmReceiverBitExactness::PlatformChecksum(
"bcc2041e7744c7ebd9f701866856849c", "cc9d2d86a71d6f99f97680a5c27e2762",
"", "",
"ce86106a93419aefb063097108ec94ab"), "7b214fc3a5e33d68bf30e77969371f31"),
33, test::AcmReceiveTest::kMonoOutput); 33,
test::AcmReceiveTest::kMonoOutput);
} }
TEST_F(AcmSenderBitExactness, Pcm16_8000khz_10ms) { TEST_F(AcmSenderBitExactness, Pcm16_8000khz_10ms) {

View File

@ -932,14 +932,15 @@ TEST_F(AcmSenderBitExactnessOldApi, MAYBE_IsacWb60ms) {
TEST_F(AcmSenderBitExactnessOldApi, DISABLED_ON_ANDROID(IsacSwb30ms)) { TEST_F(AcmSenderBitExactnessOldApi, DISABLED_ON_ANDROID(IsacSwb30ms)) {
ASSERT_NO_FATAL_FAILURE(SetUpTest("ISAC", 32000, 1, 104, 960, 960)); ASSERT_NO_FATAL_FAILURE(SetUpTest("ISAC", 32000, 1, 104, 960, 960));
Run(AcmReceiverBitExactnessOldApi::PlatformChecksum( Run(AcmReceiverBitExactnessOldApi::PlatformChecksum(
"2b3c387d06f00b7b7aad4c9be56fb83d", "98d960600eb4ddb3fcbe11f5057ddfd7",
"", "",
"5683b58da0fbf2063c7adc2e6bfb3fb8"), "2f6dfe142f735f1d96f6bd86d2526f42"),
AcmReceiverBitExactnessOldApi::PlatformChecksum( AcmReceiverBitExactnessOldApi::PlatformChecksum(
"bcc2041e7744c7ebd9f701866856849c", "cc9d2d86a71d6f99f97680a5c27e2762",
"", "",
"ce86106a93419aefb063097108ec94ab"), "7b214fc3a5e33d68bf30e77969371f31"),
33, test::AcmReceiveTestOldApi::kMonoOutput); 33,
test::AcmReceiveTestOldApi::kMonoOutput);
} }
TEST_F(AcmSenderBitExactnessOldApi, Pcm16_8000khz_10ms) { TEST_F(AcmSenderBitExactnessOldApi, Pcm16_8000khz_10ms) {