Add non-zero sample and frame counting functions

Change-Id: Ib140f83d04bb98f01f15fa87f02fbd85ca597bd3
diff --git a/audio_utils/primitives.c b/audio_utils/primitives.c
index 90ad75a..e488c2d 100644
--- a/audio_utils/primitives.c
+++ b/audio_utils/primitives.c
@@ -87,3 +87,49 @@
         dst += 2;
     }
 }
+
+size_t nonZeroMono32(const int32_t *samples, size_t count)
+{
+    size_t nonZero = 0;
+    while (count-- > 0) {
+        if (*samples++ != 0) {
+            nonZero++;
+        }
+    }
+    return nonZero;
+}
+
+size_t nonZeroMono16(const int16_t *samples, size_t count)
+{
+    size_t nonZero = 0;
+    while (count-- > 0) {
+        if (*samples++ != 0) {
+            nonZero++;
+        }
+    }
+    return nonZero;
+}
+
+size_t nonZeroStereo32(const int32_t *frames, size_t count)
+{
+    size_t nonZero = 0;
+    while (count-- > 0) {
+        if (frames[0] != 0 || frames[1] != 0) {
+            nonZero++;
+        }
+        frames += 2;
+    }
+    return nonZero;
+}
+
+size_t nonZeroStereo16(const int16_t *frames, size_t count)
+{
+    size_t nonZero = 0;
+    while (count-- > 0) {
+        if (frames[0] != 0 || frames[1] != 0) {
+            nonZero++;
+        }
+        frames += 2;
+    }
+    return nonZero;
+}