Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(613)

Side by Side Diff: webrtc/modules/audio_processing/aecm/aecm_core.cc

Issue 2685783014: Replace NULL with nullptr in all C++ files. (Closed)
Patch Set: Fixing android. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 // 180 //
181 // Inputs: 181 // Inputs:
182 // - self : Pointer to the AECM instance. 182 // - self : Pointer to the AECM instance.
183 // - delay : Current delay estimate. 183 // - delay : Current delay estimate.
184 // 184 //
185 // Output: 185 // Output:
186 // - far_q : The Q-domain of the aligned far end spectrum 186 // - far_q : The Q-domain of the aligned far end spectrum
187 // 187 //
188 // Return value: 188 // Return value:
189 // - far_spectrum : Pointer to the aligned far end spectrum 189 // - far_spectrum : Pointer to the aligned far end spectrum
190 // NULL - Error 190 // null - Error
191 // 191 //
192 const uint16_t* WebRtcAecm_AlignedFarend(AecmCore* self, 192 const uint16_t* WebRtcAecm_AlignedFarend(AecmCore* self,
193 int* far_q, 193 int* far_q,
194 int delay) { 194 int delay) {
195 int buffer_position = 0; 195 int buffer_position = 0;
196 RTC_DCHECK(self); 196 RTC_DCHECK(self);
197 buffer_position = self->far_history_pos - delay; 197 buffer_position = self->far_history_pos - delay;
198 198
199 // Check buffer position 199 // Check buffer position
200 if (buffer_position < 0) { 200 if (buffer_position < 0) {
(...skipping 11 matching lines...) Expand all
212 ResetAdaptiveChannel WebRtcAecm_ResetAdaptiveChannel; 212 ResetAdaptiveChannel WebRtcAecm_ResetAdaptiveChannel;
213 213
214 AecmCore* WebRtcAecm_CreateCore() { 214 AecmCore* WebRtcAecm_CreateCore() {
215 AecmCore* aecm = static_cast<AecmCore*>(malloc(sizeof(AecmCore))); 215 AecmCore* aecm = static_cast<AecmCore*>(malloc(sizeof(AecmCore)));
216 216
217 aecm->farFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN, 217 aecm->farFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
218 sizeof(int16_t)); 218 sizeof(int16_t));
219 if (!aecm->farFrameBuf) 219 if (!aecm->farFrameBuf)
220 { 220 {
221 WebRtcAecm_FreeCore(aecm); 221 WebRtcAecm_FreeCore(aecm);
222 return NULL; 222 return nullptr;
223 } 223 }
224 224
225 aecm->nearNoisyFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN, 225 aecm->nearNoisyFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
226 sizeof(int16_t)); 226 sizeof(int16_t));
227 if (!aecm->nearNoisyFrameBuf) 227 if (!aecm->nearNoisyFrameBuf)
228 { 228 {
229 WebRtcAecm_FreeCore(aecm); 229 WebRtcAecm_FreeCore(aecm);
230 return NULL; 230 return nullptr;
231 } 231 }
232 232
233 aecm->nearCleanFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN, 233 aecm->nearCleanFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
234 sizeof(int16_t)); 234 sizeof(int16_t));
235 if (!aecm->nearCleanFrameBuf) 235 if (!aecm->nearCleanFrameBuf)
236 { 236 {
237 WebRtcAecm_FreeCore(aecm); 237 WebRtcAecm_FreeCore(aecm);
238 return NULL; 238 return nullptr;
239 } 239 }
240 240
241 aecm->outFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN, 241 aecm->outFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
242 sizeof(int16_t)); 242 sizeof(int16_t));
243 if (!aecm->outFrameBuf) 243 if (!aecm->outFrameBuf)
244 { 244 {
245 WebRtcAecm_FreeCore(aecm); 245 WebRtcAecm_FreeCore(aecm);
246 return NULL; 246 return nullptr;
247 } 247 }
248 248
249 aecm->delay_estimator_farend = WebRtc_CreateDelayEstimatorFarend(PART_LEN1, 249 aecm->delay_estimator_farend = WebRtc_CreateDelayEstimatorFarend(PART_LEN1,
250 MAX_DELAY); 250 MAX_DELAY);
251 if (aecm->delay_estimator_farend == NULL) { 251 if (aecm->delay_estimator_farend == nullptr) {
252 WebRtcAecm_FreeCore(aecm); 252 WebRtcAecm_FreeCore(aecm);
253 return NULL; 253 return nullptr;
254 } 254 }
255 aecm->delay_estimator = 255 aecm->delay_estimator =
256 WebRtc_CreateDelayEstimator(aecm->delay_estimator_farend, 0); 256 WebRtc_CreateDelayEstimator(aecm->delay_estimator_farend, 0);
257 if (aecm->delay_estimator == NULL) { 257 if (aecm->delay_estimator == nullptr) {
258 WebRtcAecm_FreeCore(aecm); 258 WebRtcAecm_FreeCore(aecm);
259 return NULL; 259 return nullptr;
260 } 260 }
261 // TODO(bjornv): Explicitly disable robust delay validation until no 261 // TODO(bjornv): Explicitly disable robust delay validation until no
262 // performance regression has been established. Then remove the line. 262 // performance regression has been established. Then remove the line.
263 WebRtc_enable_robust_validation(aecm->delay_estimator, 0); 263 WebRtc_enable_robust_validation(aecm->delay_estimator, 0);
264 264
265 aecm->real_fft = WebRtcSpl_CreateRealFFT(PART_LEN_SHIFT); 265 aecm->real_fft = WebRtcSpl_CreateRealFFT(PART_LEN_SHIFT);
266 if (aecm->real_fft == NULL) { 266 if (aecm->real_fft == nullptr) {
267 WebRtcAecm_FreeCore(aecm); 267 WebRtcAecm_FreeCore(aecm);
268 return NULL; 268 return nullptr;
269 } 269 }
270 270
271 // Init some aecm pointers. 16 and 32 byte alignment is only necessary 271 // Init some aecm pointers. 16 and 32 byte alignment is only necessary
272 // for Neon code currently. 272 // for Neon code currently.
273 aecm->xBuf = (int16_t*) (((uintptr_t)aecm->xBuf_buf + 31) & ~ 31); 273 aecm->xBuf = (int16_t*) (((uintptr_t)aecm->xBuf_buf + 31) & ~ 31);
274 aecm->dBufClean = (int16_t*) (((uintptr_t)aecm->dBufClean_buf + 31) & ~ 31); 274 aecm->dBufClean = (int16_t*) (((uintptr_t)aecm->dBufClean_buf + 31) & ~ 31);
275 aecm->dBufNoisy = (int16_t*) (((uintptr_t)aecm->dBufNoisy_buf + 31) & ~ 31); 275 aecm->dBufNoisy = (int16_t*) (((uintptr_t)aecm->dBufNoisy_buf + 31) & ~ 31);
276 aecm->outBuf = (int16_t*) (((uintptr_t)aecm->outBuf_buf + 15) & ~ 15); 276 aecm->outBuf = (int16_t*) (((uintptr_t)aecm->outBuf_buf + 15) & ~ 15);
277 aecm->channelStored = (int16_t*) (((uintptr_t) 277 aecm->channelStored = (int16_t*) (((uintptr_t)
278 aecm->channelStored_buf + 15) & ~ 1 5); 278 aecm->channelStored_buf + 15) & ~ 1 5);
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 // TODO(bjornv): This function is currently not used. Add support for these 525 // TODO(bjornv): This function is currently not used. Add support for these
526 // parameters from a higher level 526 // parameters from a higher level
527 int WebRtcAecm_Control(AecmCore* aecm, int delay, int nlpFlag) { 527 int WebRtcAecm_Control(AecmCore* aecm, int delay, int nlpFlag) {
528 aecm->nlpFlag = nlpFlag; 528 aecm->nlpFlag = nlpFlag;
529 aecm->fixedDelay = delay; 529 aecm->fixedDelay = delay;
530 530
531 return 0; 531 return 0;
532 } 532 }
533 533
534 void WebRtcAecm_FreeCore(AecmCore* aecm) { 534 void WebRtcAecm_FreeCore(AecmCore* aecm) {
535 if (aecm == NULL) { 535 if (aecm == nullptr) {
536 return; 536 return;
537 } 537 }
538 538
539 WebRtc_FreeBuffer(aecm->farFrameBuf); 539 WebRtc_FreeBuffer(aecm->farFrameBuf);
540 WebRtc_FreeBuffer(aecm->nearNoisyFrameBuf); 540 WebRtc_FreeBuffer(aecm->nearNoisyFrameBuf);
541 WebRtc_FreeBuffer(aecm->nearCleanFrameBuf); 541 WebRtc_FreeBuffer(aecm->nearCleanFrameBuf);
542 WebRtc_FreeBuffer(aecm->outFrameBuf); 542 WebRtc_FreeBuffer(aecm->outFrameBuf);
543 543
544 WebRtc_FreeDelayEstimator(aecm->delay_estimator); 544 WebRtc_FreeDelayEstimator(aecm->delay_estimator);
545 WebRtc_FreeDelayEstimatorFarend(aecm->delay_estimator_farend); 545 WebRtc_FreeDelayEstimatorFarend(aecm->delay_estimator_farend);
546 WebRtcSpl_FreeRealFFT(aecm->real_fft); 546 WebRtcSpl_FreeRealFFT(aecm->real_fft);
547 547
548 free(aecm); 548 free(aecm);
549 } 549 }
550 550
551 int WebRtcAecm_ProcessFrame(AecmCore* aecm, 551 int WebRtcAecm_ProcessFrame(AecmCore* aecm,
552 const int16_t* farend, 552 const int16_t* farend,
553 const int16_t* nearendNoisy, 553 const int16_t* nearendNoisy,
554 const int16_t* nearendClean, 554 const int16_t* nearendClean,
555 int16_t* out) { 555 int16_t* out) {
556 int16_t outBlock_buf[PART_LEN + 8]; // Align buffer to 8-byte boundary. 556 int16_t outBlock_buf[PART_LEN + 8]; // Align buffer to 8-byte boundary.
557 int16_t* outBlock = (int16_t*) (((uintptr_t) outBlock_buf + 15) & ~ 15); 557 int16_t* outBlock = (int16_t*) (((uintptr_t) outBlock_buf + 15) & ~ 15);
558 558
559 int16_t farFrame[FRAME_LEN]; 559 int16_t farFrame[FRAME_LEN];
560 const int16_t* out_ptr = NULL; 560 const int16_t* out_ptr = nullptr;
561 int size = 0; 561 int size = 0;
562 562
563 // Buffer the current frame. 563 // Buffer the current frame.
564 // Fetch an older one corresponding to the delay. 564 // Fetch an older one corresponding to the delay.
565 WebRtcAecm_BufferFarFrame(aecm, farend, FRAME_LEN); 565 WebRtcAecm_BufferFarFrame(aecm, farend, FRAME_LEN);
566 WebRtcAecm_FetchFarFrame(aecm, farFrame, FRAME_LEN, aecm->knownDelay); 566 WebRtcAecm_FetchFarFrame(aecm, farFrame, FRAME_LEN, aecm->knownDelay);
567 567
568 // Buffer the synchronized far and near frames, 568 // Buffer the synchronized far and near frames,
569 // to pass the smaller blocks individually. 569 // to pass the smaller blocks individually.
570 WebRtc_WriteBuffer(aecm->farFrameBuf, farFrame, FRAME_LEN); 570 WebRtc_WriteBuffer(aecm->farFrameBuf, farFrame, FRAME_LEN);
571 WebRtc_WriteBuffer(aecm->nearNoisyFrameBuf, nearendNoisy, FRAME_LEN); 571 WebRtc_WriteBuffer(aecm->nearNoisyFrameBuf, nearendNoisy, FRAME_LEN);
572 if (nearendClean != NULL) 572 if (nearendClean != nullptr) {
573 { 573 WebRtc_WriteBuffer(aecm->nearCleanFrameBuf, nearendClean, FRAME_LEN);
574 WebRtc_WriteBuffer(aecm->nearCleanFrameBuf, nearendClean, FRAME_LEN);
575 } 574 }
576 575
577 // Process as many blocks as possible. 576 // Process as many blocks as possible.
578 while (WebRtc_available_read(aecm->farFrameBuf) >= PART_LEN) 577 while (WebRtc_available_read(aecm->farFrameBuf) >= PART_LEN)
579 { 578 {
580 int16_t far_block[PART_LEN]; 579 int16_t far_block[PART_LEN];
581 const int16_t* far_block_ptr = NULL; 580 const int16_t* far_block_ptr = nullptr;
582 int16_t near_noisy_block[PART_LEN]; 581 int16_t near_noisy_block[PART_LEN];
583 const int16_t* near_noisy_block_ptr = NULL; 582 const int16_t* near_noisy_block_ptr = nullptr;
584 583
585 WebRtc_ReadBuffer(aecm->farFrameBuf, (void**) &far_block_ptr, far_block, 584 WebRtc_ReadBuffer(aecm->farFrameBuf, (void**) &far_block_ptr, far_block,
586 PART_LEN); 585 PART_LEN);
587 WebRtc_ReadBuffer(aecm->nearNoisyFrameBuf, 586 WebRtc_ReadBuffer(aecm->nearNoisyFrameBuf,
588 (void**) &near_noisy_block_ptr, 587 (void**) &near_noisy_block_ptr,
589 near_noisy_block, 588 near_noisy_block,
590 PART_LEN); 589 PART_LEN);
591 if (nearendClean != NULL) 590 if (nearendClean != nullptr) {
592 { 591 int16_t near_clean_block[PART_LEN];
593 int16_t near_clean_block[PART_LEN]; 592 const int16_t* near_clean_block_ptr = nullptr;
594 const int16_t* near_clean_block_ptr = NULL;
595 593
596 WebRtc_ReadBuffer(aecm->nearCleanFrameBuf, 594 WebRtc_ReadBuffer(aecm->nearCleanFrameBuf,
597 (void**) &near_clean_block_ptr, 595 (void**)&near_clean_block_ptr, near_clean_block,
598 near_clean_block, 596 PART_LEN);
599 PART_LEN); 597 if (WebRtcAecm_ProcessBlock(aecm, far_block_ptr, near_noisy_block_ptr,
600 if (WebRtcAecm_ProcessBlock(aecm, 598 near_clean_block_ptr, outBlock) == -1) {
601 far_block_ptr, 599 return -1;
602 near_noisy_block_ptr, 600 }
603 near_clean_block_ptr,
604 outBlock) == -1)
605 {
606 return -1;
607 }
608 } else 601 } else
609 { 602 {
610 if (WebRtcAecm_ProcessBlock(aecm, 603 if (WebRtcAecm_ProcessBlock(aecm, far_block_ptr, near_noisy_block_ptr,
611 far_block_ptr, 604 nullptr, outBlock) == -1) {
612 near_noisy_block_ptr, 605 return -1;
613 NULL,
614 outBlock) == -1)
615 {
616 return -1;
617 } 606 }
618 } 607 }
619 608
620 WebRtc_WriteBuffer(aecm->outFrameBuf, outBlock, PART_LEN); 609 WebRtc_WriteBuffer(aecm->outFrameBuf, outBlock, PART_LEN);
621 } 610 }
622 611
623 // Stuff the out buffer if we have less than a frame to output. 612 // Stuff the out buffer if we have less than a frame to output.
624 // This should only happen for the first frame. 613 // This should only happen for the first frame.
625 size = (int) WebRtc_available_read(aecm->outFrameBuf); 614 size = (int) WebRtc_available_read(aecm->outFrameBuf);
626 if (size < FRAME_LEN) 615 if (size < FRAME_LEN)
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after
1222 memcpy(farend + readPos, aecm->farBuf + aecm->farBufReadPos, 1211 memcpy(farend + readPos, aecm->farBuf + aecm->farBufReadPos,
1223 sizeof(int16_t) * readLen); 1212 sizeof(int16_t) * readLen);
1224 aecm->farBufReadPos = 0; 1213 aecm->farBufReadPos = 0;
1225 readPos = readLen; 1214 readPos = readLen;
1226 readLen = farLen - readLen; 1215 readLen = farLen - readLen;
1227 } 1216 }
1228 memcpy(farend + readPos, aecm->farBuf + aecm->farBufReadPos, 1217 memcpy(farend + readPos, aecm->farBuf + aecm->farBufReadPos,
1229 sizeof(int16_t) * readLen); 1218 sizeof(int16_t) * readLen);
1230 aecm->farBufReadPos += readLen; 1219 aecm->farBufReadPos += readLen;
1231 } 1220 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698