diff --git a/include/media/VolumeShaper.h b/include/media/VolumeShaper.h
index 7d76f66..d9b698d 100644
--- a/include/media/VolumeShaper.h
+++ b/include/media/VolumeShaper.h
@@ -86,6 +86,7 @@
 
         Configuration()
             : Interpolator<S, T>()
+            , RefBase()
             , mType(TYPE_SCALE)
             , mId(-1)
             , mOptionFlags(OPTION_FLAG_NONE)
@@ -94,6 +95,7 @@
 
         explicit Configuration(const Configuration &configuration)
             : Interpolator<S, T>(*static_cast<const Interpolator<S, T> *>(&configuration))
+            , RefBase()
             , mType(configuration.mType)
             , mId(configuration.mId)
             , mOptionFlags(configuration.mOptionFlags)
@@ -147,7 +149,7 @@
 
         T adjustVolume(T volume) const {
             if ((getOptionFlags() & OPTION_FLAG_VOLUME_IN_DBFS) != 0) {
-                const T out = powf(10.f, volume / 10.);
+                const T out = powf(10.f, volume / 10.0f);
                 VS_LOG("in: %f  out: %f", volume, out);
                 volume = out;
             }
@@ -261,10 +263,10 @@
 
         std::string toString() const {
             std::stringstream ss;
-            ss << "mType: " << mType << std::endl;
+            ss << "mType: " << static_cast<int32_t>(mType) << std::endl;
             ss << "mId: " << mId << std::endl;
             if (mType != TYPE_ID) {
-                ss << "mOptionFlags: " << mOptionFlags << std::endl;
+                ss << "mOptionFlags: " << static_cast<int32_t>(mOptionFlags) << std::endl;
                 ss << "mDurationMs: " << mDurationMs << std::endl;
                 ss << Interpolator<S, T>::toString().c_str();
             }
@@ -362,7 +364,7 @@
 
         std::string toString() const {
             std::stringstream ss;
-            ss << "mFlags: " << mFlags << std::endl;
+            ss << "mFlags: " << static_cast<int32_t>(mFlags) << std::endl;
             ss << "mReplaceId: " << mReplaceId << std::endl;
             ss << "mXOffset: " << mXOffset << std::endl;
             return ss.str();
@@ -500,14 +502,15 @@
     void updatePosition(int64_t startFrame, double sampleRate) {
         double scale = (mConfiguration->last().first - mConfiguration->first().first)
                         / (mConfiguration->getDurationMs() * 0.001 * sampleRate);
-        const double minScale = 1. / INT64_MAX;
+        const double minScale = 1. / static_cast<double>(INT64_MAX);
         scale = std::max(scale, minScale);
         const S xOffset = std::isnan(mDelayXOffset) ? mConfiguration->first().first : mDelayXOffset;
         VS_LOG("update position: scale %lf  frameCount:%lld, sampleRate:%lf, xOffset:%f",
                 scale, (long long) startFrame, sampleRate, xOffset);
 
-        mXTranslate.setOffset(startFrame - xOffset / scale);
-        mXTranslate.setScale(scale);
+        mXTranslate.setOffset(static_cast<float>(static_cast<double>(startFrame)
+                                                 - static_cast<double>(xOffset) / scale));
+        mXTranslate.setScale(static_cast<float>(scale));
         VS_LOG("translate: %s", mXTranslate.toString().c_str());
     }
 
