OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 ".set pop \n\t" | 635 ".set pop \n\t" |
636 : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), | 636 : [f0] "=&f" (f0), [f1] "=&f" (f1), [f2] "=&f" (f2), |
637 [f3] "=&f" (f3), [f4] "=&f" (f4), [f5] "=&f" (f5), | 637 [f3] "=&f" (f3), [f4] "=&f" (f4), [f5] "=&f" (f5), |
638 [f6] "=&f" (f6), [f7] "=&f" (f7), [len] "=&r" (len), | 638 [f6] "=&f" (f6), [f7] "=&f" (f7), [len] "=&r" (len), |
639 [fft_tmp] "=&r" (fft_tmp), [aRe] "+r" (aRe), [aIm] "+r" (aIm) | 639 [fft_tmp] "=&r" (fft_tmp), [aRe] "+r" (aRe), [aIm] "+r" (aIm) |
640 : [fft] "r" (fft) | 640 : [fft] "r" (fft) |
641 : "memory"); | 641 : "memory"); |
642 } | 642 } |
643 } | 643 } |
644 | 644 |
645 void WebRtcAec_OverdriveAndSuppress_mips(AecCore* aec, | 645 void WebRtcAec_OverdriveAndSuppress_mips(float overdrive_scaling, |
646 float hNl[PART_LEN1], | 646 float hNl[PART_LEN1], |
647 const float hNlFb, | 647 const float hNlFb, |
648 float efw[2][PART_LEN1]) { | 648 float efw[2][PART_LEN1]) { |
649 int i; | 649 int i; |
650 const float one = 1.0; | 650 const float one = 1.0; |
651 float* p_hNl; | 651 float* p_hNl; |
652 float* p_efw0; | 652 float* p_efw0; |
653 float* p_efw1; | 653 float* p_efw1; |
654 const float* p_WebRtcAec_wC; | 654 const float* p_WebRtcAec_wC; |
655 float temp1, temp2, temp3, temp4; | 655 float temp1, temp2, temp3, temp4; |
(...skipping 22 matching lines...) Expand all Loading... |
678 #endif // #if !defined(MIPS32_R2_LE) | 678 #endif // #if !defined(MIPS32_R2_LE) |
679 "swc1 %[temp1], 0(%[p_hNl]) \n\t" | 679 "swc1 %[temp1], 0(%[p_hNl]) \n\t" |
680 "1: \n\t" | 680 "1: \n\t" |
681 "addiu %[p_wC], %[p_wC], 4 \n\t" | 681 "addiu %[p_wC], %[p_wC], 4 \n\t" |
682 ".set pop \n\t" | 682 ".set pop \n\t" |
683 : [temp1] "=&f" (temp1), [temp2] "=&f" (temp2), [temp3] "=&f" (temp3), | 683 : [temp1] "=&f" (temp1), [temp2] "=&f" (temp2), [temp3] "=&f" (temp3), |
684 [temp4] "=&f" (temp4), [p_wC] "+r" (p_WebRtcAec_wC) | 684 [temp4] "=&f" (temp4), [p_wC] "+r" (p_WebRtcAec_wC) |
685 : [hNlFb] "f" (hNlFb), [one] "f" (one), [p_hNl] "r" (p_hNl) | 685 : [hNlFb] "f" (hNlFb), [one] "f" (one), [p_hNl] "r" (p_hNl) |
686 : "memory"); | 686 : "memory"); |
687 | 687 |
688 hNl[i] = powf(hNl[i], aec->overDriveSm * WebRtcAec_overDriveCurve[i]); | 688 hNl[i] = powf(hNl[i], overdrive_scaling * WebRtcAec_overDriveCurve[i]); |
689 | 689 |
690 __asm __volatile( | 690 __asm __volatile( |
691 "lwc1 %[temp1], 0(%[p_hNl]) \n\t" | 691 "lwc1 %[temp1], 0(%[p_hNl]) \n\t" |
692 "lwc1 %[temp3], 0(%[p_efw1]) \n\t" | 692 "lwc1 %[temp3], 0(%[p_efw1]) \n\t" |
693 "lwc1 %[temp2], 0(%[p_efw0]) \n\t" | 693 "lwc1 %[temp2], 0(%[p_efw0]) \n\t" |
694 "addiu %[p_hNl], %[p_hNl], 4 \n\t" | 694 "addiu %[p_hNl], %[p_hNl], 4 \n\t" |
695 "mul.s %[temp3], %[temp3], %[temp1] \n\t" | 695 "mul.s %[temp3], %[temp3], %[temp1] \n\t" |
696 "mul.s %[temp2], %[temp2], %[temp1] \n\t" | 696 "mul.s %[temp2], %[temp2], %[temp1] \n\t" |
697 "addiu %[p_efw0], %[p_efw0], 4 \n\t" | 697 "addiu %[p_efw0], %[p_efw0], 4 \n\t" |
698 "addiu %[p_efw1], %[p_efw1], 4 \n\t" | 698 "addiu %[p_efw1], %[p_efw1], 4 \n\t" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
770 } | 770 } |
771 | 771 |
772 void WebRtcAec_InitAec_mips(void) { | 772 void WebRtcAec_InitAec_mips(void) { |
773 WebRtcAec_FilterFar = WebRtcAec_FilterFar_mips; | 773 WebRtcAec_FilterFar = WebRtcAec_FilterFar_mips; |
774 WebRtcAec_FilterAdaptation = WebRtcAec_FilterAdaptation_mips; | 774 WebRtcAec_FilterAdaptation = WebRtcAec_FilterAdaptation_mips; |
775 WebRtcAec_ScaleErrorSignal = WebRtcAec_ScaleErrorSignal_mips; | 775 WebRtcAec_ScaleErrorSignal = WebRtcAec_ScaleErrorSignal_mips; |
776 WebRtcAec_ComfortNoise = WebRtcAec_ComfortNoise_mips; | 776 WebRtcAec_ComfortNoise = WebRtcAec_ComfortNoise_mips; |
777 WebRtcAec_OverdriveAndSuppress = WebRtcAec_OverdriveAndSuppress_mips; | 777 WebRtcAec_OverdriveAndSuppress = WebRtcAec_OverdriveAndSuppress_mips; |
778 } | 778 } |
779 } // namespace webrtc | 779 } // namespace webrtc |
OLD | NEW |