diff options
author | Lajos Molnar <lajos@google.com> | 2014-10-02 23:38:51 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-02 23:38:51 +0000 |
commit | e1f2739b0a53e98a0d8dc124250f99c17515b90e (patch) | |
tree | 9f9964eac92ce1767c324e0a774f538456e67755 /include | |
parent | 6820103771b5af4bda1ed7dab29dcf49421afc2e (diff) | |
parent | f973c881e3f3c1cbb91e4eb0e65f57bb23ed5758 (diff) | |
download | frameworks_av-e1f2739b0a53e98a0d8dc124250f99c17515b90e.zip frameworks_av-e1f2739b0a53e98a0d8dc124250f99c17515b90e.tar.gz frameworks_av-e1f2739b0a53e98a0d8dc124250f99c17515b90e.tar.bz2 |
am f973c881: resolved conflicts for merge of 55fc6a77 to lmp-mr1-dev-plus-aosp
* commit 'f973c881e3f3c1cbb91e4eb0e65f57bb23ed5758':
stagefright: move math templates into AUtils.h
Diffstat (limited to 'include')
-rw-r--r-- | include/media/stagefright/foundation/AUtils.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/include/media/stagefright/foundation/AUtils.h b/include/media/stagefright/foundation/AUtils.h new file mode 100644 index 0000000..3a73a39 --- /dev/null +++ b/include/media/stagefright/foundation/AUtils.h @@ -0,0 +1,65 @@ +/* + * Copyright 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef A_UTILS_H_ + +#define A_UTILS_H_ + +/* ============================ math templates ============================ */ + +/* T must be integer type, den must not be 0 */ +template<class T> +inline static const T divRound(const T &nom, const T &den) { + if ((nom >= 0) ^ (den >= 0)) { + return (nom - den / 2) / den; + } else { + return (nom + den / 2) / den; + } +} + +/* == ceil(nom / den). T must be integer type, den must not be 0 */ +template<class T> +inline static const T divUp(const T &nom, const T &den) { + if (den < 0) { + return (nom < 0 ? nom + den + 1 : nom) / den; + } else { + return (nom < 0 ? nom : nom + den - 1) / den; + } +} + +template<class T> +inline static T abs(const T &a) { + return a < 0 ? -a : a; +} + +template<class T> +inline static const T &min(const T &a, const T &b) { + return a < b ? a : b; +} + +template<class T> +inline static const T &max(const T &a, const T &b) { + return a > b ? a : b; +} + +/* T must be integer type, period must be positive */ +template<class T> +inline static T periodicError(const T &val, const T &period) { + T err = abs(val) % period; + return (err < (period / 2)) ? err : (period - err); +} + +#endif // A_UTILS_H_ |