diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h
index 3edeee3..2cc6236 100644
--- a/services/audioflinger/PlaybackTracks.h
+++ b/services/audioflinger/PlaybackTracks.h
@@ -96,8 +96,7 @@
                                 size_t frameCountToBeReady = SIZE_MAX,
                                 float speed = 1.0f,
                                 bool isSpatialized = false,
-                                bool isBitPerfect = false,
-                                float volume = 0.0f);
+                                bool isBitPerfect = false);
     ~Track() override;
     status_t initCheck() const final;
     void appendDumpHeader(String8& result) const final;
@@ -223,13 +222,6 @@
 
     bool getInternalMute() const final { return mInternalMute; }
     void setInternalMute(bool muted) final { mInternalMute = muted; }
-
-    // VolumePortInterface implementation
-    void setPortVolume(float volume) override {
-        mVolume = volume;
-    }
-    float getPortVolume() const override { return mVolume; }
-
 protected:
 
     DISALLOW_COPY_AND_ASSIGN(Track);
@@ -370,8 +362,6 @@
         for (auto& tp : mTeePatches) { f(tp.patchTrack); }
     };
 
-    void                populateUsageAndContentTypeFromStreamType();
-
     size_t              mPresentationCompleteFrames = 0; // (Used for Mixed tracks)
                                     // The number of frames written to the
                                     // audio HAL when this track is considered fully rendered.
@@ -413,8 +403,8 @@
     // access these two variables only when holding player thread lock.
     std::unique_ptr<os::PersistableBundle> mMuteEventExtras;
     mute_state_t        mMuteState;
+
     bool                mInternalMute = false;
-    float mVolume = 0.0f;
 };  // end of Track
 
 
@@ -511,8 +501,7 @@
                                                                     *  as soon as possible to have
                                                                     *  the lowest possible latency
                                                                     *  even if it might glitch. */
-                                   float speed = 1.0f,
-                                   float volume = 1.0f);
+                                   float speed = 1.0f);
     ~PatchTrack() override;
 
     size_t framesReady() const final;
