Pull out base class that has no knowledge of frame size or buffer

Change-Id: I0727601faf9766c4ed2d08346f53257c20337fe7
diff --git a/audio_utils/fifo.cpp b/audio_utils/fifo.cpp
index 827b441..92e0a9f 100644
--- a/audio_utils/fifo.cpp
+++ b/audio_utils/fifo.cpp
@@ -24,23 +24,21 @@
 #include <cutils/log.h>
 #include <utils/Errors.h>
 
-audio_utils_fifo::audio_utils_fifo(uint32_t frameCount, uint32_t frameSize, void *buffer)
+audio_utils_fifo_base::audio_utils_fifo_base(uint32_t frameCount)
         __attribute__((no_sanitize("integer"))) :
     mFrameCount(frameCount), mFrameCountP2(roundup(frameCount)),
-    mFudgeFactor(mFrameCountP2 - mFrameCount), mFrameSize(frameSize), mBuffer(buffer),
+    mFudgeFactor(mFrameCountP2 - mFrameCount),
     mSharedRear(0), mThrottleFront(NULL)
 {
-    // maximum value of frameCount * frameSize is INT_MAX (2^31 - 1), not 2^31, because we need to
-    // be able to distinguish successful and error return values from read and write.
-    ALOG_ASSERT(frameCount > 0 && frameSize > 0 && buffer != NULL &&
-            frameCount <= ((uint32_t) INT_MAX) / frameSize);
+    // actual upper bound on frameCount will depend on the frame size
+    ALOG_ASSERT(frameCount > 0 && frameCount <= ((uint32_t) INT_MAX));
 }
 
-audio_utils_fifo::~audio_utils_fifo()
+audio_utils_fifo_base::~audio_utils_fifo_base()
 {
 }
 
-uint32_t audio_utils_fifo::sum(uint32_t index, uint32_t increment)
+uint32_t audio_utils_fifo_base::sum(uint32_t index, uint32_t increment)
         __attribute__((no_sanitize("integer")))
 {
     if (mFudgeFactor) {
@@ -58,7 +56,7 @@
     }
 }
 
-int32_t audio_utils_fifo::diff(uint32_t rear, uint32_t front, size_t *lost)
+int32_t audio_utils_fifo_base::diff(uint32_t rear, uint32_t front, size_t *lost)
         __attribute__((no_sanitize("integer")))
 {
     uint32_t diff = rear - front;
@@ -93,6 +91,22 @@
 
 ////////////////////////////////////////////////////////////////////////////////
 
+audio_utils_fifo::audio_utils_fifo(uint32_t frameCount, uint32_t frameSize, void *buffer)
+        __attribute__((no_sanitize("integer"))) :
+    audio_utils_fifo_base(frameCount), mFrameSize(frameSize), mBuffer(buffer)
+{
+    // maximum value of frameCount * frameSize is INT_MAX (2^31 - 1), not 2^31, because we need to
+    // be able to distinguish successful and error return values from read and write.
+    ALOG_ASSERT(frameCount > 0 && frameSize > 0 && buffer != NULL &&
+            frameCount <= ((uint32_t) INT_MAX) / frameSize);
+}
+
+audio_utils_fifo::~audio_utils_fifo()
+{
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
 audio_utils_fifo_provider::audio_utils_fifo_provider() :
     mObtained(0)
 {