summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-10-02 23:38:51 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-02 23:38:51 +0000
commite1f2739b0a53e98a0d8dc124250f99c17515b90e (patch)
tree9f9964eac92ce1767c324e0a774f538456e67755 /include
parent6820103771b5af4bda1ed7dab29dcf49421afc2e (diff)
parentf973c881e3f3c1cbb91e4eb0e65f57bb23ed5758 (diff)
downloadframeworks_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.h65
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_