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;
+}