diff --git a/media/libmediahelper/AudioSanitizer.cpp b/media/libmediahelper/AudioSanitizer.cpp
index 9223823..44ca956 100644
--- a/media/libmediahelper/AudioSanitizer.cpp
+++ b/media/libmediahelper/AudioSanitizer.cpp
@@ -69,16 +69,15 @@
     return safetyNetLog(status, bugNumber);
 }
 
-namespace {
-
-template <typename T, std::enable_if_t<std::is_same<T, struct audio_port>::value
-                                    || std::is_same<T, struct audio_port_v7>::value, int> = 0>
-static status_t sanitizeAudioPortInternal(T *port, const char *bugNumber = nullptr) {
+/** returns BAD_VALUE if sanitization was required. */
+status_t AudioSanitizer::sanitizeAudioPort(
+        struct audio_port *port, const char *bugNumber)
+{
     status_t status = NO_ERROR;
     if (preventStringOverflow(port->name)) {
         status = BAD_VALUE;
     }
-    if (AudioSanitizer::sanitizeAudioPortConfig(&port->active_config) != NO_ERROR) {
+    if (sanitizeAudioPortConfig(&port->active_config) != NO_ERROR) {
         status = BAD_VALUE;
     }
     if (port->type == AUDIO_PORT_TYPE_DEVICE &&
@@ -88,22 +87,6 @@
     return safetyNetLog(status, bugNumber);
 }
 
-} // namespace
-
-/** returns BAD_VALUE if sanitization was required. */
-status_t AudioSanitizer::sanitizeAudioPort(
-        struct audio_port *port, const char *bugNumber)
-{
-    return sanitizeAudioPortInternal(port, bugNumber);
-}
-
-/** returns BAD_VALUE if sanitization was required. */
-status_t AudioSanitizer::sanitizeAudioPort(
-        struct audio_port_v7 *port, const char *bugNumber)
-{
-    return sanitizeAudioPortInternal(port, bugNumber);
-}
-
 /** returns BAD_VALUE if sanitization was required. */
 status_t AudioSanitizer::sanitizeAudioPatch(
         struct audio_patch *patch, const char *bugNumber)
