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

Side by Side Diff: webrtc/common_audio/signal_processing/filter_ma_fast_q12.c

Issue 2293893002: Add functions to interact with ASan and MSan, and some sample uses (Closed)
Patch Set: Created 4 years, 3 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) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 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
11 11
12 /* 12 /*
13 * This file contains the function WebRtcSpl_FilterMAFastQ12(). 13 * This file contains the function WebRtcSpl_FilterMAFastQ12().
14 * The description header can be found in signal_processing_library.h 14 * The description header can be found in signal_processing_library.h
15 * 15 *
16 */ 16 */
17 17
18 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h" 18 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h"
19 19
20 #include "webrtc/base/sanitizer.h"
21
20 void WebRtcSpl_FilterMAFastQ12(const int16_t* in_ptr, 22 void WebRtcSpl_FilterMAFastQ12(const int16_t* in_ptr,
21 int16_t* out_ptr, 23 int16_t* out_ptr,
22 const int16_t* B, 24 const int16_t* B,
23 size_t B_length, 25 size_t B_length,
24 size_t length) 26 size_t length)
25 { 27 {
26 size_t i, j; 28 size_t i, j;
29
30 rtc_MsanCheckInitialized(B, sizeof(B[0]), B_length);
31 rtc_MsanCheckInitialized(in_ptr - B_length + 1, sizeof(in_ptr[0]),
32 B_length + length - 1);
kwiberg-webrtc 2016/08/30 19:55:28 This is the sort of rtc_MsanCheckInitialized() cal
hlundin-webrtc 2016/09/01 13:41:35 What?! You don't like functions that use memory "t
kwiberg-webrtc 2016/09/02 07:30:16 Well, as long as you don't document what memory ra
33
27 for (i = 0; i < length; i++) 34 for (i = 0; i < length; i++)
28 { 35 {
29 int32_t o = 0; 36 int32_t o = 0;
30 37
31 for (j = 0; j < B_length; j++) 38 for (j = 0; j < B_length; j++)
32 { 39 {
33 o += B[j] * in_ptr[i - j]; 40 o += B[j] * in_ptr[i - j];
34 } 41 }
35 42
36 // If output is higher than 32768, saturate it. Same with negative side 43 // If output is higher than 32768, saturate it. Same with negative side
37 // 2^27 = 134217728, which corresponds to 32768 in Q12 44 // 2^27 = 134217728, which corresponds to 32768 in Q12
38 45
39 // Saturate the output 46 // Saturate the output
40 o = WEBRTC_SPL_SAT((int32_t)134215679, o, (int32_t)-134217728); 47 o = WEBRTC_SPL_SAT((int32_t)134215679, o, (int32_t)-134217728);
41 48
42 *out_ptr++ = (int16_t)((o + (int32_t)2048) >> 12); 49 *out_ptr++ = (int16_t)((o + (int32_t)2048) >> 12);
43 } 50 }
44 return; 51 return;
45 } 52 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698