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

Side by Side Diff: webrtc/common_audio/signal_processing/include/signal_processing_library.h

Issue 2314413002: iSAC fix: Ignore overflow in signed left shift (Closed)
Patch Set: rebase 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
« no previous file with comments | « no previous file | webrtc/modules/audio_coding/codecs/isac/fix/source/lattice.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 + ((WEBRTC_SPL_MUL_16_16(a, (b & 0xffff) >> 1) + 0x4000) >> 15)) 56 + ((WEBRTC_SPL_MUL_16_16(a, (b & 0xffff) >> 1) + 0x4000) >> 15))
57 #endif 57 #endif
58 #endif 58 #endif
59 59
60 #define WEBRTC_SPL_MUL_16_32_RSFT11(a, b) \ 60 #define WEBRTC_SPL_MUL_16_32_RSFT11(a, b) \
61 (WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 5) + \ 61 (WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 5) + \
62 (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x0200) >> 10)) 62 (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x0200) >> 10))
63 #define WEBRTC_SPL_MUL_16_32_RSFT14(a, b) \ 63 #define WEBRTC_SPL_MUL_16_32_RSFT14(a, b) \
64 (WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 2) + \ 64 (WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 2) + \
65 (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x1000) >> 13)) 65 (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x1000) >> 13))
66 #define WEBRTC_SPL_MUL_16_32_RSFT15(a, b) \ 66 #define WEBRTC_SPL_MUL_16_32_RSFT15(a, b) \
67 ((WEBRTC_SPL_MUL_16_16(a, (b) >> 16) << 1) \ 67 ((WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 1)) + \
68 + (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x2000) >> 14)) 68 (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x2000) >> 14))
69 69
70 #define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) \ 70 #define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) \
71 (WEBRTC_SPL_MUL_16_16(a, b) >> (c)) 71 (WEBRTC_SPL_MUL_16_16(a, b) >> (c))
72 72
73 #define WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(a, b, c) \ 73 #define WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(a, b, c) \
74 ((WEBRTC_SPL_MUL_16_16(a, b) + ((int32_t) \ 74 ((WEBRTC_SPL_MUL_16_16(a, b) + ((int32_t) \
75 (((int32_t)1) << ((c) - 1)))) >> (c)) 75 (((int32_t)1) << ((c) - 1)))) >> (c))
76 76
77 // C + the 32 most significant bits of A * B 77 // C + the 32 most significant bits of A * B
78 #define WEBRTC_SPL_SCALEDIFF32(A, B, C) \ 78 #define WEBRTC_SPL_SCALEDIFF32(A, B, C) \
(...skipping 1554 matching lines...) Expand 10 before | Expand all | Expand 10 after
1633 // This function multiply a 16-bit word by a 16-bit word, and accumulate this 1633 // This function multiply a 16-bit word by a 16-bit word, and accumulate this
1634 // value to a 32-bit integer. 1634 // value to a 32-bit integer.
1635 // 1635 //
1636 // Input: 1636 // Input:
1637 // - a : The value of the first 16-bit word. 1637 // - a : The value of the first 16-bit word.
1638 // - b : The value of the second 16-bit word. 1638 // - b : The value of the second 16-bit word.
1639 // - c : The value of an 32-bit integer. 1639 // - c : The value of an 32-bit integer.
1640 // 1640 //
1641 // Return Value: The value of a * b + c. 1641 // Return Value: The value of a * b + c.
1642 // 1642 //
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/audio_coding/codecs/isac/fix/source/lattice.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698