diff --git a/src/ipa/libipa/lsc_base.cpp b/src/ipa/libipa/lsc_base.cpp
index f47c9619669e..3ab1c75c4310 100644
--- a/src/ipa/libipa/lsc_base.cpp
+++ b/src/ipa/libipa/lsc_base.cpp
@@ -63,6 +63,17 @@ namespace lsc {
 } /* namespace lsc */
 
 #ifndef __DOXYGEN__
+template<>
+void Interpolator<lsc::Components<uint8_t>>::
+	interpolate(const lsc::Components<uint8_t> &a,
+		    const lsc::Components<uint8_t> &b,
+		    lsc::Components<uint8_t> &dest,
+		    double lambda)
+{
+	for (auto const &[k, v] : a)
+		interpolateVector(v, b.at(k), dest[k], lambda);
+}
+
 template<>
 void Interpolator<lsc::Components<uint16_t>>::
 	interpolate(const lsc::Components<uint16_t> &a,
diff --git a/src/ipa/libipa/lsc_base.h b/src/ipa/libipa/lsc_base.h
index a25d951e8ddb..51f3dd91f547 100644
--- a/src/ipa/libipa/lsc_base.h
+++ b/src/ipa/libipa/lsc_base.h
@@ -49,6 +49,13 @@ void interpolateVector(const std::vector<T> &a, const std::vector<T> &b,
 		dest[i] = a[i] * (1.0 - lambda) + b[i] * lambda;
 }
 
+template<>
+void Interpolator<lsc::Components<uint8_t>>::
+	interpolate(const lsc::Components<uint8_t> &a,
+		    const lsc::Components<uint8_t> &b,
+		    lsc::Components<uint8_t> &dest,
+		    double lambda);
+
 template<>
 void Interpolator<lsc::Components<uint16_t>>::
 	interpolate(const lsc::Components<uint16_t> &a,
